From 65e6aea386e244e87fd9a745887cd9c59431e33f Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 3 Jan 2018 10:17:54 +0100 Subject: [PATCH] gcc.c (process_command): Update copyright notice dates. gcc/ * gcc.c (process_command): Update copyright notice dates. * gcov-dump.c (print_version): Ditto. * gcov.c (print_version): Ditto. * gcov-tool.c (print_version): Ditto. * gengtype.c (create_file): Ditto. * doc/cpp.texi: Bump @copying's copyright year. * doc/cppinternals.texi: Ditto. * doc/gcc.texi: Ditto. * doc/gccint.texi: Ditto. * doc/gcov.texi: Ditto. * doc/install.texi: Ditto. * doc/invoke.texi: Ditto. gcc/fortran/ * gfortranspec.c (lang_specific_driver): Update copyright notice dates. * gfc-internals.texi: Bump @copying's copyright year. * gfortran.texi: Ditto. * intrinsic.texi: Ditto. * invoke.texi: Ditto. gcc/ada/ * gnat_ugn.texi: Bump @copying's copyright year. * gnat_rm.texi: Likewise. gcc/go/ * gccgo.texi: Bump @copyrights-go year. libitm/ * libitm.texi: Bump @copying's copyright year. libgomp/ * libgomp.texi: Bump @copying's copyright year. libquadmath/ * libquadmath.texi: Bump @copying's copyright year. From-SVN: r256166 --- gcc/ChangeLog | 41795 +------------------------------ gcc/ChangeLog-2017 | 41783 ++++++++++++++++++++++++++++++ gcc/ada/ChangeLog | 12771 +--------- gcc/ada/ChangeLog-2017 | 12773 ++++++++++ gcc/ada/gnat_rm.texi | 2 +- gcc/ada/gnat_ugn.texi | 2 +- gcc/doc/cpp.texi | 2 +- gcc/doc/cppinternals.texi | 4 +- gcc/doc/gcc.texi | 2 +- gcc/doc/gccint.texi | 2 +- gcc/doc/gcov.texi | 2 +- gcc/doc/install.texi | 4 +- gcc/doc/invoke.texi | 2 +- gcc/fortran/ChangeLog | 2301 +- gcc/fortran/ChangeLog-2017 | 2295 ++ gcc/fortran/gfc-internals.texi | 2 +- gcc/fortran/gfortran.texi | 2 +- gcc/fortran/gfortranspec.c | 2 +- gcc/fortran/intrinsic.texi | 2 +- gcc/fortran/invoke.texi | 4 +- gcc/gcc.c | 2 +- gcc/gcov-dump.c | 2 +- gcc/gcov-tool.c | 2 +- gcc/gcov.c | 2 +- gcc/go/ChangeLog | 4 + gcc/go/gccgo.texi | 2 +- libgomp/ChangeLog | 4 + libgomp/libgomp.texi | 2 +- libitm/ChangeLog | 4 + libitm/libitm.texi | 2 +- libquadmath/ChangeLog | 6 +- libquadmath/libquadmath.texi | 2 +- 32 files changed, 56923 insertions(+), 56863 deletions(-) create mode 100644 gcc/ChangeLog-2017 create mode 100644 gcc/ada/ChangeLog-2017 create mode 100644 gcc/fortran/ChangeLog-2017 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ed19e28d63e..5e86e97b755 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2018-01-03 Jakub Jelinek + + * gcc.c (process_command): Update copyright notice dates. + * gcov-dump.c (print_version): Ditto. + * gcov.c (print_version): Ditto. + * gcov-tool.c (print_version): Ditto. + * gengtype.c (create_file): Ditto. + * doc/cpp.texi: Bump @copying's copyright year. + * doc/cppinternals.texi: Ditto. + * doc/gcc.texi: Ditto. + * doc/gccint.texi: Ditto. + * doc/gcov.texi: Ditto. + * doc/install.texi: Ditto. + * doc/invoke.texi: Ditto. + 2018-01-03 Richard Sandiford * vector-builder.h (vector_builder::m_full_nelts): Change from @@ -985,41786 +1000,8 @@ * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT, check for bswap in mode rather than HImode and use that in expand_unop too. - -2017-12-31 Jakub Jelinek - - PR target/83536 - * config/i386/i386.c (ix86_attribute_table): Remove excess - initializer for "shared" attribute. - -2017-12-30 Tom de Vries - - PR libgomp/83046 - * omp-expand.c (expand_omp_target): If in_lto_p, mark offload_funcs with - DECL_PRESERVE_P. - * lto-streamer-out.c (prune_offload_funcs): New function. Remove - offload_funcs entries that no longer have a corresponding cgraph_node. - Mark the remaining ones as DECL_PRESERVE_P. - (output_lto): Call prune_offload_funcs. - -2017-12-30 Jakub Jelinek - - * config/i386/sse.md (vgf2p8affineinvqb_, - vgf2p8affineqb_, vgf2p8mulb_, - vpshrd_, vpshld_, - vpshrdv_, vpshrdv__mask, vpshrdv__maskz, - vpshrdv__maskz_1, vpshldv_, vpshldv__mask, - vpshldv__maskz, vpshldv__maskz_1, vpdpbusd_, - vpdpbusd__mask, vpdpbusd__maskz, vpdpbusd__maskz_1, - vpdpbusds_, vpdpbusds__mask, vpdpbusds__maskz, - vpdpbusds__maskz_1, vpdpwssd_, vpdpwssd__mask, - vpdpwssd__maskz, vpdpwssd__maskz_1, vpdpwssds_, - vpdpwssds__mask, vpdpwssds__maskz, - vpdpwssds__maskz_1, vaesdec_, vaesdeclast_, - vaesenc_, vpclmulqdq_, - avx512vl_vpshufbitqmb): Formatting fixes. - -2017-12-28 Michael Meissner - - * builtins.def: (_Float and _FloatX BUILT_IN_CEIL): Add - _Float and _FloatX variants for rounding built-in - functions. - (_Float and _FloatX BUILT_IN_FLOOR): Likewise. - (_Float and _FloatX BUILT_IN_NEARBYINT): Likewise. - (_Float and _FloatX BUILT_IN_RINT): Likewise. - (_Float and _FloatX BUILT_IN_ROUND): Likewise. - (_Float and _FloatX BUILT_IN_TRUNC): Likewise. - * builtins.c (mathfn_built_in_2): Likewise. - * internal-fn.def (CEIL): Likewise. - (FLOOR): Likewise. - (NEARBYINT): Likewise. - (RINT): Likewise. - (ROUND): Likewise. - (TRUNC): Likewise. - * convert.c (convert_to_integer_1): Likewise. - * fold-const.c (tree_call_nonnegative_warnv_p): Likewise. - (integer_valued_real_call_p): Likewise. - * fold-const-call.c (fold_const_call_ss): Likewise. - * gencfn-macros.c (print_case_cfn): Change CFN and operator - printers to take a const char * suffix instead of a bool. - (print_define_operator_list): Likewise. - (fltall_suffixes): New list of suffixes, that include the - traditional suffixes as well as all of the _Float and - _FloatX suffixes. - (main): For _Float and _FloatX functions, emit both - _FN and _ALL variants. The _FN variant only - has the _Float and _FloatX case names or operators. The - _ALL variant has both the traditional and the - _Float/_FloatX case names or operators. - * match.pd (COPYSIGN optimizations): Provide optimizations for - _Float and _FloatX types where possible. - (MIN/MAX optimizations): Likewise. - (sqrt optimizations): Likewise. - (rounding optimizations): Likewise. - -2017-12-28 Richard Sandiford - - * config/powerpcspe/powerpcspe.md (ieee_128bit_negative_zero): Use - gen_int_mode rather than GEN_INT. - * config/rs6000/rs6000.md (ieee_128bit_negative_zero): Likewise. - -2017-12-28 Richard Sandiford - - * emit-rtl.c (gen_const_vec_series): Use valid_for_const_vector_p - instead of CONSTANT_P. - (gen_vec_series): Likewise. - * simplify-rtx.c (simplify_binary_operation_1): Likewise. - -2017-12-28 Andreas Schwab - - * config/m68k/m68k.md (ashrdi3_const1, lshrdi3_const1): Add - CC_STATUS_INIT. - -2017-12-27 Kugan Vivekanandarajah - - * config/aarch64/aarch64-simd.md (aarch64_ld1x2): New. - (aarch64_ld1x2): Likewise. - (aarch64_simd_ld1_x2): Likewise. - (aarch64_simd_ld1_x2): Likewise. - * config/aarch64/arm_neon.h (vld1_u8_x2): New. - (vld1_s8_x2): Likewise. - (vld1_u16_x2): Likewise. - (vld1_s16_x2): Likewise. - (vld1_u32_x2): Likewise. - (vld1_s32_x2): Likewise. - (vld1_u64_x2): Likewise. - (vld1_s64_x2): Likewise. - (vld1_f16_x2): Likewise. - (vld1_f32_x2): Likewise. - (vld1_f64_x2): Likewise. - (vld1_p8_x2): Likewise. - (vld1_p16_x2): Likewise. - (vld1_p64_x2): Likewise. - (vld1q_u8_x2): Likewise. - (vld1q_s8_x2): Likewise. - (vld1q_u16_x2): Likewise. - (vld1q_s16_x2): Likewise. - (vld1q_u32_x2): Likewise. - (vld1q_s32_x2): Likewise. - (vld1q_u64_x2): Likewise. - (vld1q_s64_x2): Likewise. - (vld1q_f16_x2): Likewise. - (vld1q_f32_x2): Likewise. - (vld1q_f64_x2): Likewise. - (vld1q_p8_x2): Likewise. - (vld1q_p16_x2): Likewise. - (vld1q_p64_x2): Likewise. - -2017-12-27 Martin Liska - - PR tree-optimization/83552 - * tree-ssa-strlen.c (fold_strstr_to_strncmp): Assign result - of get_string_lenth to a SSA_NAME if not a GIMPLE value. - -2017-12-27 Tom de Vries - - * config/nvptx/nvptx.c (nvptx_option_override): Disable - -gstatement-frontiers. - -2017-12-26 Alexander Monakov - - PR rtl-optimization/83513 - * sel-sched.c (sel_rank_for_schedule): Order by non-zero usefulness - before priority comparison. - -2017-12-25 Jakub Jelinek - - PR target/83488 - * config/i386/i386.opt (-mavx512vpopcntdq, -mmavx512bitalg): Move from - ix86_isa_flags2 to ix86_isa_flags. - * config/i386/i386-c.c (ix86_target_macros_internal): Test - OPTION_MASK_ISA_AVX512BITALG and OPTION_MASK_ISA_AVX512VPOPCNTDQ in - isa_flags rather than isa_flags2. - * config/i386/i386.c (ix86_target_string): Move -mavx512vpopcntdq - and -mavx512bitalg from isa2_opts to isa_opts. - (ix86_option_override_internal): Test OPTION_MASK_ISA_AVX512VPOPCNTDQ - in x_ix86_isa_flags_explicit rather than x_ix86_isa_flags2_explicit - and set it in x_ix86_isa_flags rather than x_ix86_isa_flags2. - Formatting fixes. - (def_builtin): Treat OPTION_MASK_ISA_AVX512BW or - OPTION_MASK_ISA_AVX512F ored with another option similarly to - OPTION_MASK_ISA_AVX512VL. Even for OPTION_MASK_ISA_AVX512VL don't - clear it if mask is just OPTION_MASK_ISA_AVX512VL itself. - (ix86_expand_builtin): Don't handle OPTION_MASK_ISA_GFNI and - OPTION_MASK_ISA_VPCLMULQDQ specially, instead handle - OPTION_MASK_ISA_AVX512BW and OPTION_MASK_ISA_AVX512F that way. - * config/i386/i386-builtin.def: Move AVX512VPOPCNTDQ and AVX512BITALG - builtins from bdesc_args2 to bdesc_args section. - (__builtin_ia32_compressstoreuqi512_mask, - __builtin_ia32_compressstoreuhi512_mask, - __builtin_ia32_compressstoreuqi256_mask, - __builtin_ia32_expandloadqi512_mask, - __builtin_ia32_expandloadqi512_maskz, - __builtin_ia32_expandloadhi512_mask, - __builtin_ia32_expandloadhi512_maskz, - __builtin_ia32_compressqi512_mask, __builtin_ia32_compresshi512_mask, - __builtin_ia32_compressqi256_mask, __builtin_ia32_expandqi512_mask, - __builtin_ia32_expandqi512_maskz, __builtin_ia32_expandhi512_mask, - __builtin_ia32_expandhi512_maskz, __builtin_ia32_expandqi256_mask, - __builtin_ia32_expandqi256_maskz, __builtin_ia32_vpshrd_v32hi_mask, - __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshrdv_v32hi_mask, - __builtin_ia32_vpshrdv_v32hi_maskz, __builtin_ia32_vpshldv_v32hi_mask, - __builtin_ia32_vpshldv_v32hi_maskz, - __builtin_ia32_vpopcountb_v64qi_mask, - __builtin_ia32_vpopcountw_v32hi_mask, - __builtin_ia32_vpshufbitqmb512_mask, - __builtin_ia32_vpshufbitqmb256_mask): Add - " | OPTION_MASK_ISA_AVX512BW". - (__builtin_ia32_expandloadqi256_mask, - __builtin_ia32_expandloadqi256_maskz, - __builtin_ia32_vpopcountb_v32qi_mask): Add - " | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW". - (__builtin_ia32_expandloadhi256_mask, - __builtin_ia32_expandloadhi256_maskz, - __builtin_ia32_expandloadqi128_mask, - __builtin_ia32_expandloadqi128_maskz, - __builtin_ia32_expandloadhi128_mask, - __builtin_ia32_expandloadhi128_maskz, - __builtin_ia32_vpshrd_v16hi, __builtin_ia32_vpshrd_v16hi_mask, - __builtin_ia32_vpshrd_v8hi, __builtin_ia32_vpshrd_v8hi_mask, - __builtin_ia32_vpshrd_v8si, __builtin_ia32_vpshrd_v8si_mask, - __builtin_ia32_vpshrd_v4si, __builtin_ia32_vpshrd_v4si_mask, - __builtin_ia32_vpshrd_v4di, __builtin_ia32_vpshrd_v4di_mask, - __builtin_ia32_vpshrd_v2di, __builtin_ia32_vpshrd_v2di_mask, - __builtin_ia32_vpshld_v16hi, __builtin_ia32_vpshld_v16hi_mask, - __builtin_ia32_vpshld_v8hi, __builtin_ia32_vpshld_v8hi_mask, - __builtin_ia32_vpshld_v8si, __builtin_ia32_vpshld_v8si_mask, - __builtin_ia32_vpshld_v4si, __builtin_ia32_vpshld_v4si_mask, - __builtin_ia32_vpshld_v4di, __builtin_ia32_vpshld_v4di_mask, - __builtin_ia32_vpshld_v2di, __builtin_ia32_vpshld_v2di_mask, - __builtin_ia32_vpshrdv_v16hi, __builtin_ia32_vpshrdv_v16hi_mask, - __builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi, - __builtin_ia32_vpshrdv_v8hi_mask, __builtin_ia32_vpshrdv_v8hi_maskz, - __builtin_ia32_vpshrdv_v8si, __builtin_ia32_vpshrdv_v8si_mask, - __builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si, - __builtin_ia32_vpshrdv_v4si_mask, __builtin_ia32_vpshrdv_v4si_maskz, - __builtin_ia32_vpshrdv_v4di, __builtin_ia32_vpshrdv_v4di_mask, - __builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di, - __builtin_ia32_vpshrdv_v2di_mask, __builtin_ia32_vpshrdv_v2di_maskz, - __builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask, - __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi, - __builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz, - __builtin_ia32_vpshldv_v8si, __builtin_ia32_vpshldv_v8si_mask, - __builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si, - __builtin_ia32_vpshldv_v4si_mask, __builtin_ia32_vpshldv_v4si_maskz, - __builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask, - __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di, - __builtin_ia32_vpshldv_v2di_mask, __builtin_ia32_vpshldv_v2di_maskz, - __builtin_ia32_vpopcountb_v32qi, __builtin_ia32_vpopcountb_v16qi, - __builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v16hi, - __builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi, - __builtin_ia32_vpopcountw_v8hi_mask): Add - " | OPTION_MASK_ISA_AVX512VL". - * config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16, - _mm512_shrdi_epi32, _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32, - _mm512_shrdi_epi64, _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64, - _mm512_shldi_epi16, _mm512_shldi_epi32, _mm512_mask_shldi_epi32, - _mm512_maskz_shldi_epi32, _mm512_shldi_epi64, _mm512_mask_shldi_epi64, - _mm512_maskz_shldi_epi64, _mm512_shrdv_epi16, _mm512_shrdv_epi32, - _mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64, - _mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64, _mm512_shldv_epi16, - _mm512_shldv_epi32, _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32, - _mm512_shldv_epi64, _mm512_mask_shldv_epi64, - _mm512_maskz_shldv_epi64): Don't require avx512bw for these intrinsics. - * config/i386/avx512bitalgintrin.h (_mm_bitshuffle_epi64_mask, - _mm_mask_bitshuffle_epi64_mask): Likewise. - * common/config/i386/i386-common.c - (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET, - OPTION_MASK_ISA_AVX512BITALG_SET): Or in OPTION_MASK_ISA_AVX512F_SET. - (OPTION_MASK_ISA_AVX512F_UNSET): Or in - OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET and - OPTION_MASK_ISA_AVX512BITALG_UNSET. - (OPTION_MASK_ISA2_AVX512F_UNSET, - OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Define. - (ix86_handle_option): For -mno-general-regs-only, clear from - ix86_isa_flags2 OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET rather than - just OPTION_MASK_ISA_MPX. For -mno-sse{,2,3,4,4.1,4.2,avx,avx2} and - -mno-ssse3 clear OPTION_MASK_ISA2_AVX512F_UNSET bits from - ix86_isa_flags2. For -mno-avx512f likewise, instead of masking - individually listed ISAs. For -m{,no-}avx512{vpopcntdq,bitalg} adjust - for moving from ix86_isa_flags2 to ix86_isa_flags. - -2017-12-23 Jakub Jelinek - - PR c++/83553 - * fold-const.c (struct contains_label_data): New type. - (contains_label_1): Return non-NULL even for CASE_LABEL_EXPR, unless - inside of a SWITCH_BODY seen during the walk. - (contains_label_p): Use walk_tree instead of - walk_tree_without_duplicates, prepare data for contains_label_1 and - provide own pset. - -2017-12-22 Jakub Jelinek - - PR debug/83547 - * tree-iterator.c (alloc_stmt_list): Start with cleared - TREE_SIDE_EFFECTS regardless whether a new STATEMENT_LIST is allocated - or old one reused. - - PR target/83488 - * config/i386/avx512vnniintrin.h: Don't check for __AVX512F__ nor - enable avx512f explicitly in #pragma GCC target. - * config/i386/i386-builtin.def (__builtin_ia32_vpdpbusd_v8si, - __builtin_ia32_vpdpbusd_v8si_mask, __builtin_ia32_vpdpbusd_v8si_maskz, - __builtin_ia32_vpdpbusd_v4si, __builtin_ia32_vpdpbusd_v4si_mask, - __builtin_ia32_vpdpbusd_v4si_maskz, __builtin_ia32_vpdpbusds_v8si, - __builtin_ia32_vpdpbusds_v8si_mask, - __builtin_ia32_vpdpbusds_v8si_maskz, __builtin_ia32_vpdpbusds_v4si, - __builtin_ia32_vpdpbusds_v4si_mask, - __builtin_ia32_vpdpbusds_v4si_maskz, __builtin_ia32_vpdpwssd_v8si, - __builtin_ia32_vpdpwssd_v8si_mask, __builtin_ia32_vpdpwssd_v8si_maskz, - __builtin_ia32_vpdpwssd_v4si, __builtin_ia32_vpdpwssd_v4si_mask, - __builtin_ia32_vpdpwssd_v4si_maskz, __builtin_ia32_vpdpwssds_v8si, - __builtin_ia32_vpdpwssds_v8si_mask, - __builtin_ia32_vpdpwssds_v8si_maskz, __builtin_ia32_vpdpwssds_v4si, - __builtin_ia32_vpdpwssds_v4si_mask, - __builtin_ia32_vpdpwssds_v4si_maskz): Use - OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL instead of - just OPTION_MASK_ISA_AVX512VNNI. - -2017-12-22 Martin Jambor - - PR lto/82027 - * lto-cgraph.c (output_cgraph_opt_summary_p): Also check former - clones. - -2017-12-22 Julia Koval - Sebastian Peryt - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512BITALG_SET, - OPTION_MASK_ISA_AVX512BITALG_UNSET): New. - (ix86_handle_option): Handle -mavx512bitalg, fix 4VNNIW formatting. - * config.gcc: Add avx512vpopcntdqvlintrin.h and avx512bitalgintrin.h. - * config/i386/avx512bitalgintrin.h (_mm512_popcnt_epi8, _mm512_popcnt_epi16, - _mm512_mask_popcnt_epi8, _mm512_maskz_popcnt_epi8, _mm512_mask_popcnt_epi16, - _mm512_maskz_popcnt_epi16, _mm512_bitshuffle_epi64_mask, _mm256_popcnt_epi8, - _mm512_mask_bitshuffle_epi64_mask, _mm256_mask_popcnt_epi8, _mm_popcnt_epi8, - _mm256_maskz_popcnt_epi8, _mm_bitshuffle_epi64_mask, _mm256_popcnt_epi16, - _mm_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask, - _mm256_mask_bitshuffle_epi64_mask, _mm_popcnt_epi16, _mm_maskz_popcnt_epi8, - _mm256_mask_popcnt_epi16, _mm256_maskz_popcnt_epi16, _mm_mask_popcnt_epi8, - _mm_mask_popcnt_epi16, _mm_maskz_popcnt_epi16): New intrinsics. - * config/i386/avx512vpopcntdqvlintrin.h (_mm_popcnt_epi32, _mm_popcnt_epi64, - _mm_mask_popcnt_epi32, _mm_maskz_popcnt_epi32, _mm256_popcnt_epi32, - _mm256_mask_popcnt_epi32, _mm256_maskz_popcnt_epi32, _mm_mask_popcnt_epi64, - _mm_maskz_popcnt_epi64, _mm256_popcnt_epi64, _mm256_mask_popcnt_epi64, - _mm256_maskz_popcnt_epi64): New intrinsics. - * config/i386/cpuid.h (bit_AVX512BITALG): New bit. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mavx512bitalg. - * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI, V64QI_FTYPE_V64QI, - V4DI_FTYPE_V4DI, UHI_FTYPE_V2DI_V2DI_UHI, USI_FTYPE_V4DI_V4DI_USI, - V4SI_FTYPE_V4SI_V4SI_UHI, V8SI_FTYPE_V8SI_V8SI_UHI): New types. - * config/i386/i386-builtin.def (__builtin_ia32_vpopcountq_v4di, - __builtin_ia32_vpopcountq_v4di_mask, __builtin_ia32_vpopcountq_v2di, - __builtin_ia32_vpopcountq_v2di_mask, __builtin_ia32_vpopcountd_v4si, - __builtin_ia32_vpopcountd_v4si_mask, __builtin_ia32_vpopcountd_v8si, - __builtin_ia32_vpopcountd_v8si_mask, __builtin_ia32_vpopcountb_v64qi, - __builtin_ia32_vpopcountb_v64qi_mask, __builtin_ia32_vpopcountb_v32qi, - __builtin_ia32_vpopcountb_v32qi_mask, __builtin_ia32_vpopcountb_v16qi, - __builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v32hi, - __builtin_ia32_vpopcountw_v32hi_mask, __builtin_ia32_vpopcountw_v16hi, - __builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi, - __builtin_ia32_vpopcountw_v8hi_mask, __builtin_ia32_vpshufbitqmb128_mask, - __builtin_ia32_vpshufbitqmb256_mask, - __builtin_ia32_vpshufbitqmb512_mask): New builtins. - * config/i386/i386-c.c (__AVX512BITALG__): New. - * config/i386/i386.c (isa2_opts): Add -mavx512bitalg. - (ix86_valid_target_attribute_inner_p): Ditto. - (ix86_expand_args_builtin): Handle new types. - * config/i386/i386.h (TARGET_AVX512BITALG, TARGET_AVX512BITALG_P): New. - * config/i386/i386.opt: Add -mavx512bitalg. - * config/i386/immintrin.h: Add avx512vpopcntdqvlintrin.h and - avx512bitalgintrin.h. - * config/i386/sse.md (VI48_AVX512VLBW): New iterator. - (vpopcount): Add more types. - (avx512vl_vpshufbitqmb): New. - * doc/invoke.texi: Add -mavx512bitalg and -mavx512vpopcntdq. - -2017-12-22 Igor Tsimbalist - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET): - Or in OPTION_MASK_ISA_AVX512F_SET. - (OPTION_MASK_ISA_AVX512F_UNSET): Or in - OPTION_MASK_ISA_AVX512VNNI_UNSET. - (ix86_handle_option): Adjust for - OPTION_MASK_ISA_AVX512VNNI_*SET being in ix86_isa_flags. - * config/i386/i386-builtin.def: Move VNNI builtins from ARGS2 - section to ARGS. - * config/i386/i386-c.c: Check for OPTION_MASK_ISA_AVX512VNNI in - isa_flag instead of isa_flag2. - * config/i386/i386.c (ix86_target_string): Move -mavx512vnni from - isa_opts2 to isa_opts. - * config/i386/i386.opt (mavx512vnni): Move from ix86_isa_flags2 - to ix86_isa_flags. - -2017-12-22 Mike Stump - Eric Botcazou - - * doc/extend.texi (Loop-Specific Pragmas): Document pragma GCC unroll. - -2017-12-21 Jakub Jelinek - - PR middle-end/83487 - * config/i386/i386.c (ix86_function_arg_boundary): Return - PARM_BOUNDARY for TYPE_EMPTY_P types. - - PR c/83448 - * gimple-ssa-sprintf.c (maybe_warn): Don't call set_caret_index - if navail is >= dir.len. - -2017-12-21 Steve Ellcey - - * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Fix - triplet for ilp32. - -2017-12-21 Jakub Jelinek - - PR rtl-optimization/80747 - PR rtl-optimization/83512 - * cfgrtl.c (force_nonfallthru_and_redirect): When splitting - succ edge from ENTRY, copy partition from e->dest to the newly - created bb. - * bb-reorder.c (reorder_basic_blocks_simple): If last_tail is - ENTRY, use BB_PARTITION of its successor block as current_partition. - Don't copy partition when splitting succ edge from ENTRY. - - PR tree-optimization/83523 - * tree-ssa-math-opts.c (is_widening_mult_p): Return false if - for INTEGER_TYPE TYPE_OVERFLOW_TRAPS. - (convert_mult_to_fma): Likewise. - - PR tree-optimization/83521 - * tree-ssa-phiopt.c (factor_out_conditional_conversion): Use - gimple_build_assign without code on result of - fold_build1 (VIEW_CONVERT_EXPR, ...), as it might not create - a VIEW_CONVERT_EXPR. - -2017-12-21 Andrew Pinski - Steve Ellcey - - * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle - multi-arch for ilp32. - -2017-12-21 Uros Bizjak - - PR target/83467 - * config/i386/i386.md (*ashl3_mask): Add operand - constraints to operand 2. - (*ashl3_mask_1): Ditto. - (*3_mask): Ditto. - (*3_mask_1): Ditto. - (*3_mask): Ditto. - (*3_mask_1): Ditto. - -2017-12-21 Alexandre Oliva - - * reorg.c (make_return_insns): Reemit each insn with its own location. - -2017-12-21 James Greenhalgh - - * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code - generation for cases where splatting a value is not useful. - * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge - across a vec_duplicate and a paradoxical subreg forming a vector - mode to a vec_concat. - -2017-12-21 James Greenhalgh - - * combine.c (simplify_set): Do not transform subregs to zero_extends - if the destination is not a scalar int mode. - -2017-12-21 Eric Botcazou - - PR c++/82872 - * convert.c (convert_to_integer_1) : Do not return the - shared zero if the input has overflowed. - -2017-12-21 Kyrylo Tkachov - - * config/arm/driver-arm.c (arm_cpu_table): Specify dotprod - support for Cortex-A55 and Cortex-A75. - -2017-12-21 Kyrylo Tkachov - - * common/config/arm/arm-common.c (compare_opt_names): Add function - comment. Use strcmp instead of manual loop. - -2017-12-21 Martin Liska - - PR gcov-profile/83509 - * gcov-dump.c (dump_gcov_file): Do not read info about - support_unexecuted_blocks for gcda files. - -2017-12-21 Jakub Jelinek - - PR rtl-optimization/82973 - * emit-rtl.h (valid_for_const_vec_duplicate_p): Rename to ... - (valid_for_const_vector_p): ... this. - * emit-rtl.c (valid_for_const_vec_duplicate_p): Rename to ... - (valid_for_const_vector_p): ... this. Adjust function comment. - (gen_vec_duplicate): Adjust caller. - * optabs.c (expand_vector_broadcast): Likewise. - * simplify-rtx.c (simplify_const_unary_operation): Don't optimize into - CONST_VECTOR if some element isn't simplified valid_for_const_vector_p - constant. - (simplify_const_binary_operation): Likewise. Use CONST_FIXED_P macro - instead of GET_CODE == CONST_FIXED. - (simplify_subreg): Use CONST_FIXED_P macro instead of - GET_CODE == CONST_FIXED. - - PR target/83488 - * config/i386/i386.c (ix86_target_string): Move -mavx512vbmi2 and - -mshstk entries from isa_opts2 to isa_opts and -mhle, -mmovbe, - -mclzero and -mmwaitx entries from isa_opts to isa_opts2. - (ix86_option_override_internal): Adjust for - OPTION_MASK_ISA_{HLE,MOVBE,CLZERO,MWAITX} moving to ix86_isa_flags2 - and OPTION_MASK_ISA_SHSTK moving to ix86_isa_flags. - (BDESC_VERIFYS): Remove SPECIAL_ARGS2 related checks. - (ix86_init_mmx_sse_builtins): Remove bdesc_special_args2 handling. - Use def_builtin2 instead of def_builtin for OPTION_MASK_ISA_MWAITX - and OPTION_MASK_ISA_CLZERO builtins. Use def_builtin instead of - def_builtin2 for CET builtins. - (ix86_expand_builtin): Remove bdesc_special_args2 handling. Fix - up formatting in IX86_BUILTIN_RDPID code. - * config/i386/i386-builtin.def: Move VBMI2 builtins from SPECIAL_ARGS2 - section to SPECIAL_ARGS and from ARGS2 section to ARGS. - * config/i386/i386.opt (mavx512vbmi2, mshstk): Move from - ix86_isa_flags2 to ix86_isa_flags. - (mhle, mmovbe, mclzero, mmwaitx): Move from ix86_isa_flags to - ix86_isa_flags2. - * config/i386/i386-c.c (ix86_target_macros_internal): Check for - OPTION_MASK_ISA_{CLZERO,MWAITX} in isa_flag2 instead of isa_flag. - Check for OPTION_MASK_ISA_{SHSTK,AVX512VBMI2} in isa_flag instead - of isa_flag2. - * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET): - Or in OPTION_MASK_ISA_AVX512F_SET. - (OPTION_MASK_ISA_AVX512F_UNSET): Or in - OPTION_MASK_ISA_AVX512VBMI2_UNSET. - (ix86_handle_option): Adjust for - OPTION_MASK_ISA_{SHSTK,AVX512VBMI2}_*SET being in ix86_isa_flags - and OPTION_MASK_ISA_{MOVBE,MWAITX,CLZERO}_*SET in ix86_isa_flags2. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-data-ref.h (prune_runtime_alias_test_list): Take the - factor as a poly_uint64 rather than an unsigned HOST_WIDE_INT. - * tree-data-ref.c (prune_runtime_alias_test_list): Likewise. - Track polynomial offsets. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): - Treat drb->init as a poly_int. Fail if its misalignment wrt - vector_alignment isn't known. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vectorizer.h (_loop_vec_info): Add a versioning_threshold - field. - (LOOP_VINFO_VERSIONING_THRESHOLD): New macro - (vect_loop_versioning): Take the loop versioning threshold as a - separate parameter. - * tree-vect-loop-manip.c (vect_loop_versioning): Likewise. - * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize - versioning_threshold. - (vect_analyze_loop_2): Compute the loop versioning threshold - whenever loop versioning is needed, and store it in the new - field rather than combining it with the cost model threshold. - (vect_transform_loop): Update call to vect_loop_versioning. - Try to combine the loop versioning and cost thresholds here. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-ssa-loop-ivopts.h (strip_offset): Return the offset as - poly_uint64_pod rather than an unsigned HOST_WIDE_INT. - * tree-loop-distribution.c (classify_builtin_st): Update accordingly. - * tree-ssa-loop-ivopts.c (iv_use::addr_offset): Change from - an unsigned HOST_WIDE_INT to a poly_uint64_pod. - (group_compare_offset): Update accordingly. - (split_small_address_groups_p): Likewise. - (record_use): Take addr_offset as a poly_uint64 rather than - an unsigned HOST_WIDE_INT. - (strip_offset): Return the offset as a poly_uint64 rather than - an unsigned HOST_WIDE_INT. - (record_group_use, split_address_groups): Track polynomial offsets. - (add_iv_candidate_for_use): Likewise. - (addr_offset_valid_p): Take the offset as a poly_int64 rather - than a HOST_WIDE_INT. - (strip_offset_1): Return the offset as a poly_int64 rather than - a HOST_WIDE_INT. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * tree.h (get_binfo_at_offset): Take the offset as a poly_int64 - rather than a HOST_WIDE_INT. - * tree.c (get_binfo_at_offset): Likewise. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * ipa-prop.h (build_ref_for_offset): Take the offset as a poly_int64 - rather than a HOST_WIDE_INT. - * tree-sra.c (build_ref_for_offset): Likewise. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * fold-const.h (mem_ref_offset): Return a poly_offset_int rather - than an offset_int. - * tree.c (mem_ref_offset): Likewise. - (build_simple_mem_ref_loc): Treat MEM_REF offsets as poly_ints. - * builtins.c (get_object_alignment_2): Likewise. - * expr.c (get_inner_reference, expand_expr_real_1): Likewise. - * gimple-fold.c (get_base_constructor): Likewise. - * gimple-ssa-strength-reduction.c (restructure_reference): Likewise. - * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): - Likewise. - * ipa-polymorphic-call.c - (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise. - * ipa-prop.c (compute_complex_assign_jump_func): Likewise. - (get_ancestor_addr_info): Likewise. - * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Likewise. - * match.pd: Likewise. - * tree-data-ref.c (dr_analyze_innermost): Likewise. - * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise. - * tree-eh.c (tree_could_trap_p): Likewise. - * tree-object-size.c (addr_object_size): Likewise. - * tree-ssa-address.c (copy_ref_info): Likewise. - * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise. - (indirect_refs_may_alias_p): Likewise. - * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise. - * tree-ssa.c (maybe_rewrite_mem_ref_base): Likewise. - (non_rewritable_mem_ref_base): Likewise. - * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise. - * tree-vrp.c (vrp_prop::check_array_ref): Likewise. - * varasm.c (decode_addr_const): Likewise. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * gimple-ssa-stor-merging.c (find_bswap_or_nop_load): Track polynomial - offsets for MEM_REFs. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-ssanames.h (adjust_ptr_info_misalignment): Take the increment - as a poly_uint64 rather than an unsigned int. - * tree-ssanames.c (adjust_ptr_info_misalignment): Likewise. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * varasm.c (addr_const::offset): Change from HOST_WIDE_INT - to poly_int64. - (decode_addr_const): Update accordingly. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * tree.h (bit_field_size, bit_field_offset): New functions. - * hsa-gen.c (gen_hsa_addr): Use them. - * tree-ssa-forwprop.c (simplify_bitfield_ref): Likewise. - (simplify_vector_constructor): Likewise. - * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise. - * tree-cfg.c (verify_expr): Require the sizes and offsets of a - BIT_FIELD_REF to be poly_uint64s rather than uhwis. - * fold-const.c (fold_ternary_loc): Protect tree_to_uhwi with - tree_fits_uhwi_p. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.h (emit_group_load, emit_group_load_into_temps) - (emit_group_store): Take the size as a poly_int64 rather than an int. - * expr.c (emit_group_load_1, emit_group_load): Likewise. - (emit_group_load_into_temp, emit_group_store): Likewise. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * ira-int.h (ira_spilled_reg_stack_slot::width): Change from - an unsigned int to a poly_uint64. - * ira.h (ira_reuse_stack_slot, ira_mark_new_stack_slot): Take the - sizes as poly_uint64s rather than unsigned ints. - * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): - Likewise. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * lra-constraints.c (emit_inc): Change inc_amount from an int - to a poly_int64. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * cfgexpand.c (stack_var::size): Change from a HOST_WIDE_INT - to a poly_uint64. - (add_stack_var, stack_var_cmp, partition_stack_vars) - (dump_stack_var_partition): Update accordingly. - (alloc_stack_frame_space): Take the size as a poly_int64 rather - than a HOST_WIDE_INT. - (expand_stack_vars, expand_one_stack_var_1): Handle polynomial sizes. - (defer_stack_allocation, estimated_stack_frame_size): Likewise. - (account_stack_vars, expand_one_var): Likewise. Return a poly_uint64 - rather than a HOST_WIDE_INT. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (return_pops_args): Treat both the input and output - sizes as poly_int64s rather than HOST_WIDE_INTS. - * targhooks.h (default_return_pops_args): Update accordingly. - * targhooks.c (default_return_pops_args): Likewise. - * doc/tm.texi: Regenerate. - * emit-rtl.h (incoming_args): Change pops_args, size and - outgoing_args_size from int to poly_int64_pod. - * function.h (expr_status): Change x_pending_stack_adjust and - x_stack_pointer_delta from int to poly_int64. - (args_size::constant): Change from HOST_WIDE_INT to poly_int64. - (ARGS_SIZE_RTX): Update accordingly. - * calls.c (highest_outgoing_arg_in_use): Change from int to - unsigned int. - (stack_usage_watermark, stored_args_watermark): New variables. - (stack_region_maybe_used_p, mark_stack_region_used): New functions. - (emit_call_1): Change the stack_size and rounded_stack_size - parameters from HOST_WIDE_INT to poly_int64. Track n_popped - as a poly_int64. - (save_fixed_argument_area): Check stack_usage_watermark. - (initialize_argument_information): Change old_pending_adj from - a HOST_WIDE_INT * to a poly_int64_pod *. - (compute_argument_block_size): Return the size as a poly_int64 - rather than an int. - (finalize_must_preallocate): Track polynomial argument sizes. - (compute_argument_addresses): Likewise. - (internal_arg_pointer_based_exp): Track polynomial offsets. - (mem_overlaps_already_clobbered_arg_p): Rename to... - (mem_might_overlap_already_clobbered_arg_p): ...this and take the - size as a poly_uint64 rather than an unsigned HOST_WIDE_INT. - Check stored_args_used_watermark. - (load_register_parameters): Update accordingly. - (check_sibcall_argument_overlap_1): Likewise. - (combine_pending_stack_adjustment_and_call): Take the unadjusted - args size as a poly_int64 rather than an int. Return a bool - indicating whether the optimization was possible and return - the new adjustment by reference. - (check_sibcall_argument_overlap): Track polynomail argument sizes. - Update stored_args_watermark. - (can_implement_as_sibling_call_p): Handle polynomial argument sizes. - (expand_call): Likewise. Maintain stack_usage_watermark and - stored_args_watermark. Update calls to - combine_pending_stack_adjustment_and_call. - (emit_library_call_value_1): Handle polynomial argument sizes. - Call stack_region_maybe_used_p and mark_stack_region_used. - Maintain stack_usage_watermark. - (store_one_arg): Likewise. Update call to - mem_overlaps_already_clobbered_arg_p. - * config/arm/arm.c (arm_output_function_prologue): Add a cast to - HOST_WIDE_INT. - * config/avr/avr.c (avr_outgoing_args_size): Likewise. - * config/microblaze/microblaze.c (microblaze_function_prologue): - Likewise. - * config/cr16/cr16.c (cr16_return_pops_args): Update for new - TARGET_RETURN_POPS_ARGS interface. - (cr16_compute_frame, cr16_initial_elimination_offset): Add casts - to HOST_WIDE_INT. - * config/ft32/ft32.c (ft32_compute_frame): Likewise. - * config/i386/i386.c (ix86_return_pops_args): Update for new - TARGET_RETURN_POPS_ARGS interface. - (ix86_expand_split_stack_prologue): Add a cast to HOST_WIDE_INT. - * config/moxie/moxie.c (moxie_compute_frame): Likewise. - * config/m68k/m68k.c (m68k_return_pops_args): Update for new - TARGET_RETURN_POPS_ARGS interface. - * config/vax/vax.c (vax_return_pops_args): Likewise. - * config/pa/pa.h (STACK_POINTER_OFFSET): Add a cast to poly_int64. - (EXIT_IGNORE_STACK): Update reference to crtl->outgoing_args_size. - * config/arm/arm.h (CALLER_INTERWORKING_SLOT_SIZE): Likewise. - * config/powerpcspe/aix.h (STACK_DYNAMIC_OFFSET): Likewise. - * config/powerpcspe/darwin.h (STACK_DYNAMIC_OFFSET): Likewise. - * config/powerpcspe/powerpcspe.h (STACK_DYNAMIC_OFFSET): Likewise. - * config/rs6000/aix.h (STACK_DYNAMIC_OFFSET): Likewise. - * config/rs6000/darwin.h (STACK_DYNAMIC_OFFSET): Likewise. - * config/rs6000/rs6000.h (STACK_DYNAMIC_OFFSET): Likewise. - * dojump.h (saved_pending_stack_adjust): Change x_pending_stack_adjust - and x_stack_pointer_delta from int to poly_int64. - * dojump.c (do_pending_stack_adjust): Update accordingly. - * explow.c (allocate_dynamic_stack_space): Handle polynomial - stack_pointer_deltas. - * function.c (STACK_DYNAMIC_OFFSET): Add a cast to poly_int64. - (pad_to_arg_alignment): Track polynomial offsets. - (assign_parm_find_stack_rtl): Likewise. - (assign_parms, locate_and_pad_parm): Handle polynomial argument sizes. - * toplev.c (output_stack_usage): Update reference to - current_function_pushed_stack_size. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * function.c (in_arg_offset, var_offset, dynamic_offset) - (out_arg_offset, cfa_offset): Change from int to poly_int64. - (instantiate_new_reg): Return the new offset as a poly_int64_pod - rather than a HOST_WIDE_INT. - (instantiate_virtual_regs_in_rtx): Track polynomial offsets. - (instantiate_virtual_regs_in_insn): Likewise. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * rtl.h (get_args_size, add_args_size_note): New functions. - (find_args_size_adjust): Return a poly_int64 rather than a - HOST_WIDE_INT. - (fixup_args_size_notes): Likewise. Make the same change to the - end_args_size parameter. - * rtlanal.c (get_args_size, add_args_size_note): New functions. - * builtins.c (expand_builtin_trap): Use add_args_size_note. - * calls.c (emit_call_1): Likewise. - * explow.c (adjust_stack_1): Likewise. - * cfgcleanup.c (old_insns_match_p): Update use of - find_args_size_adjust. - * combine.c (distribute_notes): Track polynomial arg sizes. - * dwarf2cfi.c (dw_trace_info): Change beg_true_args_size, - end_true_args_size, beg_delay_args_size and end_delay_args_size - from HOST_WIDE_INT to poly_int64. - (add_cfi_args_size): Take the args_size as a poly_int64 rather - than a HOST_WIDE_INT. - (notice_args_size, notice_eh_throw, maybe_record_trace_start) - (maybe_record_trace_start_abnormal, scan_trace, connect_traces): Track - polynomial arg sizes. - * emit-rtl.c (try_split): Use get_args_size. - * recog.c (peep2_attempt): Likewise. - * reload1.c (reload_as_needed): Likewise. - * expr.c (find_args_size_adjust): Return the adjustment as a - poly_int64 rather than a HOST_WIDE_INT. - (fixup_args_size_notes): Change end_args_size from a HOST_WIDE_INT - to a poly_int64 and change the return type in the same way. - (emit_single_push_insn): Track polynomial arg sizes. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.h (push_block, emit_push_insn): Change the "extra" parameter - from HOST_WIDE_INT to poly_int64. - * expr.c (push_block, emit_push_insn): Likewise. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * function.h (frame_space): Change start and length from HOST_WIDE_INT - to poly_int64. - (get_frame_size): Return the size as a poly_int64 rather than a - HOST_WIDE_INT. - (frame_offset_overflow): Take the offset as a poly_int64 rather - than a HOST_WIDE_INT. - (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type) - (assign_stack_temp): Likewise for the size. - * function.c (get_frame_size): Return a poly_int64 rather than - a HOST_WIDE_INT. - (frame_offset_overflow): Take the offset as a poly_int64 rather - than a HOST_WIDE_INT. - (try_fit_stack_local): Take the start, length and size as poly_int64s - rather than HOST_WIDE_INTs. Return the offset as a poly_int64_pod - rather than a HOST_WIDE_INT. - (add_frame_space): Take the start and end as poly_int64s rather than - HOST_WIDE_INTs. - (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type) - (assign_stack_temp): Likewise for the size. - (temp_slot): Change size, base_offset and full_size from HOST_WIDE_INT - to poly_int64. - (find_temp_slot_from_address): Handle polynomial offsets. - (combine_temp_slots): Likewise. - * emit-rtl.h (rtl_data::x_frame_offset): Change from HOST_WIDE_INT - to poly_int64. - * cfgexpand.c (alloc_stack_frame_space): Return the offset as a - poly_int64 rather than a HOST_WIDE_INT. - (expand_one_stack_var_at): Take the offset as a poly_int64 rather - than a HOST_WIDE_INT. - (expand_stack_vars, expand_one_stack_var_1, expand_used_vars): Handle - polynomial frame offsets. - * config/m32r/m32r-protos.h (m32r_compute_frame_size): Take the size - as a poly_int64 rather than an int. - * config/m32r/m32r.c (m32r_compute_frame_size): Likewise. - * config/v850/v850-protos.h (compute_frame_size): Likewise. - * config/v850/v850.c (compute_frame_size): Likewise. - * config/xtensa/xtensa-protos.h (compute_frame_size): Likewise. - * config/xtensa/xtensa.c (compute_frame_size): Likewise. - * config/pa/pa-protos.h (pa_compute_frame_size): Likewise. - * config/pa/pa.c (pa_compute_frame_size): Likewise. - * explow.h (get_dynamic_stack_base): Take the offset as a poly_int64 - rather than a HOST_WIDE_INT. - * explow.c (get_dynamic_stack_base): Likewise. - * final.c (final_start_function): Use the constant lower bound - of the frame size for -Wframe-larger-than. - * ira.c (do_reload): Adjust for new get_frame_size return type. - * lra.c (lra): Likewise. - * reload1.c (reload): Likewise. - * config/avr/avr.c (avr_asm_function_end_prologue): Likewise. - * config/pa/pa.h (EXIT_IGNORE_STACK): Likewise. - * rtlanal.c (get_initial_register_offset): Return the offset as - a poly_int64 rather than a HOST_WIDE_INT. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * reload1.c (elim_table): Change initial_offset, offset and - previous_offset from HOST_WIDE_INT to poly_int64_pod. - (offsets_at): Change the target array's element type from - HOST_WIDE_INT to poly_int64_pod. - (set_label_offsets, eliminate_regs_1, eliminate_regs_in_insn) - (elimination_costs_in_insn, update_eliminable_offsets) - (verify_initial_elim_offsets, set_offsets_for_label) - (init_eliminable_invariants): Update after above changes. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * reload.h (reload::inc): Change from an int to a poly_int64_pod. - * reload.c (combine_reloads, debug_reload_to_stream): Likewise. - (decomposition): Change start and end from HOST_WIDE_INT - to poly_int64_pod. - (decompose, immune_p): Update accordingly. - (find_inc_amount): Return a poly_int64 rather than an int. - * reload1.c (inc_for_reload): Take the inc_amount as a poly_int64 - rather than an int. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * tree.h (get_inner_reference): Return the bitsize and bitpos - as poly_int64_pods rather than HOST_WIDE_INT. - * fold-const.h (ptr_difference_const): Return the pointer difference - as a poly_int64_pod rather than a HOST_WIDE_INT. - * expr.c (get_inner_reference): Return the bitsize and bitpos - as poly_int64_pods rather than HOST_WIDE_INT. - (expand_expr_addr_expr_1, expand_expr_real_1): Track polynomial - offsets and sizes. - * fold-const.c (make_bit_field_ref): Take the bitpos as a poly_int64 - rather than a HOST_WIDE_INT. Update call to get_inner_reference. - (optimize_bit_field_compare): Update call to get_inner_reference. - (decode_field_reference): Likewise. - (fold_unary_loc): Track polynomial offsets and sizes. - (split_address_to_core_and_offset): Return the bitpos as a - poly_int64_pod rather than a HOST_WIDE_INT. - (ptr_difference_const): Likewise for the pointer difference. - * asan.c (instrument_derefs): Track polynomial offsets and sizes. - * config/mips/mips.c (r10k_safe_mem_expr_p): Likewise. - * dbxout.c (dbxout_expand_expr): Likewise. - * dwarf2out.c (loc_list_for_address_of_addr_expr_of_indirect_ref) - (loc_list_from_tree_1, fortran_common): Likewise. - * gimple-laddress.c (pass_laddress::execute): Likewise. - * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Likewise. - * gimplify.c (gimplify_scan_omp_clauses): Likewise. - * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise. - * tree-affine.c (tree_to_aff_combination): Likewise. - (get_inner_reference_aff): Likewise. - * tree-data-ref.c (split_constant_offset_1): Likewise. - (dr_analyze_innermost): Likewise. - * tree-scalar-evolution.c (interpret_rhs_expr): Likewise. - * tree-sra.c (ipa_sra_check_caller): Likewise. - * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise. - * ubsan.c (maybe_instrument_pointer_overflow): Likewise. - (instrument_bool_enum_load, instrument_object_size): Likewise. - * gimple-ssa-strength-reduction.c (slsr_process_ref): Update call - to get_inner_reference. - * hsa-gen.c (gen_hsa_addr): Likewise. - * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Likewise. - * tsan.c (instrument_expr): Likewise. - * match.pd: Update call to ptr_difference_const. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * fold-const.c (fold_comparison): Track sizes and offsets as - poly_int64s rather than HOST_WIDE_INTs when folding address - comparisons. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.h (get_bit_range): Return the bitstart and bitend as - poly_uint64s rather than unsigned HOST_WIDE_INTs. Return the bitpos - as a poly_int64 rather than a HOST_WIDE_INT. - * expr.c (get_bit_range): Likewise. - (expand_assignment): Update call accordingly. - * fold-const.c (optimize_bit_field_compare): Likewise. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-protos.h (aarch64_addr_query_type): New enum. - (aarch64_legitimate_address_p): Use it instead of an rtx code, - as an optional final parameter. - * config/aarch64/aarch64.c (aarch64_classify_address): Likewise. - (aarch64_legitimate_address_p): Likewise. - (aarch64_print_address_internal): Take an aarch64_addr_query_type - instead of an rtx code. - (aarch64_address_valid_for_prefetch_p): Update calls accordingly. - (aarch64_legitimate_address_hook_p): Likewise. - (aarch64_print_ldpstp_address): Likewise. - (aarch64_print_operand_address): Likewise. - (aarch64_address_cost): Likewise. - * config/aarch64/constraints.md (Uml, Umq, Ump, Utq): Likewise. - * config/aarch64/predicates.md (aarch64_mem_pair_operand): Likewise. - (aarch64_mem_pair_lanes_operand): Likewise. - -2017-12-20 Richard Biener - - * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Call - update_stmt_if_modified. - -2017-12-20 Wilco Dijkstra - - PR tree-optimization/83491 - * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Check for SSA_NAME - before walking uses. Improve coding style and comments. - -2017-12-20 Tom de Vries - - * gimple-fold.c (fold_internal_goacc_dim): Simplify. - -2017-12-20 Jakub Jelinek - - PR ipa/83506 - * ipa-fnsummary.c (pass_data_ipa_free_fn_summary): Use 0 for - todo_flags_finish. - (pass_ipa_free_fn_summary): Add small_p private data member, - initialize to false in the ctor. - (pass_ipa_free_fn_summary::clone, - pass_ipa_free_fn_summary::set_pass_param, - pass_ipa_free_fn_summary::gate): New methods. - (pass_ipa_free_fn_summary::execute): Return TODO_remove_functions - | TODO_dump_symtab if small_p. - * passes.def: Add true parm for the existing pass_ipa_free_fn_summary - entry and add another instance of the pass with false parm after - ipa-pure-const. - * ipa-pure-const.c (pass_ipa_pure_const): Don't call - ipa_free_fn_summary here. - -2017-12-20 Paolo Carlini - - * gimplify.c (gimplify_return_expr): Remove dead error_mark_node check. - -2017-12-20 Martin Sebor - - PR testsuite/83131 - * builtins.c (expand_builtin_strlen): Use get_callee_fndecl. - (expand_builtin_strcmp): Call maybe_warn_nonstring_arg. - (expand_builtin_strncmp): Same. - -2017-12-20 Alexandre Oliva - - PR bootstrap/83396 - * cfgexpand.c (label_rtx_for_bb): Revert SFN changes that - allowed debug stmts before labels. - (expand_gimple_basic_block): Likewise. - * gimple-iterator.c (gimple_find_edge_insert_loc): Likewise. - * gimple-iterator.h (gsi_after_labels): Likewise. - * tree-cfgcleanup (remove_forwarder_block): Likewise, but - rename reused variable, and simplify using gsi_move_before. - * tree-ssa-tail-merge.c (find_duplicate): Likewise. - * tree-cfg.c (make_edges, cleanup_dead_labels): Likewise. - (gimple_can_merge_blocks_p, verify_gimple_in_cfg): Likewise. - (gimple_verify_flow_info, gimple_block_label): Likewise. - (make_blocks): Move debug markers after adjacent labels. - * cfgrtl.c (skip_insns_after_block): Revert SFN changes that - allowed debug insns outside blocks. - * df-scan.c (df_insn_delete): Likewise. - * lra-constraints.c (update_ebb_live_info): Likewise. - * var-tracking.c (get_first_insn, vt_emit_notes): Likewise. - (vt_initialize, delete_vta_debug_insns): Likewise. - (reemit_marker_as_note): Drop BB parm. Adjust callers. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * poly-int-types.h (round_down_to_byte_boundary): New macro. - (round_up_to_byte_boundary): Likewise. - * expr.h (get_bit_range): Add temporary shim. - * gimple-ssa-store-merging.c (store_operand_info): Change the - bitsize, bitpos, bitregion_start and bitregion_end fields from - unsigned HOST_WIDE_INT to poly_uint64. - (merged_store_group): Likewise load_align_base. - (compatible_load_p, compatible_load_p): Update accordingly. - (imm_store_chain_info::coalesce_immediate_stores): Likewise. - (split_group, imm_store_chain_info::output_merged_store): Likewise. - (mem_valid_for_store_merging): Return the bitsize, bitpos, - bitregion_start and bitregion_end as poly_uint64s rather than - unsigned HOST_WIDE_INTs. Track polynomial offsets internally. - (handled_load): Take the bitsize, bitpos, - bitregion_start and bitregion_end as poly_uint64s rather than - unsigned HOST_WIDE_INTs. - (pass_store_merging::process_store): Update call to - mem_valid_for_store_merging. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * builtins.c (get_object_alignment_2): Track polynomial offsets - and sizes. Update the alignment handling. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * tree.h (get_inner_reference): Add a version that returns the - offset and size as poly_int64_pods rather than HOST_WIDE_INTs. - * cfgexpand.c (expand_debug_expr): Track polynomial offsets. Simply - the case in which bitpos is not associated with the first byte. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-affine.h (get_inner_reference_aff): Return the size as a - poly_widest_int. - * tree-affine.c (get_inner_reference_aff): Likewise. - * tree-data-ref.c (dr_may_alias_p): Update accordingly. - * tree-ssa-loop-im.c (mem_refs_may_alias_p): Likewise. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * fold-const.c (pointer_may_wrap_p): Take the offset as a - HOST_WIDE_INT rather than a poly_int64. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * gimple-ssa-store-merging.c (symbolic_number::bytepos): Change from - HOST_WIDE_INT to poly_int64_pod. - (perform_symbolic_merge): Update accordingly. - (bswap_replace): Likewise. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-affine.h (aff_tree::offset): Change from widest_int - to poly_widest_int. - (wide_int_ext_for_comb): Delete. - (aff_combination_const, aff_comb_cannot_overlap_p): Take the - constants as poly_widest_int rather than widest_int. - (aff_combination_constant_multiple_p): Return the multiplier - as a poly_widest_int. - (aff_combination_zero_p, aff_combination_singleton_var_p): Handle - polynomial offsets. - * tree-affine.c (wide_int_ext_for_comb): Make original widest_int - version static and add an overload for poly_widest_int. - (aff_combination_const, aff_combination_add_cst) - (wide_int_constant_multiple_p, aff_comb_cannot_overlap_p): Take - the constants as poly_widest_int rather than widest_int. - (tree_to_aff_combination): Generalize INTEGER_CST case to - poly_int_tree_p. - (aff_combination_to_tree): Track offsets as poly_widest_ints. - (aff_combination_add_product, aff_combination_mult): Handle - polynomial offsets. - (aff_combination_constant_multiple_p): Return the multiplier - as a poly_widest_int. - * tree-predcom.c (determine_offset): Return the offset as a - poly_widest_int. - (split_data_refs_to_components, suitable_component_p): Update - accordingly. - (valid_initializer_p): Update call to - aff_combination_constant_multiple_p. - * tree-ssa-address.c (addr_to_parts): Handle polynomial offsets. - * tree-ssa-loop-ivopts.c (get_address_cost_ainc): Take the step - as a poly_int64 rather than a HOST_WIDE_INT. - (get_address_cost): Handle polynomial offsets. - (iv_elimination_compare_lt): Likewise. - (rewrite_use_nonlinear_expr): Likewise. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-dfa.h (get_addr_base_and_unit_offset_1): Return the offset - as a poly_int64_pod rather than a HOST_WIDE_INT. - (get_addr_base_and_unit_offset): Likewise. - * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise. - (get_addr_base_and_unit_offset): Likewise. - * doc/match-and-simplify.texi: Change off from HOST_WIDE_INT - to poly_int64 in example. - * fold-const.c (fold_binary_loc): Update call to - get_addr_base_and_unit_offset. - * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise. - (maybe_canonicalize_mem_ref_addr): Likewise. - (gimple_fold_stmt_to_constant_1): Likewise. - * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): - Likewise. - * ipa-param-manipulation.c (ipa_modify_call_arguments): Likewise. - * match.pd: Likewise. - * omp-low.c (lower_omp_target): Likewise. - * tree-sra.c (build_ref_for_offset): Likewise. - (build_debug_ref_for_model): Likewise. - * tree-ssa-address.c (maybe_fold_tmr): Likewise. - * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Likewise. - * tree-ssa-ccp.c (optimize_memcpy): Likewise. - * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise. - (constant_pointer_difference): Likewise. - * tree-ssa-loop-niter.c (expand_simple_operations): Likewise. - * tree-ssa-phiopt.c (jump_function_from_stmt): Likewise. - * tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise. - * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise. - (vn_reference_maybe_forwprop_address, vn_reference_lookup_3): Likewise. - (set_ssa_val_to): Likewise. - * tree-ssa-strlen.c (get_addr_stridx, addr_stridxptr) - (maybe_diag_stxncpy_trunc): Likewise. - * tree-vrp.c (vrp_prop::check_array_ref): Likewise. - * tree.c (build_simple_mem_ref_loc): Likewise. - (array_at_struct_end_p): Likewise. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-dfa.h (get_ref_base_and_extent): Return the base, size and - max_size as poly_int64_pods rather than HOST_WIDE_INTs. - (get_ref_base_and_extent_hwi): Declare. - * tree-dfa.c (get_ref_base_and_extent): Return the base, size and - max_size as poly_int64_pods rather than HOST_WIDE_INTs. - (get_ref_base_and_extent_hwi): New function. - * cfgexpand.c (expand_debug_expr): Update call to - get_ref_base_and_extent. - * dwarf2out.c (add_var_loc_to_decl): Likewise. - * gimple-fold.c (get_base_constructor): Return the offset as a - poly_int64_pod rather than a HOST_WIDE_INT. - (fold_const_aggregate_ref_1): Track polynomial sizes and offsets. - * ipa-polymorphic-call.c - (ipa_polymorphic_call_context::set_by_invariant) - (extr_type_from_vtbl_ptr_store): Track polynomial offsets. - (ipa_polymorphic_call_context::ipa_polymorphic_call_context) - (check_stmt_for_type_change): Use get_ref_base_and_extent_hwi - rather than get_ref_base_and_extent. - (ipa_polymorphic_call_context::get_dynamic_type): Likewise. - * ipa-prop.c (ipa_load_from_parm_agg, compute_complex_assign_jump_func) - (get_ancestor_addr_info, determine_locally_known_aggregate_parts): - Likewise. - * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Update - call to get_ref_base_and_extent. - * tree-sra.c (create_access, get_access_for_expr): Likewise. - * tree-ssa-alias.c (ao_ref_base, aliasing_component_refs_p) - (stmt_kills_ref_p): Likewise. - * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise. - * tree-ssa-scopedtables.c (avail_expr_hash, equal_mem_array_ref_p): - Likewise. - * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise. - Use get_ref_base_and_extent_hwi rather than get_ref_base_and_extent - when calling native_encode_expr. - * tree-ssa-structalias.c (get_constraint_for_component_ref): Update - call to get_ref_base_and_extent. - (do_structure_copy): Use get_ref_base_and_extent_hwi rather than - get_ref_base_and_extent. - * var-tracking.c (track_expr_p): Likewise. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * ipa-param-manipulation.h (ipa_parm_adjustment::offset): Change from - HOST_WIDE_INT to poly_int64_pod. - * ipa-param-manipulation.c (ipa_modify_call_arguments): Track - polynomail parameter offsets. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * gengtype.c (main): Handle poly_int64_pod. - * dwarf2out.h (dw_cfi_oprnd_cfa_loc): New dw_cfi_oprnd_type. - (dw_cfi_oprnd::dw_cfi_cfa_loc): New field. - (dw_cfa_location::offset, dw_cfa_location::base_offset): Change - from HOST_WIDE_INT to poly_int64_pod. - * dwarf2cfi.c (queued_reg_save::cfa_offset): Likewise. - (copy_cfa): New function. - (lookup_cfa_1): Use the cached dw_cfi_cfa_loc, if it exists. - (cfi_oprnd_equal_p): Handle dw_cfi_oprnd_cfa_loc. - (cfa_equal_p, dwarf2out_frame_debug_adjust_cfa) - (dwarf2out_frame_debug_cfa_offset, dwarf2out_frame_debug_expr) - (initial_return_save): Treat offsets as poly_ints. - (def_cfa_0): Likewise. Cache the CFA in dw_cfi_cfa_loc if either - offset is nonconstant. - (reg_save): Take the offset as a poly_int64. Fall back to - DW_CFA_expression for nonconstant offsets. - (queue_reg_save): Take the offset as a poly_int64. - * dwarf2out.c (dw_cfi_oprnd2_desc): Handle DW_CFA_def_cfa_expression. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * rtl.h (operand_subword, operand_subword_force): Take the offset - as a poly_uint64 an unsigned int. - * emit-rtl.c (operand_subword, operand_subword_force): Likewise. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/rtl.texi: Update documentation of SUBREG_BYTE. Document the - 'p' format code. Use INT_LIST rather than SUBREG as the example of - a code with an XINT and an XEXP. Remove the implication that - accessing an rtx field using XINT is expected to work. - * rtl.def (SUBREG): Change format from "ei" to "ep". - * rtl.h (rtunion::rt_subreg): New field. - (XCSUBREG): New macro. - (SUBREG_BYTE): Use it. - (subreg_shape): Change offset from an unsigned int to a poly_uint16. - Update constructor accordingly. - (subreg_shape::operator ==): Update accordingly. - (subreg_shape::unique_id): Return an unsigned HOST_WIDE_INT rather - than an unsigned int. - (subreg_lsb, subreg_lowpart_offset, subreg_highpart_offset): Return - a poly_uint64 rather than an unsigned int. - (subreg_lsb_1): Likewise. Take the offset as a poly_uint64 rather - than an unsigned int. - (subreg_size_offset_from_lsb, subreg_size_lowpart_offset) - (subreg_size_highpart_offset): Return a poly_uint64 rather than - an unsigned int. Take the sizes as poly_uint64s. - (subreg_offset_from_lsb): Return a poly_uint64 rather than - an unsigned int. Take the shift as a poly_uint64 rather than - an unsigned int. - (subreg_regno_offset, subreg_offset_representable_p): Take the offset - as a poly_uint64 rather than an unsigned int. - (simplify_subreg_regno): Likewise. - (byte_lowpart_offset): Return the memory offset as a poly_int64 - rather than an int. - (subreg_memory_offset): Likewise. Take the subreg offset as a - poly_uint64 rather than an unsigned int. - (simplify_subreg, simplify_gen_subreg, subreg_get_info) - (gen_rtx_SUBREG, validate_subreg): Take the subreg offset as a - poly_uint64 rather than an unsigned int. - * rtl.c (rtx_format): Describe 'p' in comment. - (copy_rtx, rtx_equal_p_cb, rtx_equal_p): Handle 'p'. - * emit-rtl.c (validate_subreg, gen_rtx_SUBREG): Take the subreg - offset as a poly_uint64 rather than an unsigned int. - (byte_lowpart_offset): Return the memory offset as a poly_int64 - rather than an int. - (subreg_memory_offset): Likewise. Take the subreg offset as a - poly_uint64 rather than an unsigned int. - (subreg_size_lowpart_offset, subreg_size_highpart_offset): Take the - mode sizes as poly_uint64s rather than unsigned ints. Return a - poly_uint64 rather than an unsigned int. - (subreg_lowpart_p): Treat subreg offsets as poly_ints. - (copy_insn_1): Handle 'p'. - * rtlanal.c (set_noop_p): Treat subregs offsets as poly_uint64s. - (subreg_lsb_1): Take the subreg offset as a poly_uint64 rather than - an unsigned int. Return the shift in the same way. - (subreg_lsb): Return the shift as a poly_uint64 rather than an - unsigned int. - (subreg_size_offset_from_lsb): Take the sizes and shift as - poly_uint64s rather than unsigned ints. Return the offset as - a poly_uint64. - (subreg_get_info, subreg_regno_offset, subreg_offset_representable_p) - (simplify_subreg_regno): Take the offset as a poly_uint64 rather than - an unsigned int. - * rtlhash.c (add_rtx): Handle 'p'. - * genemit.c (gen_exp): Likewise. - * gengenrtl.c (type_from_format, gendef): Likewise. - * gensupport.c (subst_pattern_match, get_alternatives_number) - (collect_insn_data, alter_predicate_for_insn, alter_constraints) - (subst_dup): Likewise. - * gengtype.c (adjust_field_rtx_def): Likewise. - * genrecog.c (find_operand, find_matching_operand, validate_pattern) - (match_pattern_2): Likewise. - (rtx_test::SUBREG_FIELD): New rtx_test::kind_enum. - (rtx_test::subreg_field): New function. - (operator ==, safe_to_hoist_p, transition_parameter_type) - (print_nonbool_test, print_test): Handle SUBREG_FIELD. - * genattrtab.c (attr_rtx_1): Say that 'p' is deliberately not handled. - * genpeep.c (match_rtx): Likewise. - * print-rtl.c (print_poly_int): Include if GENERATOR_FILE too. - (rtx_writer::print_rtx_operand): Handle 'p'. - (print_value): Handle SUBREG. - * read-rtl.c (apply_int_iterator): Likewise. - (rtx_reader::read_rtx_operand): Handle 'p'. - * alias.c (rtx_equal_for_memref_p): Likewise. - * cselib.c (rtx_equal_for_cselib_1, cselib_hash_rtx): Likewise. - * caller-save.c (replace_reg_with_saved_mem): Treat subreg offsets - as poly_ints. - * calls.c (expand_call): Likewise. - * combine.c (combine_simplify_rtx, expand_field_assignment): Likewise. - (make_extraction, gen_lowpart_for_combine): Likewise. - * loop-invariant.c (hash_invariant_expr_1, invariant_expr_equal_p): - Likewise. - * cse.c (remove_invalid_subreg_refs): Take the offset as a poly_uint64 - rather than an unsigned int. Treat subreg offsets as poly_ints. - (exp_equiv_p): Handle 'p'. - (hash_rtx_cb): Likewise. Treat subreg offsets as poly_ints. - (equiv_constant, cse_insn): Treat subreg offsets as poly_ints. - * dse.c (find_shift_sequence): Likewise. - * dwarf2out.c (rtl_for_decl_location): Likewise. - * expmed.c (extract_low_bits): Likewise. - * expr.c (emit_group_store, undefined_operand_subword_p): Likewise. - (expand_expr_real_2): Likewise. - * final.c (alter_subreg): Likewise. - (leaf_renumber_regs_insn): Handle 'p'. - * function.c (assign_parm_find_stack_rtl, assign_parm_setup_stack): - Treat subreg offsets as poly_ints. - * fwprop.c (forward_propagate_and_simplify): Likewise. - * ifcvt.c (noce_emit_move_insn, noce_emit_cmove): Likewise. - * ira.c (get_subreg_tracking_sizes): Likewise. - * ira-conflicts.c (go_through_subreg): Likewise. - * ira-lives.c (process_single_reg_class_operands): Likewise. - * jump.c (rtx_renumbered_equal_p): Likewise. Handle 'p'. - * lower-subreg.c (simplify_subreg_concatn): Take the subreg offset - as a poly_uint64 rather than an unsigned int. - (simplify_gen_subreg_concatn, resolve_simple_move): Treat - subreg offsets as poly_ints. - * lra-constraints.c (operands_match_p): Handle 'p'. - (match_reload, curr_insn_transform): Treat subreg offsets as poly_ints. - * lra-spills.c (assign_mem_slot): Likewise. - * postreload.c (move2add_valid_value_p): Likewise. - * recog.c (general_operand, indirect_operand): Likewise. - * regcprop.c (copy_value, maybe_mode_change): Likewise. - (copyprop_hardreg_forward_1): Likewise. - * reginfo.c (simplifiable_subregs_hasher::hash, simplifiable_subregs) - (record_subregs_of_mode): Likewise. - * rtlhooks.c (gen_lowpart_general, gen_lowpart_if_possible): Likewise. - * reload.c (operands_match_p): Handle 'p'. - (find_reloads_subreg_address): Treat subreg offsets as poly_ints. - * reload1.c (alter_reg, choose_reload_regs): Likewise. - (compute_reload_subreg_offset): Likewise, and return an poly_int64. - * simplify-rtx.c (simplify_truncation, simplify_binary_operation_1): - (test_vector_ops_duplicate): Treat subreg offsets as poly_ints. - (simplify_const_poly_int_tests::run): Likewise. - (simplify_subreg, simplify_gen_subreg): Take the subreg offset as - a poly_uint64 rather than an unsigned int. - * valtrack.c (debug_lowpart_subreg): Likewise. - * var-tracking.c (var_lowpart): Likewise. - (loc_cmp): Handle 'p'. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * ira.c (get_subreg_tracking_sizes): New function. - (init_live_subregs): Take an integer size rather than a register. - (build_insn_chain): Use get_subreg_tracking_sizes. Update calls - to init_live_subregs. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.c (store_constructor_field): Change bitsize from a - unsigned HOST_WIDE_INT to a poly_uint64 and bitpos from a - HOST_WIDE_INT to a poly_int64. - (store_constructor): Change size from a HOST_WIDE_INT to - a poly_int64. - (store_field): Likewise bitsize and bitpos. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * expmed.h (store_bit_field): Change bitregion_start and - bitregion_end from unsigned HOST_WIDE_INT to poly_uint64. - * expmed.c (adjust_bit_field_mem_for_reg, strict_volatile_bitfield_p) - (store_bit_field_1, store_integral_bit_field, store_bit_field) - (store_fixed_bit_field, store_split_bit_field): Likewise. - * expr.c (store_constructor_field, store_field): Likewise. - (optimize_bitfield_assignment_op): Likewise. Make the same change - to bitsize and bitpos. - * machmode.h (bit_field_mode_iterator): Change m_bitregion_start - and m_bitregion_end from HOST_WIDE_INT to poly_int64. Make the - same change in the constructor arguments. - (get_best_mode): Change bitregion_start and bitregion_end from - unsigned HOST_WIDE_INT to poly_uint64. - * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator): - Change bitregion_start and bitregion_end from HOST_WIDE_INT to - poly_int64. - (bit_field_mode_iterator::next_mode): Update for new types - of m_bitregion_start and m_bitregion_end. - (get_best_mode): Change bitregion_start and bitregion_end from - unsigned HOST_WIDE_INT to poly_uint64. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * rtl.h (simplify_gen_subreg): Add a temporary overload that - accepts poly_uint64 offsets. - * expmed.h (extract_bit_field): Take bitsize and bitnum as - poly_uint64s rather than unsigned HOST_WIDE_INTs. - * expmed.c (lowpart_bit_field_p): Likewise. - (extract_bit_field_as_subreg): New function, split out from... - (extract_bit_field_1): ...here. Take bitsize and bitnum as - poly_uint64s rather than unsigned HOST_WIDE_INTs. For vector - extractions, check that BITSIZE matches the size of the extracted - value and that BITNUM is an exact multiple of that size. - If all else fails, try forcing the value into memory if - BITNUM is variable, and adjusting the address so that the - offset is constant. Split the part that can only handle constant - bitsize and bitnum out into... - (extract_integral_bit_field): ...this new function. - (extract_bit_field): Take bitsize and bitnum as poly_uint64s - rather than unsigned HOST_WIDE_INTs. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * expmed.h (store_bit_field): Take bitsize and bitnum as - poly_uint64s rather than unsigned HOST_WIDE_INTs. - * expmed.c (simple_mem_bitfield_p): Likewise. Add a parameter - that returns the byte size. - (store_bit_field_1): Take bitsize and bitnum as - poly_uint64s rather than unsigned HOST_WIDE_INTs. Update call - to simple_mem_bitfield_p. Split the part that can only handle - constant bitsize and bitnum out into... - (store_integral_bit_field): ...this new function. - (store_bit_field): Take bitsize and bitnum as poly_uint64s rather - than unsigned HOST_WIDE_INTs. - (extract_bit_field_1): Update call to simple_mem_bitfield_p. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * lra-int.h (lra_reg): Change offset from int to poly_int64. - (lra_insn_recog_data): Change sp_offset from HOST_WIDE_INT - to poly_int64. - (lra_eliminate_regs_1, eliminate_regs_in_insn): Change - update_sp_offset from a HOST_WIDE_INT to a poly_int64. - (lra_update_reg_val_offset, lra_reg_val_equal_p): Take the - offset as a poly_int64 rather than an int. - * lra-assigns.c (find_hard_regno_for_1): Handle poly_int64 offsets. - (setup_live_pseudos_and_spill_after_risky_transforms): Likewise. - * lra-constraints.c (equiv_address_substitution): Track offsets - as poly_int64s. - (emit_inc): Check poly_int_rtx_p instead of CONST_INT_P. - (curr_insn_transform): Handle the new form of sp_offset. - * lra-eliminations.c (lra_elim_table): Change previous_offset - and offset from HOST_WIDE_INT to poly_int64. - (print_elim_table, update_reg_eliminate): Update accordingly. - (self_elim_offsets): Change from HOST_WIDE_INT to poly_int64_pod. - (get_elimination): Update accordingly. - (form_sum): Check poly_int_rtx_p instead of CONST_INT_P. - (lra_eliminate_regs_1, eliminate_regs_in_insn): Change - update_sp_offset from a HOST_WIDE_INT to a poly_int64. Handle - poly_int64 offsets generally. - (curr_sp_change): Change from HOST_WIDE_INT to poly_int64. - (mark_not_eliminable, init_elimination): Update accordingly. - (remove_reg_equal_offset_note): Return a bool and pass the new - offset back by pointer as a poly_int64. - * lra-remat.c (change_sp_offset): Take sp_offset as a poly_int64 - rather than a HOST_WIDE_INT. - (do_remat): Track offsets poly_int64s. - * lra.c (lra_update_insn_recog_data, setup_sp_offset): Likewise. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * rtl.h (mem_attrs): Add a default constructor. Change size and - offset from HOST_WIDE_INT to poly_int64. - * emit-rtl.h (set_mem_offset, set_mem_size, adjust_address_1) - (adjust_automodify_address_1, set_mem_attributes_minus_bitpos) - (widen_memory_access): Take the sizes and offsets as poly_int64s - rather than HOST_WIDE_INTs. - * alias.c (ao_ref_from_mem): Handle the new form of MEM_OFFSET. - (offset_overlap_p): Take poly_int64s rather than HOST_WIDE_INTs - and ints. - (adjust_offset_for_component_ref): Change the offset from a - HOST_WIDE_INT to a poly_int64. - (nonoverlapping_memrefs_p): Track polynomial offsets and sizes. - * cfgcleanup.c (merge_memattrs): Update after mem_attrs changes. - * dce.c (find_call_stack_args): Likewise. - * dse.c (record_store): Likewise. - * dwarf2out.c (tls_mem_loc_descriptor, dw_sra_loc_expr): Likewise. - * print-rtl.c (rtx_writer::print_rtx): Likewise. - * read-rtl-function.c (test_loading_mem): Likewise. - * rtlanal.c (may_trap_p_1): Likewise. - * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise. - * var-tracking.c (int_mem_offset, track_expr_p): Likewise. - * emit-rtl.c (mem_attrs_eq_p, get_mem_align_offset): Likewise. - (mem_attrs::mem_attrs): New function. - (set_mem_attributes_minus_bitpos): Change bitpos from a - HOST_WIDE_INT to poly_int64. - (set_mem_alias_set, set_mem_addr_space, set_mem_align, set_mem_expr) - (clear_mem_offset, clear_mem_size, change_address) - (get_spill_slot_decl, set_mem_attrs_for_spill): Directly - initialize mem_attrs. - (set_mem_offset, set_mem_size, adjust_address_1) - (adjust_automodify_address_1, offset_address, widen_memory_access): - Likewise. Take poly_int64s rather than HOST_WIDE_INT. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * rtlanal.c (rtx_addr_can_trap_p_1): Take the offset and size - as poly_int64s rather than HOST_WIDE_INTs. Use a size of -1 - rather than 0 to represent an unknown size. Assert that the size - is known when the mode isn't BLKmode. - (may_trap_p_1): Use -1 for unknown sizes. - (rtx_addr_can_trap_p): Likewise. Pass BLKmode rather than VOIDmode. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * dse.c (store_info): Change offset and width from HOST_WIDE_INT - to poly_int64. Update commentary for positions_needed.large. - (read_info_type): Change offset and width from HOST_WIDE_INT - to poly_int64. - (set_usage_bits): Likewise. - (canon_address): Return the offset as a poly_int64 rather than - a HOST_WIDE_INT. Use strip_offset_and_add. - (set_all_positions_unneeded, any_positions_needed_p): Use - positions_needed.large to track stores with non-constant widths. - (all_positions_needed_p): Likewise. Take the offset and width - as poly_int64s rather than ints. Assert that rhs is nonnull. - (record_store): Cope with non-constant offsets and widths. - Nullify the rhs of an earlier store if we can't tell which bytes - of it are needed. - (find_shift_sequence): Take the access_size and shift as poly_int64s - rather than ints. - (get_stored_val): Take the read_offset and read_width as poly_int64s - rather than HOST_WIDE_INTs. - (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Handle - non-constant offsets and widths. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * inchash.h (inchash::hash::add_poly_int): New function. - * tree-ssa-alias.h (ao_ref::offset, ao_ref::size, ao_ref::max_size): - Use poly_int64 rather than HOST_WIDE_INT. - (ao_ref::max_size_known_p): New function. - * tree-ssa-sccvn.h (vn_reference_op_struct::off): Use poly_int64_pod - rather than HOST_WIDE_INT. - * tree-ssa-alias.c (ao_ref_base): Apply get_ref_base_and_extent - to temporaries until its interface is adjusted to match. - (ao_ref_init_from_ptr_and_size): Handle polynomial offsets and sizes. - (aliasing_component_refs_p, decl_refs_may_alias_p) - (indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p): Take - the offsets and max_sizes as poly_int64s instead of HOST_WIDE_INTs. - (refs_may_alias_p_1, stmt_kills_ref_p): Adjust for changes to - ao_ref fields. - * alias.c (ao_ref_from_mem): Likewise. - * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise. - * tree-ssa-dse.c (valid_ao_ref_for_dse, normalize_ref) - (clear_bytes_written_by, setup_live_bytes_from_ref, compute_trims) - (maybe_trim_complex_store, maybe_trim_constructor_store) - (live_bytes_read, dse_classify_store): Likewise. - * tree-ssa-sccvn.c (vn_reference_compute_hash, vn_reference_eq): - (copy_reference_ops_from_ref, ao_ref_init_from_vn_reference) - (fully_constant_vn_reference_p, valueize_refs_1): Likewise. - (vn_reference_lookup_3): Likewise. - * tree-ssa-uninit.c (warn_uninitialized_vars): Likewise. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-ssa-alias.c (indirect_ref_may_alias_decl_p) - (indirect_refs_may_alias_p): Use ranges_may_overlap_p - instead of ranges_overlap_p. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-ssa-alias.c (same_addr_size_stores_p): Take the offsets and - sizes as poly_int64s rather than HOST_WIDE_INTs. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * gimple-fold.h (fold_ctor_reference): Take the offset and size - as poly_uint64 rather than unsigned HOST_WIDE_INT. - * gimple-fold.c (fold_ctor_reference): Likewise. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (dwarf_poly_indeterminate_value): New hook. - * targhooks.h (default_dwarf_poly_indeterminate_value): Declare. - * targhooks.c (default_dwarf_poly_indeterminate_value): New function. - * doc/tm.texi.in (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Document. - * doc/tm.texi: Regenerate. - * dwarf2out.h (build_cfa_loc, build_cfa_aligned_loc): Take the - offset as a poly_int64. - * dwarf2out.c (new_reg_loc_descr): Move later in file. Take the - offset as a poly_int64. - (loc_descr_plus_const, loc_list_plus_const, build_cfa_aligned_loc): - Take the offset as a poly_int64. - (build_cfa_loc): Likewise. Use loc_descr_plus_const. - (frame_pointer_fb_offset): Change to a poly_int64. - (int_loc_descriptor): Take the offset as a poly_int64. Use - targetm.dwarf_poly_indeterminate_value for polynomial offsets. - (based_loc_descr): Take the offset as a poly_int64. - Use strip_offset_and_add to handle (plus X (const)). - Use new_reg_loc_descr instead of an open-coded version of the - previous implementation. - (mem_loc_descriptor): Handle CONST_POLY_INT. - (compute_frame_pointer_to_fb_displacement): Take the offset as a - poly_int64. Use strip_offset_and_add to handle (plus X (const)). - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * rtl.h (reg_attrs::offset): Change from HOST_WIDE_INT to poly_int64. - (gen_rtx_REG_offset): Take the offset as a poly_int64. - * inchash.h (inchash::hash::add_poly_hwi): New function. - * gengtype.c (main): Register poly_int64. - * emit-rtl.c (reg_attr_hasher::hash): Use inchash. Treat the - offset as a poly_int. - (reg_attr_hasher::equal): Use must_eq to compare offsets. - (get_reg_attrs, update_reg_offset, gen_rtx_REG_offset): Take the - offset as a poly_int64. - (set_reg_attrs_from_value): Treat the offset as a poly_int64. - * print-rtl.c (print_poly_int): New function. - (rtx_writer::print_rtx_operand_code_r): Treat REG_OFFSET as - a poly_int. - * var-tracking.c (track_offset_p, get_tracked_reg_offset): New - functions. - (var_reg_set, var_reg_delete_and_set, var_reg_delete): Use them. - (same_variable_part_p, track_loc_p): Take the offset as a poly_int64. - (vt_get_decl_and_offset): Return the offset as a poly_int64. - Enforce track_offset_p for parts of a PARALLEL. - (vt_add_function_parameter): Use const_offset for the final - offset to track. Use get_tracked_reg_offset for the parts - of a PARALLEL. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (truly_noop_truncation): Take poly_uint64s instead of - unsigned ints. Change default to hook_bool_puint64_puint64_true. - * doc/tm.texi: Regenerate. - * hooks.h (hook_bool_uint_uint_true): Delete. - (hook_bool_puint64_puint64_true): Declare. - * hooks.c (hook_bool_uint_uint_true): Delete. - (hook_bool_puint64_puint64_true): New function. - * config/mips/mips.c (mips_truly_noop_truncation): Take poly_uint64s - instead of unsigned ints. - * config/spu/spu.c (spu_truly_noop_truncation): Likewise. - * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): Likewise. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * optabs.h (expand_operand): Add an int_value field. - (create_expand_operand): Add an int_value parameter and use it - to initialize the new expand_operand field. - (create_integer_operand): Replace with a declaration of a function - that accepts poly_int64s. Move the implementation to... - * optabs.c (create_integer_operand): ...here. - (maybe_legitimize_operand): For EXPAND_INTEGER, check whether - the mode preserves the value of int_value, instead of calling - const_int_operand on the rtx. Use gen_int_mode to generate - the new rtx. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * dumpfile.h (dump_dec): Declare. - * dumpfile.c (dump_dec): New function. - * pretty-print.h (pp_wide_integer): Turn into a function and - declare a poly_int version. - * pretty-print.c (pp_wide_integer): New function for poly_ints. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/generic.texi (POLY_INT_CST): Document. - * tree.def (POLY_INT_CST): New tree code. - * treestruct.def (TS_POLY_INT_CST): New tree layout. - * tree-core.h (tree_poly_int_cst): New struct. - (tree_node): Add a poly_int_cst field. - * tree.h (POLY_INT_CST_P, POLY_INT_CST_COEFF): New macros. - (wide_int_to_tree, force_fit_type): Take a poly_wide_int_ref - instead of a wide_int_ref. - (build_int_cst, build_int_cst_type): Take a poly_int64 instead - of a HOST_WIDE_INT. - (build_int_cstu, build_array_type_nelts): Take a poly_uint64 - instead of an unsigned HOST_WIDE_INT. - (build_poly_int_cst, tree_fits_poly_int64_p, tree_fits_poly_uint64_p) - (ptrdiff_tree_p): Declare. - (tree_to_poly_int64, tree_to_poly_uint64): Likewise. Provide - extern inline implementations if the target doesn't use POLY_INT_CST. - (poly_int_tree_p): New function. - (wi::unextended_tree): New class. - (wi::int_traits ): New override. - (wi::extended_tree): Add a default constructor. - (wi::extended_tree::get_tree): New function. - (wi::widest_extended_tree, wi::offset_extended_tree): New typedefs. - (wi::tree_to_widest_ref, wi::tree_to_offset_ref): Use them. - (wi::tree_to_poly_widest_ref, wi::tree_to_poly_offset_ref) - (wi::tree_to_poly_wide_ref): New typedefs. - (wi::ints_for): Provide overloads for extended_tree and - unextended_tree. - (poly_int_cst_value, wi::to_poly_widest, wi::to_poly_offset) - (wi::to_wide): New functions. - (wi::fits_to_boolean_p, wi::fits_to_tree_p): Handle poly_ints. - * tree.c (poly_int_cst_hasher): New struct. - (poly_int_cst_hash_table): New variable. - (tree_node_structure_for_code, tree_code_size, simple_cst_equal) - (valid_constant_size_p, add_expr, drop_tree_overflow): Handle - POLY_INT_CST. - (initialize_tree_contains_struct): Handle TS_POLY_INT_CST. - (init_ttree): Initialize poly_int_cst_hash_table. - (build_int_cst, build_int_cst_type, build_invariant_address): Take - a poly_int64 instead of a HOST_WIDE_INT. - (build_int_cstu, build_array_type_nelts): Take a poly_uint64 - instead of an unsigned HOST_WIDE_INT. - (wide_int_to_tree): Rename to... - (wide_int_to_tree_1): ...this. - (build_new_poly_int_cst, build_poly_int_cst): New functions. - (force_fit_type): Take a poly_wide_int_ref instead of a wide_int_ref. - (wide_int_to_tree): New function that takes a poly_wide_int_ref. - (ptrdiff_tree_p, tree_to_poly_int64, tree_to_poly_uint64) - (tree_fits_poly_int64_p, tree_fits_poly_uint64_p): New functions. - * lto-streamer-out.c (DFS::DFS_write_tree_body, hash_tree): Handle - TS_POLY_INT_CST. - * tree-streamer-in.c (lto_input_ts_poly_tree_pointers): Likewise. - (streamer_read_tree_body): Likewise. - * tree-streamer-out.c (write_ts_poly_tree_pointers): Likewise. - (streamer_write_tree_body): Likewise. - * tree-streamer.c (streamer_check_handled_ts_structures): Likewise. - * asan.c (asan_protect_global): Require the size to be an INTEGER_CST. - * cfgexpand.c (expand_debug_expr): Handle POLY_INT_CST. - * expr.c (expand_expr_real_1, const_vector_from_tree): Likewise. - * gimple-expr.h (is_gimple_constant): Likewise. - * gimplify.c (maybe_with_size_expr): Likewise. - * print-tree.c (print_node): Likewise. - * tree-data-ref.c (data_ref_compare_tree): Likewise. - * tree-pretty-print.c (dump_generic_node): Likewise. - * tree-ssa-address.c (addr_for_mem_ref): Likewise. - * tree-vect-data-refs.c (dr_group_sort_cmp): Likewise. - * tree-vrp.c (compare_values_warnv): Likewise. - * tree-ssa-loop-ivopts.c (determine_base_object, constant_multiple_of) - (get_loop_invariant_expr, add_candidate_1, get_computation_aff_1) - (force_expr_to_var_cost): Likewise. - * tree-ssa-loop.c (for_each_index): Likewise. - * fold-const.h (build_invariant_address, size_int_kind): Take a - poly_int64 instead of a HOST_WIDE_INT. - * fold-const.c (fold_negate_expr_1, const_binop, const_unop) - (fold_convert_const, multiple_of_p, fold_negate_const): Handle - POLY_INT_CST. - (size_binop_loc): Likewise. Allow int_const_binop_1 to fail. - (int_const_binop_2): New function, split out from... - (int_const_binop_1): ...here. Handle POLY_INT_CST. - (size_int_kind): Take a poly_int64 instead of a HOST_WIDE_INT. - * expmed.c (make_tree): Handle CONST_POLY_INT_P. - * gimple-ssa-strength-reduction.c (slsr_process_add) - (slsr_process_mul): Check for INTEGER_CSTs before using them - as candidates. - * stor-layout.c (bits_from_bytes): New function. - (bit_from_pos): Use it. - (layout_type): Likewise. For vectors, multiply the TYPE_SIZE_UNIT - by BITS_PER_UNIT to get the TYPE_SIZE. - * tree-cfg.c (verify_expr, verify_types_in_gimple_reference): Allow - MEM_REF and TARGET_MEM_REF offsets to be a POLY_INT_CST. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/rtl.texi (const_poly_int): Document. Also document the - rtl sharing behavior. - * gengenrtl.c (excluded_rtx): Return true for CONST_POLY_INT. - * rtl.h (const_poly_int_def): New struct. - (rtx_def::u): Add a cpi field. - (CASE_CONST_UNIQUE, CASE_CONST_ANY): Add CONST_POLY_INT. - (CONST_POLY_INT_P, CONST_POLY_INT_COEFFS): New macros. - (wi::rtx_to_poly_wide_ref): New typedef - (const_poly_int_value, wi::to_poly_wide, rtx_to_poly_int64) - (poly_int_rtx_p): New functions. - (trunc_int_for_mode): Declare a poly_int64 version. - (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT. - (immed_wide_int_const): Take a poly_wide_int_ref rather than - a wide_int_ref. - (strip_offset): Declare. - (strip_offset_and_add): New function. - * rtl.def (CONST_POLY_INT): New rtx code. - * rtl.c (rtx_size): Handle CONST_POLY_INT. - (shared_const_p): Use poly_int_rtx_p. - * emit-rtl.h (gen_int_mode): Take a poly_int64 instead of a - HOST_WIDE_INT. - (gen_int_shift_amount): Likewise. - * emit-rtl.c (const_poly_int_hasher): New class. - (const_poly_int_htab): New variable. - (init_emit_once): Initialize it when NUM_POLY_INT_COEFFS > 1. - (const_poly_int_hasher::hash): New function. - (const_poly_int_hasher::equal): Likewise. - (gen_int_mode): Take a poly_int64 instead of a HOST_WIDE_INT. - (immed_wide_int_const): Rename to... - (immed_wide_int_const_1): ...this and make static. - (immed_wide_int_const): New function, taking a poly_wide_int_ref - instead of a wide_int_ref. - (gen_int_shift_amount): Take a poly_int64 instead of a HOST_WIDE_INT. - (gen_lowpart_common): Handle CONST_POLY_INT. - * cse.c (hash_rtx_cb, equiv_constant): Likewise. - * cselib.c (cselib_hash_rtx): Likewise. - * dwarf2out.c (const_ok_for_output_1): Likewise. - * expr.c (convert_modes): Likewise. - * print-rtl.c (rtx_writer::print_rtx, print_value): Likewise. - * rtlhash.c (add_rtx): Likewise. - * explow.c (trunc_int_for_mode): Add a poly_int64 version. - (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT. - Handle existing CONST_POLY_INT rtxes. - * expmed.h (expand_shift): Take a poly_int64 instead of a - HOST_WIDE_INT. - * expmed.c (expand_shift): Likewise. - * rtlanal.c (strip_offset): New function. - (commutative_operand_precedence): Give CONST_POLY_INT the same - precedence as CONST_DOUBLE and put CONST_WIDE_INT between that - and CONST_INT. - * rtl-tests.c (const_poly_int_tests): New struct. - (rtl_tests_c_tests): Use it. - * simplify-rtx.c (simplify_const_unary_operation): Handle - CONST_POLY_INT. - (simplify_const_binary_operation): Likewise. - (simplify_binary_operation_1): Fold additions of symbolic constants - and CONST_POLY_INTs. - (simplify_subreg): Handle extensions and truncations of - CONST_POLY_INTs. - (simplify_const_poly_int_tests): New struct. - (simplify_rtx_c_tests): Use it. - * wide-int.h (storage_ref): Add default constructor. - (wide_int_ref_storage): Likewise. - (trailing_wide_ints): Use GTY((user)). - (trailing_wide_ints::operator[]): Add a const version. - (trailing_wide_ints::get_precision): New function. - (trailing_wide_ints::extra_size): Likewise. - -2017-12-20 Richard Sandiford - Alan Hayward - David Sherwood - - * emit-rtl.h (gen_int_shift_amount): Declare. - * emit-rtl.c (gen_int_shift_amount): New function. - * asan.c (asan_emit_stack_protection): Use gen_int_shift_amount - instead of GEN_INT. - * calls.c (shift_return_value): Likewise. - * cse.c (fold_rtx): Likewise. - * dse.c (find_shift_sequence): Likewise. - * expmed.c (init_expmed_one_mode, store_bit_field_1, expand_shift_1) - (expand_shift, expand_smod_pow2): Likewise. - * lower-subreg.c (shift_cost): Likewise. - * optabs.c (expand_superword_shift, expand_doubleword_mult) - (expand_unop, expand_binop, shift_amt_for_vec_perm_mask) - (expand_vec_perm_var): Likewise. - * simplify-rtx.c (simplify_unary_operation_1): Likewise. - (simplify_binary_operation_1): Likewise. - * combine.c (try_combine, find_split_point, force_int_to_mode) - (simplify_shift_const_1, simplify_shift_const): Likewise. - (change_zero_ext): Likewise. Use simplify_gen_binary. - -2017-12-20 Richard Sandiford - - * poly-int.h (multiple_p): Fix handling of two non-poly_ints. - -2017-12-20 Kyrylo Tkachov - - * doc/invoke.texi (ARM Options): Document accepted extension options - for -march=armv8.3-a. - -2017-12-20 Richard Earnshaw - - PR target/83105 - * config.gcc (arm*-*-linux*): When configured with --with-float=hard - or --with-float=softfp, set the default CPU to arm10e. - -2017-12-20 Eric Botcazou - - * config/visium/constraints.md (J, K, L): Use IN_RANGE macro. - * config/visium/predicates.md (const_shift_operand): Likewise. - * config/visium/visium.c (visium_legitimize_address): Fix oversight. - (visium_legitimize_reload_address): Likewise. - -2017-12-20 Kyrylo Tkachov - - PR target/82975 - * config/arm/arm.h (TEST_REGNO): Adjust comment as expected in r255830. - -2017-12-20 Jakub Jelinek - - PR c++/83490 - * calls.c (compute_argument_addresses): Ignore TYPE_EMPTY_P arguments. - -2017-12-20 Julia Koval - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_VPCLMULQDQ_SET, - OPTION_MASK_ISA_VPCLMULQDQ_UNSET): New. - (ix86_handle_option): Handle -mvpclmulqdq, move cx6 to flags2. - * config.gcc: Include vpclmulqdqintrin.h. - * config/i386/cpuid.h: Handle bit_VPCLMULQDQ. - * config/i386/driver-i386.c (host_detect_local_cpu): Handle - -mvpclmulqdq. - * config/i386/i386-builtin.def (__builtin_ia32_vpclmulqdq_v2di, - __builtin_ia32_vpclmulqdq_v4di, __builtin_ia32_vpclmulqdq_v8di): New. - * config/i386/i386-c.c (__VPCLMULQDQ__): New. - * config/i386/i386.c (isa2_opts): Add -mcx16. - (isa_opts): Add -mpclmulqdq, remove -mcx16. - (ix86_option_override_internal): Move mcx16 to flags2. - (ix86_valid_target_attribute_inner_p): Add vpclmulqdq. - (ix86_expand_builtin): Handle OPTION_MASK_ISA_VPCLMULQDQ. - * config/i386/i386.h (TARGET_VPCLMULQDQ, TARGET_VPCLMULQDQ_P): New. - * config/i386/i386.opt: Add mvpclmulqdq, move mcx16 to flags2. - * config/i386/immintrin.h: Include vpclmulqdqintrin.h. - * config/i386/sse.md (vpclmulqdq_): New pattern. - * config/i386/vpclmulqdqintrin.h (_mm512_clmulepi64_epi128, - _mm_clmulepi64_epi128, _mm256_clmulepi64_epi128): New intrinsics. - * doc/invoke.texi: Add -mvpclmulqdq. - -2017-12-20 Tom de Vries - - PR middle-end/83423 - * config/i386/i386.c (ix86_static_chain): Move - DECL_STATIC_CHAIN test ... - * calls.c (rtx_for_static_chain): ... here. New function. - * calls.h (rtx_for_static_chain): Declare. - * builtins.c (expand_builtin_setjmp_receiver): Use rtx_for_static_chain - instead of targetm.calls.static_chain. - * df-scan.c (df_get_entry_block_def_set): Same. - -2017-12-19 Tom de Vries - - PR tree-optimization/83493 - * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for): Unshare ub - and lb. - -2017-12-19 Jakub Jelinek - - * gimple-ssa-sprintf.c (format_directive): Use inform_n instead of - inform with hardcoded english plural handling. - -2017-12-18 Jeff Law - - PR tree-optimization/83477 - * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): For - a non-virtual PHI, always push a new range. - -2017-12-19 Martin Sebor - - PR middle-end/77608 - * builtins.c (compute_objsize): Handle non-constant offsets. - -2017-12-19 Jakub Jelinek - - PR tree-optimization/83444 - * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): For the - character load case, if get_stridx on MEM_REF's operand doesn't - look usable, retry with get_addr_stridx. - -2017-12-19 Alexandre Oliva - - PR debug/83422 - * var-tracking.c (vt_debug_insns_local): Do not drop markers. - (variable_tracking_main_1): Keep markers even when VTA fails. - - PR bootstrap/83396 - * cfgexpand.c (expand_gimple_basic_block): Expand label first, - even if there are markers before it. - * cfgrtl.c (rtl_verify_bb_layout): Reject DEBUG_INSNs outside BBs. - -2017-12-19 Jakub Jelinek - - * read-rtl.c (parse_reg_note_name): Replace Yoda conditions with - typical order conditions. - * sel-sched.c (extract_new_fences_from): Likewise. - * config/visium/constraints.md (J, K, L): Likewise. - * config/visium/predicates.md (const_shift_operand): Likewise. - * config/visium/visium.c (visium_legitimize_address, - visium_legitimize_reload_address): Likewise. - * config/m68k/m68k.c (output_reg_adjust, emit_reg_adjust): Likewise. - * config/arm/arm.c (arm_block_move_unaligned_straight): Likewise. - * config/avr/constraints.md (Y01, Ym1, Y02, Ym2): Likewise. - * config/avr/avr-log.c (avr_vdump, avr_log_set_avr_log, - SET_DUMP_DETAIL): Likewise. - * config/avr/predicates.md (const_8_16_24_operand): Likewise. - * config/avr/avr.c (STR_PREFIX_P, avr_popcount_each_byte, - avr_is_casesi_sequence, avr_casei_sequence_check_operands, - avr_set_core_architecture, avr_set_current_function, - avr_legitimize_reload_address, avr_asm_len, avr_print_operand, - output_movqi, output_movsisf, avr_out_plus, avr_out_bitop, - avr_out_fract, avr_adjust_insn_length, avr_encode_section_info, - avr_2word_insn_p, output_reload_in_const, avr_has_nibble_0xf, - avr_map_decompose, avr_fold_builtin): Likewise. - * config/avr/driver-avr.c (avr_devicespecs_file): Likewise. - * config/avr/gen-avr-mmcu-specs.c (str_prefix_p, print_mcu): Likewise. - * config/i386/i386.c (ix86_parse_stringop_strategy_string): Likewise. - * config/m32c/m32c-pragma.c (m32c_pragma_memregs): Likewise. - * config/m32c/m32c.c (m32c_conditional_register_usage, - m32c_address_cost): Likewise. - * config/m32c/predicates.md (shiftcount_operand, - longshiftcount_operand): Likewise. - * config/iq2000/iq2000.c (iq2000_expand_prologue): Likewise. - * config/nios2/nios2.c (nios2_handle_custom_fpu_insn_option, - can_use_cdx_ldstw): Likewise. - * config/nios2/nios2.h (CDX_REG_P): Likewise. - * config/cr16/cr16.h (RETURN_ADDR_RTX, REGNO_MODE_OK_FOR_BASE_P): - Likewise. - * config/cr16/cr16.md (*mov_double): Likewise. - * config/cr16/cr16.c (cr16_create_dwarf_for_multi_push): Likewise. - * config/h8300/h8300.c (h8300_rtx_costs, get_shift_alg): Likewise. - * config/vax/constraints.md (U06, U08, U16, CN6, S08, S16): Likewise. - * config/vax/vax.c (adjacent_operands_p): Likewise. - * config/ft32/constraints.md (L, b, KA): Likewise. - * config/ft32/ft32.c (ft32_load_immediate, ft32_expand_prologue): - Likewise. - * cfgexpand.c (expand_stack_alignment): Likewise. - * gcse.c (insert_expr_in_table): Likewise. - * print-rtl.c (rtx_writer::print_rtx_operand_codes_E_and_V): Likewise. - * cgraphunit.c (cgraph_node::expand): Likewise. - * ira-build.c (setup_min_max_allocno_live_range_point): Likewise. - * emit-rtl.c (add_insn): Likewise. - * input.c (dump_location_info): Likewise. - * passes.c (NEXT_PASS): Likewise. - * read-rtl-function.c (parse_note_insn_name, - function_reader::read_rtx_operand_r, function_reader::parse_mem_expr): - Likewise. - * sched-rgn.c (sched_rgn_init): Likewise. - * diagnostic-show-locus.c (layout::show_ruler): Likewise. - * combine.c (find_split_point, simplify_if_then_else, force_to_mode, - if_then_else_cond, simplify_shift_const_1, simplify_comparison): - Likewise. - * explow.c (eliminate_constant_term): Likewise. - * final.c (leaf_renumber_regs_insn): Likewise. - * cfgrtl.c (print_rtl_with_bb): Likewise. - * genhooks.c (emit_init_macros): Likewise. - * poly-int.h (maybe_ne, maybe_le, maybe_lt): Likewise. - * tree-data-ref.c (conflict_fn): Likewise. - * selftest.c (assert_streq): Likewise. - * expr.c (store_constructor_field, expand_expr_real_1): Likewise. - * fold-const.c (fold_range_test, extract_muldiv_1, fold_truth_andor, - fold_binary_loc, multiple_of_p): Likewise. - * reload.c (push_reload, find_equiv_reg): Likewise. - * et-forest.c (et_nca, et_below): Likewise. - * dbxout.c (dbxout_symbol_location): Likewise. - * reorg.c (relax_delay_slots): Likewise. - * dojump.c (do_compare_rtx_and_jump): Likewise. - * gengtype-parse.c (type): Likewise. - * simplify-rtx.c (simplify_gen_ternary, simplify_gen_relational, - simplify_const_relational_operation): Likewise. - * reload1.c (do_output_reload): Likewise. - * dumpfile.c (get_dump_file_info_by_switch): Likewise. - * gengtype.c (type_for_name): Likewise. - * gimple-ssa-sprintf.c (format_directive): Likewise. - -2017-12-19 Kyrylo Tkachov - - PR target/82975 - * config/arm/arm.h (TEST_REGNO): Check reg_renumber is set before - accessing it. Adjust comment. - -2017-12-19 Jakub Jelinek - - PR middle-end/81914 - * predict.c (zero_one_minusone): New function. - (apply_return_prediction): Avoid return prediction for functions - returning only -1, 0 and 1 values, unless they only return -1 and 0 - or 0 and 1. - -2017-12-19 Claudiu Zissulescu - - * config/arc/arc.c (legitimate_scaled_address_p): Clean - fall-through warning. - (arc_compute_frame_size): Remove unused variables. - (arc_print_operand): Fix fprintif format. - (arc_can_follow_jump): Clean fall-through warning. - -2017-12-19 Marek Polacek - - PR c++/83489 - * config/i386/i386.c (init_cumulative_args): Don't check TYPE_EMPTY_P - on an error node. - -2017-12-19 Claudiu Zissulescu - - * config/arc/arc.c (overriderregs): New variable. - (arc_override_options): Track fixed/call saved/call options. - (arc_conditional_register_usage): Check against overrideregs - variable whenever we change register properties. - -2017-12-19 Nathan Sidwell - - * opts.c (finish_options): Don't prefix dump_base_name if it - already contains directories. - -2017-12-19 Martin Liska - - PR rtl-optimization/82675 - * loop-unroll.c (unroll_loop_constant_iterations): Allocate one - more element in sbitmap. - -2017-12-19 Paolo Carlini - - * gimplify.c (gimplify_expr): Use error_operand_p. - -2017-12-19 Sebastian Huber - - PR target/83387 - * config/rs6000/t-rtems (MULTILIB_REQUIRED): Remove 64-bit soft-float - multilib. - -2017-12-19 Daniel Cederman - - * config/sparc/sparc.c (sparc_do_work_around_errata): Make sure - the jump is to a label. - -2017-12-19 Jakub Jelinek - - PR tree-optimization/83444 - * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): Optimize - character loads. - - PR ipa/82801 - PR ipa/83346 - * ipa-inline.c (flatten_remove_node_hook): New function. - (ipa_inline): Keep only nodes with flatten attribute at the end of - the array in the order from ipa_reverse_postorder, only walk that - portion of array for flattening, if there is more than one such - node, temporarily register a removal hook and ignore removed nodes. - - PR tree-optimization/80631 - * tree-vect-loop.c (vect_create_epilog_for_reduction): Compare - induc_code against MAX_EXPR or MIN_EXPR instead of reduc_fn against - IFN_REDUC_MAX or IFN_REDUC_MIN. - -2017-12-18 Jeff Law - - * tree-ssa-dom.c (record_equivalences_from_phis): Do not - record symbolic equivalences from backedges in the CFG. - - Revert - 2017-11-19 Jeff Law - - * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling - of degenerates resulting from ignoring an edge. - -2017-12-18 Martin Sebor - - PR middle-end/83373 - PR tree-optimization/78450 - * tree-ssa-strlen.c (maybe_set_strlen_range): New function. - (handle_builtin_strlen): Call it. - -2017-12-18 Segher Boessenkool - - PR rtl-optimization/83424 - * rtlanal.c (dead_or_set_regno_p): Handle CLOBBER just like SET. - -2017-12-18 Marek Polacek - - PR middle-end/83463 - * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): - Check if TYPE is INTEGRAL_TYPE_P before accessing its min/max - values. - -2017-12-18 Claudiu Zissulescu - - * config/arc/arc.md (maddsidi4, maddsidi4_split): Update pattern. - (umaddsidi4, umaddsidi_split): Likewise. - -2017-12-18 Claudiu Zissulescu - - * config/arc/arc.c (arc_legitimate_constant_p): Always check all - constants. - -2017-12-18 Andreas Krebbel - - PR target/83420 - * config/s390/s390.c (s390_option_override): Avoid strncpy. - -2017-12-18 Richard Biener - - PR tree-optimization/81877 - * tree-ssa-loop-im.c (ref_indep_loop_p): Remove safelen parameters. - (outermost_indep_loop): Adjust. - (ref_indep_loop_p_1): Likewise. Remove safelen handling again. - (can_sm_ref_p): Adjust. - -2017-12-18 Richard Biener - - PR middle-end/77291 - * tree.c (array_at_struct_end_p): Return true if the underlying - object has space for at least one element in excess of what - the array domain specifies. - -2017-12-17 Sandra Loosemore - - * doc/extend.texi (x86 Function Attributes): Reformat nocf_check - example to avoid overfull hbox. - * doc/invoke.texi (Option Summary): Add missing @gol. - (C++ Dialect Options): Reformat -Wnoexcept-type example to avoid - overfull hbox. - -2017-12-17 Sandra Loosemore - Kyrylo Tkachov - - * doc/invoke.texi (Option Summary): Add -mverbose-cost-dump - to AArch64 and ARM lists, plus missing -mflip-thumb for ARM. - (AArch64 Options): Document -mverbose-cost-dump. - (ARM Options): Likewise, plus -mflip-thumb. - -2017-12-17 Martin Sebor - - PR bootstrap/83446 - * gimple-ssa-warn-restrict.c - (builtin_memref::offset_out_of_bounds): Correct the handling of - anti-ranges. - -2017-12-17 Sandra Loosemore - - * doc/invoke.texi (ARC Options): Add missing -mlra entry. - -2017-12-17 John David Anglin - - * config/pa/pa.c (pa_som_asm_init_sections): Fix comment. - -2017-12-17 Markus Trippelsdorf - - * x86-tune-costs.h (skylake_cost, core_cost): Decrease r64 multiply - latencies. - -2017-12-16 Sandra Loosemore - - * doc/invoke.texi: Fix some typos. - -2017-12-16 Martin Sebor - - PR tree-optimization/78918 - * Makefile.in (OBJS): Add gimple-ssa-warn-restrict.o. - * builtins.c (check_sizes): Rename... - (check_access): ...to this. Rename function arguments for clarity. - (check_memop_sizes): Adjust names. - (expand_builtin_memchr, expand_builtin_memcpy): Same. - (expand_builtin_memmove, expand_builtin_mempcpy): Same. - (expand_builtin_strcat, expand_builtin_stpncpy): Same. - (check_strncat_sizes, expand_builtin_strncat): Same. - (expand_builtin_strncpy, expand_builtin_memset): Same. - (expand_builtin_bzero, expand_builtin_memcmp): Same. - (expand_builtin_memory_chk, maybe_emit_chk_warning): Same. - (maybe_emit_sprintf_chk_warning): Same. - (expand_builtin_strcpy): Adjust. - (expand_builtin_stpcpy): Same. - (expand_builtin_with_bounds): Detect out-of-bounds accesses - in pointer-checking forms of memcpy, memmove, and mempcpy. - (gcall_to_tree_minimal, max_object_size): Define new functions. - * builtins.h (max_object_size): Declare. - * calls.c (alloc_max_size): Call max_object_size instead of - hardcoding ssizetype limit. - (get_size_range): Handle new argument. - * calls.h (get_size_range): Add a new argument. - * cfgexpand.c (expand_call_stmt): Propagate no-warning bit. - * doc/invoke.texi (-Wrestrict): Adjust, add example. - * gimple-fold.c (gimple_fold_builtin_memory_op): Detect overlapping - operations. - (gimple_fold_builtin_memory_chk): Same. - (gimple_fold_builtin_stxcpy_chk): New function. - * gimple-ssa-warn-restrict.c: New source. - * gimple-ssa-warn-restrict.h: New header. - * gimple.c (gimple_build_call_from_tree): Propagate location. - * passes.def (pass_warn_restrict): Add new pass. - * tree-pass.h (make_pass_warn_restrict): Declare. - * tree-ssa-strlen.c (handle_builtin_strcpy): Detect overlapping - operations. - (handle_builtin_strcat): Same. - (strlen_optimize_stmt): Rename... - (strlen_check_and_optimize_stmt): ...to this. Handle strncat, - stpncpy, strncpy, and their checking forms. - -2017-12-16 Jan Hubicka - - PR rtl-optimization/82849 - * modulo-sched.c (sms_schedule): Use get_estimated_loop_iterations_int - and get_max_loop_iterations_int. - -2017-12-16 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (mode_for_size, int_mode_for_size, float_mode_for_size) - (smallest_mode_for_size, smallest_int_mode_for_size): Take the mode - size as a poly_uint64. - (mode_for_vector, mode_for_int_vector): Take the number of vector - elements as a poly_uint64. - * stor-layout.c (mode_for_size, smallest_mode_for_size): Take the mode - size as a poly_uint64. - (mode_for_vector, mode_for_int_vector): Take the number of vector - elements as a poly_uint64. - -2017-12-16 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (MACRO_MODE): New macro. - * addresses.h (base_reg_class, ok_for_base_p_1): Use it. - * targhooks.c (default_libcall_value, default_secondary_reload) - (default_memory_move_cost, default_register_move_cost) - (default_class_max_nregs): Likewise. - -2017-12-16 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/sourcebuild.texi: Document IN_TARGET_CODE. - * genattrtab.c (write_header): Define IN_TARGET_CODE to 1 in the - target C file. - * genautomata.c (main): Likewise. - * genconditions.c (write_header): Likewise. - * genemit.c (main): Likewise. - * genextract.c (print_header): Likewise. - * genopinit.c (main): Likewise. - * genoutput.c (output_prologue): Likewise. - * genpeep.c (main): Likewise. - * genpreds.c (write_insn_preds_c): Likewise. - * genrecog.c (writer_header): Likewise. - * config/aarch64/aarch64-builtins.c (IN_TARGET_CODE): Define. - * config/aarch64/aarch64-c.c (IN_TARGET_CODE): Likewise. - * config/aarch64/aarch64.c (IN_TARGET_CODE): Likewise. - * config/aarch64/cortex-a57-fma-steering.c (IN_TARGET_CODE): Likewise. - * config/aarch64/driver-aarch64.c (IN_TARGET_CODE): Likewise. - * config/alpha/alpha.c (IN_TARGET_CODE): Likewise. - * config/alpha/driver-alpha.c (IN_TARGET_CODE): Likewise. - * config/arc/arc-c.c (IN_TARGET_CODE): Likewise. - * config/arc/arc.c (IN_TARGET_CODE): Likewise. - * config/arc/driver-arc.c (IN_TARGET_CODE): Likewise. - * config/arm/aarch-common.c (IN_TARGET_CODE): Likewise. - * config/arm/arm-builtins.c (IN_TARGET_CODE): Likewise. - * config/arm/arm-c.c (IN_TARGET_CODE): Likewise. - * config/arm/arm.c (IN_TARGET_CODE): Likewise. - * config/arm/driver-arm.c (IN_TARGET_CODE): Likewise. - * config/avr/avr-c.c (IN_TARGET_CODE): Likewise. - * config/avr/avr-devices.c (IN_TARGET_CODE): Likewise. - * config/avr/avr-log.c (IN_TARGET_CODE): Likewise. - * config/avr/avr.c (IN_TARGET_CODE): Likewise. - * config/avr/driver-avr.c (IN_TARGET_CODE): Likewise. - * config/avr/gen-avr-mmcu-specs.c (IN_TARGET_CODE): Likewise. - * config/bfin/bfin.c (IN_TARGET_CODE): Likewise. - * config/c6x/c6x.c (IN_TARGET_CODE): Likewise. - * config/cr16/cr16.c (IN_TARGET_CODE): Likewise. - * config/cris/cris.c (IN_TARGET_CODE): Likewise. - * config/darwin.c (IN_TARGET_CODE): Likewise. - * config/epiphany/epiphany.c (IN_TARGET_CODE): Likewise. - * config/epiphany/mode-switch-use.c (IN_TARGET_CODE): Likewise. - * config/epiphany/resolve-sw-modes.c (IN_TARGET_CODE): Likewise. - * config/fr30/fr30.c (IN_TARGET_CODE): Likewise. - * config/frv/frv.c (IN_TARGET_CODE): Likewise. - * config/ft32/ft32.c (IN_TARGET_CODE): Likewise. - * config/h8300/h8300.c (IN_TARGET_CODE): Likewise. - * config/i386/djgpp.c (IN_TARGET_CODE): Likewise. - * config/i386/driver-i386.c (IN_TARGET_CODE): Likewise. - * config/i386/driver-mingw32.c (IN_TARGET_CODE): Likewise. - * config/i386/host-cygwin.c (IN_TARGET_CODE): Likewise. - * config/i386/host-i386-darwin.c (IN_TARGET_CODE): Likewise. - * config/i386/host-mingw32.c (IN_TARGET_CODE): Likewise. - * config/i386/i386-c.c (IN_TARGET_CODE): Likewise. - * config/i386/i386.c (IN_TARGET_CODE): Likewise. - * config/i386/intelmic-mkoffload.c (IN_TARGET_CODE): Likewise. - * config/i386/msformat-c.c (IN_TARGET_CODE): Likewise. - * config/i386/winnt-cxx.c (IN_TARGET_CODE): Likewise. - * config/i386/winnt-stubs.c (IN_TARGET_CODE): Likewise. - * config/i386/winnt.c (IN_TARGET_CODE): Likewise. - * config/i386/x86-tune-sched-atom.c (IN_TARGET_CODE): Likewise. - * config/i386/x86-tune-sched-bd.c (IN_TARGET_CODE): Likewise. - * config/i386/x86-tune-sched-core.c (IN_TARGET_CODE): Likewise. - * config/i386/x86-tune-sched.c (IN_TARGET_CODE): Likewise. - * config/ia64/ia64-c.c (IN_TARGET_CODE): Likewise. - * config/ia64/ia64.c (IN_TARGET_CODE): Likewise. - * config/iq2000/iq2000.c (IN_TARGET_CODE): Likewise. - * config/lm32/lm32.c (IN_TARGET_CODE): Likewise. - * config/m32c/m32c-pragma.c (IN_TARGET_CODE): Likewise. - * config/m32c/m32c.c (IN_TARGET_CODE): Likewise. - * config/m32r/m32r.c (IN_TARGET_CODE): Likewise. - * config/m68k/m68k.c (IN_TARGET_CODE): Likewise. - * config/mcore/mcore.c (IN_TARGET_CODE): Likewise. - * config/microblaze/microblaze-c.c (IN_TARGET_CODE): Likewise. - * config/microblaze/microblaze.c (IN_TARGET_CODE): Likewise. - * config/mips/driver-native.c (IN_TARGET_CODE): Likewise. - * config/mips/frame-header-opt.c (IN_TARGET_CODE): Likewise. - * config/mips/mips.c (IN_TARGET_CODE): Likewise. - * config/mmix/mmix.c (IN_TARGET_CODE): Likewise. - * config/mn10300/mn10300.c (IN_TARGET_CODE): Likewise. - * config/moxie/moxie.c (IN_TARGET_CODE): Likewise. - * config/msp430/driver-msp430.c (IN_TARGET_CODE): Likewise. - * config/msp430/msp430-c.c (IN_TARGET_CODE): Likewise. - * config/msp430/msp430.c (IN_TARGET_CODE): Likewise. - * config/nds32/nds32-cost.c (IN_TARGET_CODE): Likewise. - * config/nds32/nds32-fp-as-gp.c (IN_TARGET_CODE): Likewise. - * config/nds32/nds32-intrinsic.c (IN_TARGET_CODE): Likewise. - * config/nds32/nds32-isr.c (IN_TARGET_CODE): Likewise. - * config/nds32/nds32-md-auxiliary.c (IN_TARGET_CODE): Likewise. - * config/nds32/nds32-memory-manipulation.c (IN_TARGET_CODE): Likewise. - * config/nds32/nds32-pipelines-auxiliary.c (IN_TARGET_CODE): Likewise. - * config/nds32/nds32-predicates.c (IN_TARGET_CODE): Likewise. - * config/nds32/nds32.c (IN_TARGET_CODE): Likewise. - * config/nios2/nios2.c (IN_TARGET_CODE): Likewise. - * config/nvptx/mkoffload.c (IN_TARGET_CODE): Likewise. - * config/nvptx/nvptx.c (IN_TARGET_CODE): Likewise. - * config/pa/pa.c (IN_TARGET_CODE): Likewise. - * config/pdp11/pdp11.c (IN_TARGET_CODE): Likewise. - * config/powerpcspe/driver-powerpcspe.c (IN_TARGET_CODE): Likewise. - * config/powerpcspe/host-darwin.c (IN_TARGET_CODE): Likewise. - * config/powerpcspe/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise. - * config/powerpcspe/powerpcspe-c.c (IN_TARGET_CODE): Likewise. - * config/powerpcspe/powerpcspe-linux.c (IN_TARGET_CODE): Likewise. - * config/powerpcspe/powerpcspe.c (IN_TARGET_CODE): Likewise. - * config/riscv/riscv-builtins.c (IN_TARGET_CODE): Likewise. - * config/riscv/riscv-c.c (IN_TARGET_CODE): Likewise. - * config/riscv/riscv.c (IN_TARGET_CODE): Likewise. - * config/rl78/rl78-c.c (IN_TARGET_CODE): Likewise. - * config/rl78/rl78.c (IN_TARGET_CODE): Likewise. - * config/rs6000/driver-rs6000.c (IN_TARGET_CODE): Likewise. - * config/rs6000/host-darwin.c (IN_TARGET_CODE): Likewise. - * config/rs6000/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise. - * config/rs6000/rs6000-c.c (IN_TARGET_CODE): Likewise. - * config/rs6000/rs6000-linux.c (IN_TARGET_CODE): Likewise. - * config/rs6000/rs6000-p8swap.c (IN_TARGET_CODE): Likewise. - * config/rs6000/rs6000-string.c (IN_TARGET_CODE): Likewise. - * config/rs6000/rs6000.c (IN_TARGET_CODE): Likewise. - * config/rx/rx.c (IN_TARGET_CODE): Likewise. - * config/s390/driver-native.c (IN_TARGET_CODE): Likewise. - * config/s390/s390-c.c (IN_TARGET_CODE): Likewise. - * config/s390/s390.c (IN_TARGET_CODE): Likewise. - * config/sh/sh-c.c (IN_TARGET_CODE): Likewise. - * config/sh/sh-mem.cc (IN_TARGET_CODE): Likewise. - * config/sh/sh.c (IN_TARGET_CODE): Likewise. - * config/sh/sh_optimize_sett_clrt.cc (IN_TARGET_CODE): Likewise. - * config/sh/sh_treg_combine.cc (IN_TARGET_CODE): Likewise. - * config/sparc/driver-sparc.c (IN_TARGET_CODE): Likewise. - * config/sparc/sparc-c.c (IN_TARGET_CODE): Likewise. - * config/sparc/sparc.c (IN_TARGET_CODE): Likewise. - * config/spu/spu-c.c (IN_TARGET_CODE): Likewise. - * config/spu/spu.c (IN_TARGET_CODE): Likewise. - * config/stormy16/stormy16.c (IN_TARGET_CODE): Likewise. - * config/tilegx/mul-tables.c (IN_TARGET_CODE): Likewise. - * config/tilegx/tilegx-c.c (IN_TARGET_CODE): Likewise. - * config/tilegx/tilegx.c (IN_TARGET_CODE): Likewise. - * config/tilepro/mul-tables.c (IN_TARGET_CODE): Likewise. - * config/tilepro/tilepro-c.c (IN_TARGET_CODE): Likewise. - * config/tilepro/tilepro.c (IN_TARGET_CODE): Likewise. - * config/v850/v850-c.c (IN_TARGET_CODE): Likewise. - * config/v850/v850.c (IN_TARGET_CODE): Likewise. - * config/vax/vax.c (IN_TARGET_CODE): Likewise. - * config/visium/visium.c (IN_TARGET_CODE): Likewise. - * config/vms/vms-c.c (IN_TARGET_CODE): Likewise. - * config/vms/vms-f.c (IN_TARGET_CODE): Likewise. - * config/vms/vms.c (IN_TARGET_CODE): Likewise. - * config/xtensa/xtensa.c (IN_TARGET_CODE): Likewise. - -2017-12-16 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid repeated - checks for MEM_REF. - -2017-12-16 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/generic.texi (VEC_SERIES_EXPR): Document. - * doc/md.texi (vec_series@var{m}): Document. - * tree.def (VEC_SERIES_EXPR): New tree code. - * tree.h (build_vec_series): Declare. - * tree.c (build_vec_series): New function. - * cfgexpand.c (expand_debug_expr): Handle VEC_SERIES_EXPR. - * tree-pretty-print.c (dump_generic_node): Likewise. - * gimple-pretty-print.c (dump_binary_rhs): Likewise. - * tree-inline.c (estimate_operator_cost): Likewise. - * expr.c (expand_expr_real_2): Likewise. - * optabs-tree.c (optab_for_tree_code): Likewise. - * tree-cfg.c (verify_gimple_assign_binary): Likewise. - * fold-const.c (const_binop): Fold VEC_SERIES_EXPRs of constants. - * expmed.c (make_tree): Handle VEC_SERIES. - * optabs.def (vec_series_optab): New optab. - * optabs.h (expand_vec_series_expr): Declare. - * optabs.c (expand_vec_series_expr): New function. - * tree-vect-generic.c (expand_vector_operations_1): Check that - the operands also have vector type. - -2017-12-16 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/generic.texi (VEC_DUPLICATE_EXPR): Document. - (VEC_COND_EXPR): Add missing @tindex. - * doc/md.texi (vec_duplicate@var{m}): Document. - * tree.def (VEC_DUPLICATE_EXPR): New tree codes. - * tree.c (build_vector_from_val): Add stubbed-out handling of - variable-length vectors, using VEC_DUPLICATE_EXPR. - (uniform_vector_p): Handle VEC_DUPLICATE_EXPR. - * cfgexpand.c (expand_debug_expr): Likewise. - * tree-cfg.c (verify_gimple_assign_unary): Likewise. - * tree-inline.c (estimate_operator_cost): Likewise. - * tree-pretty-print.c (dump_generic_node): Likewise. - * tree-vect-generic.c (ssa_uniform_vector_p): Likewise. - * fold-const.c (const_unop): Fold VEC_DUPLICATE_EXPRs of a constant. - (test_vec_duplicate_folding): New function. - (fold_const_c_tests): Call it. - * optabs.def (vec_duplicate_optab): New optab. - * optabs-tree.c (optab_for_tree_code): Handle VEC_DUPLICATE_EXPR. - * optabs.h (expand_vector_broadcast): Declare. - * optabs.c (expand_vector_broadcast): Make non-static. Try using - vec_duplicate_optab. - * expr.c (store_constructor): Try using vec_duplicate_optab for - uniform vectors. - (expand_expr_real_2): Handle VEC_DUPLICATE_EXPR. - -2017-12-15 Markus Trippelsdorf - - PR target/83358 - * config/i386/x86-tune-costs.h (skylake_cost, core_cost): Increase - div/mod latencies a bit. - -2017-12-15 Jeff Law - - PR tree-optimization/36550 - * tree-ssa-threadupdate.c (count_stmts_and_phis_in_block): New. - (mark_threaded_blocks): Rewrite code to avoid block copying when - optimizing for size. Don't pessimize blocks which will be - copied, but all the statements will be dead. - -2017-12-15 Alexandre Oliva - - PR tree-optimization/81165 - * tree-ssa-threadupdate.c (uses_in_bb): New. - (estimate_threading_killed_stmts): New. - * tree-ssa-threadupdate.h (estimate_threading_killed_stmts): Prototype. - * tree-ssa-threadedge.c - (record_temporary_equivalences_from_stmts_at_dest): Expand limit - when its hit. - -2017-12-15 Jeff Law - - PR tree-optimization/83410 - * tree-ssa-threadupdate.c (thread_block_1): Avoid certain jump - threads when parallelizing loops. - -2017-12-15 Jakub Jelinek - - * tree-core.h (struct attribute_spec): Swap affects_type_identity and - handler fields. - * config/alpha/alpha.c (vms_attribute_table): Swap - affects_type_identity and handler fields, adjust comments. - * config/mips/mips.c (mips_attribute_table): Likewise. - * config/visium/visium.c (visium_attribute_table): Likewise. - * config/epiphany/epiphany.c (epiphany_attribute_table): Likewise. - * config/microblaze/microblaze.c (microblaze_attribute_table): - Likewise. - * config/spu/spu.c (spu_attribute_table): Likewise. - * config/mcore/mcore.c (mcore_attribute_table): Likewise. - * config/arc/arc.c (arc_attribute_table): Likewise. - * config/m68k/m68k.c (m68k_attribute_table): Likewise. - * config/v850/v850.c (v850_handle_interrupt_attribute, - v850_handle_data_area_attribute): Formatting fixes. - (v850_attribute_table): Swap affects_type_identity and handler - fields, adjust comments. - * config/m32r/m32r.c (m32r_attribute_table): Likewise. - * config/arm/arm.c (arm_attribute_table): Likewise. - * config/avr/avr.c (avr_attribute_table): Likewise. - * config/s390/s390.c (s390_attribute_table): Likewise. - * config/sh/sh.c (sh_attribute_table): Likewise. - * config/i386/i386.c (ix86_handle_cconv_attribute, - ix86_handle_callee_pop_aggregate_return): Formatting fixes. - (ix86_attribute_table): Swap affects_type_identity and handler - fields, adjust comments. - * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise. - * config/sparc/sparc.c (sparc_attribute_table): Likewise. - * config/m32c/m32c.c (m32c_attribute_table): Likewise. - * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise. - * config/ia64/ia64.c (ia64_attribute_table): Likewise. - * config/msp430/msp430.c (msp430_attribute_table): Likewise. - * config/rx/rx.c (rx_attribute_table): Likewise. - * config/cr16/cr16.c (cr16_attribute_table): Likewise. - * config/h8300/h8300.c (h8300_attribute_table): Likewise. - * config/nvptx/nvptx.c (nvptx_attribute_table): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise. - * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise. - * config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise. - * config/bfin/bfin.c (bfin_attribute_table): Likewise. - * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise. - * config/rl78/rl78.c (rl78_attribute_table): Likewise. - * config/nds32/nds32.c (nds32_attribute_table): Likewise. - * doc/plugins.texi (user_attr): Likewise. Add NULL for - exclude. - * attribs.c (empty_attribute_table): Swap affects_type_identity and - handler fields. - (register_scoped_attributes, decl_attributes): Formatting fixes. - - PR tree-optimization/83269 - * fold-const.c (fold_binary_loc): Perform (-A) - B -> (-B) - A - subtraction in arg0's type if type is signed and arg0 is unsigned. - Formatting fix. - - PR sanitizer/81281 - * match.pd ((T)(P + A) - (T)P -> (T) A): Use @@0 instead of @0 and - convert? on @0 instead of convert. Check type of @1, not @0. - ((T)P - (T)(P + A) -> -(T) A): Use @@0 instead of @0 and - convert? on @0 instead of convert. Check type of @1, not @0. - ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Use @@0 instead of @0, - only optimize if either both @1 and @2 types are narrower - precision, or both are wider or equal precision, and in the former - case only if both have undefined overflow. - -2017-12-15 Richard Biener - - PR lto/83388 - * internal-fn.def (IFN_NOP): Add. - * internal-fn.c (expand_NOP): Do nothing. - * lto-streamer-in.c (input_function): Instead of removing - sanitizer calls replace them with IFN_NOP calls. - -2017-12-15 Richard Sandiford - Alan Hayward - David Sherwood - - * dse.c (store_info, read_info_type): Replace begin and end with - offset and width. - (print_range): New function. - (set_all_positions_unneeded, any_positions_needed_p) - (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Update - accordingly. - (record_store): Likewise. Optimize the case in which all positions - are unneeded. - (get_stored_val): Replace read_begin and read_end with read_offset - and read_width. - (replace_read): Update call accordingly. - -2017-12-15 Bin Cheng - - * gimple-loop-interchange.cc (STMT_COST_RATIO): New macro. - (loop_cand::m_num_stmts, loop_cand::m_const_init_reduc): New members. - (loop_cand::loop_cand): Initialize above members. - (loop_cand::supported_operations): Delete. - (loop_cand::can_interchange_p): Inline above function. - (loop_cand::classify_simple_reduction): Record number of constant - initialized simple reductions. - (should_interchange_loops): New parameters. Check stmt cost of loops - to be interchange. - (tree_loop_interchange::interchange): Prepare stmt cost of outer loop. - Update call to should_interchange_loops. - (should_interchange_loop_nest): Update call to - should_interchange_loops. - -2017-12-15 Eric Botcazou - - PR target/66488 - * ggc-page.c (HOST_BITS_PER_PTR): Do not define here... - * hwint.h (HOST_BITS_PER_PTR): ...but here instead. - * config/i386/xm-mingw32.h (HOST_BITS_PER_PTR): Delete. - -2017-12-15 Julia Koval - - * config/i386/i386-builtin.def (__builtin_ia32_vaesenclast_v16qi, - __builtin_ia32_vaesenclast_v32qi, __builtin_ia32_vaesenclast_v64qi): - New. - * config/i386/sse.md (vaesenclast_): New pattern. - * config/i386/vaesintrin.h (_mm256_aesenclast_epi128, - _mm512_aesenclast_epi128, _mm_aesenclast_epi128): New intrinsics. - -2017-12-15 Julia Koval - - * config/i386/i386-builtin.def (__builtin_ia32_vaesenc_v16qi, - __builtin_ia32_vaesenc_v32qi, __builtin_ia32_vaesenc_v64qi): New. - * config/i386/sse.md (vaesenc_): New pattern. - * config/i386/vaesintrin.h (_mm256_aesenc_epi128, _mm512_aesenc_epi128, - _mm_aesenc_epi128): New intrinsics. - -2017-12-15 Julia Koval - - * config/i386/i386-builtin.def (__builtin_ia32_vaesdeclast_v16qi, - __builtin_ia32_vaesdeclast_v32qi, __builtin_ia32_vaesdeclast_v64qi): - New. - * config/i386/sse.md (vaesdeclast_): New pattern. - * config/i386/vaesintrin.h (_mm256_aesdeclast_epi128, - _mm512_aesdeclast_epi128, _mm_aesdeclast_epi128): New intrinsics. - -2017-12-14 Bill Schmidt - - * gimple-ssa-strength-reduction.c (analyze_increments): - Distinguish replacement costs for constant strides from those for - unknown strides. - -2017-12-14 Jakub Jelinek - - * var-tracking.c (variable_tracking_main_1): Formatting fix. - -2017-12-14 Bernd Edlinger - - * doc/invoke.texi: Document -Wcast-function-type. - * recog.h (stored_funcptr): Change signature. - * tree-dump.c (dump_node): Avoid warning. - * typed-splay-tree.h (typed_splay_tree): Avoid warning. - -2017-12-14 Qing Zhao - - PR middle_end/79538 - * gimple-fold.c (get_range_strlen): Add the handling of non-member - array. - -2017-12-14 David Malcolm - - PR tree-optimization/83312 - * domwalk.h (dom_walker::dom_walker): Fix typo in comment. - * tree-cfg.c (find_taken_edge): Update to handle NULL_TREE for - "val" param, and to cope with arbitrary basic blocks. - (find_taken_edge_cond_expr): Add "cond_stmt" param and use it to - handle NULL_TREE for "val", dropping "bb" param. - (find_taken_edge_switch_expr): Make "switch_stmt" param const and - drop "bb" param. Handle NULL_TREE for "val". - (find_case_label_for_value): Make "switch_stmt" param const. - * tree-vrp.c (class check_array_bounds_dom_walker): New subclass - of dom_walker. - (vrp_prop::check_all_array_refs): Reimplement as... - (check_array_bounds_dom_walker::before_dom_children): ...this new - vfunc. Replace linear search through BB block list, excluding - those with non-executable in-edges via dominator walk. - -2017-12-14 Kyrylo Tkachov - - * config/arm/arm.opt (mverbose-cost-dump): New option. - * config/arm/arm.c (arm_rtx_costs): Use it. - -2017-12-14 Andreas Schwab - - PR bootstrap/83396 - * reload1.c (emit_input_reload_insns): Skip debug markers. - -2017-12-14 Alexandre Oliva - - * config/i386/i386.c (rest_of_insert_endbranch): Use call loc - for its nop_endbr. - - PR bootstrap/83396 - * config/arc/arc.c (hwloop_optimize): Skip debug insns. - * config/sh/sh-protos.h (sh_find_set_of_reg): Adjust. - * config/sh/sh.c: Skip debug insns besides notes. - * config/sh/sh.md: Likewise. - * config/sh/sh_treg_combine.cc: Likewise. - * config/sh/sync.md: Likewise. - -2017-12-14 Tom de Vries - - * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes): - Add item for weak_undefined. - -2017-12-14 Richard Biener - - PR tree-optimization/67842 - * sese.h (bb_in_region): Remove #if 0'ed code. - -2017-12-14 Richard Biener - - PR tree-optimization/83326 - * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add - may_be_zero parameter and handle it by not marking the first - peeled copy as not exiting the loop. - (try_peel_loop): Likewise. - (canonicalize_loop_induction_variables): Use number_of_iterations_exit - to handle the case of constant or zero iterations and perform - loop header copying on-the-fly. - -2017-12-14 Richard Biener - - PR tree-optimization/83418 - * vr-values.c (vr_values::extract_range_for_var_from_comparison_expr): - Instead of asserting we don't get unfolded comparisons deal with them. - -2017-12-14 Jakub Jelinek - - PR bootstrap/83396 - * var-tracking.c (vt_initialize): Ignore non-DEBUG_INSNs outside of - basic blocks. Assert debug bind insns don't appear outside of bbs, - don't reset them. Assert insns without BLOCK_FOR_INSN are outside of - bb. Simplify. - - PR tree-optimization/83198 - * gimple-ssa-sprintf.c (format_floating): Set type solely based on - dir.modifier, regardless of TREE_TYPE (arg). Assume non-REAL_CST - value if arg is a REAL_CST with incompatible type. - -2017-12-14 Sudakshina Das - Bin Cheng - - PR target/81228 - * config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT - to CCFPEmode. - * config/aarch64/aarch64-simd.md (vec_cmp): Add - LTGT. - -2017-12-14 Kyrylo Tkachov - - * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75, - cortex-a75.cortex-a55): Specify AARCH64_FL_F16 in the arch features. - -2017-12-14 Richard Sandiford - Alan Hayward - David Sherwood - - * poly-int.h: New file. - * poly-int-types.h: Likewise. - * coretypes.h: Include them. - (POLY_INT_CONVERSION): Define. - * target.def (estimated_poly_value): New hook. - * doc/tm.texi.in (TARGET_ESTIMATED_POLY_VALUE): New hook. - * doc/tm.texi: Regenerate. - * doc/poly-int.texi: New file. - * doc/gccint.texi: Include it. - * doc/rtl.texi: Describe restrictions on subreg modes. - * Makefile.in (TEXI_GCCINT_FILES): Add poly-int.texi. - * genmodes.c (NUM_POLY_INT_COEFFS): Provide a default definition. - (emit_insn_modes_h): Emit a definition of NUM_POLY_INT_COEFFS. - * targhooks.h (default_estimated_poly_value): Declare. - * targhooks.c (default_estimated_poly_value): New function. - * target.h (estimated_poly_value): Likewise. - * wide-int.h (WI_UNARY_RESULT): Use wi::binary_traits. - (wi::unary_traits): Delete. - (wi::binary_traits::signed_shift_result_type): Define for - offset_int << HOST_WIDE_INT, etc. - (generic_wide_int::operator <<=): Define for all types and use - wi::lshift instead of <<. - (wi::hwi_with_prec): Add a default constructor. - (wi::ints_for): New class. - (operator <<): Define for all wide-int types. - (operator /): New function. - (operator %): Likewise. - * selftest.h (ASSERT_KNOWN_EQ, ASSERT_KNOWN_EQ_AT, ASSERT_MAYBE_NE) - (ASSERT_MAYBE_NE_AT): New macros. - -2017-12-13 Eric Botcazou - Dominik Vogt - - PR middle-end/78468 - * emit-rtl.c (init_emit): Remove ??? comment. - * explow.c (get_dynamic_stack_size): Take known alignment of stack - pointer + STACK_DYNAMIC_OFFSET into account in lieu of STACK_BOUNDARY. - * config/sparc/sparc.h (INIT_EXPANDERS): In 32-bit mode, lower the - alignment of 3 virtual registers to BITS_PER_WORD. - - * config/sparc/sparc.c (sparc_compute_frame_size): Simplify. - -2017-12-13 Peter Bergner - - * config/rs6000/ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define. - * config/rs6000/rs6000.c (cpu_supports_info): Use it. - -2017-12-13 Alexandre Oliva - - PR bootstrap/83396 - * reload1.c (eliminate_regs_in_insn): Skip debug markers. - -2017-12-13 Jakub Jelinek - - * tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts - with the exception of debug begin stmt markers appear before - labels. - - PR bootstrap/83396 - * final.c (rest_of_handle_final): Call variable_tracking_main only - if !flag_var_tracking. - -2017-12-13 Alexandre Oliva - Jakub Jelinek - - PR bootstrap/83396 - PR debug/83391 - * tree-cfgcleanup.c (remove_forwarder_block): Keep after - labels debug stmts that can only appear after labels. - -2017-12-13 Alexander Monakov - - PR rtl-optimization/82398 - * sel-sched.c (sel_rank_for_schedule): Fix check for zero - EXPR_USEFULNESS in priority comparison. - -2017-12-13 Segher Boessenkool - - PR rtl-optimization/83393 - * combine.c (move_deaths): If reg_stat points to a too new insn in - last_death, do not use it: find the proper insn instead. - -2017-12-12 Aaron Sawdey - - PR target/82190 - * config/rs6000/rs6000-string.c (expand_block_compare, - expand_strn_compare): Fix set_mem_size() calls. - -2017-12-12 Jeff Law - - PR tree-optimization/83298 - PR tree-optimization/83362 - PR tree-optimization/83383 - * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Make - push_value_range a public interface. Add new argument to - record_ranges_from_stmt. - * gimple-ssa-evrp-analyze.c - (evrp_range_analyzer::record_ranges_from_stmt): Add new argument. - Update comments. Handle recording temporary equivalences. - * tree-ssa-dom.c (dom_opt_opt_walker::before_dom_children): Add - new argument to call to evrp_range_analyzer::record_ranges_from_stmt. - * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Likewise. - * tree-ssa-threadedge.c: Include alloc-pool.h, vr-values.h and - gimple-ssa-evrp-analyze.h. - (record_temporary_equivalences_from_phis): Add new argument. When - the PHI arg is an SSA_NAME, set the result's range to the range - of the PHI arg. - (record_temporary_equivalences_from_stmts_at_dest): Record ranges - from statements too. - (thread_through_normal_block): Accept new argument, evrp_range_analyzer. - Pass it down to children as needed. - (thread_outgoing_edges): Likewise. - (thread_across_edge): Likewise. Push/pop range state as needed. - * tree-ssa-threadedge.h (thread_outgoing_edges): Update prototype. - -2017-12-12 Julia Koval - - * config/i386/i386.c (PTA_SKYLAKE_AVX512): Add PTA_CLWB. - (PTA_CANNONLAKE): Remove PTA_CLWB. - -2017-12-12 Bill Schmidt - - PR target/83332 - * config/rs6000/vector.md (vcondv2dfv2di): New define_expand. - (vcondv2div2df): Likewise. - (vconduv2dfv2di): Likewise. - -2017-12-12 Jakub Jelinek - - * builtins.def (BUILT_IN_NEXTAFTER, BUILT_IN_NEXTAFTERF, - BUILT_IN_NEXTAFTERL, BUILT_IN_NEXTTOWARD, BUILT_IN_NEXTTOWARDF, - BUILT_IN_NEXTTOWARDL): Use ATTR_MATHFN_ERRNO instead of - ATTR_MATHFN_FPROUNDING_ERRNO. - -2017-12-12 Richard Biener - - PR tree-optimization/83385 - * graphite-scop-detection.c (get_order, order): Remove. - (bb_to_rpo): New global. - (cmp_pbbs): Adjust. - (build_scops): Sort pbbs in RPO order. - -2017-12-12 James Greenhalgh - - * combine.c (simplify_set): Do not transform subregs to zero_extends - if the destination mode is a vector mode. - -2017-12-12 Jakub Jelinek - - PR tree-optimization/83359 - * tree-cfg.h (fold_loop_internal_call): Declare. - * tree-vectorizer.c (fold_loop_internal_call): Moved to ... - * tree-cfg.c (fold_loop_internal_call): ... here. No longer static. - (find_loop_dist_alias): New function. - (move_sese_region_to_fn): If any dloop->orig_loop_num value is - updated, also adjust any corresponding LOOP_DIST_ALIAS internal - calls. - - PR tree-optimization/80631 - * tree-vect-loop.c (get_initial_def_for_reduction): Fix comment typo. - (vect_create_epilog_for_reduction): Add INDUC_VAL and INDUC_CODE - arguments, for INTEGER_INDUC_COND_REDUCTION use INDUC_VAL instead of - hardcoding zero as the value if COND_EXPR is never true. For - INTEGER_INDUC_COND_REDUCTION don't emit the final COND_EXPR if - INDUC_VAL is equal to INITIAL_DEF, and use INDUC_CODE instead of - hardcoding MAX_EXPR as the reduction operation. - (is_nonwrapping_integer_induction): Allow negative step. - (vectorizable_reduction): Compute INDUC_VAL and INDUC_CODE for - vect_create_epilog_for_reduction, if no value is suitable, don't - use INTEGER_INDUC_COND_REDUCTION for now. Formatting fixes. - -2017-12-12 Richard Biener - - PR tree-optimization/81889 - * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness): Use - range info from the non-wrapping IV instead of just the range - of the type. - -2017-12-12 Julia Koval - - * config.gcc: Add vaesintrin.h. - * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI): - New type. - * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi, - __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi): - New builtins. - * config/i386/i386.c (ix86_expand_args_builtin): Handle new type. - * config/i386/immintrin.h: Include vaesintrin.h. - * config/i386/sse.md (vaesdec_): New pattern. - * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128, - _mm_aesdec_epi128): New intrinsics. - -2017-12-12 Julia Koval - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_VAES_SET, - OPTION_MASK_ISA_VAES_UNSET): New. - (ix86_handle_option): Handle -mvaes. - * config/i386/cpuid.h: Define bit_VAES. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mvaes. - * config/i386/i386-c.c (__VAES__): New. - * config/i386/i386.c (ix86_target_string): Add -mvaes. - (ix86_valid_target_attribute_inner_p): Ditto. - * config/i386/i386.h (TARGET_VAES, TARGET_VAES_P): New. - * config/i386/i386.opt: Add -mvaes. - * doc/invoke.texi: Ditto. - -2017-12-12 Alexandre Oliva - - * debug.h (gcc_debug_hooks): Add inline_entry. - * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise. - * debug.c (do_nothing_debug_hooks): Likewise. - * vmsdbgout.c (vmsdbg_debug_hooks): Likewise. - * dwarf2out.c (dwarf2_debug_hooks): Likewise. - (dwarf2_lineno_debug_hooks): Likewise. - - * common.opt (gstatement-frontiers): New, setting - debug_nonbind_markers_p. - * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate. - * toplev.c (process_options): Autodetect value for debug statement - frontiers option. - * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate. - * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New. - - * cfgexpand.c (expand_gimple_basic_block): Handle begin stmt - markers. Integrate source bind into debug stmt expand loop. - (pass_expand::execute): Check debug marker limit. Avoid deep - TER and expand debug locations for debug bind insns only. - * cse.c (insn_live_p): Keep nonbind markers and debug bindings - followed by them. - * df-scan.c (df_insn_delete): Accept out-of-block debug insn. - * final.c (reemit_insn_block_notes): Take current block from - nonbind markers. Declare note where it's first set. - (final_scan_insn): Handle begin stmt notes. Emit is_stmt according to - begin stmt markers if enabled. - (notice_source_line): Handle nonbind markers. Fail if their - location is unknown or that of builtins. - (rest_of_handle_final): Convert begin stmt markers to notes if - var-tracking didn't run. - (rest_of_clean_state): Skip begin stmt markers. - * gimple-pretty-print.c (dump_gimple_debug): Handle begin stmt - markers. - * function.c (allocate_struct_function): Set begin_stmt_markers. - * function.h (struct function): Add debug_marker_count counter - and debug_nonbind_markers flag. - * gimple-iterator.c (gsi_remove): Adjust debug_marker_count. - * gimple-low.c (lower_function_body): Adjust - debug_nonbind_markers. - (lower_stmt): Drop or skip gimple debug stmts. - (lower_try_catch): Skip debug stmts. - * gimple.c (gimple_build_debug_begin_stmt): New. - (gimple_copy): Increment debug_marker_count if copying one. - * gimple.h (gimple_build_debug_begin_stmt): Declare. - * gimplify.c (rexpr_location): New. - (rexpr_has_location): New. - (warn_switch_unreachable_r): Handle gimple debug stmts. - (shortcut_cond_r): Call expr_location. - (find_goto): New. - (find_goto_label): New. - (shortcut_cond_expr): Call expr_has_location, expr_location, and - find_goto_label. - (gimplify_cond_expr): Call find_goto_label, expr_has_location, and - expr_location. - (gimplify_expr): Handle begin stmt markers. Reject debug expr decls. - * langhooks-def.h (LANG_HOOKS_EMITS_BEGIN_STMT): New. Add to... - (LANG_HOOKS_INITIALIZER): ... this. - * langhooks.h (struct lang_hooks): Add emits_begin_stmt. - * lra-contraints.c (inherit_reload_reg): Tolerate between-blocks - debug insns. - (update_ebb_live_info): Skip debug insn markers. - * lra.c (debug_insn_static_data): Rename to... - (debug_bind_static_data): ... this. - (debug_marker_static_data): New. - (lra_set_insn_recog_data): Select one of the above depending - on debug insn kind. - (lra_update_isn_regno_info): Don't assume debug insns have - freqs. - (push_insns): Skip debug insns. - * lto-streamer-in.c (input_function): Drop debug stmts - depending on active options. Adjust debug_nonbind_markers. - * params.def (PARAM_MAX_DEBUG_MARKER_COUNT): New. - * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle - begin stmt marker notes. - (print_insn): Likewise. - * recog.c (extract_insn): Recognize rtl for debug markers. - * rtl.def (DEBUG_MARKER): New. - * tree-inline.c: Include params.h. - (remap_gimple_stmt): Handle nonbind markers. - (maybe_move_debug_stmts_to_successors): Likewise. - (copy_debug_stmt): Likewise. - * tree-iterator.c (append_to_statement_list_1): Append begin stmt - markers regardless of no side effects. - (tsi_link_before): Don't update container's side effects when adding - a begin stmt marker. - (tsi_link_after): Likewise. - (expr_first): Skip begin stmt markers. - (expr_last): Likewise. - * tree-pretty-print (dump_generic_node): Handle begin stmt markers. - * tree-ssa-threadedge.c (propagate_threaded_block_debug_info): - Disregard nonbind markers. - * tree.c (make_node_stat): Don't set side effects for begin stmt - markers. - (build1_stat): Likewise. - * tree.def (DEBUG_BEGIN_STMT): New. - * tree.h (GOTO_DESTINATION): Require a GOTO_EXPR. - * var-tracking.c (delete_debug_insns): Renamed to... - (delete_vta_debug_insns): ... this. - (reemit_marker_as_note): New. - (vt_initialize): Reemit markers. - (delete_vta_debug_insns): Likewise. - (vt_debug_insns_local): Reemit or delete markers. - (variable_tracking_main_1): Likewise. - * doc/generic.texi (DEBUG_BEGIN_STMT): Document. - * doc/gimple.texi (gimple_debug_begin_stmt_p): New. - (gimple_debug_nonbind_marker_p): New. - (gimple_build_debug_bind): Adjust. - (gimple_build_debug_begin_stmt): New. - * doc/invoke.texi (max-debug-marker-count): New param. - * doc/rtl.texi (debug_implicit_ptr, entry_value): New. - (debug_parameter_ref, debug_marker): New. - (NOTE_INSN_BEGIN_STMT): New. - (DEBUG_INSN): Describe begin stmt markers. - - * cfgbuild.c (find_bb_boundaries): Don't purge dead edges if, - without debug insns, we wouldn't, but clean up debug insns - after a control flow insn nevertheless. - - * cfgcleanup.c (delete_unreachable_blocks): Use alternate - block removal order if MAY_HAVE_DEBUG_BIND_INSNS. - * cfgexpand.c (label_rtx_for_bb): Skip debug insns. - * cfgrtl.c (try_redirect_by_replacing_jump): Skip debug insns. - (rtl_tidy_fallthru_edge): Likewise. - (rtl_verify_fallthru): Likewise. - (rtl_verify_bb_layout): Likewise. - (skip_insns_after_block): Likewise. - (duplicate_insn_chain): Use DEBUG_BIND_INSN_P. - * dwarf2out.c: Include print-rtl.h. - (dwarf2out_next_real_insn): New. - (dwarf2out_var_location): Call it. Disregard begin stmt markers. - Dump debug binds in asm comments. - * gimple-iterator.c (gimple_find_edge_insert_loc): Skip debug stmts. - * gimple-iterator.h (gsi_start_bb_nondebug): Remove; adjust - callers to use gsi_start_nondebug_bb instead. - (gsi_after_labels): Skip gimple debug stmts. - (gsi_start_nondebug): New. - * gimple-loop-interchange.c (find_deps_in_bb_for_stmt): Adjust. - (proper_loop_form_for_interchange): Adjust. - * gimple-low.c (gimple_seq_may_fallthru): Take last nondebug stmt. - * gimple.h (gimple_seq_last_nondebug_stmt): New. - * gimplify.c (last_stmt_in_scope): Skip debug stmts. - (collect_fallthrough_labels): Likewise. - (should_warn_for_implicit_fallthrough): Likewise. - (warn_implicit_fallthrough_r): Likewise. - (expand_FALLTHROUGH_r): Likewise. - * graphite-isl-ast-to-gimple.c (gsi_insert_earliest): Adjust. - (graphite_copy_stmts_from_block): Skip nonbind markers. - * haifa-sched.c (sched_extend_bb): Skip debug insns. - * ipa-icf-gimple.c (func_checker::compare_bb): Adjust. - * jump.c (clean_barriers): Skip debug insns. - * omp-expand.c (expand_parallel_call): Skip debug insns. - (expand_task_call): Likewise. - (remove_exit_barrier): Likewise. - (expand_omp_taskreg): Likewise. - (expand_omp_for_init_counts): Likewise. - (expand_omp_for_generic): Likewise. - (expand_omp_for_static_nochunk): Likewise. - (expand_omp_for_static_chunk): Likewise. - (expand_omp_simd): Likewise. - (expand_omp_taskloop_for_outer): Likewise. - (expand_omp_taskloop_for_inner): Likewise. - (expand_oacc_for): Likewise. - (expand_omp_sections): Likewise. - (expand_omp_single): Likewise. - (expand_omp_synch): Likewise. - (expand_omp_atomic_load): Likewise. - (expand_omp_atomic_store): Likewise. - (expand_omp_atomic_fetch_op): Likewise. - (expand_omp_atomic_pipeline): Likewise. - (expand_omp_atomic_mutex): Likewise. - (expand_omp_target): Likewise. - (grid_expand_omp_for_loop): Likewise. - (grid_expand_target_grid_body): Likewise. - (build_omp_regions_1): Likewise. - * omp-low.c (check_combined_parallel): Skip debug stmts. - * postreload.c (fixup_debug_insns): Skip nonbind debug insns. - * regcprop.c (find_oldest_value_reg): Ensure REGNO is not a pseudo. - * sese.c (sese_trivially_empty_bb_p): Call is_gimple_debug in - test. - * tree-cfg.c (make_blobs_1): Skip debug stmts. - (make_edges): Likewise. - (cleanup_dead_labels): Likewise. - (gimple_can_merge_blocks_p): Likewise. - (stmt_starts_bb_p): Likewise. - (gimple_block_label): Likewise. - (gimple_redirect_edge_and_branch): Likewise. - * tree-cfgcleanup.c (remove_forwarder_block): Rearrange skipping - of debug stmts. - (execute_cleanup_cfg_post_optimizing): Dump enumerated decls with - TDF_SLIM. - * tree-pretty-print (print_declaration): Omit initializer in slim - dumps. - * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark begin stmt - markers. - (eliminate_unnecessary_stmts): Stabilize block removal order. - * tree-ssa-tail-merge.c (find_duplicate): Skip debug stmts. - * var-tracking.c (get_first_insn): New. - (vt_emit_notes): Call it. - (vt_initialize): Walk any insns before the first BB. - (delete_debug_insns): Likewise. - - * gimple.h (enum gimple_debug_subcode): Add - GIMPLE_DEBUG_BEGIN_STMT. - (gimple_debug_begin_stmt_p): New. - (gimple_debug_nonbind_marker_p): New. - * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): New. - (MAY_HAVE_DEBUG_BIND_STMTS): Renamed from.... - (MAY_HAVE_DEBUG_STMTS): ... this. Check both. - * insn-notes.def (BEGIN_STMT): New. - * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): New. - (MAY_HAVE_DEBUG_BIND_INSNS): Renamed from.... - (MAY_HAVE_DEBUG_INSNS): ... this. Check both. - (NOTE_MARKER_LOCATION, NOTE_MARKER_P): New. - (DEBUG_BIND_INSN_P, DEBUG_MARKER_INSN_P): New. - (INSN_DEBUG_MARKER_KIND): New. - (GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT): New. - (INSN_VAR_LOCATION): Check for VAR_LOCATION. - (INSN_VAR_LOCATION_PTR): New. - * cfgexpand.c (expand_debug_locations): Handle debug bind insns - only. - (expand_gimple_basic_block): Likewise. Emit debug temps for TER - deps only if debug bind insns are enabled. - (pass_expand::execute): Avoid deep TER and expand - debug locations for debug bind insns only. - * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Narrow - debug stmts special handling down to debug bind stmts. - * combine.c (try_combine): Narrow debug insns special handling - down to debug bind insns. - * cse.c (delete_trivially_dead_insns): Handle debug bindings. - Narrow debug insns preexisting special handling down to debug - bind insns. - * dce.c (rest_of_handle_ud_dce): Narrow debug insns special - handling down to debug bind insns. - * function.c (instantiate_virtual_regs): Skip debug markers, - adjust handling of debug binds. - * gimple-ssa-backprop.c (backprop::prepare_change): Try debug - temp insertion iff MAY_HAVE_DEBUG_BIND_STMTS. - * haifa-sched.c (schedule_insn): Narrow special handling of debug - insns to debug bind insns. - * ipa-param-manipulation.c (ipa_modify_call_arguments): Narrow - special handling of debug stmts to debug bind stmts. - * ipa-split.c (split_function): Likewise. - * ira.c (combine_and_move_insns): Adjust debug bind insns only. - * loop-unroll.c (apply_opt_in_copies): Adjust tests on bind - debug insns. - * reg-stack.c (convert_regs_1): Use DEBUG_BIND_INSN_P. - * regrename.c (build_def_use): Likewise. - * regcprop.c (copyprop_hardreg_forward_1): Likewise. - (pass_cprop_hardreg): Narrow special casing of debug insns to - debug bind insns. - * regstat.c (regstat_init_n_sets_and_refs): Likewise. - * reload1.c (reload): Likewise. - * sese.c (sese_insert_phis_for_liveouts): Narrow special - casing of debug stmts to debug bind stmts. - * shrink-wrap.c (move_insn_for_shrink_wrap): Likewise. - * ssa-iterators.h (num_imm_uses): Likewise. - * tree-cfg.c (gimple_merge_blocks): Narrow special casing of - debug stmts to debug bind stmts. - * tree-inline.c (tree_function_versioning): Narrow special casing - of debug stmts to debug bind stmts. - * tree-loop-distribution.c (generate_loops_for_partition): - Narrow special casing of debug stmts to debug bind stmts. - * tree-sra.c (analyze_access_subtree): Narrow special casing - of debug stmts to debug bind stmts. - * tree-ssa-dce.c (remove_dead_stmt): Narrow special casing of debug - stmts to debug bind stmts. - * tree-ssa-loop-ivopt.c (remove_unused_ivs): Narrow special - casing of debug stmts to debug bind stmts. - * tree-ssa-reassoc.c (reassoc_remove_stmt): Likewise. - * tree-ssa-tail-merge.c (tail_merge_optimize): Narrow special - casing of debug stmts to debug bind stmts. - * tree-ssa-threadedge.c (propagate_threaded_block_debug_info): - Likewise. - * tree-ssa.c (flush_pending_stmts): Narrow special casing of - debug stmts to debug bind stmts. - (gimple_replace_ssa_lhs): Likewise. - (insert_debug_temp_for_var_def): Likewise. - (insert_debug_temps_for_defs): Likewise. - (reset_debug_uses): Likewise. - * tree-ssanames.c (release_ssa_name_fn): Likewise. - * tree-vect-loop-manip.c (adjust_debug_stmts_now): Likewise. - (adjust_debug_stmts): Likewise. - (adjust_phi_and_debug_stmts): Likewise. - (vect_do_peeling): Likewise. - * tree-vect-loop.c (vect_transform_loop): Likewise. - * valtrack.c (propagate_for_debug): Use BIND_DEBUG_INSN_P. - * var-tracking.c (adjust_mems): Narrow special casing of debug - insns to debug bind insns. - (dv_onepart_p, dataflow_set_clar_at_call, use_type): Likewise. - (compute_bb_dataflow, vt_find_locations): Likewise. - (vt_expand_loc, emit_notes_for_changes): Likewise. - (vt_init_cfa_base): Likewise. - (vt_emit_notes): Likewise. - (vt_initialize): Likewise. - (vt_finalize): Likewise. - - * emit-rtl.c (next_nondebug_insn, prev_nondebug_insn): Reorder. - (next_nonnote_nondebug_insn, prev_nonnote_nondebug_insn): Reorder. - (next_nonnote_nondebug_insn_bb): New. - (prev_nonnote_nondebug_insn_bb): New. - (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove. - * rtl.h (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove decls. - (prev_nonnote_nondebug_insn_bb): Declare. - (next_nonnote_nondebug_insn_bb): Declare. - * cfgbuild.c (find_bb_boundaries): Adjust to skip debug insns. - * cfgrtl.c (get_last_bb_insn): Likewise. - * lra.c (push_insns): Likewise. - -2017-12-11 David Malcolm - - PR c/82050 - * selftest-run-tests.c (selftest::run_tests): Move start/finish code - to... - * selftest.c (selftest::test_runner::test_runner): New ctor. - (selftest::test_runner::~test_runner): New dtor. - * selftest.h (class selftest::test_runner): New class. - -2017-12-11 Carl Love - - * config/rs6000/altivec.h (vec_extract_fp32_from_shorth, - vec_extract_fp32_from_shortl]): Add #defines. - * config/rs6000/rs6000-builtin.def (VSLDOI_2DI): Add macro expansion. - * config/rs6000/rs6000-c.c (ALTIVEC_BUILTIN_VEC_UNPACKH, - ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VEC_AND, - ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SRL, - ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VEC_SLD, - ALTIVEC_BUILTIN_VEC_SLL): Add expansions. - * doc/extend.texi: Add documentation for the added builtins. - -2017-12-11 Alexandre Oliva - - PR rtl-optimization/80693 - PR rtl-optimization/81019 - PR rtl-optimization/81020 - * combine.c (distribute_notes): Reset any REG_UNUSED REGs that - are not mentioned in i3. Place the REG_UNUSED note on i2, - possibly modified to REG_DEAD, if it did not originate in i3. - -2017-12-11 Jakub Jelinek - - * recog.c (store_data_bypass_p_1): New function. - (store_data_bypass_p): Handle USE in a PARALLEL like CLOBBER. Use - store_data_bypass_p_1 to avoid code duplication. Formatting fixes. - -2017-12-11 Segher Boessenkool - - PR rtl-optimization/83361 - * ifcvt.c (if_convert): Call fixup_partitions. - -2017-12-11 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for - early folding of splat_u{8,16,32}. - -2017-12-11 Jakub Jelinek - - * config/aarch64/aarch64.c (aarch64_print_operand): Don't start - output_operand_lossage first argument with capital letter. - (aarch64_override_options): Don't start error and sorry first argument - with capital letter. - -2017-12-11 Andi Kleen - - PR gcov-profile/83355 - * auto-profile.c (string_table::get_index_by_decl): Don't - recurse when abstract origin points to itself. - -2017-12-11 Bin Cheng - - PR tree-optimization/83320 - * gimple-loop-interchange.cc (free_data_refs_with_aux): Use delete. - (prune_datarefs_not_in_loop): Ditto. - -2017-12-10 Gerald Pfeifer - - * doc/install.texi (Specific): Tweak link to mkssoftware.com. - -2017-12-10 Jakub Jelinek - - PR tree-optimization/83337 - * gimple-loop-interchange.cc (compute_access_stride): Handle - bitfield DRs properly. - -2017-12-09 Jakub Jelinek - - PR tree-optimization/83338 - * tree-vect-stmts.c (vectorizable_operation): Handle POINTER_DIFF_EXPR - vectorization as MINUS_EXPR with a subsequent VIEW_CONVERT_EXPR from - vector of unsigned integers to vector of signed integers. - -2017-12-08 Vladimir Makarov - - PR rtl-optimization/83317 - * lra-constraints.c (process_address_1): Add insn code check. - -2017-12-08 Michael Matz - - Fix PR tree-optimization/83323 - * gimple-loop-jam (unroll_jam_possible_p): Correct test for - head-controlled loops and loop BBs. - * common.opt (funroll-and-jam): Remove, instead ... - (floop-unroll-and-jam): ... reuse this option. - * opts.c (default_options_table): Use OPT_floop_unroll_and_jam. - * doc/invoke.texi (-funroll-and-jam): Move docu to ... - (-floop-unroll-and-jam): ... this option. - -2017-12-08 Jakub Jelinek - - * ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix - a comment typo, get_base_ref_and_offset -> get_ref_base_and_extent. - * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Likewise. - -2017-12-08 Richard Biener - - PR middle-end/81782 - * tree-ssa-uninit.c (warn_uninitialized_vars): Properly - handle accesses outside of zero-sized vars. - -2017-12-08 Martin Jambor - - PR tree-optimization/83141 - * tree-sra.c (contains_vce_or_bfcref_p): Move up in the file, also - test for MEM_REFs implicitely changing types with padding. Remove - inline keyword. - (build_accesses_from_assign): Added contains_vce_or_bfcref_p checks. - -2017-12-08 Jakub Jelinek - - * config/arc/arc.c (arc_attribute_table): Add exclusions to - the comment. - * config/avr/avr.c (avr_attribute_table): Likewise. - * config/msp430/msp430.c (msp430_attribute_table): Likewise. - * config/rl78/rl78.c (rl78_attribute_table): Likewise. - * config/nds32/nds32.c (nds32_attribute_table): Likewise. - * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Initialize new member - of struct attribute_spec. - * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise. - -2017-12-08 Ulrich Weigand - - PR target/82960 - * config/spu/spu.c (pad_bb): Only check INSN_CODE when INSN_P is true. - -2017-12-08 Jan Hubicka - - PR middle-end/83609 - * profile-count.c (profile_count::from_gcov_type): Move from - profile-count.h; handle overflow. - * profile-count.h (profile_count::from_gcov_type): Move offline. - -2017-12-08 Segher Boessenkool - - PR rtl-optimization/83304 - * combine.c (move_deaths): If we do not know where a register died, - search for it. - -2017-12-08 Richard Biener - - * gimple-loop-interchange.cc (tree_loop_interchange::interchange): - Provide -fopt-info-loop feedback when we interchange in a nest. - -2017-06-08 Richard Earnshaw - - * config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names - for armv6 ARM CPU IDs. - -2017-06-08 Richard Earnshaw - - * common/config/arm/arm-common.c: Include . - (INCLUDE_VECTOR): Define. - (compare_opt_names): New function. - (arm_rewrite_selected_arch): Only strip out extensions that can be - expressed through -mfpu. Sort the remaining extensions - alphabetically. - -2017-06-08 Richard Earnshaw - - * config/arm/arm.h (arm_asm_auto_mfpu): Declare. - (ASM_CPU_SPEC_FUNCTIONS): Add new rule asm_auto_mfpu. - (ASM_CPU_SPEC): Use it if -mfpu is set to auto. - * common/config/arm/arm-common.c (arm_asm_auto_mfpu): New function. - -2017-06-08 Tristan Gingold - - PR ada/81470 - * dwarf2out.c (dwarf2out_do_cfi_startproc): Only emit - .cfi_personality or .cfi_lsda if the eh data format is dwarf2. - -2017-12-08 Rainer Orth - - * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Initialize new member - of struct attribute_spec. - -2017-12-08 Julia Koval - - * config/i386/avx512vnniintrin.h (_mm512_dpwssds_epi32, - _mm512_mask_dpwssds_epi32, _mm512_maskz_dpwssds_epi32): New intrinsics. - * config/i386/avx512vnnivlintrin.h (_mm256_dpwssds_epi32, - _mm256_mask_dpwssds_epi32, _mm256_maskz_dpwssds_epi32, - _mm_dpwssds_epi32, _mm_mask_dpwssds_epi32, - _mm_maskz_dpwssds_epi32): Ditto. - -2017-12-08 Richard Biener - - PR tree-optimization/81303 - * tree-vect-stmts.c (vect_is_simple_cond): For invariant - conditions try to create a comparison vector type matching - the data vector type. - (vectorizable_condition): Adjust. - * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): - Leave invariant conditions alone in case we can vectorize those. - -2017-12-08 Julia Koval - - * config/i386/avx512vnniintrin.h (_mm512_dpwssd_epi32, - _mm512_mask_dpwssd_epi32, _mm512_maskz_dpwssd_epi32): New intrinsics. - * config/i386/avx512vnnivlintrin.h (_mm256_dpwssd_epi32, - _mm256_mask_dpwssd_epi32, _mm256_maskz_dpwssd_epi32, _mm_dpwssd_epi32, - _mm_mask_dpwssd_epi32, _mm_maskz_dpwssd_epi32): Ditto. - -2017-12-08 Julia Koval - - * config/i386/avx512vnniintrin.h (_mm512_dpbusds_epi32, - _mm512_mask_dpbusds_epi32, _mm512_maskz_dpbusds_epi32): New. - * config/i386/avx512vnnivlintrin.h (_mm256_dpbusds_epi32, - _mm256_mask_dpbusds_epi32, _mm256_maskz_dpbusds_epi32, - _mm_dpbusds_epi32, _mm_mask_dpbusds_epi32, - _mm_maskz_dpbusds_epi32): New intrinsics. - -2017-12-07 Sandra Loosemore - - * config/nios2/nios2.md (ldio): Add splitter for memory - operand. - (ldio_signed): Likewise. - (stio): Likewise. - * config/nios2/predicates.md (ldstio_memory_operand): Allow - SMALL_INT12 constant integer operand. - -2017-12-07 Sandra Loosemore - - * config/nios2/nios2.c (nios2_symbolic_constant_allowed): - Rename to... - (nios2_large_constant_allowed): ...this. Adjust uses. - (nios2_plus_symbolic_constant_p): Rename to... - (nios2_plus_large_constant_p): ...this. Adjust uses. - (nios2_legitimate_address_p): Correct CONST_INT handling. - (nios2_symbolic_memory_operand_p): Rename to... - (nios2_large_constant_memory_operand_p): ...this. Adjust uses. - (nios2_large_constant_p): Check for large constant integers too. - (nios2_split_large_constant): Handle constant integers. - (nios2_split_symbolic_memory_operand): Rename to... - (nios2_split_large_constant_memory_operand): ...this. Adjust uses. - (nios2_legitimize_constant_address): Handle constant integers. - (r0rel_constant_p): Handle small constant integers. - (nios2_print_operand_address): Handle r0-relative integer addresses. - * config/nios2/nios2-protos.h: Adjust for renamed functions. - * config/nios2/nios2.md: Adjust for renamed functions. - -2017-12-07 Andrew Waterman - - * config/riscv/riscv.c (TARGET_ASM_SELECT_SECTION): New define. - (TARGET_HAVE_SRODATA_SECTION): New define. - (riscv_select_section): New function. - -2017-12-08 Joseph Myers - Alexander Monakov - Jakub Jelinek - - PR target/81906 - * config/i386/i386.c (ix86_expand_rint): Handle flag_rounding_math. - -2017-12-07 Richard Sandiford - - * config/aarch64/aarch64.c (aarch64_print_address_internal): Return - a bool success value. Don't call output_operand_lossage here. - (aarch64_print_ldpstp_address): Return a bool success value. - (aarch64_print_operand_address): Call output_addr_const if - aarch64_print_address_internal fails. - (aarch64_print_operand): Don't assert that the mode is 16 bytes for - 'y'; call output_operand_lossage instead. Call output_operand_lossage - if aarch64_print_ldpstp_address fails. - -2017-12-07 Richard Sandiford - - * tree-vector-builder.h - (tree_vector_builder::binary_encoded_nelts): Declare. - * tree-vector-builder.c - (tree_vector_builder::binary_encoded_nelts): New function. - * fold-const.c (negate_expr_p): Likewise. - (operand_equal_p, fold_checksum_tree): Likewise. - * tree-loop-distribution.c (const_with_all_bytes_same): Likewise. - * tree.c (integer_zerop, integer_onep, integer_all_onesp, real_zerop) - (real_onep, real_minus_onep, add_expr, initializer_zerop): Likewise. - (uniform_vector_p): Likewise. - * varasm.c (const_hash_1, compare_constant): Likewise. - * tree-ssa-ccp.c: Include tree-vector-builder.h. - (valid_lattice_transition): Operate directly on the VECTOR_CST - encoding. - * ipa-icf.c: Include tree-vector-builder.h. - (sem_variable::equals): Operate directly on the VECTOR_CST encoding. - * print-tree.c (print_node): Print encoding of VECTOR_CSTs. - -2017-12-07 Richard Sandiford - - * tree.c (build_vector): Delete. - * tree.h (build_vector): Make static and move into the self-testing - block. - -2017-12-07 Richard Sandiford - - * vector-builder.h (vector_builder::derived): New const overload. - (vector_builder::elt): New function. - * tree-vector-builder.h (tree_vector_builder::type): New function. - (tree_vector_builder::apply_step): Declare. - * tree-vector-builder.c (tree_vector_builder::apply_step): New - function. - * gimple-fold.h (tree_vector_builder): Declare. - (gimple_build_vector): Take a tree_vector_builder instead of a - type and vector of elements. - * gimple-fold.c (gimple_build_vector): Likewise. - * tree-vect-loop.c (get_initial_def_for_reduction): Update call - accordingly. - (get_initial_defs_for_reduction): Likewise. - (vectorizable_induction): Likewise. - -2017-12-07 Richard Sandiford - - * tree-vector-builder.h - (tree_vector_builder::new_binary_operation): Declare. - * tree-vector-builder.c - (tree_vector_builder::new_binary_operation): New function. - * fold-const.c (fold_relational_const): Use it. - (const_binop): Likewise. Check that both input vectors have - the same number of elements, thus excluding things like WIDEN_SUM. - Check whether it is possible to operate directly on the encodings - of stepped inputs. - -2017-12-07 Richard Sandiford - - * fold-const.c (fold_negate_expr_1): Use tree_vector_builder and - new_unary_operation, operating only on the encoded elements. - (const_unop): Likewise. - (exact_inverse): Likewise. - (distributes_over_addition_p): New function. - (const_binop): Use tree_vector_builder and new_unary_operation - for combinations of VECTOR_CST and INTEGER_CST. Operate only - on the encoded elements unless the encoding is strided and the - operation does not distribute over addition. - (fold_convert_const): Use tree_vector_builder and - new_unary_operation. Operate only on the encoded elements - for truncating integer conversions, or for non-stepped encodings. - -2017-12-07 Richard Sandiford - - * config/sparc/sparc.c: Include tree-vector-builder.h. - (sparc_fold_builtin): Use tree_vector_builder instead of build_vector. - * expmed.c: Include tree-vector-builder.h. - (make_tree): Use tree_vector_builder instead of build_vector. - * fold-const.c: Include tree-vector-builder.h. - (const_binop): Use tree_vector_builder instead of build_vector. - (const_unop): Likewise. - (native_interpret_vector): Likewise. - (fold_vec_perm): Likewise. - (fold_ternary_loc): Likewise. - * gimple-fold.c: Include tree-vector-builder.h. - (gimple_fold_stmt_to_constant_1): Use tree_vector_builder instead - of build_vector. - * tree-ssa-forwprop.c: Include tree-vector-builder.h. - (simplify_vector_constructor): Use tree_vector_builder instead - of build_vector. - * tree-vect-generic.c: Include tree-vector-builder.h. - (add_rshift): Use tree_vector_builder instead of build_vector. - (expand_vector_divmod): Likewise. - (optimize_vector_constructor): Likewise. - * tree-vect-loop.c: Include tree-vector-builder.h. - (vect_create_epilog_for_reduction): Use tree_vector_builder instead - of build_vector. Explicitly use a stepped encoding for - { 1, 2, 3, ... }. - * tree-vect-slp.c: Include tree-vector-builder.h. - (vect_get_constant_vectors): Use tree_vector_builder instead - of build_vector. - (vect_transform_slp_perm_load): Likewise. - (vect_schedule_slp_instance): Likewise. - * tree-vect-stmts.c: Include tree-vector-builder.h. - (vectorizable_bswap): Use tree_vector_builder instead of build_vector. - (vect_gen_perm_mask_any): Likewise. - (vectorizable_call): Likewise. Explicitly use a stepped encoding. - * tree.c: (build_vector_from_ctor): Use tree_vector_builder instead - of build_vector. - (build_vector_from_val): Likewise. Explicitly use a duplicate - encoding. - -2017-12-07 Richard Sandiford - - * doc/generic.texi (VECTOR_CST): Describe new representation of - vector constants. - * vector-builder.h: New file. - * tree-vector-builder.h: Likewise. - * tree-vector-builder.c: Likewise. - * Makefile.in (OBJS): Add tree-vector-builder.o. - * tree.def (VECTOR_CST): Update comment to refer to generic.texi. - * tree-core.h (tree_base): Add a vector_cst field to the u union. - (tree_vector): Change the number of elements to - vector_cst_encoded_nelts. - * tree.h (VECTOR_CST_NELTS): Redefine using TYPE_VECTOR_SUBPARTS. - (VECTOR_CST_ELTS): Delete. - (VECTOR_CST_ELT): Redefine using vector_cst_elt. - (VECTOR_CST_LOG2_NPATTERNS, VECTOR_CST_NPATTERNS): New macros. - (VECTOR_CST_NELTS_PER_PATTERN, VECTOR_CST_DUPLICATE_P): Likewise. - (VECTOR_CST_STEPPED_P, VECTOR_CST_ENCODED_ELTS): Likewise. - (VECTOR_CST_ENCODED_ELT): Likewise. - (vector_cst_encoded_nelts): New function. - (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and - VECTOR_CST_NELTS_PER_PATTERN as arguments. - (vector_cst_int_elt, vector_cst_elt): Declare. - * tree.c: Include tree-vector-builder.h. - (tree_code_size): Abort if passed VECTOR_CST. - (tree_size): Update for new VECTOR_CST layout. - (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and - VECTOR_CST_NELTS_PER_PATTERN as arguments. - (build_vector): Use tree_vector_builder. - (vector_cst_int_elt, vector_cst_elt): New functions. - (drop_tree_overflow): For VECTOR_CST, drop the TREE_OVERFLOW from the - encoded elements and then create the vector in the canonical form. - (check_vector_cst, check_vector_cst_duplicate, check_vector_cst_fill) - (check_vector_cst_stepped, test_vector_cst_patterns): New functions. - (tree_c_tests): Call test_vector_cst_patterns. - * lto-streamer-out.c (DFS::DFS_write_tree_body): Handle the new - VECTOR_CST fields. - (hash_tree): Likewise. - * tree-streamer-out.c (write_ts_vector_tree_pointers): Likewise. - (streamer_write_tree_header): Likewise. - * tree-streamer-in.c (lto_input_ts_vector_tree_pointers): Likewise. - (streamer_alloc_tree): Likewise. Update call to make_vector. - * fold-const.c (fold_ternary_loc): Avoid using VECTOR_CST_ELTS. - -2017-12-07 Richard Sandiford - - * selftest.h (ASSERT_TRUE_AT, ASSERT_FALSE_AT, ASSERT_EQ_AT) - (ASSERT_NE, ASSERT_PRED1): Add underscores to local variable names - * selftest-rtl.h (ASSERT_RTX_EQ, ASSERT_RTX_PTR_EQ): Likewise. - -2017-12-07 Bin Cheng - Richard Biener - - PR tree-optimization/81303 - * Makefile.in (gimple-loop-interchange.o): New object file. - * common.opt (floop-interchange): Reuse the option from graphite. - * doc/invoke.texi (-floop-interchange): Ditto. New document for - -floop-interchange and mention it for -O3. - * opts.c (default_options_table): Enable -floop-interchange at -O3. - * gimple-loop-interchange.cc: New file. - * params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter. - (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter. - * passes.def (pass_linterchange): New pass. - * timevar.def (TV_LINTERCHANGE): New time var. - * tree-pass.h (make_pass_linterchange): New declaration. - * tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external - interchange. Record IV before/after increment in new parameters. - * tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration. - * tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction - path check into... - (check_reduction_path): ...New function here. - * tree-vectorizer.h (check_reduction_path): New declaration. - -2017-12-07 Vladimir Makarov - - PR target/83252 - PR rtl-optimization/80818 - * lra.c (add_regs_to_insn_regno_info): Make a hard reg in CLOBBER - always early clobbered. - * lra-lives.c (process_bb_lives): Check input hard regs for early - clobbered non-operand hard reg. - -2017-12-07 Jakub Jelinek - - PR middle-end/83164 - * tree-cfg.c (verify_gimple_assign_binary): Don't require - types_compatible_p, just that TYPE_MODE is the same. - -2017-12-07 Martin Sebor - - PR c/81544 - * attribs.c (empty_attribute_table): Initialize new member of - struct attribute_spec. - (decl_attributes): Add argument. Handle mutually exclusive - combinations of attributes. - (selftests::test_attribute_exclusions): New function. - (selftests::attribute_c_tests): Ditto. - * attribs.h (decl_attributes): Add default argument. - * selftest.h (attribute_c_tests): Declare. - * selftest-run-tests.c (selftest::run_tests): Call attribute_c_tests. - * tree-core.h (attribute_spec::exclusions, exclude): New type and - member. - * doc/extend.texi (Common Function Attributes): Update const and pure. - * config/alpha/alpha.c (vms_attribute_table): Initialize new member - of struct attribute_spec. - * config/arc/arc.c (arc_attribute_table): Same. - * config/arm/arm.c (arm_attribute_table): Same. - * config/avr/avr.c ( avr_attribute_table): Same. - * config/bfin/bfin.c (bfin_attribute_table): Same. - * config/cr16/cr16.c (cr16_attribute_table): Same. - * config/epiphany/epiphany.c (epiphany_attribute_table): Same. - * config/h8300/h8300.c (h8300_attribute_table): Same. - * config/i386/i386.c (ix86_attribute_table): Same. - * config/ia64/ia64.c (ia64_attribute_table): Same. - * config/m32c/m32c.c (m32c_attribute_table): Same. - * config/m32r/m32r.c (m32r_attribute_table): Same. - * config/m68k/m68k.c (m68k_attribute_table): Same. - * config/mcore/mcore.c (mcore_attribute_table): Same. - * config/microblaze/microblaze.c (microblaze_attribute_table): Same. - * config/mips/mips.c (mips_attribute_table): Same. - * config/msp430/msp430.c (msp430_attribute_table): Same. - * config/nds32/nds32.c (nds32_attribute_table): Same. - * config/nvptx/nvptx.c (nvptx_attribute_table): Same. - * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Same. - * config/rl78/rl78.c (rl78__attribute_table): Same. - * config/rs6000/rs6000.c (rs6000_attribute_table): Same. - * onfig/rx/rx.c (rx_attribute_table): Same. - * config/s390/s390.c (s390_handle_vectorbool_attribute): Same. - * config/sh/sh.c (sh_attribute_table): Same. - * config/sparc/sparc.c (sparc_attribute_table): Same. - * config/spu/spu.c (spu_attribute_table): Same. - * config/stormy16/stormy16.c (xstormy16_attribute_table): Same. - * config/v850/v850.c (v850_attribute_table): Same. - * config/visium/visium.c (visium_attribute_table): Same. - -2017-12-07 Tamar Christina - - PR target/82641 - * config/arm/arm.c (INCLUDE_STRING): Define. - (arm_last_printed_arch_string, arm_last_printed_fpu_string): New. - (arm_declare_function_name): Conservatively emit .arch, .arch_extensions - and .fpu. - -2017-12-07 Michael Matz - - Add unroll and jam pass - - * gimple-loop-jam.c: New file. - * Makefile.in (OBJS): Add gimple-loop-jam.o. - * common.opt (funroll-and-jam): New option. - * opts.c (default_options_table): Add unroll-and-jam at -O3. - * params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param. - (PARAM_UNROLL_JAM_MAX_UNROLL): Ditto. - * passes.def: Add pass_loop_jam. - * timevar.def (TV_LOOP_JAM): Add. - * tree-pass.h (make_pass_loop_jam): Declare. - * cfgloop.c (flow_loop_tree_node_add): Add AT argument. - * cfgloop.h (flow_loop_tree_node_add): Adjust declaration. - * cfgloopmanip.c (duplicate_loop): Add AT argument, adjust call - to flow_loop_tree_node_add. - (duplicate_subloops, copy_loops_to): Append to sibling list. - * cfgloopmanip.h: (duplicate_loop): Adjust declaration. - * doc/invoke.texi (-funroll-and-jam): Document new option. - (unroll-jam-min-percent, unroll-jam-max-unroll): Document new params. - -2017-12-07 Richard Biener - - PR tree-optimization/83296 - PR tree-optimization/67769 - * tree-ssa-phiopt.c (conditional_replacement): Do not reset - flow sensitive info in an unrelated BB. - (value_replacement): Use reset_flow_sensitive_info. - (minmax_replacement): Reset flow sensitive info on the def - we move. Do not reset flow sensitive info in the whole BB - we move the stmt to. - (abs_replacement): Likewise. - -2017-12-07 Segher Boessenkool - - PR target/43871 - * config/rs6000/rs6000.c (rs6000_option_override_internal): Set - rs6000_cpu to the given -mcpu=, or to the default processor. - -2017-12-07 Segher Boessenkool - - * config/rs6000/rs6000.h (rs6000_cpu_attr): Delete. - * config/rs6000/rs6000.c (rs6000_variable_issue_1): Use rs6000_tune - instead of rs6000_cpu_attr. - (rs6000_adjust_cost): Ditto. - (is_microcoded_insn): Ditto. - (rs6000_adjust_priority): Ditto. - (rs6000_issue_rate): Ditto. - (rs6000_use_sched_lookahead): Ditto. - (rs6000_use_sched_lookahead_guard): Ditto. - (rs6000_sched_reorder): Ditto. - (force_new_group): Ditto. - * config/rs6000/rs6000.md (cpu attribute): Ditto. - (group_ending_nop): Ditto. - -2017-12-07 Segher Boessenkool - - * config/rs6000/rs6000.opt (rs6000_tune): New variable. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Also set - rs6000_tune. Use rs6000_tune instead of rs6000_cpu where appropriate. - (rs6000_loop_align): Use rs6000_tune instead of rs6000_cpu where - appropriate. - (rs6000_reassociation_width): Ditto. - (rs6000_emit_epilogue): Ditto. - (rs6000_adjust_cost): Ditto. - (is_microcoded_insn): Ditto. - (is_cracked_insn): Ditto. - (rs6000_adjust_priority): Ditto. - (rs6000_sched_reorder): Ditto. - (rs6000_sched_reorder2): Ditto. - (insn_must_be_first_in_group): Ditto. - (insn_must_be_last_in_group): Ditto. - (rs6000_register_move_cost): Ditto. - * config/rs6000/rs6000.h (rs6000_cpu_attr): Use rs6000_tune instead of - rs6000_cpu. - -2017-12-07 Julia Koval - - * config.gcc: Add vaesintrin.h. - * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI): - New type. - * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi, - __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi): - New builtins. - * config/i386/i386.c (ix86_expand_args_builtin): Handle new type. - * config/i386/immintrin.h: Include vaesintrin.h. - * config/i386/sse.md (vaesdec_): New pattern. - * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128, - _mm_aesdec_epi128): New intrinsics. - -2017-12-06 David Malcolm - - * Makefile.in (C_COMMON_OBJS): Add c-family/c-spellcheck.o. - * spellcheck-tree.c (find_closest_macro_cpp_cb): Move to - c-family/c-spellcheck.cc. - (best_macro_match::best_macro_match): Likewise. - * spellcheck-tree.h - (struct edit_distance_traits): Move to - c-family/c-spellcheck.h. - (class best_macro_match): Likewise. - -2017-12-06 Jakub Jelinek - - PR tree-optimization/83293 - * gimple-ssa-strength-reduction.c (insert_initializers): Use - GSI_NEW_STMT instead of GSI_SAME_STMT in gsi_insert_after that - might insert into empty bb. - - PR sanitizer/81281 - * match.pd ((T)(P + A) - (T)P -> (T) A): Split into separate - simplify for plus with :c added, and pointer_plus without that. - ((T)P - (T)(P + A) -> -(T) A): Likewise. If type is integral - with undefined overflow and the conversion is not widening, - perform negation in utype and only convert to type afterwards. - ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Split into separate - simplify for plus with :c added, and pointer_plus without that. - If type is integral with undefined overflow and the conversion is - not widening, perform minus in utype and only convert to type - afterwards. Move the last pointer_diff_expr simplify into the - two outermost ifs. - -2017-12-06 Martin Sebor - - PR tree-optimization/82646 - * builtins.c (maybe_emit_chk_warning): Use size as the bound for - strncpy, not maxlen. - -2017-12-06 Martin Sebor - - * doc/invoke.texi (-Wstringop-truncation): Mention attribute - nonstring. - - PR tree-optimization/83075 - * tree-ssa-strlen.c (handle_builtin_stxncpy): Avoid assuming - strncat/strncpy don't change length of source string. - -2017-12-06 Eric Botcazou - - Revert - 2017-11-29 Martin Aberg - - * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length - to prevent b2bst errata sequence. - (sqrtdf2_fix): Likewise. - -2017-12-06 Jakub Jelinek - - PR tree-optimization/81945 - * cfgloop.h (FOR_EACH_LOOP_FN): Use FN instead of hardcoding fn. - * tree-cfg.c (move_sese_region_to_fn): If any of the loops moved - to dest_cfun has orig_loop_num set, either remap it to the new - loop number if the loop got moved too, or clear it. - -2017-12-05 Steve Ellcey - - * config/aarch64/thunderx2-t99.md (thunderx2t99_branch): Add trap - to reservation. - (thunderx2t99_nothing): New insn reservation. - (thunderx2t99_mrs): New insn reservation. - (thunderx2t99_multiple): New insn reservation. - (thunderx2t99_alu_basi): Add bfx to reservation. - (thunderx2t99_fp_cmp): Add fccmps and fccmpd to reservation. - -2017-12-05 Ramana Radhakrishnan - - PR target/82248 - * config/arm/arm.md (probe_stack) : Use the 'o' constraint. - -2017-12-05 Bin Cheng - - * tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from - tree-ssa-pre.c::remove_dead_inserted_code. - * tree-ssa-dce.h: New file. - * tree-ssa-pre.c (tree-ssa-dce.h): Include new header file. - (remove_dead_inserted_code): Move and rename to function - tree-ssa-dce.c::simple_dce_from_worklist. - (pass_pre::execute): Update use. - -2017-12-05 Richard Biener - - PR tree-optimization/83277 - * graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure - to code-gen liveout vars. - -2017-12-05 Richard Sandiford - - * config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal) - (aarch64_simd_bsldi_alt): Check REG_P before GP_REGNUM_P. - (aarch64_cmdi, aarch64_cmtstdi): Add leading "&&" to - split condition. - -2017-12-05 Max Filippov - - * config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New - function. - (TARGET_ASAN_SHADOW_OFFSET): New macro definition. - * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if - ASAN is enabled. - -2017-12-05 Richard Biener - - * timevar.def (TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_WIDEN_MUL): Add. - * tree-ssa-math-opts.c (pass_data_cse_reciprocal): Use TV_TREE_RECIP. - (pass_data_cse_sincos): Use TV_TREE_SINCOS. - (pass_data_optimize_widening_mul): Use TV_TREE_WIDEN_MUL. - -2017-12-05 Rainer Orth - - * dbxout.c (dbxout_block): Grow buf to 30 bytes. - -2017-12-05 Martin Liska - Jakub Jelinek - - * doc/invoke.texi: Document the options. - * flag-types.h (enum sanitize_code): Add - SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT. - * ipa-inline.c (sanitize_attrs_match_for_inline_p): Add handling - of SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT. - * opts.c: Define new sanitizer options. - * sanitizer.def (BUILT_IN_ASAN_POINTER_COMPARE): Likewise. - (BUILT_IN_ASAN_POINTER_SUBTRACT): Likewise. - -2017-12-05 Julia Koval - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET, - OPTION_MASK_ISA_AVX512VNNI_UNSET): New. - (ix86_handle_option): Handle -mavx512vnni. - * config/i386/cpuid.h (bit_AVX512VNNI): New bit. - * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit. - * config/i386/i386-c (__AVX512VNNI__): New. - * config/i386/i386.c (ix86_target_string): Handle new option. - (ix86_valid_target_attribute_inner_p): Handle new option. - * config/i386/i386.h (TARGET_AVX512VNNI, TARGET_AVX512VNNI_P): New. - * config/i386/i386.opt (mavx512vnni): New option. - -2017-12-01 Jan Hubicka - - PR target/81616 - * athlon.md: Disable for generic. - * haswell.md: Enable for generic. - * i386.c (ix86_sched_init_global): Add core hooks for generic. - * x86-tune-sched.c (ix86_issue_rate): Increase issue rate for generic - to 4. - (ix86_adjust_cost): Move generic to haswell path. - -2017-12-04 Eric Botcazou - - * config/sparc/sparc.c (sparc_do_work_around_errata): Use mem_ref - instead of MEM_P in a couple more places. Fix formatting issues. - -2017-12-04 Jim Wilson - - * config/riscv/riscv.c (riscv_for_each_saved_reg): Use GP_REG_LAST - instead of GP_REG_LAST-1. - (riscv_adjust_libcall_cfi_prologue): Likewise. - (riscv_adjust_libcall_cri_epilogue): Likewise. - * config/riscv/riscv.h (CALL_USED_REGISTERS): Change a6 to t6 in - comment. - -2017-12-04 Luis Machado - - * ipa-pure-const.c (check_decl): Add missing newline. - (state_from_flags): Likewise. - -2017-12-04 Jeff Law - - PR tree-optimizatin/78496 - * gimple-ssa-evrp-analyze.h - (evrp_range_analyzer::get_vr_values): Simplify. - * gimple-ssa-evrp-analyze.c: Corresponding changes. - * tree-ssa-dom.c: Include alloc-pool.h, tree-vrp.h, vr-values.h - and gimple-ssa-evrp-analyze.h. - (dom_opt_dom_walker class): Add evrp_range_analyzer member. - (simplify_stmt_for_jump_threading): Copy a blob of code from - tree-vrp.c to use ranges to simplify statements. - (dom_opt_dom_walker::before_dom_children): Call - evrp_range_analyzer::{enter,record_ranges_from_stmt} methods. - (dom_opt_dom_walker::after_dom_children): Similarly for - evrp_range_analyzer::leave. - (dom_opt_dom_walker::optimize_stmt): Use EVRP ranges to optimize - conditionals. - - * gimple-ssa-evrp-analyze.c - (evrp_range_analyzer::extract_range_from_stmt): Always use - vr_values::update_value_range so preexisting range info is - medged with new range info, even if the new range is VR_VARYING. - -2017-12-04 Segher Boessenkool - - * combine.c: Adjust comment. - (use_crosses_set_p): Delete. - (can_combine_p): Use modified_between_p instead of use_crosses_set_p. - (try_combine): Ditto. - -2017-12-04 Richard Biener - - PR tree-optimization/83255 - * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for): - Re-add zero-iteration check. - -2017-12-04 Segher Boessenkool - - PR rtl-optimization/83245 - * lra.c (collect_non_operand_hard_regs): Treat clobbers of non-operand - hard registers as earlyclobber, also if not in an asm. - -2017-12-04 Segher Boessenkool - - PR bootstrap/83265 - Revert - 2017-12-01 Segher Boessenkool - - PR target/43871 - * config/rs6000/rs6000.c (rs6000_option_override_internal): Set - rs6000_cpu based on cpu_index, not tune_index. - -2017-12-04 Richard Biener - - PR tree-optimization/83238 - * graphite-scop-detection.c (scop_detection::merge_sese): Make - code match comment, rejecting invalid SESE regions. - -2017-12-03 John David Anglin - - * config/pa/pa.c (pa_legitimate_address_p): For scaled indexing, - require base operand is a REG_POINTER prior to reload on targets - with non-equivalent space registers. - -2017-12-01 Jan Hubicka - - * ipa-cp.c (ipcp_lattice::print): Update dumping. - (update_specialized_profile): Fix updating of counts. - (perhaps_add_new_callers): Likewise. - -2017-12-01 Jan Hubicka - - PR target/81616 - * x86-tune.def: Remove obsolette FIXMEs. - (X86_TUNE_PARTIAL_FLAG_REG_STALL): Disable for generic - (X86_TUNE_FUSE_CMP_AND_BRANCH_32, X86_TUNE_FUSE_CMP_AND_BRANCH_64, - X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, X86_TUNE_FUSE_ALU_AND_BRANCH): - Enable for generic. - (X86_TUNE_PAD_RETURNS): Disable for generic. - -2017-12-02 Jakub Jelinek - - PR tree-optimization/83170 - PR tree-optimization/83241 - * gimple-ssa-store-merging.c - (imm_store_chain_info::try_coalesce_bswap): Update vuse field from - gimple_vuse (ins_stmt) in case it has changed. - (imm_store_chain_info::output_merged_store): Likewise. - - * tree-chkp.c (chkp_compute_bounds_for_assignment): Handle - POINTER_DIFF_EXPR. - - PR c++/81212 - * tree-cfg.c (pass_warn_function_return::execute): Handle - __builtin_ubsan_handle_missing_return like __builtin_unreachable - with BUILTINS_LOCATION. - - PR target/78643 - PR target/80583 - * expr.c (get_inner_reference): If DECL_MODE of a non-bitfield - is BLKmode for vector field with vector raw mode, use TYPE_MODE - instead of DECL_MODE. - - * config/i386/i386-protos.h (standard_sse_constant_opcode): Change - last argument to rtx pointer. - * config/i386/i386.c (standard_sse_constant_opcode): Replace X argument - with OPERANDS. For AVX+ 128-bit VEX encoded instructions over 256-bit - or 512-bit. If setting EXT_REX_SSE_REG_P, use EVEX encoded insn - depending on the chosen ISAs. - * config/i386/i386.md (*movxi_internal_avx512f, *movoi_internal_avx, - *movti_internal, *movdi_internal, *movsi_internal, *movtf_internal, - *movdf_internal, *movsf_internal): Adjust standard_sse_constant_opcode - callers. - * config/i386/sse.md (mov_internal): Likewise. - * config/i386/mmx.md (*mov_internal): Likewise. - -2017-12-01 Segher Boessenkool - - * doc/invoke.texi (-dp): Say that instruction cost is printed as well. - -2017-12-01 Segher Boessenkool - - * config/rs6000/rs6000-protos.h (emit_fusion_addis): Remove last two - parameters from prototype. - * config/rs6000/rs6000.c (emit_fusion_addis): Remove last two - parameters. Don't print a comment. - (emit_fusion_gpr_load): Adjust. - (emit_fusion_load_store): Adjust. - * config/rs6000/rs6000.md (*fusion_p9__constant): Adjust. - * config/rs6000/vsx.md (two peepholes): Print the "vector load fusion" - comment on the second line. - -2017-12-01 Segher Boessenkool - - PR target/43871 - * config/rs6000/rs6000.c (rs6000_option_override_internal): Set - rs6000_cpu based on cpu_index, not tune_index. - -2017-12-01 Segher Boessenkool - - * final.c (output_asm_name): Print insn_cost. Shorten output. Print - which_alternative instead of which_alternative + 1. - (output_asm_insn): Print an extra tab if the template is short. - -2017-12-01 Jim Wilson - - * common.opt (use_gnu_debug_info_extensions): Delete DWARF_DEBUG from - comment. - * config/vx-common.h (DWARF_DEBUGGING_INFO): Delete undef. - * doc/tm.texi.in (PREFERRED_DEBUGGING_TYPE): Delete DWARF_DEBUG - reference. - * doc/tm.texi: Regenerate. - -2017-12-01 Michael Meissner - - PR target/81959 - * config/rs6000/rs6000.c (rs6000_address_for_fpconvert): Check for - whether we can allocate pseudos before trying to fix an address. - * config/rs6000/rs6000.md (float_si2_hw): Make sure the - memory address is indexed or indirect. - (floatuns_si2_hw2): Likewise. - -2017-12-01 Jason Merrill - - * Makefile.in (TAGS): Add c-family/*.cc. - -2017-12-01 Wilco Dijkstra - - * config/aarch64/aarch64.md (call_insn): Use %c rather than %a. - (call_value_insn): Likewise. - (sibcall_insn): Likewise. - (sibcall_value_insn): Likewise. - (movsi_aarch64): Likewise. - (movdi_aarch64): Likewise. - (add_losym_): Likewise. - (ldr_got_small_): Likewise. - (ldr_got_small_sidi): Likewise. - (ldr_got_small_28k_): Likewise. - (ldr_got_small_28k_sidi): Likewise. - * config/aarch64/aarch64.c (aarch64_print_address_internal): - Move output_addr_const to symbolic case. Add error check. - -2017-12-01 Andreas Krebbel - - * config/s390/predicates.md (plus16_Q_operand): New predicate. - * config/s390/s390.md: Disable MVC merging peephole if it would - disable operand forwarding. - (new peephole2): Split MVCs if it would turn them into up to 2 - forwardable MVCs. - -2017-12-01 Richard Biener - - PR tree-optimization/83232 - * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix - detection of same access. Instead of breaking the group here - do not consider the duplicate. Add comment explaining real fix. - -2017-12-01 Jonathan Wakely - - * doc/md.texi (Insn Splitting): Fix "central flowgraph" typo. - -2017-12-01 Sudakshina Das - - * config/arm/vfp.md (*movhf_vfp_fp16): Add conds attribute. - -2017-12-01 Jakub Jelinek - - * function.h (struct function): Remove cilk_frame_decl, - is_cilk_function and calls_cilk_spawn fields. - * tree-inline.h (struct copy_body_data): Remove remap_var_for_cilk - field. - * omp-simd-clone.c (simd_clone_clauses_extract): Don't clear - cilk_elemental field. - * cgraph.h (struct cgraph_simd_clone): Remove cilk_elemental field. - * target.def: Adjust comment. - * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): - Don't test cilk_elemental. - - PR tree-optimization/83233 - * gimple-ssa-store-merging.c (nop_stats, bswap_stats): Use - bswap_stat name for the struct. - - PR c/79153 - * tree.h (SWITCH_BREAK_LABEL_P): Define. - * gimplify.c (collect_fallthrough_labels): Handle GIMPLE_BIND - starting with a GIMPLE_SWITCH and ending with GIMPLE_LABEL with - SWITCH_BREAK_LABEL_P set on the label. - (gimplify_switch_expr): Set SWITCH_BREAK_LABEL_P on the label - added for default case if it was missing and not all cases covered. - Wrap GIMPLE_SWITCH and the switch_body_seq into a GIMPLE_BIND if - switch_body_seq ends with a GIMPLE_LABEL with SWITCH_BREAK_LABEL_P - set on the label. - * tree-chrec.c (evolution_function_is_univariate_p): Add return true; - to avoid -Wimplicit-fallthrough warning. - * config/i386/i386.c (ix86_expand_special_args_builtin): Add - FALLTHRU comment to avoid -Wimplicit-fallthrough warning. - - PR tree-optimization/83221 - * tree-ssa-reassoc.c (sort_by_operand_rank): Shift bb_rank - down by 16. - (init_reassoc): Formatting fix. - - PR sanitizer/81275 - * tree-cfg.c (group_case_labels_stmt): Don't optimize away - C++ FE implicitly added __builtin_unreachable () until -Wreturn-type - is diagnosed. - - PR sanitizer/83219 - * tree-cfg.c: Include asan.h. - (gimple_seq_unreachable_p): Return false for -fsanitize=unreachable. - -2017-12-01 Sergey Shalnov - - * config/i386/i386.md: Fix AVX512 register width in AVX512 instruction. - -2017-12-01 Sergey Shalnov - - * config/i386/i386.c (standard_sse_constant_opcode): Fix wrong form for - vpcmpeqd instruction. - -2017-12-01 Sergey Shalnov - - * config/i386/i386.c (standard_sse_constant_opcode): Fix - registers type for 128bit mode. - -2017-11-30 Jakub Jelinek - - * spellcheck-tree.c (test_find_closest_identifier): Use ; instead - of ;;. - * gengtype-state.c (read_state_pair): Likewise. - * gimple-fold.c (gimple_fold_builtin_string_compare): Likewise. - * sel-sched-dump.c (dump_insn_rtx_1): Likewise. - * ipa-cp.c (intersect_aggregates_with_edge): Likewise. - * ifcvt.c (noce_try_store_flag_constants): Likewise. - * tree-ssa-ccp.c (ccp_finalize): Likewise. - * omp-grid.c (grid_process_kernel_body_copy): Likewise. - * builtins.c (fold_builtin_3): Likewise. - * graphite-scop-detection.c - (scop_detection::stmt_has_simple_data_refs_p): Likewise. - * hsa-gen.c (hsa_function_representation::hsa_function_representation): - Likewise. - -2017-12-01 Maxim Ostapenko - - PR sanitizer/81697 - * asan.c (asan_protect_global): Add new ignore_decl_rtl_set_p - parameter. Return true if ignore_decl_rtl_set_p is true and other - conditions are satisfied. - * asan.h (asan_protect_global): Add new parameter. - * varasm.c (categorize_decl_for_section): Pass true as second parameter - to asan_protect_global calls. - -2017-11-30 Jim Wilson - - * doc/invoke.texi (RISC-V Options): Delete nonexistent -mmemcpy and - -mno-memcpy options. For -mplt, -mfdiv, -mdiv, -msave-restore, and - -mstrict-align, add info on default value. Delete redundant lines for - -mabi. Add missing -mexplicit-relocs docs. - -2017-11-30 Claudiu Zissulescu - - * config/arc/arc.md (trap): New pattern. - -2017-11-30 Claudiu Zissulescu - - * config/arc/arc.c (hwloop_optimize): Prevent the last ZOL - instruction to end into a delay slot. - * config/arc/arc.md (cond_delay_insn): Check if the instruction - can be placed into a delay slot against reg_note. - -2017-11-30 Claudiu Zissulescu - - * config/arc/arc.c (hwloop_optimize): Update hw-loop's end/start - labels number of usages. - -2017-11-30 Claudiu Zissulescu - - * config/arc/arc.c (arc_cannot_substitue_mem_equiv_p): New - function. - (TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define. - -2017-11-30 Jakub Jelinek - - PR target/83210 - * internal-fn.c (expand_mul_overflow): Optimize unsigned - multiplication by power of 2 constant into two shifts + comparison. - -2017-11-30 Jan Hubicka - - PR target/81616 - * config/i386/x86-tune-costs.h (generic_cost): Revise for modern CPUs. - -2017-11-30 Richard Biener - - PR tree-optimization/83202 - * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add - allow_peel argument and guard peeling. - (canonicalize_loop_induction_variables): Likewise. - (canonicalize_induction_variables): Pass false. - (tree_unroll_loops_completely_1): Pass unroll_outer to disallow - peeling from cunrolli. - -2017-11-29 Segher Boessenkool - - * combine.c (try_combine): Print a message to dump file whenever - I0, I1, or I2 cannot be combined into I3. - -2017-11-29 Segher Boessenkool - - PR rtl-optimization/83156 - PR rtl-optimization/82621 - * combine.c (try_combine): Don't split an I2 if one of the dests is - set again before I3. Allow unused dests. - -2017-11-29 Segher Boessenkool - - * config/rs6000/rs6000.md (*add3_carry_in_internal2): New. - -2017-11-29 Vladimir Makarov - - PR rtl-optimization/80818 - * lra.c (collect_non_operand_hard_regs): New arg insn. Pass it - recursively. Use insn code for clobber. - (lra_set_insn_recog_data): Pass the new arg to - collect_non_operand_hard_regs. - (add_regs_to_insn_regno_info): Pass insn instead of uid. Use insn - code for clobber. - (lra_update_insn_regno_info): Pass insn to - add_regs_to_insn_regno_info. - -2017-11-29 Jim Wilson - Andrew Waterman - - * config/riscv/riscv.c (SINGLE_SHIFT_COST): New. - (riscv_rtx_costs): Case ZERO_EXTRACT, match new pattern, and return - SINGLE_SHIFT_COST. Case LT and ZERO_EXTEND, likewise. Case ASHIFT, - use SINGLE_SHIFT_COST. - * config/riscv/riscv.md (lshrsi3_zero_extend_1): New. - (lshrsi3_zero_extend_2, lshrsi3_zero_extend_3): New. - -2017-11-29 Julia Koval - - * config/i386/avx512vbmi2intrin.h (_mm512_shldv_epi16, - _mm512_mask_shldv_epi16, _mm512_maskz_shldv_epi16, _mm512_shldv_epi32, - _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32, _mm512_shldv_epi64, - _mm512_mask_shldv_epi64, _mm512_maskz_shldv_epi64): New intrinsics. - * config/i386/avx512vbmi2vlintrin.h (_mm256_shldv_epi16, - _mm256_mask_shldv_epi16, _mm256_maskz_shldv_epi16, _mm256_shldv_epi32, - _mm256_mask_shldv_epi32, _mm256_maskz_shldv_epi32, _mm256_shldv_epi64, - _mm256_mask_shldv_epi64, _mm256_maskz_shldv_epi64, _mm_shldv_epi16, - _mm_mask_shldv_epi16, _mm_maskz_shldv_epi16, _mm_shldv_epi32, - _mm_mask_shldv_epi32, _mm_maskz_shldv_epi32, _mm_shldv_epi64, - _mm_mask_shldv_epi64, _mm_maskz_shldv_epi64): Ditto. - * config/i386/i386-builtin.def (__builtin_ia32_vpshldv_v32hi, - __builtin_ia32_vpshldv_v32hi_mask, __builtin_ia32_vpshldv_v32hi_maskz, - __builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask, - __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi, - __builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz, - __builtin_ia32_vpshldv_v16si, __builtin_ia32_vpshldv_v16si_mask, - __builtin_ia32_vpshldv_v16si_maskz, __builtin_ia32_vpshldv_v8si, - __builtin_ia32_vpshldv_v8si_mask, __builtin_ia32_vpshldv_v8si_maskz, - __builtin_ia32_vpshldv_v4si, __builtin_ia32_vpshldv_v4si_mask, - __builtin_ia32_vpshldv_v4si_maskz, __builtin_ia32_vpshldv_v8di, - __builtin_ia32_vpshldv_v8di_mask, __builtin_ia32_vpshldv_v8di_maskz, - __builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask, - __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di, - __builtin_ia32_vpshldv_v2di_mask, - __builtin_ia32_vpshldv_v2di_maskz): New builtins. - * config/i386/sse.md (vpshldv_, vpshldv__mask, - vpshldv__maskz, vpshldv__maskz_1): New patterns. - -2017-11-29 Julia Koval - - * config/i386/avx512vbmi2intrin.h (_mm512_shrdv_epi16, - _mm512_mask_shrdv_epi16, _mm512_maskz_shrdv_epi16, _mm512_shrdv_epi32, - _mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64, - _mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64): New intrinsics. - * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdv_epi16, - _mm256_mask_shrdv_epi16, _mm256_maskz_shrdv_epi16, _mm256_shrdv_epi32, - _mm256_mask_shrdv_epi32, _mm256_maskz_shrdv_epi32, _mm256_shrdv_epi64, - _mm256_mask_shrdv_epi64, _mm256_maskz_shrdv_epi64, _mm_shrdv_epi16, - _mm_mask_shrdv_epi16, _mm_maskz_shrdv_epi16, _mm_shrdv_epi32, - _mm_mask_shrdv_epi32, _mm_maskz_shrdv_epi32, _mm_shrdv_epi64, - _mm_mask_shrdv_epi64, _mm_maskz_shrdv_epi64): Ditto. - * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_V32HI, - V32HI_FTYPE_V32HI_V32HI_V32HI_INT, V16HI_FTYPE_V16HI_V16HI_V16HI_INT, - V8HI_FTYPE_V8HI_V8HI_V8HI_INT, V8SI_FTYPE_V8SI_V8SI_V8SI_INT, - V4SI_FTYPE_V4SI_V4SI_V4SI_INT, V8DI_FTYPE_V8DI_V8DI_V8DI, - V8DI_FTYPE_V8DI_V8DI_V8DI_INT, V4DI_FTYPE_V4DI_V4DI_V4DI_INT, - V16SI_FTYPE_V16SI_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_V16SI_INT, - V2DI_FTYPE_V2DI_V2DI_V2DI_INT): New types. - * config/i386/i386.c (ix86_expand_args_builtin): Handle new types. - * config/i386/sse.md (vpshrdv_, vpshrdv__mask, - vpshrdv__maskz, vpshrdv__maskz_1): New pattern. - -2017-11-29 Daniel Cederman - - * config/sparc/sparc.c (sparc_do_work_around_errata): Treat the - movsi_pic_gotdata_op instruction as a load for the UT699 errata - workaround. - -2017-11-29 Martin Aberg - - * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length - to prevent b2bst errata sequence. - (sqrtdf2_fix): Likewise. - -2017-11-29 Daniel Cederman - - * config/sparc/sparc.c (fpop_reg_depend_p): New function. - (div_sqrt_insn_p): New function. - (sparc_do_work_around_errata): Insert NOP instructions to - prevent sequences that could trigger the TN-0013 errata for - certain LEON3 processors. - (pass_work_around_errata::gate): Also test sparc_fix_lost_divsqrt. - (sparc_option_override): Set sparc_fix_lost_divsqrt appropriately. - * config/sparc/sparc.md (fix_lost_divsqrt): New attribute. - (in_branch_delay): Prevent div and sqrt in delay slot if - fix_lost_divsqrt. - * config/sparc/sparc.opt (sparc_fix_lost_divsqrt): New variable. - -2017-11-29 Daniel Cederman - - * config/sparc/sparc.c (atomic_insn_p): New function. - (sparc_do_work_around_errata): Insert NOP instructions to - prevent sequences that could trigger the TN-0010 errata for - UT700. - * config/sparc/sync.md (atomic_compare_and_swap_leon3_1): Make - instruction referable in atomic_insns_p. - -2017-11-29 Daniel Cederman - - * config/sparc/sync.md (swapsi): 16-byte align if sparc_fix_gr712rc. - (atomic_compare_and_swap_leon3_1): Likewise. - (ldstub): Likewise. - -2017-11-29 Daniel Cederman - - * config/sparc/sparc.c (fpop_insn_p): New function. - (sparc_do_work_around_errata): Insert NOP instructions to - prevent sequences that could trigger the TN-0012 errata for - GR712RC. - (pass_work_around_errata::gate): Also test sparc_fix_gr712rc. - * config/sparc/sparc.md (fix_gr712rc): New attribute. - (in_branch_annul_delay): Prevent floating-point instructions - in delay slot of annulled integer branch. - -2017-11-29 Richard Biener - - PR tree-optimization/83202 - * tree-vect-slp.c (scalar_stmts_set_t): New typedef. - (bst_fail): Use it. - (vect_analyze_slp_cost_1): Add visited set, do not account SLP - nodes vectorized to the same stmts multiple times. - (vect_analyze_slp_cost): Allocate a visited set and pass it down. - (vect_analyze_slp_instance): Adjust. - (scalar_stmts_to_slp_tree_map_t): New typedef. - (vect_schedule_slp_instance): Add a map recording the SLP node - representing the vectorized stmts for a set of scalar stmts. - Avoid code-generating redundancies. - (vect_schedule_slp): Allocate map and pass it down. - -2017-11-29 Nathan Sidwell - - PR c++/83187 - * tree.c (build_complex_type): Fix canonicalization. Only fill in - type if it is new. - -2017-11-29 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_print_operand): Add new - cases for printing LDP/STP memory addresses. - (aarch64_print_address_internal): Renamed from - aarch64_print_operand_address, added parameter, add Pmode check. - (aarch64_print_ldpstp_address): New function for LDP/STP addresses. - (aarch64_print_operand_address): Indirect to - aarch64_print_address_internal. - * config/aarch64/aarch64-simd.md (store_pair_lanes): Use new - 'y' operand output specifier. - -2017-11-29 Jakub Jelinek - - PR middle-end/83185 - * tree.c (build_simple_mem_ref_loc): Handle - get_addr_base_and_unit_offset returning a MEM_REF. - - PR middle-end/80929 - * rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost. - - PR target/80819 - * config/i386/sse.md (vec_concatv2di): Remove * from (=Yr,0,*rm) - alternative. - -2017-11-28 David Malcolm - - * diagnostic-show-locus.c (layout::print_trailing_fixits): Handle - m_x_offset. - (layout::move_to_column): Likewise. - -2017-11-28 Jakub Jelinek - - PR sanitizer/81275 - * tree.c (block_may_fallthru): Return false if SWITCH_ALL_CASES_P - is set on SWITCH_EXPR and !block_may_fallthru (SWITCH_BODY ()). - -2017-11-28 Prathamesh Kulkarni - Martin Jambor - - PR ipa/82808 - * tree.h (expr_type_first_operand_type_p): Declare - * tree.c (expr_type_first_operand_type_p): New function. - * ipa-prop.h (ipa_get_type): Allow i to be out of bounds. - (ipa_value_from_jfunc): Adjust declaration. - * ipa-cp.c (ipa_get_jf_pass_through_result): New parameter RES_TYPE. - Use it as result type for arithmetics, unless it is NULL in which case - be more conservative. - (ipa_value_from_jfunc): New parameter PARM_TYPE, pass it to - ipa_get_jf_pass_through_result. - (propagate_vals_across_pass_through): Likewise. - (propagate_scalar_across_jump_function): New parameter PARM_TYPE, pass - is to propagate_vals_across_pass_through. - (propagate_constants_across_call): Pass PARM_TYPE to - propagate_scalar_across_jump_function. - (find_more_scalar_values_for_callers_subset): Pass parameter type to - ipa_value_from_jfunc. - (cgraph_edge_brings_all_scalars_for_node): Likewise. - * ipa-fnsummary.c (evaluate_properties_for_edge): Renamed parms_info - to caller_parms_info, pass parameter type to ipa_value_from_jfunc. - * ipa-prop.c (try_make_edge_direct_simple_call): New parameter - target_type, pass it to ipa_value_from_jfunc. - (update_indirect_edges_after_inlining): Pass parameter type to - try_make_edge_direct_simple_call. - -2017-11-28 Jeff Law - - * gimple-ssa-evrp-analyze.c - (evrp_range_analyzer::record_ranges_from_phis): Only use SCEV to - refine ranges if scev_initialized_p returns true. - * vr-values.c (vr_values::extract_range_from_phi_node): Likewise. - -2017-11-28 Julia Koval - - * config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16, - _mm512_mask_shrdi_epi16, _mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32, - _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32, _mm512_shrdi_epi64, - _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64): New intrinsics. - * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdi_epi16, - _mm256_mask_shrdi_epi16, _mm256_maskz_shrdi_epi16, - _mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32, _mm256_shrdi_epi32, - _mm256_mask_shrdi_epi64, _mm256_maskz_shrdi_epi64, _mm256_shrdi_epi64, - _mm_mask_shrdi_epi16, _mm_maskz_shrdi_epi16, _mm_shrdi_epi16, - _mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32, _mm_shrdi_epi32, - _mm_mask_shrdi_epi64, _mm_maskz_shrdi_epi64, _mm_shrdi_epi64): Ditto. - * config/i386/i386-builtin.def (__builtin_ia32_vpshrd_v32hi, - __builtin_ia32_vpshrd_v32hi_mask, __builtin_ia32_vpshrd_v16hi, - __builtin_ia32_vpshrd_v16hi_mask, __builtin_ia32_vpshrd_v8hi, - __builtin_ia32_vpshrd_v8hi_mask, __builtin_ia32_vpshrd_v16si, - __builtin_ia32_vpshrd_v16si_mask, __builtin_ia32_vpshrd_v8si, - __builtin_ia32_vpshrd_v8si_mask, __builtin_ia32_vpshrd_v4si, - __builtin_ia32_vpshrd_v4si_mask, __builtin_ia32_vpshrd_v8di, - __builtin_ia32_vpshrd_v8di_mask, __builtin_ia32_vpshrd_v4di, - __builtin_ia32_vpshrd_v4di_mask, __builtin_ia32_vpshrd_v2di, - __builtin_ia32_vpshrd_v2di_mask): New builtins. - * config/i386/sse.md (vpshrd_): New pattern. - -2017-11-28 Julia Koval - - * config/i386/avx512vbmi2intrin.h (_mm512_shldi_epi16, - _mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16, _mm512_shldi_epi32, - _mm512_mask_shldi_epi32, _mm512_maskz_shldi_epi32, _mm512_shldi_epi64, - _mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): New intrinsics. - * config/i386/avx512vbmi2vlintrin.h (_mm256_shldi_epi16, - _mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16, - _mm256_mask_shldi_epi32, _mm256_maskz_shldi_epi32, _mm256_shldi_epi32, - _mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64, _mm256_shldi_epi64, - _mm_mask_shldi_epi16, _mm_maskz_shldi_epi16, _mm_shldi_epi16, - _mm_mask_shldi_epi32, _mm_maskz_shldi_epi32, _mm_shldi_epi32, - _mm_mask_shldi_epi64, _mm_maskz_shldi_epi64, _mm_shldi_epi64): Ditto. - * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_INT, - V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT, V16SI_FTYPE_V16SI_V16SI_INT, - V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT, - V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT, V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT, - V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT, - V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT, - V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT, - V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT, - V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT): New types. - * config/i386/i386-builtin.def (__builtin_ia32_vpshld_v32hi, - __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshld_v16hi, - __builtin_ia32_vpshld_v16hi_mask, __builtin_ia32_vpshld_v8hi, - __builtin_ia32_vpshld_v8hi_mask, __builtin_ia32_vpshld_v16si, - __builtin_ia32_vpshld_v16si_mask, __builtin_ia32_vpshld_v8si, - __builtin_ia32_vpshld_v8si_mask, __builtin_ia32_vpshld_v4si, - __builtin_ia32_vpshld_v4si_mask, __builtin_ia32_vpshld_v8di, - __builtin_ia32_vpshld_v8di_mask, __builtin_ia32_vpshld_v4di, - __builtin_ia32_vpshld_v4di_mask, __builtin_ia32_vpshld_v2di, - __builtin_ia32_vpshld_v2di_mask): New builtins. - * config/i386/i386.c (ix86_expand_args_builtin): Handle new types. - * config/i386/sse.md (vpshld_): New pattern. - -2017-11-28 Richard Biener - - PR tree-optimization/80776 - * gimple-ssa-evrp-analyze.h (evrp_range_analyzer::set_ssa_range_info): - Declare. - * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::set_ssa_range_info): - New function. - (evrp_range_analyzer::record_ranges_from_incoming_edges): - If the incoming edge is an effective fallthru because the other - edge only reaches a __builtin_unreachable () then record ranges - derived from the controlling condition in SSA info. - (evrp_range_analyzer::record_ranges_from_phis): Use set_ssa_range_info. - (evrp_range_analyzer::record_ranges_from_stmt): Likewise. - -2017-11-28 Olivier Hainque - - * Makefile.in (SELFTEST_FLAGS): Use nul instead of /dev/null - on mingw build hosts. - -2017-11-28 Jakub Jelinek - - PR debug/81307 - * dbxout.c (dbx_block_with_cold_children): Fix function comment. - -2017-11-28 Richard Biener - - PR middle-end/83141 - * gimple-fold.c (gimple_fold_builtin_memory_op): For aggregate - copies generated from memcpy use a character array as reference - type. - -2017-11-28 Julia Koval - Sebastian Peryt - - * Makefile.in (cilkplus.def, cilk-builtins.def, c-family/cilk.o, - c-family/c-cilkplus.o, c-family/array-notation-common.o, - cilk-common.o, cilk.h, cilk-common.c): Remove. - * builtin-types.def - (BT_FN_INT_PTR_PTR_PTR_FTYPE_BT_INT_BT_PTR_BT_PTR_BT_PTR): Remove. - * builtins.c (is_builtin_name): Remove cilkplus condition. - (BUILT_IN_CILK_DETACH, BUILT_IN_CILK_POP_FRAME): Remove. - * builtins.def (DEF_CILK_BUILTIN_STUB, DEF_CILKPLUS_BUILTIN, - cilk-builtins.def, cilkplus.def): Remove. - * cif-code.def (CILK_SPAWN): Remove. - * cilk-builtins.def: Delete. - * cilk-common.c: Ditto. - * cilk.h: Ditto. - * cilkplus.def: Ditto. - * config/darwin.h (fcilkplus): Delete. - * cppbuiltin.c: Ditto. - * doc/extend.texi: Remove cilkplus doc. - * doc/generic.texi: Ditto. - * doc/invoke.texi: Ditto. - * doc/passes.texi: Ditto. - * gcc.c (fcilkplus): Remove. - * gengtype.c (cilk.h): Remove. - * gimple-pretty-print.c (dump_gimple_omp_for): Remove cilkplus - support. - * gimple.h (GF_OMP_FOR_KIND_CILKFOR, GF_OMP_FOR_KIND_CILKSIMD): - Remove. - * gimplify.c (gimplify_return_expr, maybe_fold_stmt, - gimplify_call_expr, - is_gimple_stmt, gimplify_modify_expr, gimplify_scan_omp_clauses, - gimplify_adjust_omp_clauses, gimplify_omp_for, gimplify_expr): Remove - cilkplus conditions. - * ipa-fnsummary.c (ipa_dump_fn_summary, compute_fn_summary, - inline_read_section): Ditto. - * ipa-inline-analysis.c (cilk.h): Remove. - * ira.c (ira_setup_eliminable_regset): Remove cilkplus support. - * lto-wrapper.c (merge_and_complain, append_compiler_options, - append_linker_options): Remove condition for fcilkplus. - * lto/lto-lang.c (cilk.h): Remove. - (lto_init): Remove condition for fcilkplus. - * omp-expand.c (expand_cilk_for_call): Delete. - (expand_omp_taskreg, expand_omp_for_static_chunk, - expand_omp_for): Remove cilkplus - conditions. - (expand_cilk_for): Delete. - * omp-general.c (omp_extract_for_data): Remove cilkplus support. - * omp-low.c (scan_sharing_clauses, create_omp_child_function, - execute_lower_omp, diagnose_sb_0): Ditto. - * omp-simd-clone.c (simd_clone_clauses_extract): Ditto. - * tree-core.h (OMP_CLAUSE__CILK_FOR_COUNT_): Delete. - * tree-nested.c: Ditto. - * tree-pretty-print.c (dump_omp_clause): Remove cilkplus support. - (dump_generic_node): Ditto. - * tree.c (OMP_CLAUSE__CILK_FOR_COUNT_): Delete. - * tree.def (cilk_simd, cilk_for, cilk_spawn_stmt, cilk_sync_stmt): - Delete. - * tree.h (CILK_SPAWN_FN, EXPR_CILK_SPAWN): Delete. - -2017-11-28 Ramana Radhakrishnan - - * config/aarch64/aarch64.md (div3): Change check to TARGET_FLOAT. - * config/aarch64/aarch64.c (aarch64_emit_approx_div): Add early exit - for vector mode and !TARGET_SIMD. - -2017-11-28 Jakub Jelinek - - * tree.def (SWITCH_EXPR): Change from 3 operand to 2 operand tree. - Adjust comment. - * tree.h (SWITCH_LABELS): Remove. - * gimplify.c (gimplify_switch_expr): Don't test SWITCH_LABELS, - assert SWITCH_BODY is non-NULL. - * tree-pretty-print.c (dump_generic_node): Remove SWITCH_LABELS - handling. - * tree.c (block_may_fallthru): Always return true; for SWITCH_EXPR. - - PR tree-optimization/80788 - * match.pd (X +- C1 CMP C2 -> X CMP C2 -+ C1): If res - has TREE_OVERFLOW set, call drop_tree_overflow. - -2017-11-28 Richard Biener - - PR tree-optimization/83158 - * tree-vrp.c (intersect_ranges): Prefer ~[0, 0] in a few more cases. - -2017-11-28 Segher Boessenkool - - PR 81288/target - * config/rs6000/rs6000.c (rs6000_rtx_costs): Do not handle - TARGET_ISEL && !TARGET_MFCRF differently. Simplify code. - -2017-11-27 Segher Boessenkool - - * config/rs6000/rs6000.md (2_isel): Change - LT/GT/LTU/GTU to LE/GE/LEU/GEU where possible. - -2017-11-27 Michael Meissner - - PR middle_end/82333 - * varasm.c (compare_constant): Take the mode of the constants into - account when comparing floating point constants. - -2017-11-27 Gerald Pfeifer - - * hash-set.h (DEFINE_DEBUG_HASH_SET): Remove static qualifier - from explicit instantiation of debug_helper. - * vec.h (DEFINE_DEBUG_VEC): Ditto. - -2017-11-27 Richard Biener - - * gimple-fold.c (gimple_fold_builtin_memory_op): Remove dead code, - refactor a bit. - -2017-11-27 Richard Biener - - * tree.c (wide_int_to_tree): Free discarded INTEGER_CST. - (type_hash_canon): Also clear int_cst_hash_table entry for - TYPE_MIN/MAX_VALUE. - (build_nonstandard_integer_type): Hash all TYPE_MAX_VALUEs. - -2017-11-27 Tamar Christina - - * doc/extend.texi: Add -A suffix (ARMv8*-A, ARMv7-A). - * doc/invoke.texi: Add -A suffix (ARMv8*-A, ARMv7-A). - * doc/sourcebuild.texi: Add -A suffix (ARMv8*-A, ARMv7-A). - -2017-11-27 Markus Trippelsdorf - - * hash-map.h (gt_cleare_cache): Avoid UB. - -2017-11-27 Eric Botcazou - - * cfgloop.h (struct loop): Document usage of USHRT_MAX for unroll. - * loop-unroll.c (decide_unroll_constant_iterations): Implement it. - (decide_unroll_runtime_iterations): Likewise. - (decide_unroll_stupid): Likewise. - -2017-11-27 Igor Tsimbalist - - PR target/83109 - * config/i386/i386.md: Add a loop with incssp. - -2017-11-27 Martin Jambor - - PR tree-optimization/81248 - * tree-sra.c (splice_param_accesses): Remove size check. - (decide_one_param_reduction): Fix size check. - * gimple-pretty-print.c (dump_profile): Silence warning. - * params.def (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Adjust description. - -2017-11-27 Jakub Jelinek - - PR debug/81307 - * dbxout.c (lastlineno): New variable. - (dbx_debug_hooks): Use dbxout_switch_text_section as - switch_text_section debug hook. - (dbxout_function_end): Switch to current_function_section - rather than function_section. If crtl->has_bb_partition, - output just one N_FUN, depending on in_cold_section_p. - (dbxout_source_line): Remember last lineno in lastlineno. - (dbxout_switch_text_section): New function. - (dbxout_function_decl): Adjust dbxout_block caller. - (dbx_block_with_cold_children): New function. - (dbxout_block): Return true if any LBRAC/RBRAC have been - emitted. Use dbx_block_with_cold_children at depth == 0 - in second partition. Add PARENT_BLOCKNUM argument, pass - it optionally adjusted to children. Output LBRAC/RBRAC - around recursive call only if the block is in the current - partition, if not and anything was output, emit empty - range LBRAC/RBRAC. - * final.c (final_scan_insn): Compute cold_function_name - before calling switch_text_section debug hook. Call - that hook even if dwarf2out_do_frame if not emitting - dwarf debug info. - - PR target/83100 - * varasm.c (bss_initializer_p): Return true for DECL_COMMON - TREE_READONLY decls. - -2017-11-27 Markus Trippelsdorf - - PR rtl-optimization/82488 - * expr.c (fixup_args_size_notes): Avoid signed integer overflow. - -2017-11-26 Julia Koval - - * config/i386/i386.c (processor_target_table): Add skylake_cost for - skylake-avx512. - * config/i386/x86-tune-costs.h (skylake_memcpy, skylake_memset, - skylake_cost): New. - -2017-11-26 Julia Koval - - * config/i386/driver-i386.c (host_detect_local_cpu): - Detect skylake-avx512. - -2017-11-26 Julia Koval - - * config.gcc: Add -march=cannonlake. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect cannonlake. - * config/i386/i386-c.c (ix86_target_macros_internal): Handle cannonlake. - * config/i386/i386.c (processor_costs): Add m_CANNONLAKE. - (PTA_CANNONLAKE): New. - (processor_target_table): Add cannonlake. - (ix86_option_override_internal): Ditto. - (fold_builtin_cpu): Ditto. - (get_builtin_code_for_version): Handle cannonlake. - (M_INTEL_COREI7_CANNONLAKE): New. - * config/i386/i386.h (TARGET_CANNONLAKE, PROCESSOR_CANNONLAKE): New. - * doc/invoke.texi: Add -march=cannonlake. - -2017-11-14 Boris Kolpackov - - * plugin.c (add_new_plugin): Use platform-specific library extensions. - (try_init_one_plugin): Alternative implementation for MinGW. - * Makefile.in (plugin_implib): New. - (gengtype-lex.c): Fix broken AIX workaround. - * configure: Regenerate. - * doc/plugins.texi: Document support for MinGW. - -2017-11-25 Jakub Jelinek - - PR rtl-optimization/81553 - * combine.c (simplify_if_then_else): In (if_then_else COND (OP Z C1) Z) - to (OP Z (mult COND (C1 * STORE_FLAG_VALUE))) optimization, if OP - is a shift where C1 has different mode than the whole shift, use C1's - mode for MULT rather than the shift's mode. - - PR target/82848 - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Don't fold - builtins not enabled in the currently selected ISA. - -2017-11-24 Jackson Woodruff - - 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. - -2017-11-24 Richard Biener - - PR tree-optimization/82402 - * tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Properly - set SSA_NAME_OCCURS_IN_ABNORMAL_PHI. - -2017-11-24 Marc Glisse - - * match.pd (0-ptr): New transformation. - -2017-11-24 Jan Hubicka - - PR bootstrap/83015 - * ipa-inline.c (inline_small_functions): Set current badnes correctly - when skipping checking. - -2017-11-24 Richard Biener - - PR tree-optimization/83128 - * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Handle STRING_CSTs. - (vn_reference_lookup_3): Likewise. - -2017-11-24 Jakub Jelinek - - 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. - - * 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. - -2017-11-24 Christophe Lyon - - * config/arm/arm_neon.h: Fix pragma GCC push_options before - vdot_u32. - -2017-11-23 Julia Koval - - * 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_mask, expand_maskz): New patterns. - -2017-11-23 Julia Koval - - * 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_mask, compressstore_mask): New patterns. - -2017-11-23 Jakub Jelinek - - * 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. - -2017-11-23 Marc Glisse - - * match.pd (ptr-0): New transformation. - -2017-11-23 Charles Baylis - - * 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. - -2017-11-23 Charles Baylis - - * config/arm/arm.c (arm_mem_costs): New function. - (arm_rtx_costs_internal): Use arm_mem_costs. - -2017-11-23 Mark Wielaard - - * 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. - -2017-11-23 Mike Stump - Eric Botcazou - - * 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) : Deal with unroll kind. - (gimplify_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) : - New case. - (replace_loop_annotate) : 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) : - 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. - -2017-11-23 Sergey Shalnov - - * config/i386/i386.h (TARGET_PREFER_AVX256): Also - enable when TARGET_PREFER_AVX128 is set. - -2017-11-23 Jan Hubicka - - * 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. - -2017-11-23 Jan Hubicka - - * ipa-fnsummary.c (record_modified_bb_info): Use sreal - frequencies. Fix estimation of aggregate parameters. - -2017-11-23 Jan Hubicka - - * cgraphclones.c (cgraph_node::create_clone): Fix updating of profile - when inlining. - -2017-11-23 Tom de Vries - - * config/sh/sh.h (ASM_OUTPUT_ADDR_VEC_ELT): Wrap in "do {} while (0)". - -2017-11-23 Tom de Vries - - * config/ft32/ft32.h (ASM_OUTPUT_ADDR_VEC_ELT): Remove semicolon after - macro. - -2017-11-23 Oleg Endo - - 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. - -2017-11-23 Jakub Jelinek - - 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. - -2017-11-23 Richard Biener - - 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. - -2017-11-23 Richard Biener - - 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. - -2017-11-22 Jeff Law - - * 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. - -2017-11-22 Eric Botcazou - - 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. - -2017-11-22 Jakub Jelinek - - * simplify-rtx.c (simplify_binary_operation_1) : - Handle the case where both arguments are using gen_const_vec_series. - -2017-11-22 David Malcolm - - 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. - -2017-11-22 Jeff Law - - * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer) - 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. - -2017-11-22 Richard Sandiford - - * 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. - -2017-11-22 Olivier Hainque - - * 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. - -2017-11-22 Marc Glisse - - PR tree-optimization/83104 - * vr-values.c (simplify_stmt_using_ranges): Check integral argument, - not result. - -2017-11-22 Marek Polacek - H.J. Lu - Jason Merrill - - PR c++/60336 - PR middle-end/67239 - PR target/68355 - * 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. - -2017-11-22 Thomas Preud'homme - - * 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. - -2017-11-22 Tamar Christina - - * 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. - - -2017-11-22 Richard Sandiford - - PR middle-end/82547 - * wide-int.cc (wi::add_large, wi::sub_large): Fix overflow detection - for unsigned values with fewer HWIs than the precision. - (test_overflow): New function. - (wide_int_cc_tests): Call it. - -2017-11-22 Richard Sandiford - - * emit-rtl.c (init_derived_machine_modes): Make sure ptr_mode - has the same mode class as Pmode. - -2017-11-22 Thomas Preud'homme - - * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of - padding_bits_to_clear_ptr. - (cmse_nonsecure_entry_clear_before_return): Likewise. - -2017-11-22 Thomas Preud'homme - - * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Use - auto_sbitap instead of integer bitfield to control register needing - clearing. - -2017-11-22 Jakub Jelinek - - PR tree-optimization/83044 - * tree-vrp.c (vrp_prop::check_array_ref): If eltsize is not - INTEGER_CST or is 0, clear up_bound{,_p1} and later ignore tests - that need the upper bound. Subtract offset from - get_addr_base_and_unit_offset only if positive and subtract it - before division by eltsize rather than after it. - - PR debug/83084 - * valtrack.c (propagate_for_debug_subst, propagate_for_debug): Reset - debug insns if they would contain UNSPEC_VOLATILE or volatile asm. - (dead_debug_insert_temp): Likewise, but also ignore even non-volatile - asm. - - PR middle-end/82875 - * optabs.c (expand_doubleword_mult, expand_binop): Before calling - expand_binop with *mul_widen_optab, make sure at least one of the - operands doesn't have VOIDmode. - - PR debug/83034 - * dwarf2out.c (mem_loc_descriptor): Handle VEC_SERIES. - - PR rtl-optimization/82044 - PR tree-optimization/82042 - * dse.c (record_store): Check for overflow. - (check_mem_read_rtx): Properly check for overflow if width == -1, call - add_wild_read instead of clear_rhs_from_active_local_stores on - overflow and log it into dump_file. - -2017-11-22 Richard Biener - - * gimple-iterator.c (gimple_find_edge_insert_loc): Ignore - fake edges to exit when looking for a place to insert. - * tree-ssa-pre.c (clear_expression_ids): Inline into callers - and remove. - (insert_into_preds_of_block): Commit edge insertion immediately, - assert that doesn't require new BBs. - (fini_pre): Release expressions. - (pass_pre::execute): Shuffle things around a bit, if the fn - is too large do not compute AVAIL either as this is really the - quadratic bit. - -2017-11-22 Richard Biener - - PR tree-optimization/83089 - * tree-if-conv.c (pass_if_conversion::execute): If anything - changed reset SCEV and free the number of iteration estimates. - -2017-11-21 Martin Sebor - - PR tree-optimization/82945 - * calls.h (warn_nonstring_bound): Remove unused function. - -2017-11-21 Martin Sebor - - PR tree-optimization/82945 - * builtins.c (expand_builtin_strlen): Call maybe_warn_nonstring_arg. - * calls.h (maybe_warn_nonstring_arg): Declare new function. - * calls.c (get_attr_nonstring_decl, maybe_warn_nonstring_arg): New - functions. - (initialize_argument_information): Call maybe_warn_nonstring_arg. - * calls.h (get_attr_nonstring_decl): Declare new function. - * doc/extend.texi (attribute nonstring): Update. - * gimple-fold.c (gimple_fold_builtin_strncpy): Call - get_attr_nonstring_decl and handle it. - * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same. Improve - detection of nul-termination. - (strlen_to_stridx): Change to a pointer. - (handle_builtin_strlen, handle_builtin_stxncpy): Adjust. - (pass_strlen::execute): Same. - -2017-11-21 Sergey Shalnov - - * config/i386/i386-opts.h (enum prefer_vector_width): Added new enum - for the new option -mprefer-vector-width=[none|128|256|512]. - * config/i386/i386.c (ix86_target_string): remove old style options - -mprefer-avx256 and make -mprefer-avx128 as alias. - (ix86_option_override_internal): Apply defaults for the - -mprefer-vector-width=[128|256] option. - * config/i386/i386.h (TARGET_PREFER_AVX128, TARGET_PREFER_AVX256): - Implement macros to work with -mprefer-vector-width=. - * config/i386/i386.opt: Implemented option - -mprefer-vector-width=[none|128|256|512]. - * doc/invoke.texi: Documentation for - -mprefer-vector-width=[none|128|256|512]. - -2017-11-21 Pat Haugen - - * config/rs6000/ppc-asm.h (f50, vs50): Fix values. - -2017-11-21 Jonathan Wakely - - * doc/invoke.texi (-Wmaybe-uninitialized): Rephrase for clarity. - -2017-11-21 Marc Glisse - - * doc/generic.texi: Document POINTER_DIFF_EXPR, update - POINTER_PLUS_EXPR. - * cfgexpand.c (expand_debug_expr): Handle POINTER_DIFF_EXPR. - * expr.c (expand_expr_real_2): Likewise. - * fold-const.c (const_binop, fold_addr_of_array_ref_difference, - fold_binary_loc): Likewise. - * match.pd (X-X, P+(Q-P), &D-P, (P+N)-P, P-(P+N), (P+M)-(P+N), - P-Q==0, -(A-B), X-Z - - * config/i386/i386.md (*bswap2_movbe): Add - integer suffix to movbe mnemonic. - (*bswaphi2_movbe): Ditto. - (bswaphi_lowpart): Merge with *bswaphi_lowpart_1. - -2017-11-21 Jakub Jelinek - - PR c++/83045 - * tree-cfg.c (pass_warn_function_return::execute): Formatting fix. - Also warn if seen __builtin_unreachable () call with BUILTINS_LOCATION. - Use LOCATION_LOCUS when comparing against UNKNOWN_LOCATION. - -2017-11-21 Martin Liska - - * tree-inline.c (expand_call_inline): Remove not needed - xstrdup_for_dump. - -2017-11-21 James Cowgill - Jakub Jelinek - - PR target/82880 - * config/mips/frame-header-opt.c (mips_register_frame_header_opt): - Remove static keyword from f variable. - -2017-11-21 Jakub Jelinek - - PR tree-optimization/83086 - * gimple-ssa-store-merging.c - (imm_store_chain_info::try_coalesce_bswap): Test this_n.base_addr - rather than n.base_addr. - -2017-11-21 Martin Liska - - PR rtl-optimization/82044 - PR tree-optimization/82042 - * dse.c (check_mem_read_rtx): Check for overflow. - -2017-11-21 Aldy Hernandez - - * tree-ssa-threadbackward.c (find_jump_threads_backwards): Fix - typo in comment. - -2017-11-21 Claudiu Zissulescu - - * cfgrtl.c (force_nonfallthru_and_redirect): Don't split a call - and its corresponding call arg location note. - -2017-11-21 Claudiu Zissulescu - Andrew Burgess - - * config/arc/arc-protos.h (arc_compute_frame_size): Delete - declaration. - (arc_return_slot_offset): Likewise. - (arc_eh_return_address_location): New declaration. - * config/arc/arc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define. - (MUST_SAVE_REGISTER): Add exception handler case. - (MUST_SAVE_RETURN_ADDR): Likewise. - (arc_frame_pointer_required): Likewise. - (arc_frame_pointer_needed): New function. - (arc_compute_frame_size): Changed. - (arc_expand_prologue): Likewise. - (arc_expand_epilogue): Likewise. - (arc_initial_elimination_offset): Likewise. - (arc_return_slot_offset): Delete. - (arc_eh_return_address_location): New function. - (arc_builtin_setjmp_frame_value): Likewise. - * config/arc/arc.h (EH_RETURN_DATA_REGNO): Use 2 registers. - (EH_RETURN_STACKADJ_RTX): Define. - (EH_RETURN_HANDLER_RTX): Likewise. - * config/arc/arc.md (eh_return): Delete. - -2017-11-21 Aldy Hernandez - - * print-tree.h (debug_vec_tree): Remove prototype. - * gdbinit.in (pvt): Remove macro. - -2017-11-21 Jakub Jelinek - - PR tree-optimization/83047 - * gimple-ssa-store-merging.c - (imm_store_chain_info::output_merged_store): If the loads with the - same vuse are in different basic blocks, for load_gsi pick a load - location that is dominated by the other loads. - - PR c++/83059 - * config/i386/i386.c (ix86_memmodel_check): Start - -Winvalid-memory-model diagnostics with lowercase letter. - - PR debug/82718 - * dwarf2out.c (dw_loc_list): If crtl->has_bb_partition, temporarily - set in_cold_section_p to the partition containing loc_list->first. - When seeing loc_list->last_before_switch node, update secname and - perform range_across_switch second partition handling only after that. - - PR debug/82933 - * run-rtl-passes.c: Include debug.h. - (run_rtl_passes): Call debug_hooks->assembly_start. - * dwarf2out.c (dwarf2out_assembly_start): Return early if invoked - multiple times. - - PR target/82981 - * internal-fn.c (expand_mul_overflow): Use OPTAB_WIDEN instead of - OPTAB_DIRECT in calls to expand_simple_binop. - -2017-11-20 David Malcolm - - PR c/81404 - * Makefile.in (C_COMMON_OBJS): Add c-family/known-headers.o. - -2017-11-20 David Malcolm - - PR c++/72786 - * spellcheck.h (best_match::blithely_get_best_candidate): New - accessor. - -2017-11-20 Jakub Jelinek - - * config/i386/i386.c (parse_mtune_ctrl_str): Start diagnostics - with lower case letter. - -2017-11-20 Uros Bizjak - - * config/i386/i386.md (bswaphi2): New expander. - (*bswaphi2_movbe): New insn pattern. - (bswaphi -> rorhi pepehole2): New peephole pattern. - -2017-11-20 Jeff Law - - * Makefile.in (OBJS): Add gimple-ssa-evrp-analyze.o. - * gimple-ssa-evrp-analyze.c: New file pulled from gimple-ssa-evrp.c. - * gimple-ssa-evrp-analyze.h: New file pulled from gimple-ssa-evrp.c. - * gimple-ssa-evrp.c: Remove bits moved into new files. Include - gimple-ssa-evrp-analyze.h. - - * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Do not - set BB_VISITED here. - (evrp_range_analyzer::enter): Set BB_VISITED here instead. - -2017-11-20 Bin Cheng - - * tree-predcom.c: Add general comment on Store-Store chains. - (split_data_refs_to_components): Postpone clearing eliminate_store_p - flag in component. - (get_chain_last_ref_at): Rename into... - (get_chain_last_write_at): ...this. - (get_chain_last_write_before_load): New function. - (add_ref_to_chain): Promote type of chain from CT_STORE_LOAD to - CT_STORE_STORE when write reference is added. - (determine_roots_comp): Support load ref in CT_STORE_STORE chains. - (is_inv_store_elimination_chain): Update get_chain_last_write_at call. - (initialize_root_vars_store_elim_1): Ditto. - (initialize_root_vars_store_elim_2): Ditto. Replace rhs once default - definition is created. - (execute_pred_commoning_chain): Support load ref in CT_STORE_STORE - chain by replacing it with dominant stored value. - -2017-11-20 Bin Cheng - - * tree-predcom.c (add_ref_to_chain): Remove check on distance. - -2017-11-20 Marc Glisse - - * vr-values.c (extract_range_from_binary_expr): Use a full range - for VR_VARYING. - -2017-11-20 Thomas Preud'homme - - * config/arm/arm.md (R4_REGNUM): Define constant. - (nonsecure_call_internal): Remove r4 clobber. - (nonsecure_call_value_internal): Likewise. - * config/arm/thumb1.md (nonsecure_call_reg_thumb1_v5): Remove second - clobber and resequence match_operands. - (nonsecure_call_value_reg_thumb1_v5): Likewise. - * config/arm/thumb2.md (nonsecure_call_reg_thumb2): Likewise. - (nonsecure_call_value_reg_thumb2): Likewise. - -2017-11-20 Jakub Jelinek - - PR tree-optimization/78821 - * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Give up - if base is TARGET_MEM_REF. If base is not MEM_REF, set base_addr - to the address of the base rather than the base itself. - (find_bswap_or_nop_1): Just use pointer comparison for vuse check. - (find_bswap_or_nop_finalize): New function. - (find_bswap_or_nop): Use it. - (bswap_replace): Return a tree rather than bool, change first - argument from gimple * to gimple_stmt_iterator, allow inserting - into an empty sequence, allow ins_stmt to be NULL - then emit - all stmts into gsi. Fix up MEM_REF address gimplification. - (pass_optimize_bswap::execute): Adjust bswap_replace caller. - (struct store_immediate_info): Add N and INS_STMT non-static - data members. - (store_immediate_info::store_immediate_info): Initialize them - from newly added ctor args. - (merged_store_group::apply_stores): Formatting fixes. Sort by - bitpos at the end. - (stmts_may_clobber_ref_p): For stores call also - refs_anti_dependent_p. - (gather_bswap_load_refs): New function. - (imm_store_chain_info::try_coalesce_bswap): New method. - (imm_store_chain_info::coalesce_immediate_stores): Use it. - (split_group): Handle LROTATE_EXPR and NOP_EXPR rhs_code specially. - (imm_store_chain_info::output_merged_store): Fail if number of - new estimated stmts is bigger or equal than old. Handle LROTATE_EXPR - and NOP_EXPR rhs_code. - (pass_store_merging::process_store): Compute n and ins_stmt, if - ins_stmt is non-NULL and the store rhs is otherwise invalid, use - LROTATE_EXPR rhs_code. Pass n and ins_stmt to store_immediate_info - ctor. - (pass_store_merging::execute): Calculate dominators. - - * tree-ssa-math-opts.c (nop_stats, bswap_stats, struct symbolic_number, - BITS_PER_MARKER, MARKER_MASK, MARKER_BYTE_UNKNOWN, HEAD_MARKER, CMPNOP, - CMPXCHG, do_shift_rotate, verify_symbolic_number_p, - init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge, - find_bswap_or_nop_1, find_bswap_or_nop, pass_data_optimize_bswap, - class pass_optimize_bswap, bswap_replace, - pass_optimize_bswap::execute): Moved to ... - * gimple-ssa-store-merging.c: ... this file. - Include optabs-tree.h. - (nop_stats, bswap_stats, do_shift_rotate, verify_symbolic_number_p, - init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge, - find_bswap_or_nop_1, find_bswap_or_nop, bswap_replace): Put into - anonymous namespace, remove static keywords. - (pass_optimize_bswap::gate): Test BITS_PER_UNIT == 8 here... - (pass_optimize_bswap::execute): ... rather than here. Formatting fix. - -2017-11-20 Jan Hubicka - - PR bootstrap/83062 - * ipa-inline.c (can_inline_edge_p): Fix typo in previous patch. - -2017-11-20 Aldy Hernandez - - * vec.h (debug_helper): New function. - (DEFINE_DEBUG_VEC): New macro. - * hash-set.h (debug_helper): New function. - (DEFINE_DEBUG_HASH_SET): New macro. - * cfg.c (debug_slim (edge)): New function. - Call DEFINE_DEBUG_VEC for edges. - Call DEFINE_DEBUG_HASH_SET for edges. - * cfghooks.c (debug_slim (basic_block)): New function. - Call DEFINE_DEBUG_VEC for basic blocks. - Call DEFINE_DEBUG_HASH_SET for basic blocks. - * print-tree.c (debug_slim): New function to handle trees. - Call DEFINE_DEBUG_VEC for trees. - Call DEFINE_DEBUG_HASH_SET for trees. - (debug (vec) &): Remove. - (debug () *): Remove. - * print-rtl.c (debug_slim): New function to handle const_rtx. - Call DEFINE_DEBUG_VEC for rtx_def. - Call DEFINE_DEBUG_VEC for rtx_insn. - Call DEFINE_DEBUG_HASH_SET for rtx_def. - Call DEFINE_DEBUG_HASH_SET for rtx_insn. - * sel-sched-dump.c (debug (vec &): Remove. - (debug (vec *ptr): Remove. - (debug_insn_vector): Remove. - * stor-layout.c (debug_rli): Call debug() instead of debug_vec_tree. - -2017-11-20 Tom de Vries - - PR rtl-optimization/82020 - * simplify-rtx.c (simplify_ternary_operation): Fix comparison mode of - IF_THEN_ELSE condition. - -2017-11-19 Jeff Law - - * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling - of degenerates resulting from ignoring an edge. - -2017-11-19 Jan Hubicka - - PR ipa/81360 - * ipa-inline.c (can_inline_edge_p): Also check that caller is optimized - -2017-11-19 Jan Hubicka - - PR ipa/83001 - * profile-count.c (profile_count::to_sreal_scale): Fix return value - for uninitialied counts. - -2017-11-19 Jan Hubicka - - PR ipa/60243 - * tree-inline.c (estimate_num_insns): Set to 1 at least. - -2017-11-19 Jan Hubicka - - PR target/82713 - * i386.c (ix86_builtin_vectorization_cost): Be ready for insane types. - -2017-11-19 Tom de Vries - - * config/arc/arc.h (FUNCTION_PROFILER): Remove semicolon after - "do while (0)". - -2017-11-19 Tom de Vries - - * config/phoenix.h (TARGET_OS_CPP_BUILTINS): Remove semicolon after - "do {} while (0)". - -2017-11-19 Tom de Vries - - * config/visium/visium.h (ASM_OUTPUT_CASE_END): Remove semicolon after - macro body. - -2017-11-19 Tom de Vries - - * config/ft32/ft32.h (REGISTER_TARGET_PRAGMAS): Remove semicolon after - "do {} while (0)". - * config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Same. - -2017-11-19 Tom de Vries - - * config/mcore/mcore-elf.h (MCORE_EXPORT_NAME): Remove semicolon after - "do {} while (0)". - * config/mcore/mcore.h (ASM_OUTPUT_ALIGNED_COMMON): After missing - semicolon after MCORE_EXPORT_NAME call. - -2017-11-19 Tom de Vries - - PR target/82961 - * vmsdbgout.c (vmsdbgout_early_finish): New function. - (vmsdbg_debug_hooks): Set early_finish field to vmsdbgout_early_finish. - -2017-11-18 Jan Hubicka - - * cgraphclones.c (cgraph_edge::clone): Rename gcov_count to prof_count. - (cgraph_edge::clone): Cleanup updating of profile. - * ipa-cp.c (update_profiling_info): Likewise. - * ipa-inline-transform.c (inline_transform): Likewise. - * ipa-inline.c (inline_small_functions): Add missing space to dump. - * ipa-split.c (execute_split_functions): Do not split when function - is cold. - * predict.c (estimate_bb_frequencies): Cleanup updating of profile. - * profile-count.c (profile_count::dump): Add global0. - (profile_count::to_cgraph_frequency): Do not ICE when entry is - undefined. - (profile_count::to_sreal_scale): Likewise. - (profile_count::adjust_for_ipa_scaling): Fix typo in comment. - (profile_count::combine_with_ipa_count): New function. - * profile-count.h (profile_guessed_global0adjusted): New. - (profile_count::adjusted_zero): New. - (profile_count::global0adjusted): New. - (profile_count::combine_with_ipa_count): New. - * tree-inline.c (copy_edges_for_bb): Add NUM/DEN arugment; - correct profile of return block of split functions. - (copy_cfg_body): Remove unused profile_count. - (copy_body): Likewise. - (expand_call_inline): Update. - (tree_function_versioning): Update. - -2017-11-18 Aldy Hernandez - - * hash-set.h (hash_set::empty): New. - * tree-ssa-threadbackward.h: Delete. - * tree-ssa-threadbackward.c (class thread_jumps): New. - Move max_threaded_paths into class. - (fsm_find_thread_path): Remove arguments that are now in class. - (profitable_jump_thread_path): Rename to... - (thread_jumps::profitable_jump_thread_path): ...this. - (convert_and_register_jump_thread_path): Rename to... - (thread_jumps::convert_and_register_current_path): ...this. - (check_subpath_and_update_thread_path): Rename to... - (thread_jumps::check_subpath_and_update_thread_path): ...this. - (register_jump_thread_path_if_profitable): Rename to... - (thread_jumps::register_jump_thread_path_if_profitable): ...this. - (handle_phi): Rename to... - (thread_jumps::handle_phi): ...this. - (handle_assignment): Rename to... - (thread_jumps::handle_assignment): ...this. - (fsm_find_control_statement_thread_paths): Rename to... - (thread_jumps::fsm_find_control_statement_thread_paths): ...this. - (find_jump_threads_backwards): Rename to... - (thread_jumps::find_jump_threads_backwards): ...this. - Initialize path local data. - (pass_thread_jumps::execute): Call find_jump_threads_backwards - from within thread_jumps class. - (pass_early_thread_jumps::execute): Same. - -2017-11-17 Jan Hubicka - - * cgraph.c (cgraph_node::dump): Do IPA sanity checking on IPA counts. - -2017-11-17 Steve Ellcey - - * config/aarch64/aarch64-simd.md (fnma4): Move neg operator - to canonical location. - -2017-11-17 Steve Ellcey - - PR target/81356 - * config/aarch64/aarch64.c (aarch64_use_by_pieces_infrastructure_p): - Remove. - (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Remove define. - -2017-11-17 H.J. Lu - - * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Use - rcrt1.o%s/grcrt1.o%s for -static-pie. - -2017-11-17 Jan Hubicka - - * i386.c (ix86_multiplication_cost, ix86_division_cost, - ix86_shift_rotate_cost): Break out from ... - (ix86_rtx_costs): ... here. - (ix86_add_stmt_cost): Use rtx cost machinery to compute cost of - vector operations. - -2017-11-17 Jan Hubicka - - * predict.c (determine_unlikely_bbs): Set cgraph node count to 0 - when entry block was promoted unlikely. - (estimate_bb_frequencies): Increase frequency scale. - * profile-count.h (profile_count): Export precision info. - -2017-11-17 Jan Hubicka - - * tree-tailcall.c (eliminate_tail_call): Be more careful about not - disturbin profile of entry block. - -2017-11-17 Jan Hubicka - - * ipa-fnsummary.c (estimate_node_size_and_time): Be more tolerant for - roundoff errors. - -2017-11-17 Jan Hubicka - - * ipa-cp.c (update_profiling_info): Handle conversion to local profile. - * tree-cfg.c (execute_fixup_cfg): Do fixup same way as inliner does. - -2017-11-17 Jeff Law - - * gimple-ssa-evrp.c (class evrp_range_analyzer): New class extracted - from evrp_dom_walker class. Various methods moved into new class. - (evrp_range_analyzer::evrp_range_analyzer): Constructor for new class. - (evrp_range_analyzer::enter): New method. - (evrp_range_analyzer::leave): New method. - (evrp_dom_walker): Remove delegators no longer needed by this class. - Replace vr_values data member with evrp_range_analyzer - - * gimple-ssa-evrp.c (evrp_dom_walker::record_ranges_from_phis): New - method extracted from evrp_dom_walker::before_dom_children. - (evrp_dom_walker::record_ranges_from_stmt): Likewise. - (evrp_dom_walker::record_ranges_from_incoming_edge): Likewise. - - * gimple-ssa-evrp.c (evrp_dom_walker): Add cleanup method. - Add private copy constructor and move assignment operators. - Privatize methods and class data where trivially possible. - (evrp_dom_walker::cleanup): New function, extracted from - execute_early_vrp. Simplify access to class data. - - * vr-values.h (get_output_for_vrp): Prototype. - * vr-values.c (get_output_for_vrp): New function extracted from - vrp_visit_assignment_or_call and extract_range_from_stmt. - (vrp_visit_assignment_or_call): Use get_output_for_vrp. Simplify. - -2017-11-17 Luis Machado - - * config/aarch64/aarch64.c - (qdf24xx_prefetch_tune) : Set to -1. - (qdf24xx_tunings) : Set to - tune_params::AUTOPREFETCHER_WEAK. - -2017-11-17 Tamar Christina - - PR target/82641 - * config/arm/arm.c (arm_valid_target_attribute_rec): - Parse "arch=" and "+". - (arm_valid_target_attribute_tree): Re-init global options. - (arm_option_override): Make non-static. - (arm_options_perform_arch_sanity_checks): Make errors fatal. - * gcc/config/arm/arm-c.c (__ARM_FEATURE_CMSE): Support undef. - (__ARM_FEATURE_CRC32): Support undef. - * config/arm/arm_acle.h (__ARM_FEATURE_CRC32): Replace with pragma. - * doc/extend.texi (ARM Function Attributes): Add pragma and target. - -2017-11-17 David Malcolm - - * gdbinit.in (break-on-diagnostic): New command. - -2017-11-17 Igor Tsimbalist - - * config/i386/i386.c (ix86_expand_epilogue): Change simple - return to indirect jump for EH return if control-flow - protection is enabled. Change explicit 'false' argument in - pro_epilogue_adjust_stack with a value of - flag_cf_protection. - * config/i386/i386.md (simple_return_indirect_internal): - Remove SImode restriction to support 64-bit. - -2017-11-17 Segher Boessenkool - - * combine.c (added_notes_insn): New. - (try_combine): Handle added_notes_insn like added_links_insn. - Rewrite return value code. - (distribute_notes): Set added_notes_insn to the earliest insn we added - a note to. - -2017-11-17 Segher Boessenkool - - PR rtl-optimization/82621 - * combine.c (try_combine): Do not split PARALLELs of two SETs if the - dest of one of those SETs is unused. - -2017-11-17 Richard Biener - - PR fortran/83017 - * tree-core.h (enum annot_expr_kind): Add annot_expr_parallel_kind. - * tree-pretty-print.c (dump_generic_node): Handle - annot_expr_parallel_kind. - * tree-cfg.c (replace_loop_annotate_in_block): Likewise. - * gimplify.c (gimple_boolify): Likewise. - -2017-11-17 Igor Tsimbalist - - * config.gcc (extra_headers): Add cet.h for x86 targets. - * config/i386/cet.h: New file. - * doc/install.texi: Add --enable-cet/--disable-cet. - -2017-11-17 Richard Biener - - PR tree-optimization/83017 - * tree-parloops.c (MIN_PER_THREAD): Use --param parloops-min-per-thread. - (gen_parallel_loop): Properly count iterations. - (parallelize_loops): Handle loop->can_be_parallel independent - of flag_loop_parallelize_all. Make static profitability test match - the runtime one. - * params.def (PARAM_PARLOOPS_MIN_PER_THREAD): New. - * invoke.texi (parloops-min-per-thread): Document. - -2017-11-17 Vineet Gupta - - * config/arc/linux.h: GLIBC_DYNAMIC_LINKER update per glibc - upstreaming review comments. - -2017-11-17 Tamar Christina - - * expr.c (copy_blkmode_to_reg): Fix bitsize for targets - with fast unaligned access. - * doc/sourcebuild.texi (word_mode_no_slow_unalign): New. - -2017-11-17 Thomas Preud'homme - - * config/arm/arm.c (cmse_nonsecure_entry_clear_before_return): Allocate - to_clear_arg_regs_bitmap to the same size as to_clear_bitmap. - -2017-11-17 Richard Biener - - * tree-ssa-pre.c (phi_translate_1): Remove redundant constant - folding of references. - -2017-11-17 Qing Zhao - - PR middle-end/78809 - * gimple-fold.c (gimple_fold_builtin_string_compare): Add handling - of replacing call to strncmp with corresponding call to strcmp when - meeting conditions. - -2017-11-17 Sergey Shalnov - - * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Add tuning - option prefer-avx256 for skylake-avx512 configuration. - * config/i386/i386.c (ix86_option_override_internal): Ditto. - (get_builtin_code_for_version): Ditto. - -2017-11-17 Chung-Ju Wu - Monk Chiang - - * config/nds32/nds32.h (FIRST_PSEUDO_REGISTER): Modify. - (FIXED_REGISTERS): Reserve more register numbers. - (CALL_USED_REGISTERS): Likewise. - (REG_ALLOC_ORDER): Likewise. - (REG_CLASS_CONTENTS): Likewise. - (REGISTER_NAMES): Likewise. - -2017-11-17 Chung-Ju Wu - Kito Cheng - - * config/nds32/nds32-modes.def: Add vector mode V4QI V2HI V8QI V4HI - V2SI. - * config/nds32/iterators.md: Add vector mode iterators and attributes. - -2017-11-16 Steven Munroe - - * config/rs6000/mmintrin.h (_mm_add_pi32[_ARCH_PWR]): Correct - parameter list for vec_splats. - -2017-11-16 Joseph Myers - - * doc/invoke.texi (-std=c17): Refer to 2018 expected publication - date of C17. - (-std=c18, -std=iso9899:2018, -std=gnu18): Document option aliases. - -2017-11-16 Thomas Koenig - - PR bootstrap/82856 - * doc/install.texi: Document incompatibility of Perl >=5.6.26 - with the required version of automake 1.11.6. - -2017-11-16 Pat Haugen - - * rs6000/power9.md (power9fpdiv): New automaton and cpu_unit defined - for it. - (DU_C2_3_power9): Correct reservation combinations. - (FP_DIV_power9, VEC_DIV_power9): New. - (power9-alu): Split out rotate/shift... - (power9-rot): ...to here, correct dispatch resource. - (power9-cracked-alu, power9-mul, power9-mul-compare): Correct dispatch - resource. - (power9-fp): Correct latency. - (power9-sdiv): Add div/sqrt resource. - (power9-ddiv): Correct latency, add div/sqrt resource. - (power9-sqrt, power9-dsqrt): Add div/sqrt resource. - (power9-vecfdiv, power9-vecdiv): Correct latency, add div/sqrt - resource. - (power9-qpdiv, power9-qpmul): Adjust resource usage. - -2017-11-15 Michael Meissner - - * config/rs6000/rs6000.c (rs6000_expand_builtin): Do not do the - switch statement mapping KF built-ins to TF built-ins if we don't - have the proper ISA 3.0 assembler support. - -2017-11-16 Jan Hubicka - - * tree-emutls.c (lower_emutls_data): Remove unused bb_freq. - (lower_emutls_function_body): Do not compute it. - -2017-11-16 Jan Hubicka - - * ipa-split.c (split_bb_info): Turn time to sreal. - (split_point): Likewise. - (dump_split_point): Likewise. - (fine_split_points): Likewise. - (execute_split_functions): Only zero split_bbs; turn time to sreals. - -2017-11-16 Jan Hubicka - - * ipa-fnsummary.c (analyze_function_body): Accumulate time consistently - in sreal. - -2017-11-16 Jan Hubicka - - * predict.c (combine_predictions_for_bb): Preserve zero predicted - edges. - (expensive_function_p): Remove useless assert. - (determine_unlikely_bbs): Propagate also forward; determine cold blocks - -2017-11-16 Martin Sebor - - PR tree-optimization/82588 - PR tree-optimization/82583 - * tree-vrp.c (check_array_ref): Handle flexible array members, - string literals, and inner indices. - (search_for_addr_array): Add detail to diagnostics. - -2017-11-16 Nathan Sidwell - - PR c++/82836 - PR c++/82737 - * tree.h (COPY_DECL_RTL): Rename parms for clarity. - (SET_DECL_ASSEMBLER_NAME): Forward to - overwrite_decl_assembler_name. - (COPY_DECL_ASSEMBLER_NAME): Rename parms for clarity. - (overwrite_decl_assembler_name): Declare. - * tree.c (overwrite_decl_assembler_name): New. - * langhooks-def.h (lhd_overwrite_decl_assembler_name): Declare. - (LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME): Provide default. - (LANG_HOOKS_INITIALIZER): Add it. - * langhooks.h (struct lang_hooks): Add overwrite_decl_assembler_name. - * langhooks.c (lhd_set_decl_assembler_name): Use - SET_DECL_ASSEMBLER_NAME. - (lhd_overwrite_decl_assembler_name): Default implementation. - -2017-11-16 Wilco Dijkstra - Jackson Woodruff - - PR tree-optimization/71026 - * match.pd: Canonicalize constant multiplies in division. - -2017-11-16 Wilco Dijkstra - - * opts.c (default_options_table): Add OPT_fomit_frame_pointer entry. - * common/config/alpha/alpha-common.c (TARGET_OPTION_OPTIMIZATION_TABLE): - Remove OPT_fomit_frame_pointer entry. - * common/config/arc/arc-common.c: Likewise. - * common/config/arm/arm-common.c: Likewise. - * common/config/avr/avr-common.c: Likewise. - * common/config/c6x/c6x-common.c: Likewise. - * common/config/cr16/cr16-common.c: Likewise. - * common/config/cris/cris-common.c: Likewise. - * common/config/epiphany/epiphany-common.c: Likewise. - * common/config/fr30/fr30-common.c: Likewise. - * common/config/frv/frv-common.c: Likewise. - * common/config/ia64/ia64-common.c: Likewise. - * common/config/iq2000/iq2000-common.c: Likewise. - * common/config/lm32/lm32-common.c: Likewise. - * common/config/m32r/m32r-common.c: Likewise. - * common/config/mcore/mcore-common.c: Likewise. - * common/config/microblaze/microblaze-common.c: Likewise. - * common/config/mips/mips-common.c: Likewise. - * common/config/mmix/mmix-common.c: Likewise. - * common/config/mn10300/mn10300-common.c: Likewise. - * common/config/nios2/nios2-common.c: Likewise. - * common/config/pa/pa-common.c: Likewise. - * common/config/pdp11/pdp11-common.c: Likewise. - * common/config/powerpcspe/powerpcspe-common.c: Likewise. - * common/config/riscv/riscv-common.c: Likewise. - * common/config/rs6000/rs6000-common.c: Likewise. - * common/config/rx/rx-common.c: Likewise. - * common/config/s390/s390-common.c: Likewise. - * common/config/sh/sh-common.c: Likewise. - * common/config/sparc/sparc-common.c: Likewise. - * common/config/tilegx/tilegx-common.c: Likewise. - * common/config/tilepro/tilepro-common.c: Likewise. - * common/config/v850/v850-common.c: Likewise. - * common/config/visium/visium-common.c: Likewise. - * common/config/xstormy16/xstormy16-common.c: Likewise. - * common/config/xtensa/xtensa-common.c: Likewise. - * invoke.texi (-fomit-frame-pointer): Update documentation. - -2017-11-16 Jan Hubicka - - * tree-cfg.c (gimple_find_sub_bbs): Do not compute freq. - -2017-11-14 Jan Hubicka - - * cfg.c (scale_bbs_frequencies_int, - cale_bbs_frequencies_gcov_type): Remove. - * cfg.h (scale_bbs_frequencies_int, - cale_bbs_frequencies_gcov_type): Remove. - -2017-11-14 Jan Hubicka - - * tree-ssa-loop-manip.c - (scale_dominated_blocks_in_loop): Update to profile counts. - (tree_transform_and_unroll_loop): Likewise. - -2017-11-14 Jan Hubicka - - * tree-vect-loop-manip.c (vect_do_peeling): Do not use - scale_bbs_frequencies_int. - -2017-11-14 Jan Hubicka - - * final.c (compute_alignments): Use counts rather than frequencies. - -2017-11-14 Jan Hubicka - - * cfgloopanal.c: Include sreal.h - (average_num_loop_insns): Use counts and sreal for accounting. - -2017-11-14 Jan Hubicka - - * cfgloopmanip.c (duplicate_loop_to_header_edge): Cleanup profile - manipulation. - -2017-11-16 Chung-Ju Wu - Kito Cheng - - * config/nds32/constraints.md: Provide more constraints. - * config/nds32/nds32.h (enum reg_class, REG_CLASS_NAMES, - REG_CLASS_CONTENTS): Define R5_REG, R8_REG, and FRAME_POINTER_REG to - support constraints usage. - -2017-11-16 Chung-Ju Wu - - * config/nds32/constants.md (UNSPEC_VOLATILE_FUNC_RETURN): Remove. - -2017-11-16 Chung-Ju Wu - Kito Cheng - - * config/nds32/nds32.opt: Add mext-perf, mext-perf2, mext-string. - * config/nds32/nds32.opt: Refine the layout. - * config/nds32/nds32.c (TARGET_EXT_PERF, TARGET_EXT_PERF2, - TARGET_EXT_STRING): Support new options. - * config/nds32/nds32.h: Likewise. - * config/nds32/nds32.md: Likewise. - * config/nds32/nds32-predicates.c: Likewise. - * config/nds32/constraints.md: Likewise. - * common/config/nds32/nds32-common.c: Likewise. - -2017-11-16 Julia Koval - - PR target/82983 - * config/i386/gfniintrin.h: Add sse check. - * config/i386/i386.c (ix86_expand_builtin): Fix gfni check. - -2017-11-16 Julia Koval - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET, - OPTION_MASK_ISA_AVX512VBMI2_UNSET): New. - (ix86_handle_option): Handle -mavx512vbmi2. - * config/i386/cpuid.h: Add bit_AVX512VBMI2. - * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit. - * config/i386/i386-c.c (__AVX512VBMI2__): New. - * config/i386/i386.c (ix86_target_string): Handle -mavx512vbmi2. - (ix86_valid_target_attribute_inner_p): Ditto. - * config/i386/i386.h (TARGET_AVX512VBMI2, TARGET_AVX512VBMI2_P): New. - * config/i386/i386.opt (mavx512vbmi2): New option. - * doc/invoke.texi: Add new option. - -2017-11-16 Julia Koval - - * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8, _mm256_gf2p8mul_epi8, - _mm_mask_gf2p8mul_epi8, _mm_maskz_gf2p8mul_epi8, - _mm256_mask_gf2p8mul_epi8, _mm256_maskz_gf2p8mul_epi8, - _mm512_mask_gf2p8mul_epi8, _mm512_maskz_gf2p8mul_epi8, - _mm512_gf2p8mul_epi8): New intrinsics. - * config/i386/i386-builtin-types.def - (V64QI_FTYPE_V64QI_V64QI): New type. - * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8mulb_v64qi, - __builtin_ia32_vgf2p8mulb_v64qi_mask, __builtin_ia32_vgf2p8mulb_v32qi, - __builtin_ia32_vgf2p8mulb_v32qi_mask, __builtin_ia32_vgf2p8mulb_v16qi, - __builtin_ia32_vgf2p8mulb_v16qi_mask): New builtins. - * config/i386/sse.md (vgf2p8mulb_*): New pattern. - * config/i386/i386.c (ix86_expand_args_builtin): Handle new type. - -2017-11-15 Uros Bizjak - - * config/i386/i386.c (x86_print_call_or_nop): Emit 5 byte nop - explicitly as a stream of bytes. - -2017-11-15 Bill Schmidt - - * config/rs6000/altivec.h (vec_xst_be): New #define. - * config/rs6000/altivec.md (altivec_vperm__direct): Rename - and externalize from *altivec_vperm__internal. - * config/rs6000/rs6000-builtin.def (XL_BE_V16QI): Remove macro - instantiation. - (XL_BE_V8HI): Likewise. - (XL_BE_V4SI): Likewise. - (XL_BE_V4SI): Likewise. - (XL_BE_V2DI): Likewise. - (XL_BE_V4SF): Likewise. - (XL_BE_V2DF): Likewise. - (XST_BE): Add BU_VSX_OVERLOAD_X macro instantiation. - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Correct - all array entries with these keys: VSX_BUILTIN_VEC_XL, - VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_VEC_XST. Add entries for key - VSX_BUILTIN_VEC_XST_BE. - * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Remove. - (altivec_expand_builtin): Remove handling for VSX_BUILTIN_XL_BE_* - built-ins. - (altivec_init_builtins): Replace conditional calls to def_builtin - for __builtin_vsx_ld_elemrev_{v8hi,v16qi} and - __builtin_vsx_st_elemrev_{v8hi,v16qi} based on TARGET_P9_VECTOR - with unconditional calls. Remove calls to def_builtin for - __builtin_vsx_le_be_. Add a call to def_builtin for - __builtin_vec_xst_be. - * config/rs6000/vsx.md (vsx_ld_elemrev_v8hi): Convert define_insn - to define_expand, and add alternate RTL generation for P8. - (*vsx_ld_elemrev_v8hi_internal): New define_insn based on - vsx_ld_elemrev_v8hi. - (vsx_ld_elemrev_v16qi): Convert define_insn to define_expand, and - add alternate RTL generation for P8. - (*vsx_ld_elemrev_v16qi_internal): New define_insn based on - vsx_ld_elemrev_v16qi. - (vsx_st_elemrev_v8hi): Convert define_insn - to define_expand, and add alternate RTL generation for P8. - (*vsx_st_elemrev_v8hi_internal): New define_insn based on - vsx_st_elemrev_v8hi. - (vsx_st_elemrev_v16qi): Convert define_insn to define_expand, and - add alternate RTL generation for P8. - (*vsx_st_elemrev_v16qi_internal): New define_insn based on - vsx_st_elemrev_v16qi. - -2017-11-15 H.J. Lu - - PR target/82990 - * config/i386/i386.c (pass_insert_vzeroupper::gate): Remove - TARGET_AVX512ER check. - (ix86_option_override_internal): Set MASK_VZEROUPPER if - neither -mzeroupper nor -mno-zeroupper is used and - TARGET_EMIT_VZEROUPPER is set. - * config/i386/i386.h (TARGET_EMIT_VZEROUPPER): New. - * config/i386/x86-tune.def: Add X86_TUNE_EMIT_VZEROUPPER. - -2017-11-15 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for - folding of vector compares. - (fold_build_vec_cmp): New helper function. - (fold_compare_helper): New helper function. - (builtin_function_type): Add compare builtins to the list of functions - having unsigned arguments. Cosmetic updates to comment indentation. - * config/rs6000/vsx.md (vcmpneb, vcmpneh, vcmpnew): Update to specify - the not+eq combination. - -2017-11-15 Bin Cheng - - PR tree-optimization/82726 - PR tree-optimization/70754 - * tree-predcom.c (order_drefs_by_pos): New function. - (combine_chains): Move code setting has_max_use_after to... - (try_combine_chains): ...here. New parameter. Sort combined chains - according to position information. - (tree_predictive_commoning_loop): Update call to above function. - (update_pos_for_combined_chains, pcom_stmt_dominates_stmt_p): New. - -2017-11-15 Bin Cheng - - PR tree-optimization/82726 - Revert - 2017-01-23 Bin Cheng - - PR tree-optimization/70754 - * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE. - (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE. Insert - combined stmt before it if not NULL. - (combine_chains): Process refs reversely and compute dominance point - for root ref. - - Revert - 2017-02-23 Bin Cheng - - PR tree-optimization/79663 - * tree-predcom.c (combine_chains): Process refs in reverse order - only for ZERO length chains, and add explaining comment. - -2017-11-15 Tamar Christina - - * config/arm/arm-cpus.in (armv8_3, ARMv8_3a, armv8.3-a): New - * config/arm/arm-tables.opt (armv8.3-a): Regenerated. - * doc/invoke.texi (ARM Options): Add armv8.3-a. - -2017-11-15 Tamar Christina - - * config/arm/arm.h (TARGET_DOTPROD): Add arm_arch8_2. - -2017-11-15 Martin Liska - - * tree-cfg.c (pass_warn_function_return::execute): - Compare warn_return_type for greater than zero. - -2017-11-15 Sebastian Peryt - - PR target/82941 - PR target/82942 - * config/i386/i386.c (pass_insert_vzeroupper): Modify gate condition - to return true on Xeon and not on Xeon Phi. - (ix86_check_avx256_register): Changed to ... - (ix86_check_avx_upper_register): ... this. Add extra check for - VALID_AVX512F_REG_OR_XI_MODE. - (ix86_avx_u128_mode_needed): Changed - ix86_check_avx256_register to ix86_check_avx_upper_register. - (ix86_check_avx256_stores): Changed to ... - (ix86_check_avx_upper_stores): ... this. Changed - ix86_check_avx256_register to ix86_check_avx_upper_register. - (ix86_avx_u128_mode_after): Changed - avx_reg256_found to avx_upper_reg_found. Changed - ix86_check_avx256_stores to ix86_check_avx_upper_stores. - (ix86_avx_u128_mode_entry): Changed - ix86_check_avx256_register to ix86_check_avx_upper_register. - (ix86_avx_u128_mode_exit): Ditto. - * config/i386/i386.h: (host_detect_local_cpu): New define. - -2017-11-15 Dominik Infuehr - - * config/arm/xgene1.md (xgene1): Split into automatons - xgene1_main, xgene1_decoder, xgene1_div, xgene1_simd. - (xgene1_f_load): Adjust reservations and/or types. - (xgene1_f_store): Likewise. - (xgene1_load_pair): Likewise. - (xgene1_store_pair): Likewise. - (xgene1_fp_load1): Likewise. - (xgene1_load1): Likewise. - (xgene1_store1): Likewise. - (xgene1_move): Likewise. - (xgene1_alu): Likewise. - (xgene1_simd): Likewise. - (xgene1_bfm): Likewise. - (xgene1_neon_load1): Likewise. - (xgene1_neon_store1): Likewise. - (xgene1_neon_logic): Likewise. - (xgene1_neon_st1): Likewise. - (xgene1_neon_ld1r): Likewise. - (xgene1_alu_cond): Added. - (xgene1_shift_reg): Likwise. - (xgene1_bfx): Likewise. - (xgene1_mul): Split into xgene1_mul32, xgene1_mul64. - -2017-11-15 Jakub Jelinek - - PR target/82981 - * internal-fn.c: Include gimple-ssa.h, tree-phinodes.h and - ssa-iterators.h. - (can_widen_mult_without_libcall): New function. - (expand_mul_overflow): If only checking unsigned mul overflow, - not result, and can do efficiently MULT_HIGHPART_EXPR, emit that. - Don't use WIDEN_MULT_EXPR if it would involve a libcall, unless - no other way works. Add MULT_HIGHPART_EXPR + MULT_EXPR support. - (expand_DIVMOD): Formatting fix. - * expmed.h (expand_mult): Add NO_LIBCALL argument. - * expmed.c (expand_mult): Likewise. Use OPTAB_WIDEN rather - than OPTAB_LIB_WIDEN if NO_LIBCALL is true, and allow it to fail. - - PR tree-optimization/82977 - * tree-ssa-strlen.c (strlen_optimize_stmt): Pass a reference to a copy - constructed temporary to strlen_to_stridx.put. - -2017-11-15 Martin Liska - - * configure.ac: Remove -fkeep-inline-functions from coverage_flags. - * configure: Regenerate. - -2017-11-15 Martin Liska - - PR target/82927 - * config/sh/sh-mem.cc: Use proper probability for - REG_BR_PROB_NOTE. - -2017-11-14 Jeff Law - - * explow.c (anti_adjust_stack_and_probe_stack_clash): Avoid probing - the red zone for stack_clash_protection_final_dynamic_probe targets - when the total dynamic stack size is zero bytes. - - * tree-ssa-threadupdate.c (thread_through_all_blocks): Thread - blocks is post order. - -2017-11-15 Alexandre Oliva - - * dumpfile.h (TDF_COMPARE_DEBUG): New. - * final.c (rest_of_clean_state): Set it for the - -fcompare-debug dump. - * tree-pretty-print.c (dump_generic_node): Omit OBJ_TYPE_REF - class when TDF_COMPARE_DEBUG is set. - - * dwarf2out.c (gen_producer_string): Discard - OPT_fcompare_debug. - -2017-11-15 Joseph Myers - - PR c/81156 - * doc/extend.texi (Other Builtins): Document __builtin_tgmath. - * ginclude/tgmath.h (__tg_cplx, __tg_ldbl, __tg_dbl, __tg_choose) - (__tg_choose_2, __tg_choose_3, __TGMATH_REAL_1_2) - (__TGMATH_REAL_2_3): Remove macros. - (__TGMATH_CPLX, __TGMATH_CPLX_2, __TGMATH_REAL, __TGMATH_REAL_2) - (__TGMATH_REAL_3, __TGMATH_CPLX_ONLY): Define using - __builtin_tgmath. - (frexp, ldexp, nexttoward, scalbn, scalbln): Define using - __TGMATH_REAL_2. - (remquo): Define using __TGMATH_REAL_3. - -2017-11-14 Jeff Law - - * vr-values.c: New file with contents extracted from tree-vrp.c. - * Makefile.in (OBJS): Add vr-values.o - * tree-vrp.h (set_value_range_to_nonnull): Prototype. - (set_value_range, set_and_canonicalize_value_range): Likewise. - (vrp_bitmap_equal_p, range_is_nonnull): Likewise. - (value_range_constant_singleton, symbolic_range_p): Likewise. - (compare_values, compare_values_warnv, vrp_val_is_min): Likewise. - (vrp_val_is_max, copy_value_range, set_value_range_to_value): Likewise. - (extract_range_from_binary_expr_1, vrp_val_min, vrp_val_max): Likewise. - (set_value_range_to_null, range_int_cst_p, opreand_less_p): Likewise. - (find_case_label_range, find_case_label_index): Likewise. - (zero_nonzero_bits_from_vr, overflow_comparison_p): Likewise. - (range_int_cst_singleton_p, value_inside_range): Likewise. - (get_single_symbol): Likewise. - (switch_update): Move structure definition here. - (to_remove_edges, to_update_switch_stmts): Provide externs. - * tree-vrp.c: Move all methods for vr-values class to vr-values.c - (vrp_val_max, vrp_val_min, vrp_val_is_max): Make externally visible. - (vrp_val_is_min, set_value_range): Likewise. - (set_and_canonicalize_value_range, copy_value_range): Likewise. - (set_value_range_to_value, set_value_range_to_nonnull): Likewise. - (set_value_range_to_null, vrp_bitmap_equal_p): Likewise. - (range_is_nonnull, range_int_cst_p): Likewwise. - (range_int_cst_singleton_p, symbolic_range_p): Likewise. - (get_single_symbol, operand_less_p): Likewise - (compare_values_warnv, compare_values): Likewise. - (value_inside_range, value_range_constant_singleton): Likewise. - (zero_nonzero_bitgs_from_vr): Likewise. - (extract_range_from_binary_expr_1): Likewise. - (overflow_comparison_p): Likewise. - (to_remove_edges, to_update_switch_stmts): Likewise. - (find_case_label-index, find_case_label_range): Likewise. - (switch_update, set_value_range_to_nonnegative): Remove. - (set_value_range_to_truthvalue): Likewise. - (symbolic_range_based_on_p, gimple_assign_nonzero_p): Likewise. - (gimple_stmt_nonzero_p, compare_ranges): Likewise. - (compare_range_with_value, vrp_valueize, vrp_valueize_1): Likewise. - (find_case_label_ranges, test_for_singularity): Likewise. - (range_fits_type_p, simplify_conversion_using_ranges): LIkewise. - (x_vr_values): Move to its remaining use site. - -2017-11-10 Jeff Law - - * vr-values.h (VR_INITIALIZER): Move #define here. - * gimple-ssa-evrp.c: New file with contents extracted from tree-vrp.c - * Makefile.in (OBJS): Add tree-evrp.o - * tree-vrp.h (assert_info): Move structure definition here. - (set_value_range_to_varying): Prototype. - (vrp_operand_equal_p, range_includes_zero_p): Likewise. - (infer_value_range, register_edge_assert_for): Likewise. - (stmt_interesting_for_vrp): Likewise. - * tree-vrp.c: Move all methods for evrp class into gimple-ssa-evrp.c. - (set_value_range_to_varying): No longer static. - (vrp_operand_equal_p, range_includes_zero_p): Likewise. - (infer_value_range, register_edge_assert_for): Likewise. - -2017-11-14 Michael Meissner - - * config/rs6000/rs6000.md (bswapdi2): On 32-bit ISA 3.0, don't - generate the XXBRD instruction. - - * config/rs6000/rs6000-c.c (is_float128_p): New helper function. - (rs6000_builtin_type_compatible): Treat _Float128 and long double - as being compatible if -mabi=ieeelongdouble. - * config/rs6000/rs6000-builtin.def (BU_FLOAT128_HW_1): New macros - to setup float128 built-ins with hardware support. - (BU_FLOAT128_HW_2): Likewise. - (BU_FLOAT128_HW_3): Likewise. - (BU_FLOAT128_HW_VSX_1): Likewise. - (BU_FLOAT128_HW_VSX_2): Likewise. - (scalar_extract_expq): Change float128 built-in functions to - accommodate having both KFmode and TFmode functions. Use the - KFmode variant as the default. - (scalar_extract_sigq): Likewise. - (scalar_test_neg_qp): Likewise. - (scalar_insert_exp_q): Likewise. - (scalar_insert_exp_qp): Likewise. - (scalar_test_data_class_qp): Likewise. - (sqrtf128_round_to_odd): Delete processing the round to odd - built-in functions as special built-in functions, and define them - as float128 built-ins. Use the KFmode variant as the default. - (truncf128_round_to_odd): Likewise. - (addf128_round_to_odd): Likewise. - (subf128_round_to_odd): Likewise. - (mulf128_round_to_odd): Likewise. - (divf128_round_to_odd): Likewise. - (fmaf128_round_to_odd): Likewise. - * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add - support for KFmode and TFmode xststdcqp calls. - (rs6000_expand_builtin): If long double is IEEE 128-bit floating - point, switch the built-in handlers for the get/set float128 - exponent, get float128 mantissa, float128 test built-ins, and the - float128 round to odd built-in functions. Eliminate creating the - float128 round to odd built-in functions as special built-ins. - (rs6000_init_builtins): Eliminate special creation of the float128 - round to odd built-in functions. - * config/rs6000/vsx.md (xsxexpqp_): Change float128 built-in - function insns to support both TFmode and KFmode variants. - (xsxsigqp_): Likewise. - (xsiexpqpf_): Likewise. - (xsiexpqp_): Likewise. - (xststdcqp_): Likewise. - (xststdcnegqp_): Likewise. - (xststdcqp_): Likewise. - -2017-11-14 Jan Hubicka - - * tree-ssa-threadupdate.c (compute_path_counts): Remove - unused path_in_freq_ptr parameter. - (ssa_fix_duplicate_block_edges): Do not pass around path_in_freq - -2017-11-14 Jan Hubicka - - * ipa-inline.c (edge_badness): Dump sreal frequency. - (compute_inlined_call_time): Match natural implementaiton ... - * ipa-fnsummary.c (estimate_edge_size_and_time): ... here; remove - forgotten division by CGRAPH_FREQ_BASE. - -2017-11-14 Rainer Orth - - * config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit since - Solaris 11. Update comment. - * configure.ac (gcc_cv_ld_pid): Adapt comment for Solaris 12 - renaming. - * config/sol2.h (STARTFILE_SPEC): Likewise. - * configure: Regenerate. - -2017-11-14 Carl Love - - * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Remove - le_ and be_ prefixes to swap* variables. Remove - if (VECTOR_ELT_ORDER_BIG) statement. Remove E_V16QImode case - statements. - -2017-11-14 Jason Merrill - - Support GTY((cache)) on hash_map. - * hash-traits.h (ggc_remove): Add ggc_maybe_mx member function. - (ggc_cache_remove): Override it instead of ggc_mx. - * hash-table.h (gt_ggc_mx): Call it instead of ggc_mx. - (gt_cleare_cache): Call ggc_mx instead of gt_ggc_mx. - * hash-map-traits.h (simple_hashmap_traits): Add maybe_mx member. - (simple_cache_map_traits): Override maybe_mx. - * hash-map.h (hash_entry): Add ggc_maybe_mx and keep_cache_entry. - (hash_map): Friend gt_cleare_cache. - (gt_cleare_cache): New. - * tree.h (tree_cache_traits): New hash_map traits class. - (tree_cache_map): New typedef. - -2017-11-14 Richard Biener - - * tree-cfgcleanup.c (cleanup_control_expr_graph): Remove first_p - paramter and handling. - (cleanup_control_flow_bb): Likewise. - (cleanup_control_flow_pre): New helper performing a DFS walk - to call cleanup_control_flow_bb in PRE order. - (cleanup_tree_cfg_1): Do the first phase of cleanup_control_flow_bb - via cleanup_control_flow_pre. - -2017-11-14 James Greenhalgh - - * config/aarch64/aarch64-simd.md - (aarch64_simd_bsl_internal): Remove DImode. - (*aarch64_simd_bsl_alt): Likewise. - (aarch64_simd_bsldi_internal): New. - (aarch64_simd_bsldi_alt): Likewise. - -2017-11-13 Jan Hubicka - - * tracer.c (better_p): Do not compare frequencies. - * reg-stack.c (better_edge): Likewise. - * shrink-wrap.c (try_shrink_wrapping): Do not convert to gcov counts - and back. - -2017-11-13 Jan Hubicka - - * auto-profile.c (afdo_annotate_cfg): Use update_max_bb_count. - * cgraphunit.c (cgraph_node::expand_thunk): Use update_max_bb_count. - * ipa-utils.c (ipa_merge_profiles): Use update_max_bb_count. - * lto-streamer-in.c (input_function): Use update_max_bb_count. - * omp-expand.c (expand_omp_taskreg): Use update_max_bb_count. - * predict.c (maybe_hot_frequency_p): Inline to ... - (maybe_hot_count_p): ... here; rewrite to counts. - (counts_to_freqs): Rename to ... - (update_max_bb_count): ... this one. - (expensive_function_p): Use counts. - (estimate_bb_frequencies): Update. - (rebuild_frequencies): Update. - * predict.h (counts_to_freqs): Rename to ... - (update_max_bb_count): ... this one. - * profile.c (compute_branch_probabilities): Add debug info - * tree-inline.c (expand_call_inline): Update debug info. - (optimize_inline_calls): Use update_max_bb_count.. - (tree_function_versioning): Use update_max_bb_count.. - * value-prof.c (gimple_value_profile_transformations): - Do not use update_max_bb_count. - -2017-11-13 Jan Hubicka - - * ipa-inline.c (compute_uninlined_call_time, compute_inlined_call_time): - always use frequencies. - -2017-11-13 Jan Hubicka - - * bb-reorder.c: Remove frequencies from comments. - (better_edge_p): Use profile counts. - (find_traces): Dump profile counts. - (rotate_loop): Use profile counts. - (find_traces_1_round): Likewise. - (connect_better_edge_p): Use counts instead of probabilities for - reverse walk. - (copy_bb_p): Drop early check for non-0 frequency. - (sanitize_hot_paths): Update comments. - -2017-11-13 Jan Hubicka - - * ipa-split.c (struct split_point): Add count. - (consider_split): Do not compute incoming frequency; compute incoming - count and store it to split_point. - (split_function): Set count of the call to split part correctly. - -2017-11-13 Carl Love - - * config/rs6000/altivec.md (altivec_vsumsws_be): Add define_expand. - -2017-11-13 Tom Tromey - - * doc/cpp.texi (Variadic Macros): Document __VA_OPT__. - -2017-11-13 Carl Love - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): - Add support for builtins: - unsigned int vec_first_{,miss}_match_{,or_eos}index, - vector {un,}signed {char,int,short}, - vector {un,}signed {char,int,short}) arguments. - * config/rs6000/rs6000-builtin.def (VFIRSTMATCHINDEX, - VFIRSTMATCHOREOSINDEX, VFIRSTMISMATCHINDEX, VFIRSTMISMATCHOREOSINDEX): - Add BU_P9V_AV_2 expansions for the builtins. - * config/rs6000/altivec.h (vec_first_match_index, - vec_first_mismatch_index, vec_first_match_or_eos_index, - vec_first_mismatch_or_eos_index): Add #defines for the builtins. - * config/rs6000/rs6000-protos.h (bytes_in_mode): Add - new extern declaration. - * config/rs6000/rs6000.c (bytes_in_mode): Add new function. - * config/rs6000/vsx.md (first_match_index_, - first_match_or_eos_index_, first_mismatch_index_, - first_mismatch_or_eos_index_): Add define expand. - (vctzlsbb_): Add mode field to define_insn for vctzlsbb. - * doc/extend.texi: Update the built-in documenation file for the new - built-in functions. - -2017-11-13 Michael Meissner - - * match.pd: Convert fminf, fminfx, fmax, and fmaxx - into the min/max operations for _Float and _FloatX types. - -2017-11-13 Eric Botcazou - - PR lto/81351 - * dwarf2out.c (do_eh_frame): New static variable. - (dwarf2out_begin_prologue): Set it. - (dwarf2out_frame_finish): Test it instead of dwarf2out_do_eh_frame. - -2017-11-13 Jan Hubicka - - * tree-ssa-coalesce.c (coalesce_cost): Fix formating. - - * tree-ssa-sink.c (select_best_block): Do not use frequencies. - -2017-11-13 Eric Botcazou - - PR lto/81351 - * debug.h (dwarf2out_do_eh_frame): Declare. - * dwarf2cfi.c (dwarf2out_do_eh_frame): New predicate. - (dwarf2out_do_frame): Use it. - (dwarf2out_do_cfi_asm): Likewise. - * dwarf2out.c (dwarf2out_frame_finish): Likewise. - (dwarf2out_assembly_start): Likewise. - (dwarf2out_begin_prologue): Fix comment. - * toplev.c (compile_file): Always call dwarf2out_frame_finish - if the target needs either debug or unwind DWARF2 info. - * lto-opts.c (lto_write_options): Do not save -fexceptions, - -fnon-call-exceptions, -ffp-contract, -fmath-errno, -fsigned-zeros, - -ftrapping-math, -ftrapv and -fwrapv. - -2017-11-13 Jan Hubicka - - * cgraph.c (cgraph_edge::sreal_frequency): New function. - * cgraph.h (cgraph_edge::sreal_frequency): Declare. - * ipa-fnsummary.c (dump_ipa_call_summary): Use sreal_frequency. - (estimate_edge_size_and_time): Likewise. - (ipa_merge_fn_summary_after_inlining): Likewise. - * ipa-inline.c (cgraph_freq_base_rec): Remove. - (compute_uninlined_call_time): Use sreal_frequency. - (compute_inlined_call_time): Likewise. - (ipa_inline): Do not initialize cgraph_freq_base_rec. - * profile-count.c: Include sreal.h. - (profile_count::to_sreal_scale): New. - * profile-count.h: Forward declare sreal. - (profile_count::to_sreal_scale): Declare. - -2017-11-13 Nathan Sidwell - - * diagnostic.c (maybe_line_and_column): New. - (diagnostic_get_location_text): Use it. - (diagnostic_report_current_module): Likewise. - (test_diagnostic_get_location_text): Add tests. - -2017-11-13 Luis Machado - - * doc/md.texi (Specifying processor pipeline description): Fix - incorrect latency for the div instruction example. - -2017-11-13 Jakub Jelinek - - PR tree-optimization/78821 - * gimple-ssa-store-merging.c (compatible_load_p): Don't require - that bit_not_p is the same. - (imm_store_chain_info::coalesce_immediate_stores): Likewise. - (split_group): Count precisely bit_not_p bits in each statement. - (invert_op): New function. - (imm_store_chain_info::output_merged_store): Use invert_op to - emit BIT_XOR_EXPR with a xor_mask instead of BIT_NOT_EXPR if some - but not all orig_stores have BIT_NOT_EXPR in the corresponding spots. - -2017-11-13 Martin Liska - - * gcov.c (struct coverage_info): Remove typedef of coverage_t. - (struct source_info): Likewise. - (add_branch_counts): Likewise. - (add_line_counts): Likewise. - (function_summary): Likewise. - (output_intermediate_line): Likewise. - (generate_results): Likewise. - -2017-11-13 Martin Liska - - * gcov.c (struct block_info): Remove typedef for block_t. - (struct line_info): Likewise. - (line_info::has_block): Likewise. - (EXIT_BLOCK): Likewise. - (unblock): Likewise. - (circuit): Likewise. - (get_cycles_count): Likewise. - (process_file): Likewise. - (read_graph_file): Likewise. - (solve_flow_graph): Likewise. - (find_exception_blocks): Likewise. - (add_line_counts): Likewise. - (accumulate_line_info): Likewise. - (output_line_details): Likewise. - -2017-11-13 Martin Liska - - * gcov.c (struct arc_info): Remove typedef for arc_t. - (struct line_info): Likewise. - (add_branch_counts): Likewise. - (output_branch_count): Likewise. - (function_info::~function_info): Likewise. - (circuit): Likewise. - (output_intermediate_line): Likewise. - (read_graph_file): Likewise. - (solve_flow_graph): Likewise. - (find_exception_blocks): Likewise. - (add_line_counts): Likewise. - (accumulate_line_info): Likewise. - (output_line_details): Likewise. - (output_function_details): Likewise. - -2017-11-13 Martin Liska - - * gcov.c (struct function_info): Remove typedef for function_t. - (struct source_info): Likewise. - (source_info::get_functions_at_location): Likewise. - (solve_flow_graph): Likewise. - (find_exception_blocks): Likewise. - (add_line_counts): Likewise. - (output_intermediate_file): Likewise. - (process_file): Likewise. - (generate_results): Likewise. - (release_structures): Likewise. - (read_graph_file): Likewise. - (read_count_file): Likewise. - (accumulate_line_counts): Likewise. - (output_lines): Likewise. - -2017-11-13 Martin Liska - - * gcov.c (function_info::function_info): Remove num_counts - and add vector. - (function_info::~function_info): Use the vector. - (process_file): Likewise. - (read_graph_file): Likewise. - (read_count_file): Likewise. - (solve_flow_graph): Likewise. - -2017-11-13 Martin Liska - - * gcov.c (function_info::is_artificial): New function. - (process_file): Erase all artificial early. - (generate_results): Skip as all artificial are already - removed. - -2017-11-13 Martin Liska - - * gcov.c (read_graph_file): Store to global vector of functions. - (read_count_file): Iterate the vector. - (process_file): Likewise. - (generate_results): Likewise. - (release_structures): Likewise. - -2017-11-13 Jakub Jelinek - - PR tree-optimization/82954 - * gimple-ssa-store-merging.c - (imm_store_chain_info::coalesce_immediate_stores): If - !infof->ops[N].base_addr, split group if info->ops[N].base_addr. - -2017-11-13 Richard Sandiford - - * config/aarch64/aarch64-simd.md (aarch64_store_lane0): - Upddate call to ENDIAN_LANE_N. - (aarch64_dot_lane): Use aarch64_endian_lane_rtx. - (aarch64_dot_laneq): Likewise. - (*aarch64_simd_vec_copy_lane): Update calls to ENDIAN_LANE_N - and use aarch64_endian_lane_rtx. - (*aarch64_simd_vec_copy_lane_): Likewise. - -2017-11-12 Tom de Vries - - * config/riscv/riscv.h (ASM_OUTPUT_LABELREF): Wrap in do {} while (0). - -2017-11-12 Tom de Vries - - * config/elfos.h (ASM_OUTPUT_ASCII): Remove semicolon after macro body. - -2017-11-12 Tom de Vries - - * config/cr16/cr16.h (ASM_OUTPUT_LABELREF): Remove semicolon after macro - body. - * config/powerpcspe/xcoff.h (ASM_OUTPUT_LABELREF): Same. - * config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Same. - * defaults.h (ASM_OUTPUT_LABELREF): Same. - -2017-11-11 Martin Sebor - - PR c/81117 - * doc/extend.texi (attribute nonstring): Remove spurious argument. - - PR bootstrap/82948 - * prefic.c (translate_name): Replace strncpy with memcpy to - avoid -Wstringop-truncation. - -2017-11-10 Jan Hubicka - - * tree-ssa-loop-im.c (execute_sm_if_changed): Do not compute freq_sum. - -2017-11-10 Jan Hubicka - - * predict.c (maybe_hot_frequency_p): Do not use cfun. - -2017-11-10 Jan Hubicka - - * tree-ssa-tail-merge.c (replace_block_by): Fix and re-enable profile - merging. - -2017-11-10 Michael Meissner - - * config/rs6000/rs6000.md (bswaphi2_reg): On ISA 3.0 systems, - enable generating XXBRH if the value is in a vector register. - (bswapsi2_reg): On ISA 3.0 systems, enable generating XXBRW if the - value is in a vector register. - (bswapdi2_reg): On ISA 3.0 systems, always use XXBRD to do - register to register bswap64's instead of doing the GPR sequence - used on previous machines. - (bswapdi2_xxbrd): New insn. - (bswapdi2_reg): Disallow on ISA 3.0. - (register to register bswap64 splitter): Do not split the insn on - ISA 3.0 systems that use XXBRD. - -2017-11-10 Martin Sebor - - PR c/81117 - * config/darwin-c.c (framework_construct_pathname): Replace strncpy - with memcpy. - (find_subframework_file): Same. - -2017-11-10 Jan Hubicka - - * auto-profile.c (afdo_indirect_call): Drop frequency. - * cgraph.c (symbol_table::create_edge): Drop frequency argument. - (cgraph_node::create_edge): Drop frequency argument. - (cgraph_node::create_indirect_edge): Drop frequency argument. - (cgraph_edge::make_speculative): Drop frequency arguments. - (cgraph_edge::resolve_speculation): Do not update frequencies - (cgraph_edge::dump_edge_flags): Do not dump frequency. - (cgraph_node::dump): Check consistency in IPA mode. - (cgraph_edge::maybe_hot_p): Use IPA counter. - (cgraph_edge::verify_count_and_frequency): Rename to ... - (cgraph_edge::verify_count): ... this one; drop frequency checking. - (cgraph_node::verify_node): Update. - * cgraph.h (struct cgraph_edge): Drop frequency. - (cgraph_edge::frequency): New function. - * cgraphbuild.c (pass_build_cgraph_edges::execute): Donot pass - frequencies. - (cgraph_edge::rebuild_edges): Likewise. - * cgraphclones.c (cgraph_edge::clone): Scale only counts. - (duplicate_thunk_for_node): Do not pass frequency. - (cgraph_node::create_clone): Scale only counts. - (cgraph_node::create_virtual_clone): Do not pass frequency. - (cgraph_node::create_edge_including_clones): Do not pass frequency. - (cgraph_node::create_version_clone): Do not pass frequency. - * cgraphunit.c (cgraph_node::analyze): Do not pass frequency. - (cgraph_node::expand_thunk): Do not pass frequency. - (cgraph_node::create_wrapper): Do not pass frequency. - * gimple-iterator.c (update_call_edge_frequencies): Do not pass - frequency. - * gimple-streamer-in.c (input_bb): Scale only IPA counts. - * ipa-chkp.c (chkp_produce_thunks): Do not pass frequency. - * ipa-cp.c (ipcp_lattice::print): Use frequency function. - (gather_caller_stats): Use frequency function. - (ipcp_cloning_candidate_p): Use frequency function. - (ipcp_propagate_stage): Use frequency function. - (get_info_about_necessary_edges): Use frequency function. - (update_profiling_info): Update only IPA profile. - (update_specialized_profile): Use frequency functoin. - (perhaps_add_new_callers): Update only IPA profile. - * ipa-devirt.c (ipa_devirt): Use IPA profile. - * ipa-fnsummary.c (redirect_to_unreachable): Do not set frequrency. - (dump_ipa_call_summary): Use frequency function. - (estimate_edge_size_and_time): Use frequency function. - (ipa_merge_fn_summary_after_inlining): Use frequency function. - * ipa-inline-analysis.c (do_estimate_edge_time): Use IPA profile. - * ipa-inline-transform.c (update_noncloned_frequencies): Rename to .. - (update_noncloned_counts): ... ths one; scale counts only. - (clone_inlined_nodes): Do not scale frequency. - (inline_call): Do not pass frequency. - * ipa-inline.c (compute_uninlined_call_time): Use IPA profile. - (compute_inlined_call_time): Use IPA profile. - (want_inline_small_function_p): Use IPA profile. - (want_inline_self_recursive_call_p): Use IPA profile. - (edge_badness): Use IPA profile. - (lookup_recursive_calls): Use IPA profile. - (recursive_inlining): Do not pass frequency. - (resolve_noninline_speculation): Do not update frequency. - (inline_small_functions): Collect max of IPA profile. - (dump_overall_stats): Dump IPA porfile. - (dump_inline_stats): Dump IPA porfile. - (ipa_inline): Collect IPA stats. - * ipa-inline.h (clone_inlined_nodes): Update prototype. - * ipa-profile.c (ipa_propagate_frequency_1): Use frequency function. - (ipa_propagate_frequency): Use frequency function. - (ipa_profile): Cleanup. - * ipa-prop.c (ipa_make_edge_direct_to_target): Do not pass frequency - * ipa-utils.c (ipa_merge_profiles): Merge all profiles. - * lto-cgraph.c (lto_output_edge): Do not stream frequency. - (input_node): Do not stream frequency. - (input_edge): Do not stream frequency. - (merge_profile_summaries): Scale only IPA profiles. - * omp-simd-clone.c (simd_clone_adjust): Do not pass frequency. - * predict.c (drop_profile): Do not recompute frequency. - * trans-mem.c (ipa_tm_insert_irr_call): Do not pass frequency. - (ipa_tm_insert_gettmclone_call): Do not pass frequency. - * tree-cfg.c (execute_fixup_cfg): Drop profile to global0 if needed. - * tree-chkp.c (chkp_copy_bounds_for_assign): Do not pass frequency. - * tree-emutls.c (gen_emutls_addr): Do not pass frequency. - * tree-inline.c (copy_bb): Do not scale frequency. - (expand_call_inline): Do not scale frequency. - (tree_function_versioning): Do not scale frequency. - * ubsan.c (ubsan_create_edge): Do not pass frequency. - -2017-11-10 Julia Koval - - * config/i386/gfniintrin.h (_mm_gf2p8affine_epi64_epi8) - (_mm256_gf2p8affine_epi64_epi8, _mm_mask_gf2p8affine_epi64_epi8) - (_mm_maskz_gf2p8affine_epi64_epi8, _mm256_mask_gf2p8affine_epi64_epi8) - (_mm256_maskz_gf2p8affine_epi64_epi8) - (_mm512_mask_gf2p8affine_epi64_epi8, _mm512_gf2p8affine_epi64_epi8) - (_mm512_maskz_gf2p8affine_epi64_epi8): New intrinsics. - * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineqb_v64qi) - (__builtin_ia32_vgf2p8affineqb_v32qi) - (__builtin_ia32_vgf2p8affineqb_v16qi): New builtins. - * config/i386/sse.md (vgf2p8affineqb_): New pattern. - -2017-11-10 Tamar Christina - - PR target/82641 - * config/arm/arm.c - (arm_option_override): Refactor. - (arm_option_reconfigure_globals): New. - (arm_options_perform_arch_sanity_checks): New. - * config/arm/arm-protos.h (arm_option_reconfigure_globals): - New prototype. - (arm_options_perform_arch_sanity_checks): Likewise - -2017-11-10 Pat Haugen - - * rs6000/power9.md (power9-qpdiv): Correct DFU pipe usage. - (power9-qpmul): New. - * rs6000/rs6000.md ("type" attr): Add qmul. - (mul3, fma4_hw, *fms4_hw, *nfma4_hw, - *nfms4_hw, mul3_odd, fma4_odd, *fms4_odd, - *nfma4_odd, *nfms4_odd): Change type to qmul. - -2017-11-10 Martin Sebor - - PR c/81117 - * builtins.c (compute_objsize): Handle arrays that - compute_builtin_object_size likes to fail for. Make extern. - * builtins.h (compute_objsize): Declare. - (check_strncpy_sizes): New function. - (expand_builtin_strncpy): Call check_strncpy_sizes. - * gimple-fold.c (gimple_fold_builtin_strncpy): Implement - -Wstringop-truncation. - (gimple_fold_builtin_strncat): Same. - * gimple.c (gimple_build_call_from_tree): Set call location. - * tree-ssa-strlen.c (strlen_to_stridx): New global variable. - (maybe_diag_bound_equal_length, is_strlen_related_p): New functions. - (handle_builtin_stxncpy, handle_builtin_strncat): Same. - (handle_builtin_strlen): Use strlen_to_stridx. - (strlen_optimize_stmt): Handle flavors of strncat, strncpy, and - stpncpy. - Use strlen_to_stridx. - (pass_strlen::execute): Release strlen_to_stridx. - * doc/invoke.texi (-Wsizeof-pointer-memaccess): Document enhancement. - (-Wstringop-truncation): Document new option. - -2017-11-10 Martin Liska - - PR gcov-profile/82702 - * gcov.c (main): Handle intermediate files in a different - way. - (get_gcov_intermediate_filename): New function. - (output_gcov_file): Remove support of intermediate files. - (generate_results): Allocate intermediate file. - (release_structures): Clean-up properly fn_end. - (output_intermediate_file): Start iterating with line 1. - -2017-11-10 Jakub Jelinek - - PR tree-optimization/82929 - * gimple-ssa-store-merging.c (struct store_immediate_info): Add - ops_swapped_p non-static data member. - (store_immediate_info::store_immediate_info): Clear it. - (imm_store_chain_info::coalesce_immediate_stores): If swapping - ops set ops_swapped_p. - (count_multiple_uses): Handle ops_swapped_p. - -2017-11-10 Martin Liska - - * coverage.c (coverage_init): Stream information about - support of has_unexecuted_blocks. - * doc/gcov.texi: Document that. - * gcov-dump.c (dump_gcov_file): Support it in gcov_dump tool. - * gcov.c (read_graph_file): Likewise. - (output_line_beginning): Fix a small issue with - color output. - -2017-11-10 Bin Cheng - - * tree-predcom.c (determine_roots_comp): Avoid memory leak by freeing - reference of trivial component. - -2017-11-10 Jakub Jelinek - - PR bootstrap/82916 - * gimple-ssa-store-merging.c - (pass_store_merging::terminate_all_aliasing_chains): For - gimple_store_p stmts also call refs_output_dependent_p. - - PR rtl-optimization/82913 - * compare-elim.c (try_merge_compare): Punt if def_insn is not - single set. - -2017-11-09 Jeff Law - - * vr-values.h: New file with vr_values class. - * tree-vrp.c: Include vr-values.h - (vrp_value_range_pool, vrp_equiv_obstack, num_vr_values): Move static - data objects into the vr_values class. - (vr_value, values_propagated, vr_phi_edge_counts): Likewise. - (get_value_range): Make it a member function within vr_values class. - (set_defs_to_varying, update_value_range, add_equivalence): Likewise. - (vrp_stmt_computes_nonzero_p, op_with_boolean_value_range_p): Likewise. - (op_with_constant_singleton_value_range): Likewise. - (extract_range_for_var_from_comparison_expr): Likewise. - (extract_range_from_assert, extract_range_from_ssa_name): Likewise. - (extract_range_from_binary_expr): Likewise. - (extract_range_from_unary_expr): Likewise. - (extract_range_from_cond_expr, extrat_range_from_comparison): Likewise. - (check_for_binary_op_overflow, extract_range_basic): Likewise. - (extract_range_from_assignment, adjust_range_with_scev): Likewise. - (dump_all_value_ranges, get_vr_for_comparison): Likewise. - (compare_name_with_value, compare_names): Likewise. - (vrp_evaluate_conditional_warnv_with_ops_using_ranges): Likewise. - (vrp_evaluate_conditional_warnv_with_ops): Likewise. Remove prototype. - (vrp_evaluate_conditional, vrp_visit_cond_stmt): Likewise. - (vrp_visit_switch_stmt, extract_range_from_stmt): Likewise. - (extract_range_from_phi_node): Likewise. - (simplify_truth_ops_using_ranges): Likewise. - (simplify_div_or_mod_using_ranges): Likewise. - (simplify_min_or_max_using_ranges, simplify_abs_using_ranges): Likewise. - (simplify_bit_ops_using_ranges, simplify_cond_using_ranges_1): Likewise. - (simplify_cond_using_ranges_2, simplify_switch_using_ranges): Likewise. - (simplify_float_conversion_using_ranges): Likewise. - (simplify_internal_call_using_ranges): Likewise. - (two_valued_val_range_p, simplify_stmt_using_ranges): Likewise. - (vrp_visit_assignment_or_call): Likewise. Smuggle class instance - poitner via x_vr_values for calls into gimple folder. - (vrp_initialize_lattice): Make this the vr_values ctor. - (vrp_free_lattice): Make this the vr_values dtor. - (set_vr_value): New function. - (class vrp_prop): Add vr_values data member. Add various member - functions as well as member functions that delegate to vr_values. - (check_array_ref): Make a member function within vrp_prop class. - (search_for_addr_array, vrp_initialize): Likewise. - (vrp_finalize): Likewise. Revamp to avoid direct access to - vr_value, values_propagated, etc. - (check_array_bounds): Extract vrp_prop class instance pointer from - walk info structure. Use it to call member functions. - (check_all_array_refs): Make a member function within vrp_prop class. - Smuggle class instance pointer via walk info structure. - (x_vr_values): New local static. - (vrp_valueize): Use x_vr_values to get class instance. - (vr_valueize_1): Likewise. - (class vrp_folder): Add vr_values data member. Add various member - functions as well as member functions that delegate to vr_values. - (fold_predicate_in): Make a mber fucntion within vrp_folder class. - (simplify_stmt_for_jump_threading): Extract smuggled vr_values - class instance from vr_values. Use it to call member functions. - (vrp_dom_walker): Add vr_values data member. - (vrp_dom_walker::after_dom_children): Smuggle vr_values class - instance via x_vr_values. - (identify_jump_threads): Accept vr_values as argument. Store - it into the walker structure. - (evrp_dom_walker): Add vr_values class data member. Add various - delegators. - (evrp_dom_walker::try_find_new_range): Use vr_values data - member to access the memory allocator. - (evrp_dom_walker::before_dom_children): Store vr_values class - instance into the vrp_folder class. - (evrp_dom_walker::push_value_range): Rework to avoid direct - access to num_vr_values and vr_value. - (evrp_dom_walker::pop_value_range): Likewise. - (execute_early_vrp): Remove call to vrp_initialize_lattice. - Use vr_values to get to dump_all_value_ranges member function. - Remove call to vrp_free_lattice. Call vrp_initialize, vrp_finalize, - and simplify_cond_using_ranges_2 via vrp_prop class instance. - Pass vr_values class instance down to identify_jump_threads. - Remove call to vrp_free_lattice. - (debug_all_value_ranges): Remove. - - * tree-vrp.c (vrp_prop): Move class to earlier point in the file. - (vrp_folder): Likewise. - - * tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack. - Get it from the existing bitmap instead. - (vrp_intersect_ranges_1): Likewise. - -2017-11-09 Jakub Jelinek - - * gimple-ssa-store-merging.c (struct store_immediate_info): Add - bit_not_p field. - (store_immediate_info::store_immediate_info): Add bitnotp argument, - set bit_not_p to it. - (imm_store_chain_info::coalesce_immediate_stores): Break group - if bit_not_p is different. - (count_multiple_uses, split_group, - imm_store_chain_info::output_merged_store): Handle info->bit_not_p. - (handled_load): Avoid multiple chained BIT_NOT_EXPRs. - (pass_store_merging::process_store): Handle BIT_{AND,IOR,XOR}_EXPR - result inverted using BIT_NOT_EXPR, compute bit_not_p, pass it - to store_immediate_info ctor. - -2017-11-09 Jim Wilson - - * collect2.c (OBJECT_FORMAT_COFF): Remove EXTENDED_COFF support. - (scan_prog_file): Likewise. - -2017-11-09 Jan Hubicka - - * bb-reorder.c (max_entry_frequency): Remove. - (find_traces, rotate_loop, mark_bb_visited, connect_better_edge_p, - connect_traces, push_to_next_round_p): Remove prototypes. - (find_traces_1_round): Use counts only. - (push_to_next_round_p): Likewise. - (find_traces): Likewise. - (rotate_loop): Likewise. - (find_traces_1_round): Likewise. - (connect_traces): Likewise. - (edge_order): Likewise. - -2017-11-09 Thomas Preud'homme - - * config/arm/arm.c (output_return_instruction): Add comments to - indicate requirement for cmse_nonsecure_entry return to account - for the size of clearing instruction output here. - (thumb_exit): Likewise. - * config/arm/thumb2.md (thumb2_cmse_entry_return): Fix length for - return in hardfloat mode. - -2017-11-09 Segher Boessenkool - - * config/rs6000/rs6000.c (machine_function): Add a bool, - "toc_is_wrapped_separately". - (rs6000_option_override_internal): Enable OPTION_MASK_SAVE_TOC_INDIRECT - if it wasn't explicitly set or unset, we are optimizing for speed, and - doing separate shrink-wrapping. - (rs6000_get_separate_components): Enable the TOC component if - saving the TOC register in the prologue. - (rs6000_components_for_bb): Handle the TOC component. - (rs6000_emit_prologue_components): Store the TOC register where needed. - (rs6000_set_handled_components): Mark TOC as handled, if handled. - (rs6000_emit_prologue): Don't save the TOC if that is already done. - -2017-11-09 Martin Jambor - - * ipa-param-manipulation.c: New file. - * ipa-param-manipulation.h: Likewise. - * Makefile.in (OBJS): Add ipa-param-manipulation.o. - (PLUGIN_HEADERS): Addded ipa-param-manipulation.h - * ipa-param.h (ipa_parm_op): Moved to ipa-param-manipulation.h. - (ipa_parm_adjustment): Likewise. - (ipa_parm_adjustment_vec): Likewise. - (ipa_get_vector_of_formal_parms): Moved declaration to - ipa-param-manipulation.h. - (ipa_get_vector_of_formal_parm_types): Likewise. - (ipa_modify_formal_parameters): Likewise. - (ipa_modify_call_arguments): Likewise. - (ipa_combine_adjustments): Likewise. - (ipa_dump_param_adjustments): Likewise. - (ipa_modify_expr): Likewise. - (ipa_get_adjustment_candidate): Likewise. - * ipa-prop.c (ipa_get_vector_of_formal_parms): Moved to - ipa-param-manipulation.c. - (ipa_get_vector_of_formal_parm_types): Likewise. - (ipa_modify_formal_parameters): Likewise. - (ipa_modify_call_arguments): Likewise. - (ipa_modify_expr): Likewise. - (get_ssa_base_param): Likewise. - (ipa_get_adjustment_candidate): Likewise. - (index_in_adjustments_multiple_times_p): Likewise. - (ipa_combine_adjustments): Likewise. - (ipa_dump_param_adjustments): Likewise. - * tree-sra.c: Also include ipa-param-manipulation.h - * omp-simd-clone.c: Include ipa-param-manipulation.h instead of - ipa-param.h. - -2017-11-09 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/sourcebuild.texi (vect_masked_store): Document. - -2017-11-09 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/sourcebuild.texi (vect_align_stack_vars): Document. - -2017-11-09 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/sourcebuild.texi (vect_variable_length): Document. - -2017-11-09 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/sourcebuild.texi (vect_unaligned_possible): Document. - -2017-11-09 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/sourcebuild.texi (vect_element_align_preferred): Document. - -2017-11-09 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/sourcebuild.texi (vect_perm_short, vect_perm_byte): Document - previously undocumented selectors. - (vect_perm3_byte, vect_perm3_short, vect_perm3_int): Document. - -2017-11-09 Richard Sandiford - - * doc/rtl.texi (const_vector): Say that elements can be - const_wide_ints too. - * emit-rtl.h (valid_for_const_vec_duplicate_p): Declare. - * emit-rtl.c (valid_for_const_vec_duplicate_p): New function. - (gen_vec_duplicate): Use it instead of CONSTANT_P. - * optabs.c (expand_vector_broadcast): Likewise. - -2017-11-09 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-ssa-loop-ivopts.c (get_address_cost): Try using a - scaled index even if the unscaled address was invalid. - Don't increase the complexity of using a scale in that case. - -2017-11-09 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/rtl.texi: Rewrite the subreg rules so that they partition - the inner register into REGMODE_NATURAL_SIZE bytes rather than - UNITS_PER_WORD bytes. - * emit-rtl.c (validate_subreg): Divide subregs into blocks - based on REGMODE_NATURAL_SIZE of the inner mode. - (gen_lowpart_common): Split the SCALAR_FLOAT_MODE_P and - !SCALAR_FLOAT_MODE_P cases. Use REGMODE_NATURAL_SIZE for the latter. - * expmed.c (lowpart_bit_field_p): Divide the value up into - chunks of REGMODE_NATURAL_SIZE rather than UNITS_PER_WORD. - * expr.c (store_constructor): Use REGMODE_NATURAL_SIZE to test - whether something is likely to occupy more than one register. - -2017-11-09 Jan Hubicka - - PR ipa/82879 - * ipa-inline-transform.c (update_noncloned_frequencies): Use - profile_count::adjust_for_ipa_scaling. - * tree-inline.c (copy_bb, copy_cfg_body): Likewise. - * profile-count.c (profile_count::adjust_for_ipa_scaling): New member - function. - * profile-count.h (profile_count::adjust_for_ipa_scaling): Declare. - -2017-11-09 Jakub Jelinek - - * gimple-ssa-store-merging.c (count_multiple_uses): New function. - (split_group): Add total_orig and total_new arguments, estimate the - number of statements related to the store group without store merging - and with store merging. - (imm_store_chain_info::output_merged_store): Adjust split_group - callers, punt if estimated number of statements with store merging - is not smaller than estimated number of statements without it. - Formatting fix. - (handled_load): Remove has_single_use checks. - (pass_store_merging::process_store): Likewise. - -2017-11-09 Richard Biener - - PR tree-optimization/82902 - * tree-ssa-phiprop.c (propagate_with_phi): Test proper type. - -2017-11-09 Martin Liska - - PR target/82863 - * emit-rtl.c (init_emit_regs): Initialize split_branch_probability to - uninitialized. - -2017-11-09 Martin Liska - - PR tree-optimization/82669 - * sbitmap.h (bmp_iter_set_init): Remove non needed check. - -2017-11-09 Martin Liska - - PR gcov-profile/48463 - * coverage.c (coverage_begin_function): Output also end locus - of a function and information whether the function is - artificial. - * gcov-dump.c (tag_function): Parse and print the information. - * gcov.c (INCLUDE_MAP): Add include. - (INCLUDE_SET): Likewise. - (struct line_info): Move earlier in the source file because - of vector in function_info structure. - (line_info::line_info): Likewise. - (line_info::has_block): Likewise. - (struct source_info): Add new member index. - (source_info::get_functions_at_location): New function. - (function_info::group_line_p): New function. - (output_intermediate_line): New function. - (output_intermediate_file): Use the mentioned function. - (struct function_start): New. - (struct function_start_pair_hash): Likewise. - (process_file): Add code that identifies group functions. - Assign lines either to global or function scope. - (generate_results): Skip artificial functions. - (find_source): Assign index for each source file. - (read_graph_file): Read new flag artificial and end_line. - (add_line_counts): Assign it either to global of function scope. - (accumulate_line_counts): Isolate core of the function to - accumulate_line_info and call it for both function and global - scope lines. - (accumulate_line_info): New function. - (output_line_beginning): Fix GNU coding style. - (print_source_line): New function. - (output_line_details): Likewise. - (output_function_details): Likewise. - (output_lines): Iterate both source (global) scope and function - scope. - (struct function_line_start_cmp): New class. - * doc/gcov.texi: Reflect changes in documentation. - -2017-11-09 Jakub Jelinek - - PR debug/82837 - * dwarf2out.c (const_ok_for_output_1): Reject NEG in addition to NOT. - (mem_loc_descriptor): Handle (const (neg (...))) as (neg (const (...))) - and similarly for not instead of neg. - -2017-11-08 Andi Kleen - - * config/i386/i386.opt: Add -mforce-indirect-call. - * config/i386/predicates.md: Check for flag_force_indirect_call. - * doc/invoke.texi: Document -mforce-indirect-call - -2017-11-08 Kito Cheng - - * config/riscv/riscv-protos.h (riscv_slow_unaligned_access_p): - New extern. - (MOVE_RATIO): Use riscv_slow_unaligned_access_p. - config/riscv/riscv.c (predict.h): New include. - (riscv_slow_unaligned_access_p): No longer static. - (riscv_block_move_straight): Add require. - * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete. - -2017-11-08 Jakub Jelinek - - PR target/82855 - * config/i386/sse.md (_eq3, - _eq3_1): Use - nonimmediate_operand predicate for operand 1 instead of - register_operand. - -2017-11-08 Kyrylo Tkachov - - * config/aarch64/aarch64-simd.md (store_pair_lanes): - New pattern. - * config/aarch64/constraints.md (Uml): New constraint. - * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): New - predicate. - -2017-11-08 Kyrylo Tkachov - - * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge - of two vec_duplicates into a vec_concat. - -2017-11-08 Kyrylo Tkachov - - * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE): - Simplify vec_merge of vec_duplicate and vec_concat. - * config/aarch64/constraints.md (Utq): New constraint. - * config/aarch64/aarch64-simd.md (load_pair_lanes): New - define_insn. - -2017-11-08 Kyrylo Tkachov - - * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE): - Simplify vec_merge of vec_duplicate and const_vector. - * config/aarch64/predicates.md (aarch64_simd_or_scalar_imm_zero): - New predicate. - * config/aarch64/aarch64-simd.md (*aarch64_combinez): Use VDC - mode iterator. Update predicate on operand 1 to - handle non-const_vec constants. Delete constraints. - (*aarch64_combinez_be): Likewise for operand 2. - -2017-11-08 Jakub Jelinek - - PR tree-optimization/78821 - * gimple-ssa-store-merging.c (struct store_operand_info): Add bit_not_p - data member. - (store_operand_info::store_operand_info): Initialize it to false. - (pass_store_merging::terminate_all_aliasing_chains): Rewritten to use - ref_maybe_used_by_stmt_p and stmt_may_clobber_ref_p on lhs of each - store in the group, and if chain_info is non-NULL, to ignore altogether - that chain. - (compatible_load_p): Fail if bit_not_p does not match. - (imm_store_chain_info::output_merged_store): Handle bit_not_p loads. - (handled_load): Fill in bit_not_p. Handle BIT_NOT_EXPR. - (pass_store_merging::process_store): Adjust - terminate_all_aliasing_chains calls to pass NULL in all current spots, - call terminate_all_aliasing_chains newly when adding a store into - a chain with non-NULL chain_info. - -2017-11-08 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic. - -2017-11-08 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_frame_pointer_required) - Remove. - (aarch64_layout_frame): Initialise emit_frame_chain. - (aarch64_can_eliminate): Remove omit leaf frame pointer code. - (TARGET_FRAME_POINTER_REQUIRED): Remove define. - -2017-11-08 Martin Liska - - * gimplify.c (expand_FALLTHROUGH_r): Simplify usage - of gimple_call_internal_p. - -2017-11-07 Tom de Vries - - * config/mips/mips.h (ASM_OUTPUT_LABELREF): Wrap in "do {} while (0)". - -2017-11-07 Tom de Vries - - * config/mips/mips.h (ASM_OUTPUT_CASE_END): Remove semicolon after - "do {} while (0)". - -2017-11-08 Martin Liska - - PR sanitizer/82792 - * gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK. - -2017-11-07 Eric Botcazou - - * gimple-pretty-print.c (dump_profile): Return "" instead of NULL. - -2017-11-07 Jakub Jelinek - - PR target/82855 - * config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator. - (*cmp_ccz_1): New insn with $k alternative. - - PR target/82855 - * config/i386/i386.c (ix86_swap_binary_operands_p): Treat - RTX_COMM_COMPARE as commutative as well. - (ix86_binary_operator_ok): Formatting fix. - * config/i386/sse.md (*mul3, - *3, - *3, *tf3, *mul3, - *mul3_highpart, - *vec_widen_umult_even_v16si, - *vec_widen_umult_even_v8si, - *vec_widen_umult_even_v4si, - *vec_widen_smult_even_v16si, - *vec_widen_smult_even_v8si, *sse4_1_mulv2siv2di3, - *avx2_pmaddwd, *sse2_pmaddwd, *_mul3, - *avx2_3, *avx512f_3, - *sse4_1_3, *v8hi3, - *sse4_1_3, *v16qi3, *avx2_eq3, - _eq3_1, *sse4_1_eqv2di3, - *sse2_eq3, 3, - *3, *_uavg3, - *_pmulhrsw3, *ssse3_pmulhrswv4hi3): Use - !(MEM_P (operands[1]) && MEM_P (operands[2])) condition instead of - ix86_binary_operator_ok. Formatting fixes. - (*3, - *3, *3_m): Formatting - fixes. - -2017-11-07 Segher Boessenkool - - * config/rs6000/rs6000.md (GPR2): New mode_iterator. - ("cstore4"): Don't always expand with rs6000_emit_int_cmove for - eq and ne if TARGET_ISEL. - (cmp): New code_iterator. - (UNS, UNSU_, UNSIK): New code_attrs. - (2_isel): New define_insn_and_split. - ("eq3"): New define_expand, rename the define_insn_and_split - to... - ("eq3"): ... this. - ("ne3"): New define_expand, rename the define_insn_and_split - to... - ("ne3"): ... this. - -2017-11-07 Julia Koval - - PR target/82812 - * common/config/i386/i386-common.c - (OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): Remove MPX from flag. - (ix86_handle_option): Move MPX to isa_flags2 and GFNI to isa_flags. - * config/i386/i386-c.c (ix86_target_macros_internal): Ditto. - * config/i386/i386.opt: Ditto. - * config/i386/i386.c (ix86_target_string): Ditto. - (ix86_option_override_internal): Ditto. - (ix86_init_mpx_builtins): Move MPX to args2. - (ix86_expand_builtin): Special handling for OPTION_MASK_ISA_GFNI. - * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineinvqb_v64qi, - __builtin_ia32_vgf2p8affineinvqb_v64qi_mask, - __builtin_ia32_vgf2p8affineinvqb_v32qi, - __builtin_ia32_vgf2p8affineinvqb_v32qi_mask, - __builtin_ia32_vgf2p8affineinvqb_v16qi, - __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): Move to ARGS array. - -2017-11-07 Uros Bizjak - - PR target/80425 - * config/i386.i386.md (*zero_extendsidi2): Change (?r,*Yj), (?*Yi,r) - and (*x,m) to ($r,Yj), ($Yi,r) and ($x,m). - (zero-extendsidi peephole2): Remove peephole. - -2017-11-07 Eric Botcazou - - PR c/53037 - * stor-layout.c: Include attribs.h. - (handle_warn_if_not_align): Replace test on TYPE_USER_ALIGN with - explicit lookup of "aligned" attribute. - -2017-11-07 Andrew Waterman - - * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): New prototype. - (riscv_expand_block_move): Likewise. - * config/riscv/riscv.h (MOVE_RATIO): Tune cost to movmemsi - implementation. - (RISCV_MAX_MOVE_BYTES_PER_LOOP_ITER): New define. - (RISCV_MAX_MOVE_BYTES_STRAIGHT): New define. - * config/riscv/riscv.c (riscv_block_move_straight): New function. - (riscv_adjust_block_mem): Likewise. - (riscv_block_move_loop): Likewise. - (riscv_expand_block_move): Likewise. - * config/riscv/riscv.md (movmemsi): New pattern. - -2017-11-07 Michael Clark - - * config/riscv/linux.h (MUSL_ABI_SUFFIX): New define. - (MUSL_DYNAMIC_LINKER): Likewise. - -2017-11-07 Richard Sandiford - - * config/aarch64/aarch64.md (ashl3, ashr3, lshr3) - (rotr3, rotl3): Use aarch64_reg_or_imm instead of - nonmmory_operand. - -2017-11-07 Richard Biener - - * match.pd: Fix build. - -2017-11-07 Wilco Dijkstra - Jackson Woodruff - - PR tree-optimization/71026 - * match.pd: Canonicalize negate in division. - -2017-11-07 Sudakshina Das - - PR middle-end/80131 - * match.pd: Simplify 1 << (C - x) where C = precision (x) - 1. - -2017-11-07 Marc Glisse - - * match.pd ((a&~b)|(a^b),(a&~b)^~a,(a|b)&~(a^b),a|~(a^b), - (a|b)|(a&^b),(a&b)|~(a^b),~(~a&b),~X^Y): New transformations. - -2017-11-07 Marc Glisse - - * fold-const.c (negate_expr_p) [PLUS_EXPR, MINUS_EXPR]: Handle - non-scalar integral types. - * match.pd (negate_expr_p): Handle MINUS_EXPR. - (-(A-B), -(~A)): New transformations. - -2017-11-07 Tom de Vries - - * config/powerpcspe/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove - semicolon after "do {} while (0)". - * config/powerpcspe/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same. - * config/powerpcspe/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same. - * config/powerpcspe/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same. - * config/powerpcspe/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same. - * config/powerpcspe/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same. - -2017-11-07 Tom de Vries - - * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove semicolon - after "do {} while (0)". - * config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same. - * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same. - * config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same. - * config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same. - * config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same. - -2017-11-07 Tom de Vries - - PR other/82784 - * config/arm/arm.c (HANDLE_NARROW_SHIFT_ARITH): Remove semicolon after - "while {} do (0)". - (arm_rtx_costs_internal): Add missing semicolon after - HANDLE_NARROW_SHIFT_ARITH call. - -2017-11-06 Segher Boessenkool - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't - disable isel if it was not set explicitly. - -2017-11-06 James Bowman - - * gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE qualifiers. - (add_type_attribute) likewise. - -2017-11-06 H.J. Lu - - * config/i386/i386.c (ix86_can_use_return_insn_p): Use reference - of struct ix86_frame. - (ix86_initial_elimination_offset): Likewise. - (ix86_expand_split_stack_prologue): Likewise. - -2017-11-06 Marc Glisse - - * tree-vrp.h (enum value_range_type): Update stale comment. - -2017-11-06 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm) - (aarch64_expand_vec_perm_const): Take the number of units too. - * config/aarch64/aarch64.c (aarch64_expand_vec_perm) - (aarch64_expand_vec_perm_const): Likewise. - * config/aarch64/aarch64-simd.md (vec_perm_const) - (vec_perm): Update accordingly. - -2017-11-06 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-protos.h (aarch64_simd_vect_par_cnst_half): - Take the number of units too. - * config/aarch64/aarch64.c (aarch64_simd_vect_par_cnst_half): Likewise. - (aarch64_simd_check_vect_par_cnst_half): Update call accordingly, - but check for a vector mode before rather than after the call. - * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov) - (move_hi_quad_, vec_unpack_hi_) - (vec_unpack_lo_mult_lo_) - (vec_widen_mult_hi_, vec_unpacks_lo_) - (vec_unpacks_hi_, aarch64_saddl2, aarch64_uaddl2) - (aarch64_ssubl2, aarch64_usubl2, widen_ssum3) - (widen_usum3, aarch64_saddw2, aarch64_uaddw2) - (aarch64_ssubw2, aarch64_usubw2, aarch64_sqdmlal2) - (aarch64_sqdmlsl2, aarch64_sqdmlal2_lane) - (aarch64_sqdmlal2_laneq, aarch64_sqdmlsl2_lane) - (aarch64_sqdmlsl2_laneq, aarch64_sqdmlal2_n) - (aarch64_sqdmlsl2_n, aarch64_sqdmull2) - (aarch64_sqdmull2_lane, aarch64_sqdmull2_laneq) - (aarch64_sqdmull2_n): Update accordingly. - -2017-11-06 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-protos.h (aarch64_reverse_mask): Take - the number of units too. - * config/aarch64/aarch64.c (aarch64_reverse_mask): Likewise. - * config/aarch64/aarch64-simd.md (vec_load_lanesoi) - (vec_store_lanesoi, vec_load_lanesci) - (vec_store_lanesci, vec_load_lanesxi) - (vec_store_lanesxi): Update accordingly. - -2017-11-06 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-protos.h (aarch64_endian_lane_rtx): Declare. - * config/aarch64/aarch64.c (aarch64_endian_lane_rtx): New function. - * config/aarch64/aarch64.h (ENDIAN_LANE_N): Take the number - of units rather than the mode. - * config/aarch64/iterators.md (nunits): New mode attribute. - * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): - Use aarch64_endian_lane_rtx instead of GEN_INT (ENDIAN_LANE_N ...). - * config/aarch64/aarch64-simd.md (aarch64_dup_lane) - (aarch64_dup_lane_, *aarch64_mul3_elt) - (*aarch64_mul3_elt_): Likewise. - (*aarch64_mul3_elt_to_64v2df, *aarch64_mla_elt): Likewise. - (*aarch64_mla_elt_, *aarch64_mls_elt) - (*aarch64_mls_elt_, *aarch64_fma4_elt) - (*aarch64_fma4_elt_):: Likewise. - (*aarch64_fma4_elt_to_64v2df, *aarch64_fnma4_elt): Likewise. - (*aarch64_fnma4_elt_): Likewise. - (*aarch64_fnma4_elt_to_64v2df, reduc_plus_scal_): Likewise. - (reduc_plus_scal_v4sf, reduc__scal_): Likewise. - (reduc__scal_): Likewise. - (*aarch64_get_lane_extend): Likewise. - (*aarch64_get_lane_zero_extendsi): Likewise. - (aarch64_get_lane, *aarch64_mulx_elt_) - (*aarch64_mulx_elt, *aarch64_vgetfmulx): Likewise. - (aarch64_sqdmulh_lane, aarch64_sqdmulh_laneq) - (aarch64_sqrdmlh_lane): Likewise. - (aarch64_sqrdmlh_laneq): Likewise. - (aarch64_sqdmll_lane): Likewise. - (aarch64_sqdmll_laneq): Likewise. - (aarch64_sqdmll2_lane_internal): Likewise. - (aarch64_sqdmll2_laneq_internal): Likewise. - (aarch64_sqdmull_lane, aarch64_sqdmull_laneq): Likewise. - (aarch64_sqdmull2_lane_internal): Likewise. - (aarch64_sqdmull2_laneq_internal): Likewise. - (aarch64_vec_load_lanesoi_lane): Likewise. - (aarch64_vec_store_lanesoi_lane): Likewise. - (aarch64_vec_load_lanesci_lane): Likewise. - (aarch64_vec_store_lanesci_lane): Likewise. - (aarch64_vec_load_lanesxi_lane): Likewise. - (aarch64_vec_store_lanesxi_lane): Likewise. - (aarch64_simd_vec_set): Update use of ENDIAN_LANE_N. - (aarch64_simd_vec_setv2di): Likewise. - -2017-11-06 Carl Love - - * config/rs6000/rs6000-c.c (P8V_BUILTIN_VEC_REVB): Add power 8 - definitions. - (P9V_BUILTIN_VEC_REVB): Remove the power 9 instance definitions. - * config/rs6000/altivec.h (vec_revb): Change the #define from power 9 - to power 8. - * config/rs6000/r6000-protos.h (swap_endian_selector_for_mode): Add new - extern declaration. - * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Add function. - * config/rs6000/rs6000-builtin.def (BU_P8V_VSX_1, BU_P8V_OVERLOAD_1): - Add power 8 macro expansions. - (BU_P9V_OVERLOAD_1): Remove power 9 overload expansion. - * config/rs6000/vsx.md (revb_): Add define_expand to generate - power 8 instructions. (VSX_XXBR): Add iterator. - -2017-11-06 Wilco Dijkstra - - * config/arm/arm.md (predicable_short_it): Change default to "no", - improve documentation, remove uses that are identical to the default. - (enabled_for_depr_it): Rename to enabled_for_short_it. - * gcc/config/arm/arm-fixed.md (predicable_short_it): - Remove default uses. - * gcc/config/arm/ldmstm.md (predicable_short_it): Likewise. - * gcc/config/arm/sync.md (predicable_short_it): Likewise. - * gcc/config/arm/thumb2.md (predicable_short_it): Likewise. - * gcc/config/arm/vfp.md (predicable_short_it): Likewise. - -2017-11-06 Michael Meissner - - PR target/82748 - * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1): Delete - float128 helper macros, which are no longer used after deleting - the old 'q' built-in functions, and moving the round to odd - built-in functions to being special built-in functions. - (BU_FLOAT128_2): Likewise. - (BU_FLOAT128_1_HW): Likewise. - (BU_FLOAT128_2_HW): Likewise. - (BU_FLOAT128_3_HW): Likewise. - (FABSQ): Delete old 'q' built-in functions. - (COPYSIGNQ): Likewise. - (SQRTF128_ODD): Move round to odd built-in functions to be - special built-in functions, so that we can handle - -mabi=ieeelongdouble. - (TRUNCF128_ODD): Likewise. - (ADDF128_ODD): Likewise. - (SUBF128_ODD): Likewise. - (MULF128_ODD): Likewise. - (DIVF128_ODD): Likewise. - (FMAF128_ODD): Likewise. - * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Map old 'q' - built-in names to 'f128'. - * config/rs6000/rs6000.c (rs6000_fold_builtin): Remove folding the - old 'q' built-in functions, as the machine independent code for - 'f128' built-in functions handles this. - (rs6000_expand_builtin): Add expansion for float128 round to odd - functions, keying off on -mabi=ieeelongdouble of whether to use - the KFmode or TFmode variant. - (rs6000_init_builtins): Initialize the _Float128 round to odd - built-in functions. - * doc/extend.texi (PowerPC Built-in Functions): Document the old - _Float128 'q' built-in functions are now mapped into the new - 'f128' built-in functions. - -2017-11-06 David Edelsohn - - * collect2.c (add_lto_object): Compile for OBJECT_COFF. - (scan_prog_file): Don't skip PASS_LTOINFO. Scan for LTO objects. - -2017-11-06 David Malcolm - - PR jit/82826 - * ipa-fnsummary.c (ipa_fnsummary_c_finalize): New function. - * ipa-fnsummary.h (ipa_fnsummary_c_finalize): New decl. - * toplev.c: Include "ipa-fnsummary.h". - (toplev::finalize): Call ipa_fnsummary_c_finalize. - -2017-11-06 Jakub Jelinek - - PR tree-optimization/82838 - * gimple-ssa-store-merging.c - (imm_store_chain_info::output_merged_store): Call force_gimple_operand_1 - on a separate gimple_seq which is then appended to seq. - -2017-11-06 Jeff Law - - PR target/82788 - * config/i386/i386.c (PROBE_INTERVAL): Remove. - (get_probe_interval): New functions. - (ix86_adjust_stack_and_probe_stack_clash): Use get_probe_interval. - (ix86_adjust_stack_and_probe): Likewise. - (output_adjust_stack_and_probe): Likewise. - (ix86_emit_probe_stack_range): Likewise. - (ix86_expand_prologue): Likewise. - -2017-11-06 Richard Sandiford - - PR tree-optimization/82816 - * tree-ssa-math-opts.c (convert_mult_to_widen): Return false - if the modes of the two types are the same. - (convert_plusminus_to_widen): Likewise. - -2017-11-06 Bill Schmidt - - * config/rs6000/altivec.md (*p9_vadu3) Rename to - p9_vadu3. - (usadv16qi): New define_expand. - (usadv8hi): New define_expand. - -2017-11-06 Jan Hubicka - - PR bootstrap/82832 - * ipa-inline-transform.c (update_noncloned_frequencies): Always - scale. - (inline_transform): Likewise. - * predict.c (counts_to_freqs): Remove useless conditional. - * profile-count.h (profile_count::apply_scale): Move sanity check. - * tree-inline.c (copy_bb): Always scale. - (copy_cfg_body): Likewise. - -2017-11-06 Christophe Lyon - - PR target/67591 - * config/arm/arm.md (*sub_shiftsi): Add predicable_short_it - attribute. - (*cmp_ite0): Add enabled_for_depr_it attribute. - (*cmp_ite1): Likewise. - -2017-11-06 Segher Boessenkool - - * config/rs6000/rs6000.c (rs6000_insn_cost): Handle TYPE_MFCR and - TYPE_MFCRF. - -2017-11-06 Richard Sandiford - - * tree-vrp.c (vrp_int_const_binop): Return true on success and - return the value by pointer. - (extract_range_from_multiplicative_op_1): Update accordingly. - Return as soon as an operation fails. - -2017-11-05 Tom de Vries - - PR other/82784 - * asan.c (DEF_SANITIZER_BUILTIN_1): Factor out of ... - (DEF_SANITIZER_BUILTIN): ... here. - (initialize_sanitizer_builtins): Use DEF_SANITIZER_BUILTIN_1 instead of - DEF_SANITIZER_BUILTIN in if stmt. Add missing semicolon. - -2017-11-05 Tom de Vries - - PR other/82784 - * config/elfos.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon after - macro body. - (ASM_OUTPUT_CASE_LABEL): Add semicolon after - ASM_OUTPUT_BEFORE_CASE_LABEL call. - * config/arc/arc.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon - after macro body. - * config/m68k/m68kelf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same. - * config/mips/mips.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same. - * config/v850/v850.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same. - -2017-11-05 Tom de Vries - - PR other/82784 - * graphite-scop-detection.c (DEBUG_PRINT): Remove semicolon after - "do {} while (0)". - -2017-11-04 Michael Clark - - * config/riscv/riscv.c (riscv_print_operand): Add a 'i' format. - config/riscv/riscv.md (addsi3): Use 'i' for immediates. - (adddi3): Likewise. - (*addsi3_extended): Likewise. - (*addsi3_extended2): Likewise. - (si3): Likewise. - (di3): Likewise. - (3): Likewise. - (<*optabe>si3_internal): Likewise. - (zero_extendqi2): Likewise. - (*addhi3): Likewise. - (*xorhi3): Likewise. - (di3): Likewise. - (*si3_extend): Likewise. - (*sge_): Likewise. - (*slt_): Likewise. - (*sle_): Likewise. - -2017-11-04 Andrew Waterman - - * config/riscv/riscv.c (riscv_option_override): Conditionally set - TARGET_STRICT_ALIGN based upon -mtune argument. - -2017-11-04 Andrew Waterman - - * config/riscv/riscv.h (SLOW_BYTE_ACCESS): Change to 1. - -2017-11-04 Daniel Santos - - * config/i386/i386.c (choose_basereg): Use optional scratch - register and add assertion. - (x86_emit_outlined_ms2sysv_save): Use scratch register when - needed, and don't allocate stack. - (ix86_expand_prologue): Rearrange where SSE saves/stub call is - emitted, correct wrong allocation with -mcall-ms2sysv-xlogues. - (ix86_emit_outlined_ms2sysv_restore): Fix non-immediate offsets. - -2017-11-03 Jeff Law - - * config/i386/i386.c (ix86_emit_restore_reg_using_pop): Prototype. - (ix86_adjust_stack_and_probe_stack_clash): Use a push/pop sequence - to probe at the start of a noreturn function. - -2017-11-03 Jakub Jelinek - - PR tree-optimization/78821 - * gimple-ssa-store-merging.c: Update the file comment. - (MAX_STORE_ALIAS_CHECKS): Define. - (struct store_operand_info): New type. - (store_operand_info::store_operand_info): New constructor. - (struct store_immediate_info): Add rhs_code and ops data members. - (store_immediate_info::store_immediate_info): Add rhscode, op0r - and op1r arguments to the ctor, initialize corresponding data members. - (struct merged_store_group): Add load_align_base and load_align - data members. - (merged_store_group::merged_store_group): Initialize them. - (merged_store_group::do_merge): Update them. - (merged_store_group::apply_stores): Pick the constant for - encode_tree_to_bitpos from one of the two operands, or skip - encode_tree_to_bitpos if neither operand is a constant. - (class pass_store_merging): Add process_store method decl. Remove - bool argument from terminate_all_aliasing_chains method decl. - (pass_store_merging::terminate_all_aliasing_chains): Remove - var_offset_p argument and corresponding handling. - (stmts_may_clobber_ref_p): New function. - (compatible_load_p): New function. - (imm_store_chain_info::coalesce_immediate_stores): Terminate group - if there is overlap and rhs_code is not INTEGER_CST. For - non-overlapping stores terminate group if rhs is not mergeable. - (get_alias_type_for_stmts): Change first argument from - auto_vec & to vec &. Add IS_LOAD, CLIQUEP and - BASEP arguments. If IS_LOAD is true, look at rhs1 of the stmts - instead of lhs. Compute *CLIQUEP and *BASEP in addition to the - alias type. - (get_location_for_stmts): Change first argument from - auto_vec & to vec &. - (struct split_store): Remove orig_stmts data member, add orig_stores. - (split_store::split_store): Create orig_stores rather than orig_stmts. - (find_constituent_stmts): Renamed to ... - (find_constituent_stores): ... this. Change second argument from - vec * to vec *, push pointers - to info structures rather than the statements. - (split_group): Rename ALLOW_UNALIGNED argument to - ALLOW_UNALIGNED_STORE, add ALLOW_UNALIGNED_LOAD argument and handle - it. Adjust find_constituent_stores caller. - (imm_store_chain_info::output_merged_store): Handle rhs_code other - than INTEGER_CST, adjust split_group, get_alias_type_for_stmts and - get_location_for_stmts callers. Set MR_DEPENDENCE_CLIQUE and - MR_DEPENDENCE_BASE on the MEM_REFs if they are the same in all stores. - (mem_valid_for_store_merging): New function. - (handled_load): New function. - (pass_store_merging::process_store): New method. - (pass_store_merging::execute): Use process_store method. Adjust - terminate_all_aliasing_chains caller. - -2017-11-03 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): - Return true for more constants, symbols and label references. - (aarch64_valid_floating_const): Remove unused function. - -2017-11-03 Wilco Dijkstra - - PR target/82786 - * config/aarch64/aarch64.c (aarch64_layout_frame): - Undo forcing of LR at bottom of frame. - -2017-11-03 Jeff Law - - PR target/82823 - * config/i386/i386.c (ix86_expand_prologue): Tighten assert - for int_registers_saved. - - * cfganal.c (single_pred_edge_ignoring_loop_edges): New function - extracted from tree-ssa-dom.c. - * cfganal.h (single_pred_edge_ignoring_loop_edges): Prototype. - * tree-ssa-dom.c (single_incoming_edge_ignoring_loop_edges): Remove. - (record_equivalences_from_incoming_edge): Add additional argument - to single_pred_edge_ignoring_loop_edges call. - * tree-ssa-uncprop.c (single_incoming_edge_ignoring_loop_edges): Remove. - (uncprop_dom_walker::before_dom_children): Add additional argument - to single_pred_edge_ignoring_loop_edges call. - * tree-ssa-sccvn.c (sccvn_dom_walker::before_dom_children): Use - single_pred_edge_ignoring_loop_edges rather than open coding. - * tree-vrp.c (evrp_dom_walker::before_dom_children): Similarly. - -2017-11-03 Marc Glisse - - * match.pd (-(-A)): Rewrite. - -2017-11-03 Segher Boessenkool - - * config/rs6000/rs60000-protos.h (rs6000_emit_sISEL): Delete. - (rs6000_emit_int_cmove): New declaration. - * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Delete declaration. - (rs6000_emit_sISEL): Delete. - (rs6000_emit_int_cmove): Make non-static. - * config/rs6000/rs6000.md (cstore4): Use rs6000_emit_int_cmove - instead of rs6000_emit_sISEL. - -2017-11-03 Jan Hubicka - - * asan.c (create_cond_insert_point): Maintain profile. - * ipa-utils.c (ipa_merge_profiles): Be sure only IPA profiles are - merged. - * basic-block.h (struct basic_block_def): Remove frequency. - (EDGE_FREQUENCY): Use to_frequency - * bb-reorder.c (push_to_next_round_p): Use only IPA counts for global - heuristics. - (find_traces): Update to use to_frequency. - (find_traces_1_round): Likewise; use only IPA counts. - (bb_to_key): Likewise. - (connect_traces): Use IPA counts only. - (copy_bb_p): Update to use to_frequency. - (fix_up_crossing_landing_pad): Likewise. - (sanitize_hot_paths): Likewise. - * bt-load.c (basic_block_freq): Likewise. - * cfg.c (init_flow): Set count_max to uninitialized. - (check_bb_profile): Remove frequencies; check counts. - (dump_bb_info): Do not dump frequencies. - (update_bb_profile_for_threading): Update counts only. - (scale_bbs_frequencies_int): Likewise. - (MAX_SAFE_MULTIPLIER): Remove. - (scale_bbs_frequencies_gcov_type): Update counts only. - (scale_bbs_frequencies_profile_count): Update counts only. - (scale_bbs_frequencies): Update counts only. - * cfg.h (struct control_flow_graph): Add count-max. - (update_bb_profile_for_threading): Update prototype. - * cfgbuild.c (find_bb_boundaries): Do not update frequencies. - (find_many_sub_basic_blocks): Likewise. - * cfgcleanup.c (try_forward_edges): Likewise. - (try_crossjump_to_edge): Likewise. - * cfgexpand.c (expand_gimple_cond): Likewise. - (expand_gimple_tailcall): Likewise. - (construct_init_block): Likewise. - (construct_exit_block): Likewise. - * cfghooks.c (verify_flow_info): Check consistency of counts. - (dump_bb_for_graph): Do not dump frequencies. - (split_block_1): Do not update frequencies. - (split_edge): Do not update frequencies. - (make_forwarder_block): Do not update frequencies. - (duplicate_block): Do not update frequencies. - (account_profile_record): Do not update frequencies. - * cfgloop.c (find_subloop_latch_edge_by_profile): Use IPA counts - for global heuristics. - * cfgloopanal.c (average_num_loop_insns): Update to use to_frequency. - (expected_loop_iterations_unbounded): Use counts only. - * cfgloopmanip.c (scale_loop_profile): Simplify. - (create_empty_loop_on_edge): Simplify - (loopify): Simplify - (duplicate_loop_to_header_edge): Simplify - * cfgrtl.c (force_nonfallthru_and_redirect): Update profile. - (update_br_prob_note): Take care of removing note when profile - becomes undefined. - (relink_block_chain): Do not dump frequency. - (rtl_account_profile_record): Use to_frequency. - * cgraph.c (symbol_table::create_edge): Convert count to ipa count. - (cgraph_edge::redirect_call_stmt_to_calle): Conver tcount to ipa count. - (cgraph_update_edges_for_call_stmt_node): Likewise. - (cgraph_edge::verify_count_and_frequency): Update. - (cgraph_node::verify_node): Temporarily disable frequency verification. - * cgraphbuild.c (compute_call_stmt_bb_frequency): Use - to_cgraph_frequency. - (cgraph_edge::rebuild_edges): Convert to ipa counts. - * cgraphunit.c (init_lowered_empty_function): Do not initialize - frequencies. - (cgraph_node::expand_thunk): Update profile. - * except.c (dw2_build_landing_pads): Do not update frequency. - * final.c (compute_alignments): Use to_frequency. - (dump_basic_block_info): Do not dump frequency. - * gimple-pretty-print.c (dump_profile): Do not dump frequency. - (dump_gimple_bb_header): Do not dump frequency. - * gimple-ssa-isolate-paths.c (isolate_path): Do not update frequency; - do update count. - * gimple-streamer-in.c (input_bb): Do not stream frequency. - * gimple-streamer-out.c (output_bb): Do not stream frequency. - * haifa-sched.c (sched_pressure_start_bb): Use to_freuqency. - (init_before_recovery): Do not update frequency. - (sched_create_recovery_edges): Do not update frequency. - * hsa-gen.c (convert_switch_statements): Do not update frequency. - * ipa-cp.c (ipcp_propagate_stage): Update search for max_count. - (ipa_cp_c_finalize): Set max_count to uninitialized. - * ipa-fnsummary.c (get_minimal_bb): Use counts. - (param_change_prob): Use counts. - * ipa-profile.c (ipa_profile_generate_summary): Do not summarize - local profiles. - * ipa-split.c (consider_split): Use to_frequency. - (split_function): Use to_frequency. - * ira-build.c (loop_compare_func): Likewise. - (mark_loops_for_removal): Likewise. - (mark_all_loops_for_removal): Likewise. - * loop-doloop.c (doloop_modify): Do not update frequency. - * loop-unroll.c (unroll_loop_runtime_iterations): Do not update - frequency. - * lto-streamer-in.c (input_function): Update count_max. - * omp-expand.c (expand_omp_taskreg): Update count_max. - * omp-simd-clone.c (simd_clone_adjust): Update profile. - * predict.c (maybe_hot_frequency_p): Use to_frequency. - (maybe_hot_count_p): Use ipa counts only. - (maybe_hot_bb_p): Simplify. - (maybe_hot_edge_p): Simplify. - (probably_never_executed): Do not take frequency argument. - (probably_never_executed_bb_p): Do not pass frequency. - (probably_never_executed_edge_p): Likewise. - (combine_predictions_for_bb): Check that profile is nonzero. - (propagate_freq): Do not set frequency. - (drop_profile): Simplify. - (counts_to_freqs): Simplify. - (expensive_function_p): Use to_frequency. - (propagate_unlikely_bbs_forward): Simplify. - (determine_unlikely_bbs): Simplify. - (estimate_bb_frequencies): Add hack to silence graphite issues. - (compute_function_frequency): Use ipa counts. - (pass_profile::execute): Update. - (rebuild_frequencies): Use counts only. - (force_edge_cold): Use counts only. - * profile-count.c (profile_count::dump): Dump new count types. - (profile_count::differs_from_p): Check compatiblity. - (profile_count::to_frequency): New function. - (profile_count::to_cgraph_frequency): New function. - * profile-count.h (struct function): Declare. - (enum profile_quality): Add profile_guessed_local and - profile_guessed_global0. - (class profile_proability): Decrease number of bits to 29; - update from_reg_br_prob_note and to_reg_br_prob_note. - (class profile_count: Update comment; decrease number of bits - to 61. Check compatibility. - (profile_count::compatible_p): New private member function. - (profile_count::ipa_p): New member function. - (profile_count::operator<): Handle global zero correctly. - (profile_count::operator>): Handle global zero correctly. - (profile_count::operator<=): Handle global zero correctly. - (profile_count::operator>=): Handle global zero correctly. - (profile_count::nonzero_p): New member function. - (profile_count::force_nonzero): New member function. - (profile_count::max): New member function. - (profile_count::apply_scale): Handle IPA scalling. - (profile_count::guessed_local): New member function. - (profile_count::global0): New member function. - (profile_count::ipa): New member function. - (profile_count::to_frequency): Declare. - (profile_count::to_cgraph_frequency): Declare. - * profile.c (OVERLAP_BASE): Delete. - (compute_frequency_overlap): Delete. - (compute_branch_probabilities): Do not use compute_frequency_overlap. - * regs.h (REG_FREQ_FROM_BB): Use to_frequency. - * sched-ebb.c (rank): Use counts only. - * shrink-wrap.c (handle_simple_exit): Use counts only. - (try_shrink_wrapping): Use counts only. - (place_prologue_for_one_component): Use counts only. - * tracer.c (find_best_predecessor): Use to_frequency. - (find_trace): Use to_frequency. - (tail_duplicate): Use to_frequency. - * trans-mem.c (expand_transaction): Do not update frequency. - * tree-call-cdce.c: Do not update frequency. - * tree-cfg.c (gimple_find_sub_bbs): Likewise. - (gimple_merge_blocks): Likewise. - (gimple_split_edge): Likewise. - (gimple_duplicate_sese_region): Likewise. - (gimple_duplicate_sese_tail): Likewise. - (move_sese_region_to_fn): Likewise. - (gimple_account_profile_record): Likewise. - (insert_cond_bb): Likewise. - * tree-complex.c (expand_complex_div_wide): Likewise. - * tree-eh.c (lower_resx): Update profile. - * tree-inline.c (copy_bb): Simplify count scaling; do not scale - frequencies. - (initialize_cfun): Do not initialize frequencies - (freqs_to_counts): Delete. - (copy_cfg_body): Ignore count parameter. - (copy_body): Update. - (expand_call_inline): Update count_max. - (optimize_inline_calls): Update count_max. - (tree_function_versioning): Update count_max. - * tree-ssa-coalesce.c (coalesce_cost_bb): Use to_frequency. - * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Do not update - frequency. - * tree-ssa-loop-im.c (execute_sm_if_changed): Use counts only. - * tree-ssa-loop-ivcanon.c (unloop_loops): Do not update freuqency. - (try_peel_loop): Likewise. - * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Use - to_frequency. - * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Pass -1. - (tree_transform_and_unroll_loop): Do not use frequencies - * tree-ssa-loop-niter.c (estimate_numbers_of_iterations): - Use reliable prediction only. - * tree-ssa-loop-unswitch.c (hoist_guard): Do not use frequencies. - * tree-ssa-sink.c (select_best_block): Use to_frequency. - * tree-ssa-tail-merge.c (replace_block_by): Temporarily disable - probability scaling. - * tree-ssa-threadupdate.c (create_block_for_threading): Do - not update frequency - (any_remaining_duplicated_blocks): Likewise. - (update_profile): Likewise. - (estimated_freqs_path): Delete. - (freqs_to_counts_path): Delete. - (clear_counts_path): Delete. - (ssa_fix_duplicate_block_edges): Likewise. - (duplicate_thread_path): Likewise. - * tree-switch-conversion.c (gen_inbound_check): Use counts. - * tree-tailcall.c (decrease_profile): Do not update frequency. - (eliminate_tail_call): Likewise. - * tree-vect-loop-manip.c (vect_do_peeling): Likewise. - * tree-vect-loop.c (scale_profile_for_vect_loop): Likewise. - (optimize_mask_stores): Likewise. - * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise. - * ubsan.c (ubsan_expand_null_ifn): Update profile. - (ubsan_expand_ptr_ifn): Update profile. - * value-prof.c (gimple_ic): Simplify. - * value-prof.h (gimple_ic): Update prototype. - * ipa-inline-transform.c (inline_transform): Fix scaling conditoins. - * ipa-inline.c (compute_uninlined_call_time): Be sure that - counts are nonzero. - (want_inline_self_recursive_call_p): Likewise. - (resolve_noninline_speculation): Only cummulate defined counts. - (inline_small_functions): Use nonzero_p. - (ipa_inline): Do not access freed node. - -2017-11-03 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_override_options_internal): - Set PARAM_SCHED_PRESSURE_ALGORITHM to SCHED_PRESSURE_MODEL. - -2017-11-03 Kito Cheng - - * config/riscv/riscv.c (riscv_legitimize_move): Handle - non-legitimate address. - -2017-11-03 Segher Boessenkool - - * config/rs6000/rs6000.md (*lt0_disi): Delete. - (*lt0_di, *lt0_si): New. - -2017-11-03 Segher Boessenkool - - * config/rs6000/rs6000.md (move_from_CR_ov_bit): Change condition to - TARGET_PAIRED_FLOAT. - -2017-11-03 Siddhesh Poyarekar - Jim Wilson - - * config/aarch64/aarch64-cores.def (saphira): New CPU. - * config/aarch64/aarch64-tune.md: Regenerated. - * doc/invoke.texi (AArch64 Options/-mtune): Add "saphira". - * gcc/config/aarch64/aarch64.c (saphira_tunings): New tuning table. - -2017-11-03 Cupertino Miranda - - * config/arc/arc.c (arc_save_restore): Corrected CFA note. - (arc_expand_prologue): Restore blink for millicode. - * config/arc/linux.h (LINK_EH_SPEC): Defined. - -2017-11-03 Richard Sandiford - - PR target/82809 - * config/i386/i386.c (ix86_vector_duplicate_value): Use - gen_vec_duplicate after forcing the scalar into a register. - -2017-11-02 Segher Boessenkool - - * combine (try_combine): Print the insns input to try_combine to the - dump file. - -2017-11-02 Steve Ellcey - - PR target/79868 - * config/aarch64/aarch64-c.c (aarch64_pragma_target_parse): - Remove second argument from aarch64_process_target_attr call. - * config/aarch64/aarch64-protos.h (aarch64_process_target_attr): - Ditto. - * config/aarch64/aarch64.c (aarch64_attribute_info): Change - field type. - (aarch64_handle_attr_arch): Remove second argument. - (aarch64_handle_attr_cpu): Ditto. - (aarch64_handle_attr_tune): Ditto. - (aarch64_handle_attr_isa_flags): Ditto. - (aarch64_process_one_target_attr): Ditto. - (aarch64_process_target_attr): Ditto. - (aarch64_option_valid_attribute_p): Remove second argument. - on aarch64_process_target_attr call. - -2017-11-02 David Malcolm - - * diagnostic.c: Include "selftest-diagnostic.h". - (selftest::assert_location_text): New function. - (selftest::test_diagnostic_get_location_text): New function. - (selftest::diagnostic_c_tests): Call it. - -2017-11-02 David Malcolm - - * Makefile.in (OBJS-libcommon): Add selftest-diagnostic.o. - * diagnostic-show-locus.c: Include "selftest-diagnostic.h". - (class selftest::test_diagnostic_context): Move to... - * selftest-diagnostic.c: New file. - * selftest-diagnostic.h: New file. - -2017-11-02 James Bowman - - * config/ft32/ft32.c (ft32_addr_space_legitimate_address_p): increase - offset range for FT32B. - * config/ft32/ft32.h: option "mcompress" enables relaxation. - * config/ft32/ft32.md: Add TARGET_NOPM. - * config/ft32/ft32.opt: Add mft32b, mcompress, mnopm. - * gcc/doc/invoke.texi: Add mft32b, mcompress, mnopm. - -2017-11-02 Wilco Dijkstra - - * config/aarch64/aarch64.h (MALLOC_ABI_ALIGNMENT): New define. - -2017-11-02 Jeff Law - - * gimple-ssa-sprintf.c (sprintf_dom_walker): Remove - virtual keyword on FINAL OVERRIDE members. - - * tree-ssa-propagate.h (ssa_propagation_engine): Group - virtuals together. Add virtual destructor. - (substitute_and_fold_engine): Similarly. - -2017-11-02 Jan Hubicka - - * x86-tune.def (X86_TUNE_USE_INCDEC): Enable for Haswell+. - -2017-11-02 Richard Biener - - PR tree-optimization/82795 - * tree-if-conv.c (predicate_mem_writes): Remove bogus assert. - -2017-11-02 Rainer Orth - - * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Don't require - gcc_SUN_LD_VERSION. - (gcc_GAS_CHECK_FEATURE): Remove. - * configure.ac (ld_vers) <*-*-solaris2*>: Move comments from - gcc_AC_INITFINI_ARRAY here. Update for Solaris 11.4 changes. - * configure: Regenerate. - -2017-11-02 Claudiu Zissulescu - - * config/arc/arc.c (hwloop_optimize): Account for empty - body loops. - -2017-11-02 Richard Biener - - PR middle-end/82765 - * varasm.c (decode_addr_const): Make offset HOST_WIDE_INT. - Truncate ARRAY_REF index and element size. - -2017-11-01 Palmer Dabbelt - - * doc/invoke.texi (RISC-V Options): Use "@minus{}2 GB", not "-2 GB". - -2017-11-01 Jeff Law - - * tree-ssa-ccp.c (ccp_folder): New class derived from - substitute_and_fold_engine. - (ccp_folder::get_value): New member function. - (ccp_folder::fold_stmt): Renamed from ccp_fold_stmt. - (ccp_fold_stmt): Remove prototype. - (ccp_finalize): Call substitute_and_fold from the ccp_class. - * tree-ssa-copy.c (copy_folder): New class derived from - substitute_and_fold_engine. - (copy_folder::get_value): Renamed from get_value. - (fini_copy_prop): Call substitute_and_fold from copy_folder class. - * tree-vrp.c (vrp_folder): New class derived from - substitute_and_fold_engine. - (vrp_folder::fold_stmt): Renamed from vrp_fold_stmt. - (vrp_folder::get_value): New member function. - (vrp_finalize): Call substitute_and_fold from vrp_folder class. - (evrp_dom_walker::before_dom_children): Similarly for replace_uses_in. - * tree-ssa-propagate.h (substitute_and_fold_engine): New class to - provide a class interface to folder/substitute routines. - (ssa_prop_fold_stmt_fn): Remove typedef. - (ssa_prop_get_value_fn): Likewise. - (subsitute_and_fold): Remove prototype. - (replace_uses_in): Likewise. - * tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in): - Renamed from replace_uses_in. Call the virtual member function - (substitute_and_fold_engine::replace_phi_args_in): Similarly. - (substitute_and_fold_dom_walker): Remove initialization of - data member entries for calbacks. Add substitute_and_fold_engine - member and initialize it. - (substitute_and_fold_dom_walker::before_dom_children0: Use the - member functions for get_value, replace_phi_args_in c - replace_uses_in, and fold_stmt calls. - (substitute_and_fold_engine::substitute_and_fold): Renamed from - substitute_and_fold. Remove assert. Update ctor call. - - * tree-ssa-propagate.h (ssa_prop_visit_stmt_fn): Remove typedef. - (ssa_prop_visit_phi_fn): Likewise. - (class ssa_propagation_engine): New class to provide an interface - into ssa_propagate. - * tree-ssa-propagate.c (ssa_prop_visit_stmt): Remove file scoped - variable. - (ssa_prop_visit_phi): Likewise. - (ssa_propagation_engine::simulate_stmt): Moved into class. - Call visit_phi/visit_stmt from the class rather than via - file scoped static variables. - (ssa_propagation_engine::simulate_block): Moved into class. - (ssa_propagation_engine::process_ssa_edge_worklist): Similarly. - (ssa_propagation_engine::ssa_propagate): Similarly. No longer - set file scoped statics for the visit_stmt/visit_phi callbacks. - * tree-complex.c (complex_propagate): New class derived from - ssa_propagation_engine. - (complex_propagate::visit_stmt): Renamed from complex_visit_stmt. - (complex_propagate::visit_phi): Renamed from complex_visit_phi. - (tree_lower_complex): Call ssa_propagate via the complex_propagate - class. - * tree-ssa-ccp.c: (ccp_propagate): New class derived from - ssa_propagation_engine. - (ccp_propagate::visit_phi): Renamed from ccp_visit_phi_node. - (ccp_propagate::visit_stmt): Renamed from ccp_visit_stmt. - (do_ssa_ccp): Call ssa_propagate from the ccp_propagate class. - * tree-ssa-copy.c (copy_prop): New class derived from - ssa_propagation_engine. - (copy_prop::visit_stmt): Renamed from copy_prop_visit_stmt. - (copy_prop::visit_phi): Renamed from copy_prop_visit_phi_node. - (execute_copy_prop): Call ssa_propagate from the copy_prop class. - * tree-vrp.c (vrp_prop): New class derived from ssa_propagation_engine. - (vrp_prop::visit_stmt): Renamed from vrp_visit_stmt. - (vrp_prop::visit_phi): Renamed from vrp_visit_phi_node. - (execute_vrp): Call ssa_propagate from the vrp_prop class. - -2017-11-01 Jakub Jelinek - - PR rtl-optimization/82778 - PR rtl-optimization/82597 - * compare-elim.c (struct comparison): Add in_a_setter field. - (find_comparison_dom_walker::before_dom_children): Remove killed - bitmap and df_simulate_find_defs call, instead walk the defs. - Compute last_setter and initialize in_a_setter. Merge definitions - with first initialization for a few variables. - (try_validate_parallel): Use insn_invalid_p instead of - recog_memoized. Return insn rather than just the pattern. - (try_merge_compare): Fix up comment. Don't uselessly test if - in_a is a REG_P. Use cmp->in_a_setter instead of walking UD - chains. - (execute_compare_elim_after_reload): Remove df_chain_add_problem - call. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64.c (aarch64_rtx_costs): Use - aarch64_hard_regno_nregs to get the number of registers - in a mode. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/constraints.md (Upl): Rename to... - (Uaa): ...this. - * config/aarch64/aarch64.md - (*zero_extend2_aarch64, *addsi3_aarch64_uxtw): - Update accordingly. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64.c (aarch64_add_constant_internal) - (aarch64_add_constant, aarch64_add_sp, aarch64_sub_sp): Move - earlier in file. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64.c (aarch64_evpc_trn, aarch64_evpc_uzp) - (aarch64_evpc_zip, aarch64_evpc_ext, aarch64_evpc_rev) - (aarch64_evpc_dup): Generate rtl direcly, rather than using - named expanders. - (aarch64_expand_vec_perm_const_1): Explicitly check for permutes - of a single element. - * config/aarch64/iterators.md: Add a comment above the permute - unspecs to say that they are generated directly by - aarch64_expand_vec_perm_const. - * config/aarch64/aarch64-simd.md: Likewise the permute instructions. - -2017-11-01 Nathan Sidwell - - * tree-dump.c (dequeue_and_dump): Use HAS_DECL_ASSEMBLER_NAME_P. - -2017-11-01 Palmer Dabbelt - - * doc/invoke.texi (RISC-V Options): Explicitly name the medlow - and medany code models, and describe what they do. - -2017-11-01 Richard Sandiford - - Revert accidental duplicate: - - * combine.c (can_change_dest_mode): Reject changes in - REGMODE_NATURAL_SIZE. - -2017-11-01 Segher Boessenkool - - PR rtl-optimization/64682 - PR rtl-optimization/69567 - PR rtl-optimization/69737 - PR rtl-optimization/82683 - * combine.c (distribute_notes) : If the new I2 sets the same - register mentioned in the note, drop the note, unless it came from I3, - in which case it should go to I3 again. - -2017-11-01 Richard Sandiford - - * tree-ssa-dse.c (normalize_ref): Check whether the ranges overlap - and return false if not. - (clear_bytes_written_by, live_bytes_read): Update accordingly. - -2017-11-01 Richard Sandiford - - * tree-ssa-alias.h (ranges_overlap_p): Return false if either - range is known to be empty. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * simplify-rtx.c (simplify_const_unary_operation): Use GET_MODE_NUNITS - and CONST_VECTOR_NUNITS instead of computing the number of units from - the byte sizes of the vector and element. - (simplify_binary_operation_1): Likewise. - (simplify_const_binary_operation): Likewise. - (simplify_ternary_operation): Likewise. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * var-tracking.c (INT_MEM_OFFSET): Replace with... - (int_mem_offset): ...this new function. - (var_mem_set, var_mem_delete_and_set, var_mem_delete) - (find_mem_expr_in_1pdv, dataflow_set_preserve_mem_locs) - (same_variable_part_p, use_type, add_stores, vt_get_decl_and_offset): - Update accordingly. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * lower-subreg.c (interesting_mode_p): New function. - (compute_costs, find_decomposable_subregs, decompose_register) - (simplify_subreg_concatn, can_decompose_p, resolve_simple_move) - (resolve_clobber, dump_choices): Use it. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * rtlhash.c (add_rtx): Use add_hwi for 'w' and add_int for 'i'. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * alias.c (find_base_value, find_base_term): Only process integer - truncations. Check the precision rather than the size. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (is_narrower_int_mode): New function - * optabs.c (expand_float, expand_fix): Use it. - * dwarf2out.c (rotate_loc_descriptor): Likewise. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * rtl.h (narrower_subreg_mode): New function. - * ira-color.c (update_costs_from_allocno): Use it. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * optabs-query.h (convert_optab_p): New function, split out from... - (convert_optab_handler): ...here. - (widening_optab_handler): Delete. - (find_widening_optab_handler): Remove permit_non_widening parameter. - (find_widening_optab_handler_and_mode): Likewise. Provide an - override that operates on mode class wrappers. - * optabs-query.c (widening_optab_handler): Delete. - (find_widening_optab_handler_and_mode): Remove permit_non_widening - parameter. Assert that the two modes are the same class and that - the "from" mode is narrower than the "to" mode. Use - convert_optab_handler instead of widening_optab_handler. - * expmed.c (expmed_mult_highpart_optab): Use convert_optab_handler - instead of widening_optab_handler. - * expr.c (expand_expr_real_2): Update calls to - find_widening_optab_handler. - * optabs.c (expand_widen_pattern_expr): Likewise. - (expand_binop_directly): Take the insn_code as a parameter. - (expand_binop): Only call find_widening_optab_handler for - conversion optabs; use optab_handler otherwise. Update calls - to find_widening_optab_handler and expand_binop_directly. - Use convert_optab_handler instead of widening_optab_handler. - * tree-ssa-math-opts.c (convert_mult_to_widen): Update calls to - find_widening_optab_handler and use scalar_mode rather than - machine_mode. - (convert_plusminus_to_widen): Likewise. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (fixed_size_mode): New class. - * rtl.h (get_pool_mode): Return fixed_size_mode. - * gengtype.c (main): Add fixed_size_mode. - * target.def (get_raw_result_mode): Return a fixed_size_mode. - (get_raw_arg_mode): Likewise. - * doc/tm.texi: Regenerate. - * targhooks.h (default_get_reg_raw_mode): Return a fixed_size_mode. - * targhooks.c (default_get_reg_raw_mode): Likewise. - * config/ia64/ia64.c (ia64_get_reg_raw_mode): Likewise. - * config/mips/mips.c (mips_get_reg_raw_mode): Likewise. - * config/msp430/msp430.c (msp430_get_raw_arg_mode): Likewise. - (msp430_get_raw_result_mode): Likewise. - * config/avr/avr-protos.h (regmask): Use as_a - * dbxout.c (dbxout_parms): Require fixed-size modes. - * expr.c (copy_blkmode_from_reg, copy_blkmode_to_reg): Likewise. - * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise. - * omp-low.c (lower_oacc_reductions): Likewise. - * simplify-rtx.c (simplify_immed_subreg): Take fixed_size_modes. - (simplify_subreg): Update accordingly. - * varasm.c (constant_descriptor_rtx::mode): Change to fixed_size_mode. - (force_const_mem): Update accordingly. Return NULL_RTX for modes - that aren't fixed-size. - (get_pool_mode): Return a fixed_size_mode. - (output_constant_pool_2): Take a fixed_size_mode. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/rtl.texi (vec_series): Document. - (const): Say that the operand can be a vec_series. - * rtl.def (VEC_SERIES): New rtx code. - * rtl.h (const_vec_series_p_1): Declare. - (const_vec_series_p): New function. - * emit-rtl.h (gen_const_vec_series): Declare. - (gen_vec_series): Likewise. - * emit-rtl.c (const_vec_series_p_1, gen_const_vec_series) - (gen_vec_series): Likewise. - * optabs.c (expand_mult_highpart): Use gen_const_vec_series. - * simplify-rtx.c (simplify_unary_operation): Handle negations - of vector series. - (simplify_binary_operation_series): New function. - (simplify_binary_operation_1): Use it. Handle VEC_SERIES. - (test_vector_ops_series): New function. - (test_vector_ops): Call it. - * config/powerpcspe/altivec.md (altivec_lvsl): Use - gen_const_vec_series. - (altivec_lvsr): Likewise. - * config/rs6000/altivec.md (altivec_lvsl, altivec_lvsr): Likewise. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * doc/rtl.texi (const): Update description of address constants. - Say that vector constants are allowed too. - * common.md (E, F): Use CONSTANT_P instead of checking for - CONST_VECTOR. - * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of - checking for CONST_VECTOR. - * expmed.c (make_tree): Use build_vector_from_val for a CONST - VEC_DUPLICATE. - * expr.c (expand_expr_real_2): Check for vector modes instead - of checking for CONST_VECTOR. - * rtl.h (const_vec_p): New function. - (const_vec_duplicate_p): Check for a CONST VEC_DUPLICATE. - (unwrap_const_vec_duplicate): Handle them here too. - -2017-11-01 Richard Sandiford - David Malcolm - Alan Hayward - David Sherwood - - * rtl.h (vec_duplicate_p): New function. - * selftest-rtl.c (assert_rtx_eq_at): New function. - * selftest-rtl.h (ASSERT_RTX_EQ): New macro. - (assert_rtx_eq_at): Declare. - * selftest.h (selftest::simplify_rtx_c_tests): Declare. - * selftest-run-tests.c (selftest::run_tests): Call it. - * simplify-rtx.c: Include selftest.h and selftest-rtl.h. - (simplify_unary_operation_1): Recursively handle vector duplicates. - (simplify_binary_operation_1): Likewise. Handle VEC_SELECTs of - vector duplicates. - (simplify_subreg): Handle subregs of vector duplicates. - (make_test_reg, test_vector_ops_duplicate, test_vector_ops) - (selftest::simplify_rtx_c_tests): New functions. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * emit-rtl.h (gen_const_vec_duplicate): Declare. - (gen_vec_duplicate): Likewise. - * emit-rtl.c (gen_const_vec_duplicate_1): New function, split - out from... - (gen_const_vector): ...here. - (gen_const_vec_duplicate, gen_vec_duplicate): New functions. - (gen_rtx_CONST_VECTOR): Use gen_const_vec_duplicate for constants - whose elements are all equal. - * optabs.c (expand_vector_broadcast): Use gen_const_vec_duplicate. - * simplify-rtx.c (simplify_const_unary_operation): Likewise. - (simplify_relational_operation): Likewise. - * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup): - Likewise. - (aarch64_simd_dup_constant): Use gen_vec_duplicate. - (aarch64_expand_vector_init): Likewise. - * config/arm/arm.c (neon_vdup_constant): Likewise. - (neon_expand_vector_init): Likewise. - (arm_expand_vec_perm): Use gen_const_vec_duplicate. - (arm_block_set_unaligned_vect): Likewise. - (arm_block_set_aligned_vect): Likewise. - * config/arm/neon.md (neon_copysignf): Likewise. - * config/i386/i386.c (ix86_expand_vec_perm): Likewise. - (expand_vec_perm_even_odd_pack): Likewise. - (ix86_vector_duplicate_value): Use gen_vec_duplicate. - * config/i386/sse.md (one_cmpl2): Use CONSTM1_RTX. - * config/ia64/ia64.c (ia64_expand_vecint_compare): Use - gen_const_vec_duplicate. - * config/ia64/vect.md (addv2sf3, subv2sf3): Use CONST1_RTX. - * config/mips/mips.c (mips_gen_const_int_vector): Use - gen_const_vec_duplicate. - (mips_expand_vector_init): Use CONST0_RTX. - * config/powerpcspe/altivec.md (abs2, nabs2): Likewise. - (define_split): Use gen_const_vec_duplicate. - * config/rs6000/altivec.md (abs2, nabs2): Use CONST0_RTX. - (define_split): Use gen_const_vec_duplicate. - * config/s390/vx-builtins.md (vec_genmask): Likewise. - (vec_ctd_s64, vec_ctd_u64, vec_ctsl, vec_ctul): Likewise. - * config/spu/spu.c (spu_const): Likewise. - -2017-11-01 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (can_change_dest_mode): Reject changes in - REGMODE_NATURAL_SIZE. - -2017-10-31 Sandra Loosemore - - * configure.ac (--enable-libssp): New. - (gcc_cv_libc_provides_ssp): Check for explicit setting before - trying to determine target-specific default. Adjust indentation. - * configure: Regenerated. - * doc/install.texi (Configuration): Expand --disable-libssp - documentation. - -2017-10-31 Daniel Santos - - config/i386/i386.c (ix86_expand_epilogue): Correct stack - calculation. - -2017-10-31 Martin Jambor - - PR c++/81702 - * gimple-fold.c (gimple_get_virt_method_for_vtable): Remove assert. - -2017-10-31 David Malcolm - - * auto-profile.c (autofdo_source_profile::read): Use - UNKNOWN_LOCATION rather than 0. - * diagnostic-core.h (warning_at_rich_loc): Rename to... - (warning_at): ...this overload. - (warning_at_rich_loc_n): Rename to... - (warning_n): ...this overload. - (error_at_rich_loc): Rename to... - (error_at): ...this overload. - (pedwarn_at_rich_loc): Rename to... - (pedwarn): ...this overload. - (permerror_at_rich_loc): Rename to... - (permerror): ...this overload. - (inform_at_rich_loc): Rename to... - (inform): ...this overload. - * diagnostic.c: (diagnostic_n_impl): Delete location_t-based decl. - (diagnostic_n_impl_richloc): Rename to... - (diagnostic_n_impl): ...this rich_location *-based decl. - (inform_at_rich_loc): Rename to... - (inform): ...this, and add an assertion. - (inform_n): Update for removal of location_t-based diagnostic_n_impl. - (warning_at_rich_loc): Rename to... - (warning_at): ...this, and add an assertion. - (warning_at_rich_loc_n): Rename to... - (warning_n): ...this, and add an assertion. - (warning_n): Update location_t-based implementation for removal of - location_t-based diagnostic_n_impl. - (pedwarn_at_rich_loc): Rename to... - (pedwarn): ...this, and add an assertion. - (permerror_at_rich_loc): Rename to... - (permerror): ...this, and add an assertion. - (error_n): Update for removal of location_t-based diagnostic_n_impl. - (error_at_rich_loc): Rename to... - (error_at): ...this, and add an assertion. - * gcc.c (do_spec_1): Use UNKNOWN_LOCATION rather than 0. - (driver::do_spec_on_infiles): Likewise. - * substring-locations.c (format_warning_va): Update for renaming - of inform_at_rich_loc. - -2017-10-31 Michael Meissner - - * builtins.def (DEF_FLOATN_BUILTIN): Change most _Float and - _FloatX built-in functions so that the variant without the - "__builtin_" prefix is only enabled for the GNU C and Objective C - languages when they are in non-strict ANSI/ISO mode. - (DEF_EXT_LIB_FLOATN_NX_BUILTINS): Likewise. - * target.def (floatn_builtin_p): Add a target hook to control - whether _Float and _FloatX built-in functions without the - "__builtin_" prefix are enabled, and return true for C and - Objective C in the default hook. Include langhooks.h in - targhooks.c. - * targhooks.h (default_floatn_builtin_p): Likewise. - * targhooks.c (default_floatn_builtin_p): Likewise. - * doc/tm.texi.in (TARGET_FLOATN_BUILTIN_P): Document the - floatn_builtin_p target hook. - * doc/tm.texi (TARGET_FLOATN_BUILTIN_P): Likewise. - -2017-10-31 Matthew Fortune - Eric Botcazou - - PR rtl-optimization/81803 - * lra-constraints.c (curr_insn_transform): Also reload the whole - register for a strict subreg no wider than a word if this is for - a WORD_REGISTER_OPERATIONS target. - -2017-10-31 Jason Merrill - - * gdbinit.in: Skip over inlines from timevar.h. - -2017-10-31 Martin Liska - - * doc/gcov.texi: Document new option. - * gcov.c (print_usage): Likewise print it. - (process_args): Support the argument. - (format_count): New function. - (format_gcov): Use the function. - -2017-10-31 Martin Liska - - * gcov.c (struct name_map): do not use typedef. - Define operator== and operator<. - (name_search): Remove. - (name_sort): Remove. - (main): Do not allocate names. - (process_file): Add vertical space. - (generate_results): Use std::find. - (release_structures): Do not release memory. - (find_source): Use std::find. - -2017-10-31 Martin Liska - - * gcov.c (struct line_info): Remove it's typedef. - (line_info::line_info): Add proper ctor. - (line_info::has_block): Do not use a typedef. - (struct source_info): Do not use typedef. - (circuit): Likewise. - (get_cycles_count): Likewise. - (output_intermediate_file): Iterate via vector iterator. - (add_line_counts): Use std::vector methods. - (accumulate_line_counts): Likewise. - (output_lines): Likewise. - -2017-10-31 Martin Liska - - * gcov.c (struct source_info): Remove typedef. - (source_info::source_info): Add proper ctor. - (accumulate_line_counts): Use struct, not it's typedef. - (output_gcov_file): Likewise. - (output_lines): Likewise. - (main): Do not allocate an array. - (output_intermediate_file): Use size of vector container. - (process_file): Resize the vector. - (generate_results): Do not preallocate, use newly added vector - lines. - (release_structures): Do not release sources. - (find_source): Use vector methods. - (add_line_counts): Do not use typedef. - -2017-10-31 Martin Liska - - * doc/gcov.texi: Document that. - * gcov.c (add_line_counts): Mark lines with a non-executed - statement. - (output_line_beginning): Handle such lines. - (output_lines): Pass new argument. - (output_intermediate_file): Print it in intermediate format. - -2017-10-31 Martin Liska - - * color-macros.h: New file. - * diagnostic-color.c: Factor out color related to macros to - color-macros.h. - * doc/gcov.texi: Document -k option. - * gcov.c (INCLUDE_STRING): Include string.h. - (print_usage): Add -k option. - (process_args): Parse it. - (pad_count_string): New function. - (output_line_beginning): Likewise. - (DEFAULT_LINE_START): New macro. - (output_lines): Support color output. - -2017-10-31 Martin Liska - - PR gcov-profile/82633 - * doc/gcov.texi: Document -fkeep-{static,inline}-functions and - their interaction with GCOV infrastructure. - * configure.ac: Add -fkeep-{inline,static}-functions to - coverage_flags. - * configure: Regenerate. - -2017-10-31 Uros Bizjak - - PR target/82772 - * config/alpha/sync.md (fetchop_constr) : Change to "rINM". - -2017-10-31 Segher Boessenkool - - PR target/82674 - * config/rs6000/rs6000.md (allocate_stack): Force update interval - into a register if it does not fit into an immediate offset field. - -2017-10-31 Olivier Hainque - - * gcc/Makefile.in (FLAGS_TO_PASS): Pass libsubdir as well. - -2017-10-31 Julia Koval - - * config.gcc: Add gfniintrin.h. - * config/i386/gfniintrin.h: New. - * config/i386/i386-builtin-types.def - (__builtin_ia32_vgf2p8affineinvqb_v64qi, - __builtin_ia32_vgf2p8affineinvqb_v64qi_mask, - __builtin_ia32_vgf2p8affineinvqb_v32qi, - __builtin_ia32_vgf2p8affineinvqb_v32qi_mask, - __builtin_ia32_vgf2p8affineinvqb_v16qi, - __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): New builtins. - * config/i386/i386-builtin.def (V64QI_FTYPE_V64QI_V64QI_INT_V64QI_UDI, - V32QI_FTYPE_V32QI_V32QI_INT_V32QI_USI, - V16QI_FTYPE_V16QI_V16QI_INT_V16QI_UHI, - V64QI_FTYPE_V64QI_V64QI_INT): New types. - * config/i386/i386.c (ix86_expand_args_builtin): Handle new types. - * config/i386/immintrin.h: Include gfniintrin.h. - * config/i386/sse.md (vgf2p8affineinvqb_*) New pattern. - -2017-10-30 Eric Botcazou - - * gcc.c (HAVE_TARGET_EXECUTABLE_SUFFIX): Remove old kludge. - -2017-10-30 Wilco Dijkstra - - * config/arm/arm.md (ashldi3): Remove shift by 1 expansion. - (arm_ashldi3_1bit): Remove pattern. - (ashrdi3): Remove shift by 1 expansion. - (arm_ashrdi3_1bit): Remove pattern. - (lshrdi3): Remove shift by 1 expansion. - (arm_lshrdi3_1bit): Remove pattern. - * config/arm/arm.c (arm_rtx_costs_internal): Slightly increase - cost of ashldi3 by 1. - * config/arm/neon.md (ashldi3_neon): Remove shift by 1 expansion. - (di3_neon): Likewise. - -2017-10-30 Dominik Infuehr - - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): Rename - both identically named patterns to (*aarch64_simd_mov) - and (*aarch64_simd_mov). - (*aarch64_simd_mov): Change type attribute to match - pattern alternative. - (*aarch64_simd_mov): Re-order and change type - attributes to match pattern alternative. - -2017-10-30 Steven Munroe - - * config.gcc (powerpc*-*-*): Add emmintrin.h. - * config/rs6000/emmintrin.h: New file. - * config/rs6000/x86intrin.h [__ALTIVEC__]: Include emmintrin.h. - -2017-10-30 Wilco Dijkstra - - * config/arm/vfp.md (movdi_vfp): Merge changes from movdi_vfp_cortexa8. - * (movdi_vfp_cortexa8): Remove pattern. - -2017-10-30 Rainer Orth - - * doc/install.texi (Specific, alpha*-*-*): Remove DEC OSF/1 - etc. reference. - (Specific, alpha*-dec-osf5.1): Remove. - (Specific, mips-sgi-irix5): Remove. - (Specific, mips-sgi-irix6): Remove. - -2017-10-30 Jakub Jelinek - - PR middle-end/22141 - * gimple-ssa-store-merging.c (merged_store_group::apply_stores): Fix - arguments to clear_bit_region_be. - -2017-10-30 Jim Wilson - - * gimplify.c: Include memmodel.h. - -2017-10-30 Martin Jambor - - * omp-grid.c (grid_attempt_target_gridification): Also insert a - condition whether loop should be executed at all. - -2017-10-30 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for - gimple folding of vec_madd() intrinsics. - * config/rs6000/altivec.md (mulv8hi3): Rename altivec_vmladduhm to - fmav8hi4. (altivec_vmladduhm): Rename to fmav8hi4. - * config/rs6000/rs6000-builtin.def: Rename vmladduhm to fmav8hi4 - -2017-10-30 Richard Biener - - PR tree-optimization/82762 - Revert - 2017-10-23 Richard Biener - - PR tree-optimization/82129 - Revert - 2017-08-01 Richard Biener - - PR tree-optimization/81181 - * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ... - (compute_antic): ... end of iteration here. - -2017-10-30 Joseph Myers - - * doc/invoke.texi (C Dialect Options): Document -std=c17, - -std=iso9899:2017 and -std=gnu17. - * doc/standards.texi (C Language): Document C17 support. - * doc/cpp.texi (Overview): Mention -std=c17. - (Standard Predefined Macros): Document C11 and C17 values of - __STDC_VERSION__. Do not refer to C99 support as incomplete. - * doc/extend.texi (Inline): Do not list individual options for - standards newer than C99. - * dwarf2out.c (highest_c_language, gen_compile_unit_die): Handle - "GNU C17". - * config/rl78/rl78.c (rl78_option_override): Handle "GNU C17" - language name. - -2017-10-30 Maxim Ostapenko - - * asan.c (asan_finish_file): Align asan globals array by shadow - granularity. - -2017-10-30 Jakub Jelinek - - PR middle-end/22141 - * gimple-ssa-store-merging.c: Include rtl.h and expr.h. - (struct store_immediate_info): Add bitregion_start and bitregion_end - fields. - (store_immediate_info::store_immediate_info): Add brs and bre - arguments and initialize bitregion_{start,end} from those. - (struct merged_store_group): Add bitregion_start, bitregion_end, - align_base and mask fields. Drop unnecessary struct keyword from - struct store_immediate_info. Add do_merge method. - (clear_bit_region_be): Use memset instead of loop storing zeros. - (merged_store_group::do_merge): New method. - (merged_store_group::merge_into): Use do_merge. Allow gaps in between - stores as long as the surrounding bitregions have no gaps. - (merged_store_group::merge_overlapping): Use do_merge. - (merged_store_group::apply_stores): Test that bitregion_{start,end} - is byte aligned, rather than requiring that start and width are - byte aligned. Drop unnecessary struct keyword from - struct store_immediate_info. Allocate and populate also mask array. - Make start of the arrays relative to bitregion_start rather than - start and size them according to bitregion_{end,start} difference. - (struct imm_store_chain_info): Drop unnecessary struct keyword from - struct store_immediate_info. - (pass_store_merging::gate): Punt if BITS_PER_UNIT or CHAR_BIT is not 8. - (pass_store_merging::terminate_all_aliasing_chains): Drop unnecessary - struct keyword from struct store_immediate_info. - (imm_store_chain_info::coalesce_immediate_stores): Allow gaps in - between stores as long as the surrounding bitregions have no gaps. - Formatting fixes. - (struct split_store): Add orig non-static data member. - (split_store::split_store): Initialize orig to false. - (find_constituent_stmts): Return store_immediate_info *, non-NULL - if there is exactly a single original stmt. Change stmts argument - to pointer from reference, if NULL, don't push anything to it. Add - first argument, use it to optimize skipping over orig stmts that - are known to be before bitpos already. Simplify. - (split_group): Return unsigned int count how many stores are or - would be needed rather than a bool. Add allow_unaligned argument. - Change split_stores argument from reference to pointer, if NULL, - only do a dry run computing how many stores would be produced. - Rewritten algorithm to use both alignment and misalign if - !allow_unaligned and handle bitfield stores with gaps. - (imm_store_chain_info::output_merged_store): Set start_byte_pos - from bitregion_start instead of start. Compute allow_unaligned - here, if true, do 2 split_group dry runs to compute which one - produces fewer stores and prefer aligned if equal. Punt if - new count is bigger or equal than original before emitting any - statements, rather than during that. Remove no longer needed - new_ssa_names tracking. Replace num_stmts with - split_stores.length (). Use 32-bit stack allocated entries - in split_stores auto_vec. Try to reuse original store lhs/rhs1 - if possible. Handle bitfields with gaps. - (pass_store_merging::execute): Ignore bitsize == 0 stores. - Compute bitregion_{start,end} for the stores and construct - store_immediate_info with that. Formatting fixes. - -2017-10-30 Uros Bizjak - - PR target/82725 - * config/i386/i386.c (legitimate_pic_address_disp_p): Allow - UNSPEC_DTPOFF and UNSPEC_NTPOFF with SImode immediate offset. - -2017-10-29 Jim Wilson - - * gimplify.c: Include tm_p.h. - - * common.opt (gcoff): Re-add as ignored option. - (gcoff1, gcoff2, gcoff3): Likewise. - - * Makefile.in (OBJS): Delete sdbout.o. - (GTFILES): Delete $(srcdir)/sdbout.c. - * debug.h: Delete sdb_debug_hooks. - * final.c: Delete sdbout.h include. - (final_scan_insn): Delete SDB_DEBUG check. - (rest_of_clean_state): Likewise. - * output.h: Delete sdb_begin_function_line. - * sdbout.c: Delete. - * sdbout.h: Delete. - * toplev.c: Delete sdbout.h include. - (process_options): Delete SDB_DEBUG check. - * tree-core.h (tree_type_common): Delete pointer field of - tree_type_symtab. - * tree.c (copy_node): Clear TYPE_SYMTAB_DIE instead of - TYPE_SYMTAB_POINTER. - * tree.h (TYPE_SYMTAB_POINTER): Delete. - (TYPE_SYMTAB_IS_POINTER): Delete. - (TYPE_SYMTAB_IS_DIE): Renumber. - * xcoffout.c: Refer to former sdbout.c file. - (xcoffout_begin_prologue): Use past tense for sdbout.c reference. - - * doc/install.texi (--with-stabs): Delete COFF and ECOFF info. - * doc/invoke.texi (SEEALSO): Delete adb and sdb references. - (Debugging Options): Delete -gcoff. - (-gstabs): Delete SDB reference. - (-gcoff): Delete. - (-gcoff@var{level}): Delete. - * doc/passes.texi (Debugging information output): Delete SDB and - sdbout.c references. - * doc/tm.texi: Regenerate. - * doc/tm.texi.in (DWARF_CIE_DATA_ALIGNMENT): Delete SDB from xref. - (SDB and DWARF): Change node name to DWARF and delete SDB and COFF - references. - (DEBUGGER_AUTO_OFFSET): Delete COFF and SDB references. - (PREFERRED_DEBUGGING_TYPE): Delete SDB_DEBUG and -gcoff references. - (SDB_DEBUGGING_INFO): Delete. - (PUT_SDB_@dots{}, SDB_DELIM, SDB_ALLOW_UNKNOWN_REFERENCES) - SDB_ALLOW_FORWARD_REFERENCES, SDB_OUTPUT_SOURCE_LINE): Delete. - * target.def (output_source_filename): Delete COFF reference. - - * common.opt (gcoff): Delete. - (gxcoff+): Update Negative chain. - * defaults.h: Delete all references to SDB_DEBUGGING_INFO and - SDB_DEBUG. - * dwarf2out.c (gen_array_type_die): Change SDB to debuggers. - * flag-types.h (enum debug_info_type): Delete SDB_DEBUG. - * function.c (number_blocks): Delete SDB_DEBUGGING_INFO, SDB_DEBUG, - and SDB references. - (expand_function_start): Change sdb reference to past tense. - (expand_function_end): Change sdb reference to past tense. - * gcc.c (cpp_unique_options): Delete gcoff3 reference. - * opts.c (debug_type_names): Delete coff entry. - (common_handle_option): Delete OPT_gcoff case. - * system.h (SDB_DEBUG, SDB_DEBUGGING_INFO): Poison. - - * config/dbxcoff.h (PREFERRED_DEBUGGING_TYPE): Set to DBX_DEBUG. - * config/cris/cris.h: Delete SDB reference in comment. - * config/i386/cygming.h: Don't define SDB_DEBUGGING_INFO. - (ASM_DECLARE_FUNCTION_NAME): Delete SDB reference from comment. - * config/i386/gas.h: Don't define SDB_DEBUGGING_INFO. - * config/i386/i386.c (svr4_dbx_register_map): Change SDB references - to past tense. - (ix86_expand_prologue): Likewise. - * config/i386/winnt.c (i386_pe_start_function): Don't check SDB_DEBUG. - * config/ia64/ia64.h: Likewise. - * config/m68k/m68kelf.h (DBX_REGISTER_NUMBER): Delete SDB reference. - * config/mips/mips.h (SUBTARGET_ASM_DEBUGGING_SPEC): Delete gcoff* - support. - * config/mmix/mmix.h: Likewise. - * config/nds32/nds32.c: Likewise. - * config/stormy/storym16.h: Likewise. - * config/visium/visium.h: Likewise. - * config/vx-common.h (SDB_DEBUGGING_INFO): Delete undef. - -2017-10-28 Sandra Loosemore - - * config/nios2/nios2.h (FRAME_GROWS_DOWNWARD): Define to 1. - * config/nios2/nios2.c (nios2_initial_elimination_offset): Make - FRAME_POINTER_REGNUM point at high end of local var area. - -2017-10-27 Eric Botcazou - - * bb-reorder.c (find_traces_1_round): Fix off-by-one index. - Move comment around. Do not reset best_edge for a copiable - destination if the copy would cause a partition change. - (better_edge_p): Remove redundant check. - -2017-10-27 Uros Bizjak - - * config/i386/i386-protos.h (ix86_fp_compare_mode): Remove prototype. - -2017-10-27 Michael Meissner - - * builtins.c (CASE_MATHFN_FLOATN): New helper macro to add cases - for math functions that have _Float and _FloatX variants. - (mathfn_built_in_2): Add support for math functions that have - _Float and _FloatX variants. - (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro. - (expand_builtin_mathfn_ternary): Add support for fma with - _Float and _FloatX variants. - (expand_builtin): Likewise. - (fold_builtin_3): Likewise. - * builtins.def (DEF_EXT_LIB_FLOATN_NX_BUILTINS): New macro to - create math function _Float and _FloatX variants as external - library builtins. - (BUILT_IN_COPYSIGN _Float and _FloatX variants) Use - DEF_EXT_LIB_FLOATN_NX_BUILTINS to make built-in functions using - the __builtin_ prefix and if not strict ansi, without the prefix. - (BUILT_IN_FABS _Float and _FloatX variants): Likewise. - (BUILT_IN_FMA _Float and _FloatX variants): Likewise. - (BUILT_IN_FMAX _Float and _FloatX variants): Likewise. - (BUILT_IN_FMIN _Float and _FloatX variants): Likewise. - (BUILT_IN_NAN _Float and _FloatX variants): Likewise. - (BUILT_IN_SQRT _Float and _FloatX variants): Likewise. - * builtin-types.def (BT_FN_FLOAT16_FLOAT16_FLOAT16_FLOAT16): New - function signatures for fma _Float and _FloatX variants. - (BT_FN_FLOAT32_FLOAT32_FLOAT32_FLOAT32): Likewise. - (BT_FN_FLOAT64_FLOAT64_FLOAT64_FLOAT64): Likewise. - (BT_FN_FLOAT128_FLOAT128_FLOAT128_FLOAT128): Likewise. - (BT_FN_FLOAT32X_FLOAT32X_FLOAT32X_FLOAT32X): Likewise. - (BT_FN_FLOAT64X_FLOAT64X_FLOAT64X_FLOAT64X): Likewise. - (BT_FN_FLOAT128X_FLOAT128X_FLOAT128X_FLOAT128X): Likewise. - * gencfn-macros.c (print_case_cfn): Add support for math functions - that have _Float and _FloatX variants. - (print_define_operator_list): Likewise. - (fltfn_suffixes): Likewise. - (main): Likewise. - * internal-fn.def (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro - for math functions that have _Float and _FloatX variants. - (SQRT): Add support for sqrt, copysign, fmin and fmax _Float - and _FloatX variants. - (COPYSIGN): Likewise. - (FMIN): Likewise. - (FMAX): Likewise. - * fold-const.c (tree_call_nonnegative_warnv_p): Add support for - copysign, fma, fmax, fmin, and sqrt _Float and _FloatX - variants. - (integer_valued_read_call_p): Likewise. - * fold-const-call.c (fold_const_call_ss): Likewise. - (fold_const_call_sss): Add support for copysign, fmin, and fmax - _Float and _FloatX variants. - (fold_const_call_ssss): Add support for fma _Float and - _FloatX variants. - * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Add - support for copysign and fma _Float and _FloatX variants. - (backprop::process_builtin_call_use): Likewise. - * tree-call-cdce.c (can_test_argument_range); Add support for - sqrt _Float and _FloatX variants. - (edom_only_function): Likewise. - (get_no_error_domain): Likewise. - * tree-ssa-math-opts.c (internal_fn_reciprocal): Likewise. - * tree-ssa-reassoc.c (attempt_builtin_copysign): Add support for - copysign _Float and _FloatX variants. - * config/rs6000/rs6000-builtin.def (SQRTF128): Delete, this is now - handled by machine independent code. - (FMAF128): Likewise. - * doc/cpp.texi (Common Predefined Macros): Document defining - __FP_FAST_FMAF and __FP_FAST_FMAFX if the backend supports - fma _Float and _FloatX variants. - -2017-10-27 Uros Bizjak - - PR target/82692 - * config/i386/i386-modes.def (CCFPU): Remove definition. - * config/i386/i386.c (put_condition_mode): Remove CCFPU mode handling. - (ix86_cc_modes_compatible): Ditto. - (ix86_expand_carry_flag_compare): Ditto. - (ix86_expand_int_movcc): Ditto. - (ix86_expand_int_addcc): Ditto. - (ix86_reverse_condition): Ditto. - (ix86_unordered_fp_compare): Rename from ix86_fp_compare_mode. - Return true/false for unordered/ordered fp comparisons. - (ix86_cc_mode): Always return CCFPmode for float mode comparisons. - (ix86_prepare_fp_compare_args): Update for rename. - (ix86_expand_fp_compare): Update for rename. Generate unordered - compare RTXes wrapped with UNSPEC_NOTRAP unspec. - (ix86_expand_sse_compare_and_jump): Ditto. - * config/i386/predicates.md (fcmov_comparison_operator): - Remove CCFPU mode handling. - (ix86_comparison_operator): Ditto. - (ix86_carry_flag_operator): Ditto. - * config/i386/i386.md (UNSPEC_NOTRAP): New unspec. - (*cmpu_i387): Wrap compare RTX with UNSPEC_NOTRAP unspec. - (*cmpu_cc_i387): Ditto. - (FPCMP): Remove mode iterator. - (unord): Remove mode attribute. - (unord_subst): New define_subst transformation - (unord): New define_subst attribute. - (unordered): Ditto. - (*cmpi): Rewrite using unord_subst transformation. - (*cmpixf_i387): Ditto. - * config/i386/sse.md (_comi): Merge - from _comi and _ucomi - using unord_subst transformation. - * config/i386/subst.md (SUBST_A): Remove CCFP and CCFPU modes. - (round_saeonly): Also handle CCFP mode. - * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_NOTRAP unspec. - Remove UNSPEC_SAHF unspec handling. - -2017-10-27 Jan Hubicka - - * x86-tune.def (X86_TUNE_INTER_UNIT_MOVES_TO_VEC): Disable for Zen. - -2017-10-27 Jeff Law - - * gimple-ssa-sprintf.c: Include domwalk.h. - (class sprintf_dom_walker): New class, derived from dom_walker. - (sprintf_dom_walker::before_dom_children): New function. - (struct call_info): Moved into sprintf_dom_walker class - (compute_formath_length, handle_gimple_call): Likewise. - (sprintf_length::execute): Call the dominator walker rather - than walking the statements. - - * tree-vrp.c (check_all_array_refs): Do not use wi->info to smuggle - gimple statement locations. - (check_array_bounds): Corresponding changes. Get the statement's - location directly from wi->stmt. - -2017-10-27 Palmer Dabbelt - - PR target/82717 - * doc/invoke.texi (RISC-V) <-mabi>: Correct and improve. - -2017-10-27 Jan Hubicka - - * config/i386/x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY, - X86_TUNE_MOVX): Disable for Haswell and newer CPUs. - -2017-10-27 Jakub Jelinek - - PR target/82703 - * config/i386/i386-protos.h (maybe_get_pool_constant): Removed. - * config/i386/i386.c (maybe_get_pool_constant): Removed. - (ix86_split_to_parts): Use avoid_constant_pool_reference instead of - maybe_get_pool_constant. - * config/i386/predicates.md (zero_extended_scalar_load_operand): - Likewise. - -2017-10-27 Rainer Orth - - * doc/install.texi (Specific, i?86-*-solaris2.10): Simplify gas - 2.26 caveat. Update gas and gld versions. - (Specific, *-*-solaris2*): Update binutils version. Remove caveat - reference. - -2017-10-27 Prathamesh Kulkarni - - * cgraph.h (set_malloc_flag): Declare. - * cgraph.c (set_malloc_flag_1): New function. - (set_malloc_flag): Likewise. - * ipa-fnsummary.h (ipa_call_summary): Add new field is_return_callee. - * ipa-fnsummary.c (ipa_call_summary::reset): Set is_return_callee to - false. - (read_ipa_call_summary): Add support for reading is_return_callee. - (write_ipa_call_summary): Stream is_return_callee. - * ipa-inline.c (ipa_inline): Remove call to ipa_free_fn_summary. - * ipa-pure-const.c: Add headers ssa.h, alloc-pool.h, symbol-summary.h, - ipa-prop.h, ipa-fnsummary.h. - (pure_const_names): Change to static. - (malloc_state_e): Define. - (malloc_state_names): Define. - (funct_state_d): Add field malloc_state. - (varying_state): Set malloc_state to STATE_MALLOC_BOTTOM. - (check_retval_uses): New function. - (malloc_candidate_p): Likewise. - (analyze_function): Add support for malloc attribute. - (pure_const_write_summary): Stream malloc_state. - (pure_const_read_summary): Add support for reading malloc_state. - (dump_malloc_lattice): New function. - (propagate_malloc): New function. - (warn_function_malloc): New function. - (ipa_pure_const::execute): Call propagate_malloc and - ipa_free_fn_summary. - (pass_local_pure_const::execute): Add support for malloc attribute. - * ssa-iterators.h (RETURN_FROM_IMM_USE_STMT): New macro. - * doc/invoke.texi: Document Wsuggest-attribute=malloc. - -2017-10-27 Martin Liska - - PR gcov-profile/82457 - * doc/invoke.texi: Document that one needs a non-strict ISO mode - for fork-like functions to be properly instrumented. - -2017-10-27 Richard Biener - - PR middle-end/81659 - * tree-eh.c (pass_lower_eh_dispatch::execute): Free dominator - info when we redirected EH. - -2017-10-26 Michael Collison - - * config/aarch64/aarch64.md(_trunc>2): - New pattern. - (_trunchf2: New pattern. - (_trunc2: New pattern. - * config/aarch64/iterators.md (wv): New mode attribute. - (vf, VF): New mode attributes. - (vgp, VGP): New mode attributes. - (s): Update attribute with SImode and DImode prefixes. - -2017-10-26 Sandra Loosemore - - * config/nios2/constraints.md ("S"): Match r0rel_constant_p too. - * config/nios2/nios2-protos.h (r0rel_constant_p): Declare. - * config/nios2/nios2.c: (nios2_r0rel_sec_regex): New. - (nios2_option_overide): Initialize it. Don't allow R0-relative - addressing with PIC. - (nios2_rtx_costs): Handle r0rel_constant_p like gprel_constant_p. - (nios2_symbolic_constant_p): Likewise. - (nios2_legitimate_address_p): Likewise. - (nios2_r0rel_section_name_p): New. - (nios2_symbol_ref_in_r0rel_data_p): New. - (nios2_emit_move_sequence): Handle r0rel_constant_p. - (r0rel_constant_p): New. - (nios2_print_operand_address): Handle r0rel_constant_p. - (nios2_cdx_narrow_form_p): Likewise. - * config/nios2/nios2.opt (mr0rel-sec=): New option. - * doc/invoke.texi (Option Summary): Add -mr0rel-sec. - (Nios II Options): Document -mr0rel-sec. - -2017-10-26 Sandra Loosemore - - * config/nios2/nios2.c: Include xregex.h. - (nios2_gprel_sec_regex): New. - (nios2_option_overide): Initialize it. Don't allow GP-relative - addressing with PIC. - (nios2_small_section_name_p): Check for regex match. - * config/nios2/nios2.opt (mgprel-sec=): New option. - * doc/invoke.texi (Option Summary): Add -mgprel-sec. - (Nios II Options): Document -mgprel-sec. - -2017-10-26 Jim Wilson - - * doc/invoke.texi (-fdebug-prefix-map): Expand documentation. - -2017-10-26 Tom de Vries - - PR tree-optimization/82707 - * gimple.c (gimple_copy): Fix unsharing of - GIMPLE_OMP_{SINGLE,TARGET,TEAMS}. - -2017-10-26 Olga Makhotina - - * config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask, - _mm512_cmple_pd_mask, _mm512_cmplt_pd_mask, - _mm512_cmpneq_pd_mask, _mm512_cmpnle_pd_mask, - _mm512_cmpnlt_pd_mask, _mm512_cmpord_pd_mask, - _mm512_cmpunord_pd_mask, _mm512_mask_cmpeq_pd_mask, - _mm512_mask_cmple_pd_mask, _mm512_mask_cmplt_pd_mask, - _mm512_mask_cmpneq_pd_mask, _mm512_mask_cmpnle_pd_mask, - _mm512_mask_cmpnlt_pd_mask, _mm512_mask_cmpord_pd_mask, - _mm512_mask_cmpunord_pd_mask, _mm512_cmpeq_ps_mask, - _mm512_cmple_ps_mask, _mm512_cmplt_ps_mask, - _mm512_cmpneq_ps_mask, _mm512_cmpnle_ps_mask, - _mm512_cmpnlt_ps_mask, _mm512_cmpord_ps_mask, - _mm512_cmpunord_ps_mask, _mm512_mask_cmpeq_ps_mask, - _mm512_mask_cmple_ps_mask, _mm512_mask_cmplt_ps_mask, - _mm512_mask_cmpneq_ps_mask, _mm512_mask_cmpnle_ps_mask, - _mm512_mask_cmpnlt_ps_mask, _mm512_mask_cmpord_ps_mask, - _mm512_mask_cmpunord_ps_mask): New intrinsics. - -2017-10-26 Michael Meissner - - * config/rs6000/aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double - default to IBM. - * config/rs6000/darwin.h (TARGET_IEEEQUAD_DEFAULT): Likewise. - * config/rs6000/rs6000.opt (-mabi=ieeelongdouble): Move the - warning to rs6000.c. Remove the Undocumented flag, since it has - been documented. - (-mabi=ibmlongdouble): Likewise. - * config/rs6000/rs6000.c (TARGET_IEEEQUAD_DEFAULT): If it is not - already set, set the default format for long double. - (rs6000_debug_reg_global): Print whether long double is IBM or - IEEE. - (rs6000_option_override_internal): Rework setting long double - format. Only warn if the user is changing the long double default - and they did not use -Wno-psabi. - * doc/invoke.texi (PowerPC options): Update the documentation for - -mabi=ieeelongdouble and -mabi=ibmlongdouble. - -2017-10-26 Richard Sandiford - Alan Hayward - David Sherwood - - * rtl.h (wider_subreg_mode): New function. - * ira.h (ira_sort_regnos_for_alter_reg): Take a machine_mode * - rather than an unsigned int *. - * ira-color.c (regno_max_ref_width): Replace with... - (regno_max_ref_mode): ...this new variable. - (coalesced_pseudo_reg_slot_compare): Update accordingly. - Use wider_subreg_mode. - (ira_sort_regnos_for_alter_reg): Likewise. Take a machine_mode * - rather than an unsigned int *. - * lra-constraints.c (uses_hard_regs_p): Use wider_subreg_mode. - (process_alt_operands): Likewise. - (invariant_p): Likewise. - * lra-spills.c (assign_mem_slot): Likewise. - (add_pseudo_to_slot): Likewise. - * lra.c (collect_non_operand_hard_regs): Likewise. - (add_regs_to_insn_regno_info): Likewise. - * reload1.c (regno_max_ref_width): Replace with... - (regno_max_ref_mode): ...this new variable. - (reload): Update accordingly. Update call to - ira_sort_regnos_for_alter_reg. - (alter_reg): Update to use regno_max_ref_mode. Call wider_subreg_mode. - (init_eliminable_invariants): Update to use regno_max_ref_mode. - (scan_paradoxical_subregs): Likewise. - -2017-10-26 Wilco Dijkstra - - * config/aarch64/aarch64.h (EXIT_IGNORE_STACK): Set if alloca is used. - (aarch64_frame): Add emit_frame_chain boolean. - * config/aarch64/aarch64.c (aarch64_frame_pointer_required) - Move eh_return case to aarch64_layout_frame. - (aarch64_layout_frame): Initialize emit_frame_chain. - (aarch64_expand_prologue): Use emit_frame_chain. - -2017-10-26 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_layout_frame): - Ensure LR is always stored at the bottom of the callee-saves. - Remove rarely used frame layout which saves callee-saves at top of - frame, so the store of LR can be used as a valid probe in all cases. - -2017-10-26 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement): - Improve unaligned TImode/TFmode base/offset split. - -2017-10-26 Richard Sandiford - Alan Hayward - David Sherwood - - * caller-save.c (mark_referenced_regs): Use read_modify_subreg_p. - * combine.c (find_single_use_1): Likewise. - (expand_field_assignment): Likewise. - (move_deaths): Likewise. - * lra-constraints.c (simplify_operand_subreg): Likewise. - (curr_insn_transform): Likewise. - * lra.c (collect_non_operand_hard_regs): Likewise. - (add_regs_to_insn_regno_info): Likewise. - * rtlanal.c (reg_referenced_p): Likewise. - (covers_regno_no_parallel_p): Likewise. - -2017-10-26 Richard Sandiford - - * wide-int-print.cc (print_hex): Loop based on extract_uhwi. - Don't print any bits outside the precision of the value. - * wide-int.cc (test_printing): Add some new tests. - -2017-10-26 Rainer Orth - - * configure.ac (gcc_cv_as_ix86_xbrace_comment): Check if assembler - supports -xbrace_comment option. - * configure: Regenerate. - * config.in: Regenerate. - * config/i386/sol2.h (ASM_XBRACE_COMMENT_SPEC): Define. - (ASM_CPU_SPEC): Use it. - -2017-10-26 Richard Sandiford - - * target.def (static_rtx_alignment): New hook. - * targhooks.h (default_static_rtx_alignment): Declare. - * targhooks.c (default_static_rtx_alignment): New function. - * doc/tm.texi.in (TARGET_STATIC_RTX_ALIGNMENT): New hook. - * doc/tm.texi: Regenerate. - * varasm.c (force_const_mem): Use targetm.static_rtx_alignment - instead of targetm.constant_alignment. Remove call to - set_mem_attributes. - * config/cris/cris.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine. - (cris_preferred_mininum_alignment): New function, split out from... - (cris_constant_alignment): ...here. - (cris_static_rtx_alignment): New function. - * config/i386/i386.c (ix86_static_rtx_alignment): New function, - split out from... - (ix86_constant_alignment): ...here. - (TARGET_STATIC_RTX_ALIGNMENT): Redefine. - * config/mmix/mmix.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine. - (mmix_static_rtx_alignment): New function. - * config/spu/spu.c (spu_static_rtx_alignment): New function. - (TARGET_STATIC_RTX_ALIGNMENT): Redefine. - -2017-10-26 Tamar Christina - - PR target/81800 - * config/aarch64/aarch64.md (lrint2): - Add flag_trapping_math and flag_fp_int_builtin_inexact. - -2017-10-25 Palmer Dabbelt - - * config/riscv/riscv.md (ZERO_EXTEND_LOAD): Define. - * config/riscv/pic.md (local_pic_load): Rename to local_pic_load_s, - mark as a sign-extending load. - (local_pic_load_u): Define. - -2017-10-25 Eric Botcazou - - PR middle-end/82062 - * fold-const.c (operand_equal_for_comparison_p): Also return true - if ARG0 is a simple variant of ARG1 with narrower precision. - (fold_ternary_loc): Always pass unstripped operands to the predicate. - -2017-10-25 Jan Hubicka - - * i386.c (ix86_builtin_vectorization_cost): Compute scatter/gather - cost correctly. - * i386.h (processor_costs): Add gather_static, gather_per_elt, - scatter_static, scatter_per_elt. - * x86-tune-costs.h: Add new cost entries. - -2017-10-25 Richard Biener - - * tree-ssa-sccvn.h (vn_eliminate): Declare. - * tree-ssa-pre.c (class eliminate_dom_walker, eliminate, - class pass_fre): Move to ... - * tree-ssa-sccvn.c (class eliminate_dom_walker, vn_eliminate, - class pass_fre): ... here and adjust for statistics. - -2017-10-25 Jakub Jelinek - - PR libstdc++/81706 - * attribs.c (attribute_value_equal): Use omp_declare_simd_clauses_equal - for comparison of OMP_CLAUSEs regardless of flag_openmp{,_simd}. - (duplicate_one_attribute, copy_attributes_to_builtin): New functions. - * attribs.h (duplicate_one_attribute, copy_attributes_to_builtin): New - declarations. - -2017-10-25 Richard Biener - - * tree-ssa-pre.c (need_eh_cleanup, need_ab_cleanup, el_to_remove, - el_to_fixup, el_todo, el_avail, el_avail_stack, eliminate_avail, - eliminate_push_avail, eliminate_insert): Move inside... - (class eliminate_dom_walker): ... this class in preparation - of move. - (fini_eliminate): Remove by merging with ... - (eliminate): ... this function. Adjust for class changes. - (pass_pre::execute): Remove fini_eliminate call. - (pass_fre::execute): Likewise. - -2017-10-24 Jakub Jelinek - - PR target/82460 - * config/i386/sse.md (UNSPEC_VPERMI2, UNSPEC_VPERMI2_MASK): Remove. - (VPERMI2, VPERMI2I): New mode iterators. - (_vpermi2var3_maskz): Remove 3 define_expand patterns. - (_vpermi2var3): Remove 3 define_insn - patterns. - (_vpermi2var3_mask): New define_expand using VPERMI2 - mode iterator. Remove 3 old define_insn patterns. - (*_vpermi2var3_mask): 2 new define_insn patterns. - (_vpermt2var3_maskz): Adjust 1 define_expand to use - VPERMI2 mode iterator, remove the other two expanders. - (_vpermt2var3): Adjust 1 define_insn - to use VPERMI2 mode iterator, add another alternative for vpermi2* - instructions, remove the other two patterns. - (_vpermt2var3_mask): Adjust 1 define_insn to use VPERMI2 - mode iterator, remove the other two patterns. - * config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Renamed to ... - (ix86_expand_vec_perm_vpermt2): ... this. Swap mask and op0 - arguments, use gen_*vpermt2* expanders instead of gen_*vpermi2* - and adjust argument order accordingly. - (ix86_expand_vec_perm): Adjust caller. - (expand_vec_perm_1): Likewise. - (expand_vec_perm_vpermi2_vpshub2): Rename to ... - (expand_vec_perm_vpermt2_vpshub2): ... this. - (ix86_expand_vec_perm_const_1): Adjust caller. - (ix86_vectorize_vec_perm_const_ok): Adjust comments. - - PR target/82370 - * config/i386/sse.md (VIMAX_AVX2): Remove V4TImode. - (VIMAX_AVX2_AVX512BW, VIMAX_AVX512VL): New mode iterators. - (vec_shl_): Remove unused expander. - (avx512bw_3): New define_insn. - (_ashl3, _lshr3): Replaced by ... - (_3): ... this. New define_insn. - -2017-10-24 Paolo Carlini - - PR c++/82466 - * doc/invoke.texi ([Wbuiltin-declaration-mismatch]): Extend - description. - -2017-10-24 Wilco Dijkstra - - PR rtl-optimization/82396 - * gcc/haifa-sched.c (ready_sort_real): Remove qsort workaround. - (autopref_multipass_init): Simplify initialization. - (autopref_rank_data): Simplify sort order. - * gcc/sched-int.h (autopref_multipass_data_): Remove - multi_mem_insn_p, min_offset and max_offset. - -2017-10-24 Wilco Dijkstra - - PR middle-end/60580 - * config/aarch64/aarch64.c (aarch64_frame_pointer_required) - Check special value of flag_omit_frame_pointer. - (aarch64_can_eliminate): Likewise. - (aarch64_override_options_after_change_1): Simplify handling of - -fomit-frame-pointer and -fomit-leaf-frame-pointer. - -2017-10-24 Richard Biener - - PR tree-optimization/82697 - * tree-ssa-phiopt.c (cond_store_replacement): Use alias-set - zero for conditional load and unconditional store. - -2017-10-24 H.J. Lu - - * doc/install.texi: Document bootstrap-cet. - -2017-10-24 H.J. Lu - - PR target/82659 - * config/i386/i386.c (rest_of_insert_endbranch): Don't insert - ENDBR instruction at function entrance if function is only - called directly. - -2017-10-24 Jakub Jelinek - - PR target/82628 - * config/i386/i386.md (addcarry, subborrow): Change - patterns to better describe from which operation the CF is computed. - (addcarry_0, subborrow_0): New patterns. - * config/i386/i386.c (ix86_expand_builtin) : Pass - one LTU with [DT]Imode and another one with [SD]Imode. If arg0 - is 0, use _0 suffixed expanders instead of emitting a comparison - before it. - -2017-10-06 Sergey Shalnov - - * config/i386/i386.md(*movsf_internal, *movdf_internal): - Avoid 512-bit AVX modes for TARGET_PREFER_AVX256. - -2017-10-24 Eric Botcazou - - PR middle-end/82569 - * tree-outof-ssa.h (always_initialized_rtx_for_ssa_name_p): Delete. - * expr.c (expand_expr_real_1) : Revert latest change. - * loop-iv.c (iv_get_reaching_def): Likewise. - * cfgexpand.c (expand_one_ssa_partition): Initialize the RTX if the - variable is promoted and the partition contains undefined values. - -2017-10-23 Sandra Loosemore - - * config/nios2/nios2.c (nios2_rtx_costs): Make costs better - reflect reality. - (nios2_address_cost): Define. - (nios2_legitimize_address): Recognize (exp + constant) directly. - (TARGET_ADDRESS_COST): Define. - -2017-10-23 Sandra Loosemore - - * config/nios2/nios2-protos.h (nios2_large_constant_p): Declare. - (nios2_symbolic_memory_operand_p): Declare. - (nios2_split_large_constant): Declare. - (nios2_split_symbolic_memory_operand): Declare. - * config/nios2/nios2.c: Adjust includes. - (nios2_symbolic_constant_allowed): New. - (nios2_symbolic_constant_p): New. - (nios2_plus_symbolic_constant_p): New. - (nios2_valid_addr_expr_p): Recognize addresses involving - symbolic constants. - (nios2_legitimate_address_p): Likewise, also LO_SUM. - (nios2_symbolic_memory_operand_p): New. - (nios2_large_constant_p): New. - (nios2_split_large_constant): New. - (nios2_split_plus_large_constant): New. - (nios2_split_symbolic_memory_operand): New. - (nios2_legitimize_address): Code refactoring. Handle addresses - involving symbolic constants. - (nios2_emit_move_sequence): Likewise. - (nios2_print_operand): Improve error output. - (nios2_print_operand_address): Handle LO_SUM. - (nios2_cdx_narrow_form_p): Likewise. - * config/nios2/nios2.md (movqi_internal): Add splitter for memory - operands involving symbolic constants. - (movhi_internal, movsi_internal): Likewise. - (zero_extendhisi2, zero_extendqi2): Likewise. - (extendhisi2, extendqi2): Likewise. - -2017-10-23 Sandra Loosemore - - * tree-pass.h (PROP_rtl_split_insns): Define. - * recog.c (pass_data_split_all_insns): Provide PROP_rtl_split_insns. - -2017-10-23 Sandra Loosemore - - * config/nios2/nios2.c (TARGET_LRA_P): Don't override. - -2017-10-23 Jakub Jelinek - - PR debug/82630 - * target.def (const_not_ok_for_debug_p): Default to - default_const_not_ok_for_debug_p instead of hook_bool_rtx_false. - * targhooks.h (default_const_not_ok_for_debug_p): New declaration. - * targhooks.c (default_const_not_ok_for_debug_p): New function. - * dwarf2out.c (const_ok_for_output_1): Only reject UNSPECs for - which targetm.const_not_ok_for_debug_p returned true. - * config/arm/arm.c (arm_const_not_ok_for_debug_p): Return true - for UNSPECs. - * config/powerpcspe/powerpcspe.c (rs6000_const_not_ok_for_debug_p): - Likewise. - * config/rs6000/rs6000.c (rs6000_const_not_ok_for_debug_p): Likewise. - * config/i386/i386.c (ix86_delegitimize_address_1): Don't delegitimize - UNSPEC_GOTOFF with addend into addend - _GLOBAL_OFFSET_TABLE_ + symbol - if !base_term_p. - (ix86_const_not_ok_for_debug_p): New function. - (i386_asm_output_addr_const_extra): Handle UNSPEC_GOTOFF. - (TARGET_CONST_NOT_OK_FOR_DEBUG_P): Redefine. - -2017-10-23 David Malcolm - - PR bootstrap/82610 - * system.h: Conditionally include "unique-ptr.h" if - INCLUDE_UNIQUE_PTR is defined. - * unique-ptr-tests.cc: Remove include of "unique-ptr.h" in favor - of defining INCLUDE_UNIQUE_PTR before including "system.h". - -2017-10-23 Sebastian Perta - - * config/rl78/rl78.md: New define_expand "subdi3". - -2017-10-23 H.J. Lu - - PR target/82673 - * config/i386/i386.c (ix86_finalize_stack_frame_flags): Skip - DF_REF_INSN if DF_REF_INSN_INFO is false. - -2017-10-23 Jan Hubicka - - * i386.c (dimode_scalar_chain::compute_convert_gain): Use - xmm_move instead of sse_move. - (sse_store_index): New function. - (ix86_register_move_cost): Be more sensible about mismatch stall; - model AVX moves correctly; make difference between sse->integer and - integer->sse. - (ix86_builtin_vectorization_cost): Model correctly aligned and unaligned - moves; make difference between SSE and AVX. - * i386.h (processor_costs): Remove sse_move; add xmm_move, ymm_move - and zmm_move. Increase size of sse load and store tables; - add unaligned load and store tables; add ssemmx_to_integer. - * x86-tune-costs.h: Update all entries according to real - move latencies from Agner Fog's manual and chip documentation. - -2017-10-23 Jakub Jelinek - - PR target/82628 - * config/i386/predicates.md (x86_64_dwzext_immediate_operand): New. - * config/i386/constraints.md (Wf): New constraint. - * config/i386/i386.md (UNSPEC_SBB): New unspec. - (cmp_doubleword): Removed. - (sub3_carry_ccc, *sub3_carry_ccc_1): New patterns. - (sub3_carry_ccgz): Use unspec instead of compare. - * config/i386/i386.c (ix86_expand_branch) : Don't - expand with cmp_doubleword. For LTU and GEU use - sub3_carry_ccc instead of sub3_carry_ccgz and use CCCmode. - - * common.opt (gcolumn-info): Enable by default. - * doc/invoke.texi (gcolumn-info): Document new default. - -2017-10-23 Richard Biener - - PR tree-optimization/82672 - * graphite-isl-ast-to-gimple.c (graphite_copy_stmts_from_block): - Fold the stmt if we propagated into it. - -2017-10-23 Richard Biener - - * tree-ssa-pre.c (bitmap_remove_from_set): Rename to... - (bitmap_remove_expr_from_set): ... this. All callers call this - for non-constant values. - (bitmap_set_subtract): Rename to... - (bitmap_set_subtract_expressions): ... this. Adjust and - optimize. - (bitmap_set_contains_value): Remove superfluous check. - (bitmap_set_replace_value): Inline into single caller ... - (bitmap_value_replace_in_set): ... here and simplify. - (dependent_clean): Merge into ... - (clean): ... this using an overload. Adjust. - (prune_clobbered_mems): Adjust. - (compute_antic_aux): Likewise. - (compute_partial_antic_aux): Likewise. - -2017-10-23 Richard Biener - - PR tree-optimization/82129 - Revert - 2017-08-01 Richard Biener - - PR tree-optimization/81181 - * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ... - (compute_antic): ... end of iteration here. - -2017-10-23 Richard Sandiford - - * target.def (starting_frame_offset): New hook. - * doc/tm.texi (STARTING_FRAME_OFFSET): Remove in favor of... - (TARGET_STARTING_FRAME_OFFSET): ...this new hook. - * doc/tm.texi.in: Regenerate. - * hooks.h (hook_hwi_void_0): Declare. - * hooks.c (hook_hwi_void_0): New function. - * doc/rtl.texi: Refer to TARGET_STARTING_FRAME_OFFSET instead of - STARTING_FRAME_OFFSET. - * builtins.c (expand_builtin_setjmp_receiver): Likewise. - * reload1.c (reload): Likewise. - * cfgexpand.c (expand_used_vars): Use targetm.starting_frame_offset - instead of STARTING_FRAME_OFFSET. - * function.c (try_fit_stack_local): Likewise. - (assign_stack_local_1): Likewise - (instantiate_virtual_regs): Likewise. - * rtlanal.c (rtx_addr_can_trap_p_1): Likewise. - * config/avr/avr.md (nonlocal_goto_receiver): Likewise. - * config/aarch64/aarch64.h (STARTING_FRAME_OFFSET): Delete. - * config/alpha/alpha.h (STARTING_FRAME_OFFSET): Likewise. - * config/arc/arc.h (STARTING_FRAME_OFFSET): Likewise. - * config/arm/arm.h (STARTING_FRAME_OFFSET): Likewise. - * config/bfin/bfin.h (STARTING_FRAME_OFFSET): Likewise. - * config/c6x/c6x.h (STARTING_FRAME_OFFSET): Likewise. - * config/cr16/cr16.h (STARTING_FRAME_OFFSET): Likewise. - * config/cris/cris.h (STARTING_FRAME_OFFSET): Likewise. - * config/fr30/fr30.h (STARTING_FRAME_OFFSET): Likewise. - * config/frv/frv.h (STARTING_FRAME_OFFSET): Likewise. - * config/ft32/ft32.h (STARTING_FRAME_OFFSET): Likewise. - * config/h8300/h8300.h (STARTING_FRAME_OFFSET): Likewise. - * config/i386/i386.h (STARTING_FRAME_OFFSET): Likewise. - * config/ia64/ia64.h (STARTING_FRAME_OFFSET): Likewise. - * config/m32c/m32c.h (STARTING_FRAME_OFFSET): Likewise. - * config/m68k/m68k.h (STARTING_FRAME_OFFSET): Likewise. - * config/mcore/mcore.h (STARTING_FRAME_OFFSET): Likewise. - * config/mn10300/mn10300.h (STARTING_FRAME_OFFSET): Likewise. - * config/moxie/moxie.h (STARTING_FRAME_OFFSET): Likewise. - * config/msp430/msp430.h (STARTING_FRAME_OFFSET): Likewise. - * config/nds32/nds32.h (STARTING_FRAME_OFFSET): Likewise. - * config/nios2/nios2.h (STARTING_FRAME_OFFSET): Likewise. - * config/nvptx/nvptx.h (STARTING_FRAME_OFFSET): Likewise. - * config/pdp11/pdp11.h (STARTING_FRAME_OFFSET): Likewise. - * config/riscv/riscv.h (STARTING_FRAME_OFFSET): Likewise. - * config/rl78/rl78.h (STARTING_FRAME_OFFSET): Likewise. - * config/rx/rx.h (STARTING_FRAME_OFFSET): Likewise. - * config/s390/s390.h (STARTING_FRAME_OFFSET): Likewise. - * config/sh/sh.h (STARTING_FRAME_OFFSET): Likewise. - * config/sparc/sparc.c (sparc_compute_frame_size): Likewise. - * config/sparc/sparc.h (STARTING_FRAME_OFFSET): Likewise. - * config/spu/spu.h (STARTING_FRAME_OFFSET): Likewise. - * config/stormy16/stormy16.h (STARTING_FRAME_OFFSET): Likewise. - * config/tilegx/tilegx.h (STARTING_FRAME_OFFSET): Likewise. - * config/tilepro/tilepro.h (STARTING_FRAME_OFFSET): Likewise. - * config/v850/v850.h (STARTING_FRAME_OFFSET): Likewise. - * config/visium/visium.h (STARTING_FRAME_OFFSET): Likewise. - * config/avr/avr.h (STARTING_FRAME_OFFSET): Likewise. - * config/avr/avr-protos.h (avr_starting_frame_offset): Likewise. - * config/avr/avr.c (avr_starting_frame_offset): Make static and - return a HOST_WIDE_INT. - (avr_builtin_setjmp_frame_value): Use it instead of - STARTING_FRAME_OFFSET. - (TARGET_STARTING_FRAME_OFFSET): Redefine. - * config/epiphany/epiphany.h (STARTING_FRAME_OFFSET): Delete. - * config/epiphany/epiphany.c (epiphany_starting_frame_offset): - New function. - (TARGET_STARTING_FRAME_OFFSET): Redefine. - * config/iq2000/iq2000.h (STARTING_FRAME_OFFSET): Delete. - * config/iq2000/iq2000.c (iq2000_starting_frame_offset): New function. - (TARGET_CONSTANT_ALIGNMENT): Redefine. - * config/lm32/lm32.h (STARTING_FRAME_OFFSET): Delete. - * config/lm32/lm32.c (lm32_starting_frame_offset): New function. - (TARGET_STARTING_FRAME_OFFSET): Redefine. - * config/m32r/m32r.h (STARTING_FRAME_OFFSET): Delete. - * config/m32r/m32r.c (m32r_starting_frame_offset): New function. - (TARGET_STARTING_FRAME_OFFSET): Redefine. - * config/microblaze/microblaze.h (STARTING_FRAME_OFFSET): Delete. - * config/microblaze/microblaze.c (microblaze_starting_frame_offset): - New function. - (TARGET_STARTING_FRAME_OFFSET): Redefine. - * config/mips/mips.h (STARTING_FRAME_OFFSET): Delete. - * config/mips/mips.c (mips_compute_frame_info): Refer to - TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET. - (mips_starting_frame_offset): New function. - (TARGET_STARTING_FRAME_OFFSET): Redefine. - * config/mmix/mmix.h (STARTING_FRAME_OFFSET): Delete. - * config/mmix/mmix-protos.h (mmix_starting_frame_offset): Delete. - * config/mmix/mmix.c (mmix_starting_frame_offset): Make static - and return a HOST_WIDE_INT. - (TARGET_STARTING_FRAME_OFFSET): Redefine. - (mmix_initial_elimination_offset): Refer to - TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET. - * config/pa/pa.h (STARTING_FRAME_OFFSET): Delete. - * config/pa/pa.c (pa_starting_frame_offset): New function. - (pa_compute_frame_size): Use it instead of STARTING_FRAME_OFFSET. - (pa_expand_prologue): Likewise. - (TARGET_STARTING_FRAME_OFFSET): Redefine. - * config/powerpcspe/aix.h (STARTING_FRAME_OFFSET): Split out - !FRAME_GROWS_DOWNWARD handling to... - (RS6000_STARTING_FRAME_OFFSET): ...this new macro. - * config/powerpcspe/darwin.h (STARTING_FRAME_OFFSET): Split out - !FRAME_GROWS_DOWNWARD handling to... - (RS6000_STARTING_FRAME_OFFSET): ...this new macro. - * config/powerpcspe/powerpcspe.h (STARTING_FRAME_OFFSET): Split out - !FRAME_GROWS_DOWNWARD handling to... - (RS6000_STARTING_FRAME_OFFSET): ...this new macro. - * config/powerpcspe/powerpcspe.c (TARGET_STARTING_FRAME_OFFSET): - Redefine. - (rs6000_starting_frame_offset): New function. - * config/rs6000/aix.h (STARTING_FRAME_OFFSET): Split out - !FRAME_GROWS_DOWNWARD handling to... - (RS6000_STARTING_FRAME_OFFSET): ...this new macro. - * config/rs6000/darwin.h (STARTING_FRAME_OFFSET): Split out - !FRAME_GROWS_DOWNWARD handling to... - (RS6000_STARTING_FRAME_OFFSET): ...this new macro. - * config/rs6000/rs6000.h (STARTING_FRAME_OFFSET): Split out - !FRAME_GROWS_DOWNWARD handling to... - (RS6000_STARTING_FRAME_OFFSET): ...this new macro. - * config/rs6000/rs6000.c (TARGET_STARTING_FRAME_OFFSET): Refine. - (rs6000_starting_frame_offset): New function. - * config/vax/elf.h (STARTING_FRAME_OFFSET): Delete. - * config/vax/vax.h (STARTING_FRAME_OFFSET): Delete. - * config/vax/vax.c (vax_starting_frame_offset): New function. - (vax_expand_prologue): Use it instead of STARTING_FRAME_OFFSET. - (TARGET_STARTING_FRAME_OFFSET): Redefine. - * config/xtensa/xtensa.h (STARTING_FRAME_OFFSET): Delete. - * config/xtensa/xtensa.c (xtensa_starting_frame_offset): New function. - (TARGET_STARTING_FRAME_OFFSET): Redefine. - * system.h (STARTING_FRAME_OFFSET): Poison. - -2017-10-23 Richard Sandiford - - * tree-vect-loop.c (vect_create_epilog_for_reduction): Use - SCALAR_TYPE_MODE instead of TYPE_MODE. - -2017-10-23 Richard Sandiford - Alan Hayward - David Sherwood - - * dwarf2out.c (loc_list_from_tree_1): Use SCALAR_INT_TYPE_MODE - -2017-10-23 Richard Sandiford - Alan Hayward - David Sherwood - - * expmed.c (expand_shift_1): Use scalar_mode for scalar_mode. - -2017-10-23 Richard Biener - - PR tree-optimization/82129 - * tree-ssa-pre.c (bitmap_set_and): Remove. - (compute_antic_aux): Compute ANTIC_OUT intersection in a way - canonicalizing expressions in the set to those with lowest - ID rather than taking that from the first edge. - -2017-10-23 Richard Sandiford - - * combine.c (rtx_equal_for_field_assignment_p): Use - byte_lowpart_offset. - -2017-10-22 Richard Sandiford - Alan Hayward - David Sherwood - - * internal-fn.c (expand_direct_optab_fn): Don't assign directly - to a SUBREG_PROMOTED_VAR. - -2017-10-22 Richard Sandiford - Alan Hayward - David Sherwood - - * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_PRECISION. - (expand_debug_source_expr): Likewise. - * combine.c (combine_simplify_rtx): Likewise. - * cse.c (fold_rtx): Likewise. - * optabs.c (expand_float): Likewise. - * simplify-rtx.c (simplify_unary_operation_1): Likewise. - (simplify_binary_operation_1): Likewise. - -2017-10-22 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (simplify_comparison): Use HWI_COMPUTABLE_MODE_P. - (record_promoted_value): Likewise. - * expr.c (expand_expr_real_2): Likewise. - * ree.c (update_reg_equal_equiv_notes): Likewise. - (combine_set_extension): Likewise. - * rtlanal.c (low_bitmask_len): Likewise. - * simplify-rtx.c (neg_const_int): Likewise. - (simplify_binary_operation_1): Likewise. - -2017-10-22 Richard Sandiford - Alan Hayward - David Sherwood - - * lra-spills.c (assign_mem_slot): Use subreg_size_lowpart_offset. - * regcprop.c (maybe_mode_change): Likewise. - * reload1.c (alter_reg): Likewise. - -2017-10-22 Richard Sandiford - - * inchash.h (inchash::hash::add_wide_int): New function. - * lto-streamer-out.c (hash_tree): Use it. - -2017-10-22 Richard Sandiford - - * inchash.h (inchash::hash::add_wide_int): Rename to... - (inchash::hash::add_hwi): ...this. - * ipa-devirt.c (hash_odr_vtable): Update accordingly. - (polymorphic_call_target_hasher::hash): Likewise. - * ipa-icf.c (sem_function::get_hash, sem_function::init): Likewise. - (sem_item::add_expr, sem_item::add_type, sem_variable::get_hash) - (sem_item_optimizer::update_hash_by_addr_refs): Likewise. - * lto-streamer-out.c (hash_tree): Likewise. - * optc-save-gen.awk: Likewise. - * tree.c (add_expr): Likewise. - -2017-10-22 Uros Bizjak - - PR target/52451 - * config/i386/i386.c (ix86_fp_compare_mode): Return CCFPmode - for ordered inequality comparisons even with TARGET_IEEE_FP. - -2017-10-22 Uros Bizjak - - PR target/82628 - * config/i386/i386.md (cmp_doubleword): New pattern. - * config/i386/i386.c (ix86_expand_branch) : - Expand with cmp_doubleword. - -2017-10-21 Igor Tsimbalist - - * extend.texi: Add x86 specific to 'nocf_check' attribute. - List CET intrinsics. - * invoke.texi: Add -mcet, -mibt, -mshstk options. Add x86 - specific to -fcf-protection option. - -2017-10-21 Igor Tsimbalist - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET): New. - (OPTION_MASK_ISA_SHSTK_SET): Likewise. - (OPTION_MASK_ISA_IBT_UNSET): Likewise. - (OPTION_MASK_ISA_SHSTK_UNSET): Likewise. - (ix86_handle_option): Add -mibt, -mshstk, -mcet handling. - * config.gcc (extra_headers): Add cetintrin.h for x86 targets. - (extra_objs): Add cet.o for Linux/x86 targets. - (tmake_file): Add i386/t-cet for Linux/x86 targets. - * config/i386/cet.c: New file. - * config/i386/cetintrin.h: Likewise. - * config/i386/t-cet: Likewise. - * config/i386/cpuid.h (bit_SHSTK): New. - (bit_IBT): Likewise. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect and - pass IBT and SHSTK bits. - * config/i386/i386-builtin-types.def - (VOID_FTYPE_UNSIGNED_PVOID): New. - (VOID_FTYPE_UINT64_PVOID): Likewise. - * config/i386/i386-builtin.def: Add CET intrinsics. - * config/i386/i386-c.c (ix86_target_macros_internal): Add - OPTION_MASK_ISA_IBT, OPTION_MASK_ISA_SHSTK handling. - * config/i386/i386-passes.def: Add pass_insert_endbranch pass. - * config/i386/i386-protos.h (make_pass_insert_endbranch): New - prototype. - * config/i386/i386.c (rest_of_insert_endbranch): New. - (pass_data_insert_endbranch): Likewise. - (pass_insert_endbranch): Likewise. - (make_pass_insert_endbranch): Likewise. - (ix86_notrack_prefixed_insn_p): Likewise. - (ix86_target_string): Add -mibt, -mshstk flags. - (ix86_option_override_internal): Add flag_cf_protection - processing. - (ix86_valid_target_attribute_inner_p): Set OPT_mibt, OPT_mshstk. - (ix86_print_operand): Add 'notrack' prefix output. - (ix86_init_mmx_sse_builtins): Add CET intrinsics. - (ix86_expand_builtin): Expand CET intrinsics. - (x86_output_mi_thunk): Add 'endbranch' instruction. - * config/i386/i386.h (TARGET_IBT): New. - (TARGET_IBT_P): Likewise. - (TARGET_SHSTK): Likewise. - (TARGET_SHSTK_P): Likewise. - * config/i386/i386.md (unspecv): Add UNSPECV_NOP_RDSSP, - UNSPECV_INCSSP, UNSPECV_SAVEPREVSSP, UNSPECV_RSTORSSP, - UNSPECV_WRSS, UNSPECV_WRUSS, UNSPECV_SETSSBSY, UNSPECV_CLRSSBSY. - (builtin_setjmp_setup): New pattern. - (builtin_longjmp): Likewise. - (rdssp): Likewise. - (incssp): Likewise. - (saveprevssp): Likewise. - (rstorssp): Likewise. - (wrss): Likewise. - (wruss): Likewise. - (setssbsy): Likewise. - (clrssbsy): Likewise. - (nop_endbr): Likewise. - * config/i386/i386.opt: Add -mcet, -mibt, -mshstk and -mcet-switch - options. - * config/i386/immintrin.h: Include . - * config/i386/linux-common.h - (file_end_indicate_exec_stack_and_cet): New prototype. - (TARGET_ASM_FILE_END): New. - -2017-10-20 Jan Hubicka - - * i386.c (ix86_builtin_vectorization_cost): Use existing rtx_cost - latencies instead of having separate table; make difference between - integer and float costs. - * i386.h (processor_costs): Remove scalar_stmt_cost, - scalar_load_cost, scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost, - scalar_to_vec_cost, vec_align_load_cost, vec_unalign_load_cost, - vec_store_cost. - * x86-tune-costs.h: Remove entries which has been removed in - procesor_costs from all tables; make cond_taken_branch_cost - and cond_not_taken_branch_cost COST_N_INSNS based. - -2017-10-20 Jan Hubicka - - * x86-tune-costs.h (intel_cost, generic_cost): Fix move costs. - -2017-10-20 Jakub Jelinek - - * config/i386/i386.md (isa): Remove fma_avx512f. - * config/i386/sse.md (_fmadd__mask, - _fmadd__mask3, - _fmsub__mask, - _fmsub__mask3, - _fnmadd__mask, - _fnmadd__mask3, - _fnmsub__mask, - _fnmsub__mask3, - _fmaddsub__mask, - _fmaddsub__mask3, - _fmsubadd__mask, - _fmsubadd__mask3): Remove isa attribute. - (*vec_widen_umult_even_v16si, - *vec_widen_smult_even_v16si): Likewise. - (avx512bw_dbpsadbw): Likewise. - -2017-10-20 Igor Tsimbalist - - * extend.texi: Add 'nocf_check' documentation. - * gimple.texi: Add second parameter to - gimple_build_call_from_tree. - * invoke.texi: Add -fcf-protection documentation. - * rtl.texi: Add REG_CALL_NOTRACK documenation. - -2017-10-20 Richard Biener - - PR tree-optimization/82473 - * tree-vect-loop.c (vectorizable_reduction): Properly get at - the largest input type. - -2017-10-20 Igor Tsimbalist - - * c-attribs.c (handle_nocf_check_attribute): New function. - (c_common_attribute_table): Add 'nocf_check' handling. - * gimple-parser.c: Add second argument NULL to - gimple_build_call_from_tree. - * attrib.c (comp_type_attributes): Check nocf_check attribute. - * cfgexpand.c (expand_call_stmt): Set REG_CALL_NOCF_CHECK for - call insn. - * combine.c (distribute_notes): Add REG_CALL_NOCF_CHECK handling. - * common.opt: Add fcf-protection flag. - * emit-rtl.c (try_split): Add REG_CALL_NOCF_CHECK handling. - * flag-types.h: Add enum cf_protection_level. - * gimple.c (gimple_build_call_from_tree): Add second parameter. - Add 'nocf_check' attribute propagation to gimple call. - * gimple.h (gf_mask): Add GF_CALL_NOCF_CHECK. - (gimple_build_call_from_tree): Update prototype. - (gimple_call_nocf_check_p): New function. - (gimple_call_set_nocf_check): Likewise. - * gimplify.c: Add second argument to gimple_build_call_from_tree. - * ipa-icf.c: Add nocf_check attribute in statement hash. - * recog.c (peep2_attempt): Add REG_CALL_NOCF_CHECK handling. - * reg-notes.def: Add REG_NOTE (CALL_NOCF_CHECK). - * toplev.c (process_options): Add flag_cf_protection handling. - -2017-10-19 Jan Hubicka - - * x86-tune-costs.h (core_cost): Fix div, move and sqrt latencies. - -2017-10-20 Richard Biener - - PR tree-optimization/82603 - * tree-if-conv.c (predicate_mem_writes): Make sure to only - remove false predicated stores. - -2017-10-20 Richard Biener - - * graphite-isl-ast-to-gimple.c - (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): - Remove return value and simplify, dump copied stmt after lhs - adjustment. - (translate_isl_ast_to_gimple::translate_isl_ast_node_user): - Reduce dump verbosity. - (gsi_insert_earliest): Likewise. - (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Adjust. - * graphite.c (print_global_statistics): Adjust dumping. - (print_graphite_scop_statistics): Likewise. - (print_graphite_statistics): Do not dump loops here. - (graphite_transform_loops): But here. - -2017-10-20 Nicolas Roche - - * configure.ac (ACX_PROG_GNAT): Append "libgnat" to include search dir. - * configure: Regenerate. - -2017-10-20 Jakub Jelinek - - PR target/82158 - * tree-cfg.c (pass_warn_function_return::execute): In noreturn - functions when optimizing replace GIMPLE_RETURN stmts with - calls to __builtin_unreachable (). - - PR sanitizer/82595 - * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Add libtsan_preinit.o - for -fsanitize=thread link of executables. - (LIBLSAN_EARLY_SPEC): Add liblsan_preinit.o for -fsanitize=leak - link of executables. - - PR target/82370 - * config/i386/sse.md (VI248_AVX2, VI248_AVX512BW, VI248_AVX512BW_2): - New mode iterators. - (3): Change the last of the 3 - define_insns for logical vector shifts to use VI248_AVX512BW - iterator instead of VI48_AVX512, remove - condition, useless isa and prefix attributes. Change the first - 2 of these define_insns to ... - (3): ... this, new - define_insn for avx512vl. - (3): ... and this, new define_insn without - masking for non-avx512vl. - - PR target/82370 - * config/i386/sse.md (*andnot3, - 3, *3): Split - (=v,v,vm) alternative into (=x,x,xm) and (=v,v,vm), for 128-bit - and 256-bit vectors, the (=x,x,xm) alternative and when mask is - not applied use empty suffix even for TARGET_AVX512VL. - * config/i386/subst.md (mask_prefix3, mask_prefix4): When mask - is applied, supply evex,evex or evex,evex,evex instead of just - evex. - -2017-10-20 Julia Koval - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_GFNI_SET, - (OPTION_MASK_ISA_GFNI_UNSET): New. - (ix86_handle_option): Handle OPT_mgfni. - * config/i386/cpuid.h (bit_GFNI): New. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect gfni. - * config/i386/i386-c.c (ix86_target_macros_internal): Define __GFNI__. - * config/i386/i386.c (ix86_target_string): Add -mgfni. - (ix86_valid_target_attribute_inner_p): Add OPT_mgfni. - * config/i386/i386.h (TARGET_GFNI, TARGET_GFNI_P): New. - * config/i386/i386.opt: Add mgfni. - -2017-10-20 Orlando Arias - - * config/msp430/msp430.c (msp430_option_override): Disable - -fdelete-null-pointer-checks. - * doc/invoke.text (-fdelete-null-pointer-checks): Document that. - -2017-10-19 Jan Hubicka - - * x86-tune-costs.h (generic_cost, core_cost): Correct costs - of x87 and SSE instructions. - -2017-10-19 Jan Hubicka - - * asan.c (create_cond_insert_point): Do not update edge count. - * auto-profile.c (afdo_propagate_edge): Update for edge count removal. - (afdo_propagate_circuit): Likewise. - (afdo_calculate_branch_prob): Likewise. - (afdo_annotate_cfg): Likewise. - * basic-block.h (struct edge_def): Remove count. - (edge_def::count): New accessor. - * bb-reorder.c (rotate_loop): Update. - (find_traces_1_round): Update. - (connect_traces): Update. - (sanitize_hot_paths): Update. - * cfg.c (unchecked_make_edge): Update. - (make_single_succ_edge): Update. - (check_bb_profile): Update. - (dump_edge_info): Update. - (update_bb_profile_for_threading): Update. - (scale_bbs_frequencies_int): Update. - (scale_bbs_frequencies_gcov_type): Update. - (scale_bbs_frequencies_profile_count): Update. - (scale_bbs_frequencies): Update. - * cfganal.c (connect_infinite_loops_to_exit): Update. - * cfgbuild.c (compute_outgoing_frequencies): Update. - (find_many_sub_basic_blocks): Update. - * cfgcleanup.c (try_forward_edges): Update. - (try_crossjump_to_edge): Update - * cfgexpand.c (expand_gimple_cond): Update - (expand_gimple_tailcall): Update - (construct_exit_block): Update - * cfghooks.c (verify_flow_info): Update - (redirect_edge_succ_nodup): Update - (split_edge): Update - (make_forwarder_block): Update - (duplicate_block): Update - (account_profile_record): Update - * cfgloop.c (find_subloop_latch_edge_by_profile): Update. - * cfgloopanal.c (expected_loop_iterations_unbounded): Update. - * cfgloopmanip.c (scale_loop_profile): Update. - (loopify): Update. - (lv_adjust_loop_entry_edge): Update. - * cfgrtl.c (try_redirect_by_replacing_jump): Update. - (force_nonfallthru_and_redirect): Update. - (purge_dead_edges): Update. - (rtl_flow_call_edges_add): Update. - * cgraphunit.c (init_lowered_empty_function): Update. - (cgraph_node::expand_thunk): Update. - * gimple-pretty-print.c (dump_probability): Update. - (dump_edge_probability): Update. - * gimple-ssa-isolate-paths.c (isolate_path): Update. - * haifa-sched.c (sched_create_recovery_edges): Update. - * hsa-gen.c (convert_switch_statements): Update. - * ifcvt.c (dead_or_predicable): Update. - * ipa-inline-transform.c (inline_transform): Update. - * ipa-split.c (split_function): Update. - * ipa-utils.c (ipa_merge_profiles): Update. - * loop-doloop.c (add_test): Update. - * loop-unroll.c (unroll_loop_runtime_iterations): Update. - * lto-streamer-in.c (input_cfg): Update. - (input_function): Update. - * lto-streamer-out.c (output_cfg): Update. - * modulo-sched.c (sms_schedule): Update. - * postreload-gcse.c (eliminate_partially_redundant_load): Update. - * predict.c (maybe_hot_edge_p): Update. - (unlikely_executed_edge_p): Update. - (probably_never_executed_edge_p): Update. - (dump_prediction): Update. - (drop_profile): Update. - (propagate_unlikely_bbs_forward): Update. - (determine_unlikely_bbs): Update. - (force_edge_cold): Update. - * profile.c (compute_branch_probabilities): Update. - * reg-stack.c (better_edge): Update. - * shrink-wrap.c (handle_simple_exit): Update. - * tracer.c (better_p): Update. - * trans-mem.c (expand_transaction): Update. - (split_bb_make_tm_edge): Update. - * tree-call-cdce.c: Update. - * tree-cfg.c (gimple_find_sub_bbs): Update. - (gimple_split_edge): Update. - (gimple_duplicate_sese_region): Update. - (gimple_duplicate_sese_tail): Update. - (gimple_flow_call_edges_add): Update. - (insert_cond_bb): Update. - (execute_fixup_cfg): Update. - * tree-cfgcleanup.c (cleanup_control_expr_graph): Update. - * tree-complex.c (expand_complex_div_wide): Update. - * tree-eh.c (lower_resx): Update. - (unsplit_eh): Update. - (cleanup_empty_eh_move_lp): Update. - * tree-inline.c (copy_edges_for_bb): Update. - (freqs_to_counts): Update. - (copy_cfg_body): Update. - * tree-ssa-dce.c (remove_dead_stmt): Update. - * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update. - * tree-ssa-loop-im.c (execute_sm_if_changed): Update. - * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update. - (unloop_loops): Update. - * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update. - * tree-ssa-loop-split.c (connect_loops): Update. - (split_loop): Update. - * tree-ssa-loop-unswitch.c (hoist_guard): Update. - * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update. - * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update. - * tree-ssa-reassoc.c (branch_fixup): Update. - * tree-ssa-tail-merge.c (replace_block_by): Update. - * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update. - (compute_path_counts): Update. - (update_profile): Update. - (recompute_probabilities): Update. - (update_joiner_offpath_counts): Update. - (estimated_freqs_path): Update. - (freqs_to_counts_path): Update. - (clear_counts_path): Update. - (ssa_fix_duplicate_block_edges): Update. - (duplicate_thread_path): Update. - * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update. - (case_bit_test_cmp): Update. - (collect_switch_conv_info): Update. - (gen_inbound_check): Update. - (do_jump_if_equal): Update. - (emit_cmp_and_jump_insns): Update. - * tree-tailcall.c (decrease_profile): Update. - (eliminate_tail_call): Update. - * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update. - (vect_do_peeling): Update. - * tree-vect-loop.c (scale_profile_for_vect_loop): Update. - * ubsan.c (ubsan_expand_null_ifn): Update. - (ubsan_expand_ptr_ifn): Update. - * value-prof.c (gimple_divmod_fixed_value): Update. - (gimple_mod_pow2): Update. - (gimple_mod_subtract): Update. - (gimple_ic): Update. - (gimple_stringop_fixed_value): Update. - -2017-10-19 Uros Bizjak - - PR target/82618 - * config/i386/i386.md (sub to cmp): New peephole2 pattern. - -2017-10-19 Alexander Monakov - - PR rtl-optimization/82395 - * ira-color.c (allocno_priority_compare_func): Fix comparison step - based on non_spilled_static_chain_regno_p. - -2017-10-19 Uros Bizjak - - * config/i386/i386.c (output_387_binary_op): Rewrite SSE part. - (ix86_emit_mode_set): Rewrite insn mnemonic construction. - (ix86_prepare_fp_compare_args): Redefine is_sse as bool. - -2017-10-19 Martin Sebor - - PR tree-optimization/82596 - * tree.c (array_at_struct_end_p): Handle STRING_CST. - -2017-10-19 Eric Botcazou - - * asan.c (handle_builtin_alloca): Deal with all alloca variants. - (get_mem_refs_of_builtin_call): Likewise. - * builtins.c (expand_builtin_apply): Adjust call to - allocate_dynamic_stack_space. - (expand_builtin_alloca): For __builtin_alloca_with_align_and_max, pass - the third argument to allocate_dynamic_stack_space, otherwise -1. - (expand_builtin): Deal with all alloca variants. - (is_inexpensive_builtin): Likewise. - * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX): New. - * calls.c (special_function_p): Deal with all alloca variants. - (initialize_argument_information): Adjust call to - allocate_dynamic_stack_space. - (expand_call): Likewise. - * cfgexpand.c (expand_call_stmt): Deal with all alloca variants. - * doc/extend.texi (Built-ins): Add __builtin_alloca_with_align_and_max - * explow.c (allocate_dynamic_stack_space): Add MAX_SIZE parameter and - use it for the stack usage computation. - * explow.h (allocate_dynamic_stack_space): Adjust prototype. - * function.c (gimplify_parameters): Call build_alloca_call_expr. - * gimple-ssa-warn-alloca.c (alloca_call_type): Simplify control flow. - Take into account 3rd argument of __builtin_alloca_with_align_and_max. - (in_loop_p): Remove first argument and useless check. - (pass_walloca::execute): Remove useless test and adjust call to above. - * gimple.c (gimple_build_call_from_tree): Deal with all alloc variants - * gimplify.c (gimplify_vla_decl): Call build_alloca_call_expr. - (gimplify_call_expr): Deal with all alloca variants. - * hsa-gen.c (gen_hsa_alloca): Likewise. - (gen_hsa_insns_for_call): Likewise. - * ipa-pure-const.c (special_builtin_state): Likewise. - * tree-chkp.c (chkp_build_returned_bound): Likewise. - * tree-object-size.c (alloc_object_size): Likewise. - * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise. - (call_may_clobber_ref_p_1): Likewise. - * tree-ssa-ccp.c (evaluate_stmt): Likewise. - (ccp_fold_stmt): Likewise. - (optimize_stack_restore): Likewise. - * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise. - (mark_all_reaching_defs_necessary_1): Likewise. - (propagate_necessity): Likewise. - (eliminate_unnecessary_stmts): Likewise. - * tree.c (build_common_builtin_nodes): Build - BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX. - (build_alloca_call_expr): New function. - * tree.h (ALLOCA_FUNCTION_CODE_P): New macro. - (CASE_BUILT_IN_ALLOCA): Likewise. - (build_alloca_call_expr): Declare. - * varasm.c (incorporeal_function_p): Deal with all alloca variants. - -2017-10-19 Eric Botcazou - - PR debug/82509 - * dwarf2out.c (new_die_raw): New static inline function. - (new_die): Use it to create the DIE. - (add_AT_external_die_ref): Likewise. - (clone_die): Likewise. - (clone_as_declaration): Likewise. - (dwarf2out_vms_debug_main_pointer): Likewise. - (base_type_die): Likewise. Remove early return for corner cases. - Do not call add_pubtype on the DIE here. - (is_base_type): Remove ERROR_MARK and return 0 for VOID_TYPE. - (modified_type_die): Adjust the lookup for reverse order DIEs. Skip - typedefs for base types with DW_AT_endianity. Make sure a DIE with - native order exists for base types, attach the DIE manually and call - add_pubtype on it. Do not equate a reverse order DIE to the type. - -2017-10-19 Richard Earnshaw - - * config/arm/arm.c (align_ok_ldrd_strd): New function. - (mem_ok_for_ldrd_strd): New parameter align. Extract the alignment of - the mem into it. - (gen_operands_ldrd_strd): Validate the alignment of the accesses. - -2017-10-19 Jakub Jelinek - - * flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN. Or - SANITIZE_BUILTIN into SANITIZE_UNDEFINED. - * sanitizer.def (BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN, - BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN_ABORT): New builtins. - * opts.c (sanitizer_opts): Add builtin. - * ubsan.c (instrument_builtin): New function. - (pass_ubsan::execute): Call it. - (pass_ubsan::gate): Enable even for SANITIZE_BUILTIN. - * doc/invoke.texi: Document -fsanitize=builtin. - - * ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch - builtins, store max (log2 (align), 0) into uchar field instead of - align into uptr field. - (ubsan_expand_objsize_ifn): Use _v1 suffixed type mismatch builtins, - store uchar 0 field instead of uptr 0 field. - (instrument_nonnull_return): Use _v1 suffixed nonnull return builtin, - instead of passing one address of struct with 2 locations pass - two addresses of structs with 1 location each. - * sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH, - BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT, - BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN, - BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): Removed. - (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1, - BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1_ABORT, - BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1, - BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1_ABORT): New builtins. - -2017-10-19 Martin Liska - - PR driver/81829 - * file-find.c (remove_prefix): Remove. - * file-find.h (remove_prefix): Likewise. - * gcc-ar.c: Remove smartness of lookup. - -2017-10-19 Segher Boessenkool - - * config/rs6000/rs6000.md (*call_indirect_aix, - *call_value_indirect_aix, *call_indirect_elfv2, - *call_value_indirect_elfv2): Add correct mode to the unspec. - -2017-10-19 Jakub Jelinek - - PR target/82580 - * config/i386/i386.md (setcc + movzbl to xor + setcc): New peephole2. - (setcc + and to xor + setcc): New peephole2. - -2017-10-19 Tom de Vries - - * doc/sourcebuild.texi (Test Directives, Variants of - dg-require-support): Add dg-require-stack-size. - -2017-10-19 Martin Liska - - PR sanitizer/82517 - * gimplify.c (gimplify_decl_expr): Do not instrument variables - that have a large alignment. - (gimplify_target_expr): Likewise. - -2017-10-18 Segher Boessenkool - - PR rtl-optimization/82602 - * ira.c (rtx_moveable_p): Return false for volatile asm. - -2017-10-18 Uros Bizjak - - PR target/82580 - * config/i386/i386-modes.def (CCGZ): New CC mode. - * config/i386/i386.md (sub3_carry_ccgz): New insn pattern. - * config/i386/predicates.md (ix86_comparison_operator): - Handle CCGZmode. - * config/i386/i386.c (ix86_expand_branch) : - Emulate LE, LEU, GT, GTU, LT, LTU, GE and GEU double-word comparisons - with double-word subtraction. - (put_condition_code): Handle CCGZmode. - -2017-10-18 Aldy Hernandez - - * wide-int.cc (debug (const wide_int &)): New. - (debug (const wide_int *)): New. - (debug (const widest_int &)): New. - (debug (const widest_int *)): New. - -2017-10-18 Vladimir Makarov - - PR middle-end/82556 - * lra-constraints.c (curr_insn_transform): Use non-input operand - instead of output one for matched reload. - -2017-10-18 Bin Cheng - - * tree-loop-distribution.c (INCLUDE_ALGORITHM): New header file. - (tree-ssa-loop-ivopts.h): New header file. - (struct builtin_info): New fields. - (classify_builtin_1): Compute and record base and offset parts for - memset builtin partition by calling strip_offset. - (offset_cmp, fuse_memset_builtins): New functions. - (finalize_partitions): Fuse adjacent memset partitions by calling - above function. - * tree-ssa-loop-ivopts.c (strip_offset): Delete static declaration. - Expose the interface. - * tree-ssa-loop-ivopts.h (strip_offset): New declaration. - -2017-10-18 Bin Cheng - - PR tree-optimization/82574 - * tree-loop-distribution.c (find_single_drs): New parameter. Check - that data reference must be executed exactly once per iteration - against the outermost loop in nest. - (classify_partition): Update call to above function. - -2017-10-18 Richard Biener - - PR tree-optimization/82591 - * graphite.c (graphite_transform_loops): Move code gen message - printing ... - * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): - Here. Handle scop_to_isl_ast failing. - (scop_to_isl_ast): Limit the number of ISL operations. - -2017-10-18 Richard Biener - - * graphite-isl-ast-to-gimple.c - (translate_isl_ast_to_gimple::set_rename): Simplify. - (translate_isl_ast_to_gimple::set_rename_for_each_def): Inline... - (graphite_copy_stmts_from_block): ... here. - (copy_bb_and_scalar_dependences): Simplify. - (add_parameters_to_ivs_params): Canonicalize. - (generate_entry_out_of_ssa_copies): Simplify. - * graphite-sese-to-poly.c (extract_affine_name): Simplify - by passing in ISL dimension. - (parameter_index_in_region_1): Rename to ... - (parameter_index_in_region): ... this. - (extract_affine): Adjust assert, pass down parameter index. - (add_param_constraints): Use range-info when available. - (build_scop_context): Adjust. - * sese.c (new_sese_info): Adjust. - (free_sese_info): Likewise. - * sese.h (bb_map_t, rename_map_t, phi_rename, init_back_edge_pair_t): - Remove unused typedefs. - (struct sese_info_t): Simplify rename_map, remove incomplete_phis. - -2017-10-18 Martin Liska - - * combine.c (simplify_compare_const): Add gcc_fallthrough. - -2017-10-18 Robin Dapp - - * config/s390/s390.c (s390_bb_fallthru_entry_likely): New function. - (s390_sched_init): Do not reset s390_sched_state if we entered the - current basic block via a fallthru edge and all others are unlikely. - -2017-10-18 Robin Dapp - - * config/s390/s390.c (NUM_SIDES): New variable. - (LONGRUNNING_THRESHOLD): New variable. - (LATENCY_FACTOR): New variable. - (s390_sched_score): Decrease score for long-running instructions on - wrong side. - (s390_sched_variable_issue): Perform bookkeeping for long-running - instructions. - -2017-10-18 Richard Biener - - * graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id): - Simplify with removal of the parameter rename map. - (set_rename): Likewise. - (should_copy_to_new_region): Likewise. - (graphite_copy_stmts_from_block): Likewise. - (copy_bb_and_scalar_dependences): Remove initialization of - unused copied_bb_map. - (copy_def): Remove. - (copy_internal_parameters): Likewise. - (graphite_regenerate_ast_isl): Do not call copy_internal_parameters. - * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p): - Use INTEGRAL_TYPE_P. - (parameter_index_in_region_1): Rename to ... - (assign_parameter_index_in_region): ... this. Assert we have - a parameter we handle. - (scan_tree_for_params): Adjust. - * sese.h (parameter_rename_map_t): Remove. - (struct sese_info_t): Remove unused parameter_rename_map and - copied_bb_map members. - * sese.c (new_sese_info): Adjust. - (free_sese_info): Likewise. - -2017-10-18 Martin Liska - - PR sanitizer/82545 - * asan.c (asan_expand_poison_ifn): Do not put gimple stmt - on an abnormal edge. - -2017-10-18 Sebastian Huber - - * doc/invoke.texi (ffunction-sections and fdata-sections): - Update. - -2017-10-17 Eric Botcazou - - * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if - the use statement can throw internally. - -2017-10-17 Eric Botcazou - - * config/visium/visium.c (visium_select_cc_mode): Return CCmode for - any RTX present on the RHS of a SET. - * compare-elim.c (try_eliminate_compare): Restore comment. - -2017-10-17 Jakub Jelinek - - * langhooks.h (struct lang_hooks): Document that tree_size langhook - may be also called on tcc_type nodes. - * langhooks.c (lhd_tree_size): Likewise. - -2017-10-17 David Malcolm - - * gimple-ssa-sprintf.c (fmtwarn): Update for changed signature of - format_warning_at_substring. - (maybe_warn): Convert source_range * param to a location_t. Pass - UNKNOWN_LOCATION rather than NULL to fmtwarn. - (format_directive): Remove code to extract source_ranges and - source_range * in favor of just a location_t. - (parse_directive): Pass UNKNOWN_LOCATION rather than NULL to - fmtwarn. - * substring-locations.c (format_warning_va): Convert - source_range * param to a location_t. - (format_warning_at_substring): Likewise. - * substring-locations.h (format_warning_va): Likewise. - (format_warning_at_substring): Likewise. - -2017-10-17 Jan Hubicka - - * target.h (enum vect_cost_for_stmt): Add vec_gather_load and - vec_scatter_store - * tree-vect-stmts.c (record_stmt_cost): Make difference between normal - and scatter/gather ops. - - * aarch64/aarch64.c (aarch64_builtin_vectorization_cost): Add - vec_gather_load and vec_scatter_store. - * arm/arm.c (arm_builtin_vectorization_cost): Likewise. - * powerpcspe/powerpcspe.c (rs6000_builtin_vectorization_cost): Likewise. - * rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Likewise. - * s390/s390.c (s390_builtin_vectorization_cost): Likewise. - * spu/spu.c (spu_builtin_vectorization_cost): Likewise. - * i386/i386.c (x86_builtin_vectorization_cost): Likewise. - -2017-10-17 Uros Bizjak - - * reg-stack.c (compare_for_stack_reg): Add bool argument. - Detect FTST instruction and handle its register pops. Only pop - second operand if can_pop_second_op is true. - (subst_stack_regs_pat) : Detect FCOMI instruction to - set can_pop_second_op to false in the compare_for_stack_reg call. - - * config/i386/i386.md (*cmpi): Only call - output_fp_compare for stack register operands. - * config/i386/i386.c (output_fp_compare): Do not output SSE compare - instructions here. Do not emit stack register pops here. Assert - that FCOMPP pops next to top stack register. Rewrite function. - -2017-10-17 Nathan Sidwell - - PR middle-end/82577 - * alias.c (compare_base_decls): Check HAS_DECL_ASSEMBLER_NAME_P, - use DECL_ASSEMBLER_NAME_RAW. - - PR middle-end/82546 - * tree.c (tree_code_size): Reformat. Punt to lang hook for unknown - TYPE nodes. - -2017-10-17 Qing Zhao - Wilco Dijkstra - - * builtins.c (expand_builtin_update_setjmp_buf): Add a - converstion to Pmode from the buf_addr. - -2017-10-17 Richard Biener - - * graphite-dependences.c (scop_get_reads_and_writes): Change - output parameters to references. - -2017-10-17 Jackson Woodruff - - PR 71026/tree-optimization - * fold-const.c (distribute_real_division): Removed. - (fold_binary_loc): Remove calls to distribute_real_divison. - -2017-10-17 Richard Biener - - * graphite-scop-detection.c - (scop_detection::stmt_has_simple_data_refs_p): Always use - the full nest as region. - (try_generate_gimple_bb): Likewise. - * sese.c (scalar_evolution_in_region): Simplify now that - SCEV can handle instantiation in regions. - * tree-scalar-evolution.c (instantiate_scev_name): Also instantiate - in the non-loop part of a function if requested. - -2017-10-17 Richard Biener - - PR tree-optimization/82563 - * graphite-isl-ast-to-gimple.c (generate_entry_out_of_ssa_copies): - New function. - (graphite_regenerate_ast_isl): Call it. - * graphite-scop-detection.c (build_scops): Remove entry edge split. - -2017-10-17 Jakub Jelinek - - PR tree-optimization/82549 - * fold-const.c (optimize_bit_field_compare, fold_truth_andor_1): - Formatting fixes. Instead of calling make_bit_field_ref with negative - bitpos return 0. - -2017-10-17 Olga Makhotina - - * config/i386/avx512dqintrin.h (_mm_mask_reduce_sd, - _mm_maskz_reduce_sd, _mm_mask_reduce_ss,=20 - _mm_maskz_reduce_ss): New. - * config/i386/i386-builtin.def (__builtin_ia32_reducesd_mask, - __builtin_ia32_reducess_mask): Ditto.. - (__builtin_ia32_reducesd, __builtin_ia32_reducess): Remove. - * config/i386/sse.md (reduces): Renamed to ... - (reduces): ... this. - (vreduce\t{%3, %2, %1, %0|%0, %1, %2, %3}): - Changed to ... - (vreduce\t{%3, %2, %1, %0| - %0, %1, %2, %3}): ... this. - -2017-10-16 David Malcolm - - * Makefile.in (OBJS): Add unique-ptr-tests.o. - * selftest-run-tests.c (selftest::run_tests): Call - selftest::unique_ptr_tests_cc_tests. - * selftest.h (selftest::unique_ptr_tests_cc_tests): New decl. - * unique-ptr-tests.cc: New file. - -2017-10-16 Vladimir Makarov - - PR sanitizer/82353 - * lra.c (collect_non_operand_hard_regs): Don't ignore operator - locations. - * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up. - (make_hard_regno_born, make_hard_regno_dead): Update - bb_killed_pseudos and bb_gen_pseudos for fixed regs. - -2017-10-16 Jeff Law - - * tree-ssa-dse.c (live_bytes_read): Fix thinko. - -2017-10-16 Jan Hubicka - - * x86-tune-costs.h (znver1_cost): Fix move cost tables. - -2017-10-16 Olivier Hainque - - * gcc/config.gcc (powerpc*-*-*spe*): Pick 8548 as the default - with_cpu if we were configured for an e500v2 target cpu name. - -2017-10-16 Thomas Preud'homme - - * config/arm/arm-cpus.in (cortex-m33): Add nodsp option. - * doc/invoke.texi: Document +nodsp as a valid extension for - -mcpu=cortex-m33. - -2017-10-16 Martin Liska - - * sbitmap.c (bitmap_bit_in_range_p_checking): New function. - (test_set_range): Likewise. - (test_range_functions): Rename to ... - (test_bit_in_range): ... this. - (sbitmap_c_tests): Add new test. - -2017-10-16 Tamar Christina - - * config/aarch64/arm_neon.h (vdot_u32, vdotq_u32, vdot_s32, vdotq_s32): - New. - (vdot_lane_u32, vdot_laneq_u32, vdotq_lane_u32, vdotq_laneq_u32): New. - (vdot_lane_s32, vdot_laneq_s32, vdotq_lane_s32, vdotq_laneq_s32): New. - -2017-10-16 Tamar Christina - - * config/aarch64/aarch64-builtins.c - (aarch64_types_quadopu_lane_qualifiers): New. - (TYPES_QUADOPU_LANE): New. - * config/aarch64/aarch64-simd.md (aarch64_dot): New. - (dot_prod, aarch64_dot_lane): New. - (aarch64_dot_laneq): New. - * config/aarch64/aarch64-simd-builtins.def (sdot, udot): New. - (sdot_lane, udot_lane, sdot_laneq, udot_laneq): New. - * config/aarch64/iterators.md (sur): Add UNSPEC_SDOT, UNSPEC_UDOT. - (Vdottype, DOTPROD): New. - (sur): Add SDOT and UDOT. - -2017-10-16 Tamar Christina - - * config/aarch64/aarch64.h (AARCH64_FL_DOTPROD): New. - (AARCH64_ISA_DOTPROD, TARGET_DOTPROD): New. - * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): - Add TARGET_DOTPROD. - * config/aarch64/aarch64-option-extensions.def (dotprod): New. - * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75): - Enable TARGET_DOTPROD. - (cortex-a75.cortex-a55): Likewise. - * doc/invoke.texi (aarch64-feature-modifiers): Document dotprod. - -2017-10-16 Tamar Christina - - * config/arm/arm-builtins.c (arm_unsigned_uternop_qualifiers): New. - (UTERNOP_QUALIFIERS, arm_umac_lane_qualifiers, UMAC_LANE_QUALIFIERS): - New. - * config/arm/arm_neon_builtins.def (sdot, udot, sdot_lane, udot_lane): - New. - * config/arm/iterators.md (DOTPROD, VSI2QI, vsi2qi): New. - (UNSPEC_DOT_S, UNSPEC_DOT_U, opsuffix): New. - * config/arm/neon.md (neon_dot): New. - (neon_dot_lane, dot_prod): New. - * config/arm/types.md (neon_dot, neon_dot_q): New. - * config/arm/unspecs.md (sup): Add UNSPEC_DOT_S, UNSPEC_DOT_U. - -2017-10-16 Tamar Christina - - * config/arm/arm.h (TARGET_DOTPROD): New. - * config/arm/arm.c (arm_arch_dotprod): New. - (arm_option_reconfigure_globals): Add arm_arch_dotprod. - * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New. - * config/arm/arm-cpus.in (armv8.2-a): Enabled +dotprod. - (feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New. - (ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL. - * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod. - * doc/invoke.texi (armv8.2-a): Document dotprod - -2017-10-14 Jan Hubicka - - * i386.c (ix86_vec_cost): New function. - (ix86_rtx_costs): Handle vector operations better. - * i386.h (struct processor_costs): Add sse_op, fmasd, fmass. - * x86-tune-costs.h: Add new costs to all tables. - -2017-10-14 Jan Hubicka - - * i386.c (ix86_rtx_costs): Make difference between x87 and SSE - operations. - * i386.h (struct processor_costs): Add addss, mulss, mulsd, divss, - divsd, sqrtss and sqrtsd - * x86-tune-costs.h: Add new entries to all costs. - (znver1_cost): Fix to match real instruction latencies. - -2017-10-14 Kyrylo Tkachov - Michael Collison - - * compare-elim.c: Include emit-rtl.h. - (can_merge_compare_into_arith): New function. - (try_validate_parallel): Likewise. - (try_merge_compare): Likewise. - (try_eliminate_compare): Call the above when no previous clobber - is available. - (execute_compare_elim_after_reload): Add DF_UD_CHAIN and DF_DU_CHAIN - dataflow problems. - -2017-10-14 Jakub Jelinek - - PR middle-end/62263 - PR middle-end/82498 - * tree-ssa-phiopt.c (value_replacement): Comment fix. Handle - up to 2 preparation statements for ASSIGN in MIDDLE_BB. - - PR middle-end/62263 - PR middle-end/82498 - * tree-ssa-forwprop.c (simplify_rotate): Allow def_arg1[N] - to be any operand_equal_p operands. For & (B - 1) require - B to be power of 2. Recognize - (X << (Y & (B - 1))) | (X >> ((-Y) & (B - 1))) and similar patterns. - -2017-10-14 Uros Bizjak - - PR bootstrap/82553 - * optabs.c (expand_memory_blockage): Fix call of - targetm.have_memory_blockage. - -2017-10-14 Jakub Jelinek - - PR bootstrap/82548 - * config.gcc (*-*-solaris2*, i[34567]86-*-cygwin*, - x86_64-*-cygwin*, i[34567]86-*-mingw* | x86_64-*-mingw*): Append - objects to extra_objs instead of overwriting it. - -2017-10-14 Uros Bizjak - - * config/i386/sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2): - Use any_fp_register_operand as operand[3] predicate. Simplify - equality test for operands[2] and operands[4] memory location. - (LDX_ATOMIC/STX_ATOMIC FP load peephole2): Ditto. - (FILD_ATOMIC/FIST_ATOMIC FP load peephole2 with mem blockage): New. - (LDX_ATOMIC/LDX_ATOMIC FP load peephole2 with mem blockage): Ditto. - (FILD_ATOMIC/FIST_ATOMIC FP store peephole2): Use - any_fp_register_operand as operand[1] predicate. Simplify - equality test for operands[0] and operands[3] memory location. - (LDX_ATOMIC/STX_ATOMIC FP store peephole2): Ditto. - (FILD_ATOMIC/FIST_ATOMIC FP store peephole2 with mem blockage): New. - (LDX_ATOMIC/LDX_ATOMIC FP storepeephole2 with mem blockage): Ditto. - -2017-10-14 Uros Bizjak - - * target-insns.def: Add memory_blockage. - * optabs.c (expand_memory_blockage): New function. - (expand_asm_memory_barrier): Rename ... - (expand_asm_memory_blockage): ... to this. - (expand_mem_thread_fence): Call expand_memory_blockage - instead of expand_asm_memory_barrier. - (expand_mem_singnal_fence): Ditto. - (expand_atomic_load): Ditto. - (expand_atomic_store): Ditto. - * doc/md.texi (Standard Pattern Names For Generation): - Document memory_blockage instruction pattern. - -2017-10-13 Sebastian Perta - - * config/rl78/rl78.c (rl78_emit_libcall): New function. - * config/rl78/rl78-protos.h (rl78_emit_libcall): New function. - * config/rl78/rl78.md: New define_expand "adddi3". - -2017-10-13 Jan Hubicka - - * cfghooks.c (verify_flow_info): Disable check that all probabilities - are set correctly. - -2017-10-13 Jeff Law - - * tree-ssa-reassoc.c (reassociate_bb): Clarify code slighly. - -2017-10-13 Jakub Jelinek - - PR target/82274 - * internal-fn.c (expand_mul_overflow): If both operands have - the same highpart of -1 or 0 and the topmost bit of lowpart - is different, overflow is if res <= 0 rather than res < 0. - -2017-10-13 Pat Haugen - - * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Remove - TARGET_P9_VECTOR code for unaligned_load case. - -2017-10-13 Jan Hubicka - - * cfghooks.c (verify_flow_info): Check that edge probabilities are set. - -2017-10-13 Nathan Sidwell - - * tree-core.h (tree_contains_struct): Make bool. - * tree.c (tree_contains_struct): Likewise. - * tree.h (MARK_TS_BASE): Remove do ... while (0) idiom. - (MARK_TS_TYPED, MARK_TS_COMMON, MARK_TS_TYPE_COMMON, - MARK_TS_TYPE_WITH_LANG_SPECIFIC, MARK_TS_DECL_MINIMAL, - MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL, MARK_TS_DECL_WITH_VIS, - MARK_TS_DECL_NON_COMMON): Likewise, use comma operator. - -2017-10-13 Richard Biener - - * graphite-isl-ast-to-gimple.c - (translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused - parameters and dominance check. - (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust. - (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise. - (translate_isl_ast_to_gimple::graphite_regenerate_ast_isl): - Do not update SSA form here or do intermediate IL verification. - * graphite.c: Include tree-ssa.h and tree-into-ssa.h. - (graphite_initialize): Remove check on the number of loops in - the function and inline into graphite_transform_loops. - (graphite_finalize): Inline into graphite_transform_loops. - (graphite_transform_loops): Perform SSA update and IL verification - here. - * params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove. - -2017-10-13 Richard Biener - - * graphite-isl-ast-to-gimple.c (max_mode_int_precision, - graphite_expression_type_precision): Avoid global constructor - by moving ... - (translate_isl_ast_to_gimple::translate_isl_ast_to_gimple): Here. - (translate_isl_ast_to_gimple::graphite_expr_type): Add type member. - (translate_isl_ast_to_gimple::translate_isl_ast_node_for): Use it. - (translate_isl_ast_to_gimple::build_iv_mapping): Likewise. - (translate_isl_ast_to_gimple::graphite_create_new_guard): Likewise. - * graphite-sese-to-poly.c (build_original_schedule): Return nothing. - -2017-10-13 H.J. Lu - - PR target/82499 - * config/i386/i386.h (ix86_red_zone_size): New. - * config/i386/i386.md (push peephole2s): Replace - "!ix86_using_red_zone ()" with "ix86_red_zone_size == 0". - -2017-10-13 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (can_change_dest_mode): Reject changes in - REGMODE_NATURAL_SIZE. - -2017-10-13 Richard Sandiford - Alan Hayward - David Sherwood - - * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_BITSIZE. - (expand_debug_source_expr): Likewise. - * combine.c (combine_simplify_rtx): Likewise. - * cse.c (fold_rtx): Likewise. - * fwprop.c (canonicalize_address): Likewise. - * targhooks.c (default_shift_truncation_mask): Likewise. - -2017-10-13 Richard Sandiford - Alan Hayward - David Sherwood - - * optabs.c (add_equal_note): Use GET_MODE_UNIT_SIZE. - (widened_mode): Likewise. - (expand_unop): Likewise. - * ree.c (transform_ifelse): Likewise. - (merge_def_and_ext): Likewise. - (combine_reaching_defs): Likewise. - * simplify-rtx.c (simplify_unary_operation_1): Likewise. - -2017-10-13 Richard Sandiford - Alan Hayward - David Sherwood - - * caller-save.c (replace_reg_with_saved_mem): Use byte_lowpart_offset. - * combine.c (gen_lowpart_for_combine): Likewise. - * dwarf2out.c (rtl_for_decl_location): Likewise. - * final.c (alter_subreg): Likewise. - * rtlhooks.c (gen_lowpart_general): Likewise. - (gen_lowpart_if_possible): Likewise. - -2017-10-13 Richard Sandiford - Alan Hayward - David Sherwood - - * calls.c (expand_call): Use subreg_lowpart_offset. - * cse.c (cse_insn): Likewise. - * regcprop.c (copy_value): Likewise. - (copyprop_hardreg_forward_1): Likewise. - -2017-10-13 Jakub Jelinek - - PR target/82524 - * config/i386/i386.md (addqi_ext_1, andqi_ext_1, - *andqi_ext_1_cc, *qi_ext_1, *xorqi_ext_1_cc): Change - =Q constraints to +Q and into insn condition add check - that operands[0] and operands[1] are equal. - (*addqi_ext_2, *andqi_ext_2, *qi_ext_2): Change - =Q constraints to +Q and into insn condition add check - that operands[0] is equal to either operands[1] or operands[2]. - - PR target/82498 - * fold-const.c (fold_binary_loc) : Code cleanups, - instead of handling MINUS_EXPR twice (once for each argument), - canonicalize operand order and handle just once, use rtype where - possible. Handle (A << B) | (A >> (-B & (Z - 1))). - - PR target/82498 - * config/i386/ia32intrin.h (__rold, __rord, __rolq, __rorq): Allow - any values of __C while still being pattern recognizable as a simple - rotate instruction. - -2017-10-13 Richard Biener - - PR tree-optimization/82451 - Revert - 2017-10-02 Richard Biener - - PR tree-optimization/82355 - * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build - a mapping for the enclosing loop but avoid generating one for - the loop tree root. - (copy_bb_and_scalar_dependences): Remove premature codegen - error on PHIs in blocks duplicated into multiple places. - * graphite-scop-detection.c - (scop_detection::stmt_has_simple_data_refs_p): For a loop not - in the region use it as loop and nest to analyze the DR in. - (try_generate_gimple_bb): Likewise. - * graphite-sese-to-poly.c (extract_affine_chrec): Adjust. - (add_loop_constraints): For blocks in a loop not in the region - create a dimension with a single iteration. - * sese.h (gbb_loop_at_index): Remove assert. - - * cfgloop.c (loop_preheader_edge): For the loop tree root - return the single successor of the entry block. - * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): - Reset the SCEV hashtable and niters. - * graphite-scop-detection.c - (scop_detection::graphite_can_represent_scev): Add SCOP parameter, - assert that we only have POLYNOMIAL_CHREC that vary in loops - contained in the region. - (scop_detection::graphite_can_represent_expr): Adjust. - (scop_detection::stmt_has_simple_data_refs_p): For loops - not in the region set loop to NULL. The nest is now the - entry edge to the region. - (try_generate_gimple_bb): Likewise. - * sese.c (scalar_evolution_in_region): Adjust for - instantiate_scev change. - * tree-data-ref.h (graphite_find_data_references_in_stmt): - Make nest parameter the edge into the region. - (create_data_ref): Likewise. - * tree-data-ref.c (dr_analyze_indices): Make nest parameter an - entry edge into a region and adjust instantiate_scev calls. - (create_data_ref): Likewise. - (graphite_find_data_references_in_stmt): Likewise. - (find_data_references_in_stmt): Pass the loop preheader edge - from the nest argument. - * tree-scalar-evolution.h (instantiate_scev): Make instantiate_below - parameter the edge into the region. - (instantiate_parameters): Use the loop preheader edge as entry. - * tree-scalar-evolution.c (analyze_scalar_evolution): Handle - NULL loop. - (get_instantiated_value_entry): Make instantiate_below parameter - the edge into the region. - (instantiate_scev_name): Likewise. Adjust dominance checks, - when we cannot use loop-based instantiation instantiate by - walking use-def chains. - (instantiate_scev_poly): Adjust. - (instantiate_scev_binary): Likewise. - (instantiate_scev_convert): Likewise. - (instantiate_scev_not): Likewise. - (instantiate_array_ref): Remove. - (instantiate_scev_3): Likewise. - (instantiate_scev_2): Likewise. - (instantiate_scev_1): Likewise. - (instantiate_scev_r): Do not blindly handle N-operand trees. - Do not instantiate array-refs. Handle all constants and invariants. - (instantiate_scev): Make instantiate_below parameter - the edge into the region. - (resolve_mixers): Use the loop preheader edge for the region - parameter to instantiate_scev_r. - * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Adjust. - -2017-10-13 Richard Biener - - PR tree-optimization/82525 - * graphite-isl-ast-to-gimple.c - (translate_isl_ast_to_gimple::widest_int_from_isl_expr_int): Split - out from ... - (translate_isl_ast_to_gimple::gcc_expression_from_isl_expr_int): Here. - Fail code generation when we cannot represent the isl integer. - (binary_op_to_tree): Elide modulo operations that are no-ops - in the type we code generate. Remove now superfluous code - generation errors. - -2017-10-13 Richard Biener - - * graphite-scop-detection.c (loop_ivs_can_be_represented): Remove. - (scop_detection::harmful_loop_in_region): Remove premature - IV type restriction. - (scop_detection::graphite_can_represent_scev): We can handle - pointer IVs just fine. - -2017-10-13 Alan Modra - - * doc/extend.texi (Extended Asm ): Rename to - "Clobbers and Scratch Registers". Add paragraph on - alternative to clobbers for scratch registers and OpenBLAS - example. - -2017-10-13 Alan Modra - - * doc/extend.texi (Clobbers): Correct vax example. Delete old - example of a memory input for a string of known length. Move - commentary out of table. Add a number of new examples - covering array memory inputs. - -2017-10-12 Martin Liska - - PR tree-optimization/82493 - * sbitmap.c (bitmap_bit_in_range_p): Fix the implementation. - (test_range_functions): New function. - (sbitmap_c_tests): Likewise. - * selftest-run-tests.c (selftest::run_tests): Run new tests. - * selftest.h (sbitmap_c_tests): New function. - - * tree-ssa-dse.c (live_bytes_read): Fix thinko. - -2017-10-12 Michael Meissner - - * config/rs6000/amo.h: Fix spacing issue. - -2017-10-12 Jakub Jelinek - - PR target/82498 - * config/i386/i386.md (*ashl3_mask_1, - *3_mask_1, *3_mask_1, - *_mask_1, *btr_mask_1): New define_insn_and_split - patterns. - -2017-10-12 Jan Hubicka - - * profile-count.h (safe_scale_64bit): Fix GCC4.x path. - (profile_probability): Set max_probability - to (uint32_t) 1 << (n_bits - 2) and update accessors to avoid overlfows - in temporaries. - * profile-count.c (profile_probability::differs_from_p): Do not - rely on max_probaiblity == 10000 - -2017-10-12 Jeff Law - - * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with - negative offsets. - -2017-10-12 Martin Sebor - - PR other/82301 - PR c/82435 - * cgraphunit.c (maybe_diag_incompatible_alias): New function. - (handle_alias_pairs): Call it. - * common.opt (-Wattribute-alias): New option. - * doc/extend.texi (ifunc attribute): Discuss C++ specifics. - * doc/invoke.texi (-Wattribute-alias): Document. - -2017-10-12 Vladimir Makarov - - Revert - 2017-10-11 Vladimir Makarov - PR sanitizer/82353 - * lra.c (collect_non_operand_hard_regs): Don't ignore operator - locations. - * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up. - (make_hard_regno_born, make_hard_regno_dead): Update - bb_killed_pseudos and bb_gen_pseudos. - -2017-10-12 Jan Hubicka - - * config/i386/x86-tune-sched.c (ix86_adjust_cost): Fix Zen support. - -2017-10-12 Uros Bizjak - - * config/alpha/alpha.c (alpha_split_conditional_move): - Use std::swap instead of manually swapping. - (alpha_stdarg_optimize_hook): Ditto. - (alpha_canonicalize_comparison): Ditto. - -2017-10-12 Bin Cheng - - * tree-loop-distribution.c (struct builtin_info): New struct. - (struct partition): Refactor fields into struct builtin_info. - (partition_free): Free struct builtin_info. - (build_size_arg_loc, build_addr_arg_loc): Delete. - (generate_memset_builtin, generate_memcpy_builtin): Get memory range - information from struct builtin_info. - (find_single_drs): New function refactored from classify_partition. - Also moved builtin validity checks to this function. - (compute_access_range, alloc_builtin): New functions. - (classify_builtin_st, classify_builtin_ldst): New functions. - (classify_partition): Refactor code into functions find_single_drs, - classify_builtin_st and classify_builtin_ldst. - (distribute_loop): Don't do runtime alias check when distributing - loop nest. - (find_seed_stmts_for_distribution): New function. - (pass_loop_distribution::execute): Refactor code finding seed - stmts into above function. Support distribution for the innermost - two-level loop nest. Adjust dump information. - -2017-10-12 Bin Cheng - - * tree-loop-distribution.c: Adjust the general comment. - (NUM_PARTITION_THRESHOLD): New macro. - (ssa_name_has_uses_outside_loop_p): Support loop nest distribution. - (classify_partition): Skip builtin pattern of loop nest's inner loop. - (merge_dep_scc_partitions): New parameter ignore_alias_p and use it - in call to build_partition_graph. - (finalize_partitions): New parameter. Make loop distribution more - conservative by fusing more partitions. - (distribute_loop): Don't do runtime alias check in case of loop nest - distribution. - (find_seed_stmts_for_distribution): New function. - (prepare_perfect_loop_nest): New function. - (pass_loop_distribution::execute): Refactor code finding seed stmts - and loop nest into above functions. Support loop nest distribution. - Adjust dump information accordingly. - -2017-10-12 Bin Cheng - - * tree-loop-distribution.c (break_alias_scc_partitions): Add comment - and set PTYPE_SEQUENTIAL for merged partition. - -2017-10-12 Richard Biener - - PR tree-optimization/69728 - Revert - 2017-09-19 Richard Biener - - PR tree-optimization/69728 - * graphite-sese-to-poly.c (schedule_error): New global. - (add_loop_schedule): Handle empty domain by failing the - schedule. - (build_original_schedule): Handle schedule_error. - - * graphite-sese-to-poly.c (add_loop_schedule): Handle empty - domain by returning an unchanged schedule. - -2017-10-12 Jakub Jelinek - - * genrecog.c (validate_pattern): For VEC_SELECT verify that - CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1. - -2017-10-12 Aldy Hernandez - - * Makefile.in (TAGS): Merge all the *.def files into one pattern. - Handle params.def. - -2017-10-12 Jakub Jelinek - - PR c++/82159 - * expr.c (store_field): Don't optimize away bitsize == 0 store - from CALL_EXPR with addressable return type. - -2017-10-11 Segher Boessenkool - - * config/rs6000/rs6000.h (TARGET_ISEL64): Delete. - * config/rs6000/rs6000.md (sel): Delete mode attribute. - (movcc, isel_signed_, isel_unsigned_, - *isel_reversed_signed_, *isel_reversed_unsigned_): Use - TARGET_ISEL instead of TARGET_ISEL. - -2017-10-11 David Edelsohn - - * config/rs6000/rs6000.c - (rs6000_xcoff_asm_output_aligned_decl_common): Test for NULL decl. - -2017-10-11 Segher Boessenkool - - * config/rs6000/predicates.md (zero_constant, all_ones_constant): - Move up in file. - (reg_or_cint_operand): Fix comment. - (reg_or_zero_operand): New predicate. - * config/rs6000/rs6000-protos.h (output_isel): Delete. - * config/rs6000/rs6000.c (output_isel): Delete. - * config/rs6000/rs6000.md (isel_signed_): Use reg_or_zero_operand - instead of reg_or_cint_operand. Output instruction directly (not via - output_isel). - (isel_unsigned_): Ditto. - (*isel_reversed_signed_): Use reg_or_zero_operand instead of - gpc_reg_operand. Add an instruction alternative for this. Output - instruction directly. - (*isel_reversed_unsigned_): Ditto. - -2017-10-11 Uros Bizjak - - * config/i386/i386.c (ix86_canonicalize_comparison): New function. - (TARGET_CANONICALIZE_COMPARISON): Define. - -2017-10-11 Qing Zhao - - PR target/81422 - * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): - Check whether the dest is REG before adding REG_EQUIV note. - -2017-10-11 Vladimir Makarov - - PR sanitizer/82353 - * lra.c (collect_non_operand_hard_regs): Don't ignore operator - locations. - * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up. - (make_hard_regno_born, make_hard_regno_dead): Update - bb_killed_pseudos and bb_gen_pseudos. - -2017-10-11 Nathan Sidwell - - * incpath.h (enum incpath_kind): Name enum, prefix values. - (add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_kind. - * incpath.c (heads, tails): Use INC_MAX. - (add_env_var_paths, add_standard_paths): Use incpath_kind. - (merge_include_chains, split_quote_chain, - register_include_chains): Update incpath_kind names. - (add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_kind. - * config/darwin-c.c (add_system_framework_path): Update incpath_kind - names. - (add_framework_path, darwin_register_objc_includes): Likewise. - * config/vms/vms-c.c (vms_c_register_includes): Likewise. - -2017-10-11 Uros Bizjak - - * config/i386/i386.md (*cmp__i387): - Do not use float_operator operator predicate. - (*cmp__cc_i387): Ditto. - * config/i386/predicates.md (float_operator): Remove predicate. - -2017-10-11 Uros Bizjak - - * config/i386/i386.md (*jcc_0_i387): Remove insn pattern. - (*jccxf_i387): Ditto. - (*jcc_i387): Ditto. - (*jccu_i387): Ditto. - (*jcc__i387): Ditto. - (*jcc_*_i387 splitters): Remove. - * config/i386/i386-protos.h (ix86_split_fp_branch): Remove prototype. - * config/i386/i386.c (ix86_split_fp_branch): Remove. - * config/i386/predicates.md (ix86_swapped_fp_comparison_operator): - Remove predicate. - -2017-10-11 Jan Hubicka - - * profile-count.h (slow_safe_scale_64bit): New function. - (safe_scale_64bit): New inline. - (profile_count::max_safe_multiplier): Remove; use safe_scale_64bit. - * profile-count.c: Include wide-int.h - (slow_safe_scale_64bit): New. - -2017-10-11 Nathan Sidwell - - * tree.h (DECL_ASSEMBLER_NAME_SET_P): Don't check - HAS_DECL_ASSEMBLER_NAME_P. - * gimple-expr.c (gimple_decl_printable_name: Check - HAS_DECL_ASSEMBLER_NAME_P too. - * ipa-utils.h (type_in_anonymous_namespace_p): Check - DECL_ASSEMBLER_NAME_SET_P of TYPE_NAME. - (odr_type_p): No need to assert TYPE_NAME is a TYPE_DECL. - * passes.c (rest_of_decl_compilation): Check - HAS_DECL_ASSEMBLER_NAME_P too. - * recog.c (verify_changes): Likewise. - * tree-pretty-print.c (dump_decl_name): Likewise. - * tree-ssa-structalias.c (alias_get_name): Likewise. Reimplement. - - * tree.h (DECL_ASSEMBLER_NAME_RAW): New. - (SET_DECL_ASSEMBLER_NAME): Use it. - (DECL_ASSEMBLER_NAME_SET_P): Likewise. - (COPY_DECL_ASSEMBLER_NAME): Likewise. - * tree.c (decl_assembler_name): Use DECL_ASSEMBLER_NAME_RAW. - -2017-10-11 Jan Hubicka - - * config.gcc (i386, x86_64): Add extra objects. - * config/i386/i386-protos.h (ix86_rip_relative_addr_p): Declare. - (ix86_min_insn_size): Declare. - (ix86_issue_rate): Declare. - (ix86_adjust_cost): Declare. - (ia32_multipass_dfa_lookahead): Declare. - (ix86_macro_fusion_p): Declare. - (ix86_macro_fusion_pair_p): Declare. - (ix86_bd_has_dispatch): Declare. - (ix86_bd_do_dispatch): Declare. - (ix86_core2i7_init_hooks): Declare. - (ix86_atom_sched_reorder): Declare. - * config/i386/i386.c Move all CPU cost tables to x86-tune-costs.h. - (COSTS_N_BYTES): Move to x86-tune-costs.h. - (DUMMY_STRINGOP_ALGS):Move to x86-tune-costs.h. - (rip_relative_addr_p): Rename to ... - (ix86_rip_relative_addr_p): ... this one; export. - (memory_address_length): Update. - (ix86_issue_rate): Move to x86-tune-sched.c. - (ix86_flags_dependent): Move to x86-tune-sched.c. - (ix86_agi_dependent): Move to x86-tune-sched.c. - (exact_dependency_1): Move to x86-tune-sched.c. - (exact_store_load_dependency): Move to x86-tune-sched.c. - (ix86_adjust_cost): Move to x86-tune-sched.c. - (ia32_multipass_dfa_lookahead): Move to x86-tune-sched.c. - (ix86_macro_fusion_p): Move to x86-tune-sched.c. - (ix86_macro_fusion_pair_p): Move to x86-tune-sched.c. - (do_reorder_for_imul): Move to x86-tune-sched-atom.c. - (swap_top_of_ready_list): Move to x86-tune-sched-atom.c. - (ix86_sched_reorder): Move to x86-tune-sched-atom.c. - (core2i7_first_cycle_multipass_init): Move to x86-tune-sched-core.c. - (core2i7_dfa_post_advance_cycle): Move to x86-tune-sched-core.c. - (min_insn_size): Rename to ... - (ix86_min_insn_size): ... this one; export. - (core2i7_first_cycle_multipass_begin): Move to x86-tune-sched-core.c. - (core2i7_first_cycle_multipass_issue): Move to x86-tune-sched-core.c. - (core2i7_first_cycle_multipass_backtrack): Move to - x86-tune-sched-core.c. - (core2i7_first_cycle_multipass_end): Move to x86-tune-sched-core.c. - (core2i7_first_cycle_multipass_fini): Move to x86-tune-sched-core.c. - (ix86_sched_init_global): Break up logic to ix86_core2i7_init_hooks. - (ix86_avoid_jump_mispredicts): Update. - (TARGET_SCHED_DISPATCH): Move to ix86-tune-sched-bd.c. - (TARGET_SCHED_DISPATCH_DO): Move to ix86-tune-sched-bd.c. - (TARGET_SCHED_REORDER): Move to ix86-tune-sched-bd.c. - (DISPATCH_WINDOW_SIZE): Move to ix86-tune-sched-bd.c. - (MAX_DISPATCH_WINDOWS): Move to ix86-tune-sched-bd.c. - (MAX_INSN): Move to ix86-tune-sched-bd.c. - (MAX_IMM): Move to ix86-tune-sched-bd.c. - (MAX_IMM_SIZE): Move to ix86-tune-sched-bd.c. - (MAX_IMM_32): Move to ix86-tune-sched-bd.c. - (MAX_IMM_64): Move to ix86-tune-sched-bd.c. - (MAX_LOAD): Move to ix86-tune-sched-bd.c. - (MAX_STORE): Move to ix86-tune-sched-bd.c. - (BIG): Move to ix86-tune-sched-bd.c. - (enum dispatch_group): Move to ix86-tune-sched-bd.c. - (enum insn_path): Move to ix86-tune-sched-bd.c. - (get_mem_group): Move to ix86-tune-sched-bd.c. - (is_cmp): Move to ix86-tune-sched-bd.c. - (dispatch_violation): Move to ix86-tune-sched-bd.c. - (is_branch): Move to ix86-tune-sched-bd.c. - (is_prefetch): Move to ix86-tune-sched-bd.c. - (init_window): Move to ix86-tune-sched-bd.c. - (allocate_window): Move to ix86-tune-sched-bd.c. - (init_dispatch_sched): Move to ix86-tune-sched-bd.c. - (is_end_basic_block): Move to ix86-tune-sched-bd.c. - (process_end_window): Move to ix86-tune-sched-bd.c. - (allocate_next_window): Move to ix86-tune-sched-bd.c. - (find_constant): Move to ix86-tune-sched-bd.c. - (get_num_immediates): Move to ix86-tune-sched-bd.c. - (has_immediate): Move to ix86-tune-sched-bd.c. - (get_insn_path): Move to ix86-tune-sched-bd.c. - (get_insn_group): Move to ix86-tune-sched-bd.c. - (count_num_restricted): Move to ix86-tune-sched-bd.c. - (fits_dispatch_window): Move to ix86-tune-sched-bd.c. - (add_insn_window): Move to ix86-tune-sched-bd.c. - (add_to_dispatch_window): Move to ix86-tune-sched-bd.c. - (debug_dispatch_window_file): Move to ix86-tune-sched-bd.c. - (debug_dispatch_window): Move to ix86-tune-sched-bd.c. - (debug_insn_dispatch_info_file): Move to ix86-tune-sched-bd.c. - (debug_ready_dispatch): Move to ix86-tune-sched-bd.c. - (do_dispatch): Move to ix86-tune-sched-bd.c. - (has_dispatch): Move to ix86-tune-sched-bd.c. - * config/i386/t-i386: Add new object files. - * config/i386/x86-tune-costs.h: New file. - * config/i386/x86-tune-sched-atom.c: New file. - * config/i386/x86-tune-sched-bd.c: New file. - * config/i386/x86-tune-sched-core.c: New file. - * config/i386/x86-tune-sched.c: New file. - -2017-10-11 Liu Hao - - * pretty-print.c [_WIN32] (colorize_init): Remove. Use - the generic version below instead. - (should_colorize): Recognize Windows consoles as terminals - for MinGW targets. - * pretty-print.c [__MINGW32__] (write_all): New function. - [__MINGW32__] (find_esc_head): Likewise. - [__MINGW32__] (find_esc_terminator): Likewise. - [__MINGW32__] (eat_esc_sequence): Likewise. - [__MINGW32__] (mingw_ansi_fputs): New function that handles - ANSI escape codes. - (pp_write_text_to_stream): Use mingw_ansi_fputs instead of fputs - for MinGW targets. - -2017-10-11 Richard Biener - - * tree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith): - Properly call analyze_scalar_evolution with the loop of the stmt. - -2017-10-11 Richard Biener - - * tree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand. - * tree-core.h (tree_base): Add chrec_var union member. - * tree.h (CHREC_VAR): Remove. - (CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE): Adjust. - * tree-chrec.h (build_polynomial_chrec): Adjust. - * tree-chrec.c (reset_evolution_in_loop): Use build_polynomial_chrec. - * tree-pretty-print.c (dump_generic_node): Use CHREC_VARIABLE. - -2017-10-11 Marc Glisse - - * fold-const.c (fold_binary_loc) [X +- Y CMP X]: Move ... - * match.pd: ... here. - ((T) X == (T) Y): Relax condition. - -2017-10-11 Bin Cheng - - PR tree-optimization/82472 - * tree-loop-distribution.c (sort_partitions_by_post_order): Refine - comment. - (break_alias_scc_partitions): Update postorder number. - -2017-10-11 Martin Liska - - PR sanitizer/82490 - * opts.c (parse_no_sanitize_attribute): Do not use error_value - variable. - * opts.h (parse_no_sanitize_attribute): Remove last argument. - -2017-10-11 Martin Liska - - * print-rtl.c (print_insn): Move declaration of idbuf - to same scope as name. - -2017-10-11 Martin Liska - - Revert r253637: - - PR sanitizer/82484 - * sanopt.c (sanitize_rewrite_addressable_params): Do not handle - volatile arguments. - -2017-10-11 Martin Liska - - PR sanitizer/82484 - * sanopt.c (sanitize_rewrite_addressable_params): Do not handle - volatile arguments. - -2017-10-11 Adhemerval Zanella - - * config.gcc (default_gnu_indirect_function): Default to yes for - arm*-*-linux* with glibc. - -2017-10-11 Richard Biener - - * tree-scalar-evolution.c (get_scalar_evolution): Handle - default-defs and types we do not want to analyze. - (interpret_loop_phi): Replace unreachable code with an assert. - (compute_scalar_evolution_in_loop): Remove and inline ... - (analyze_scalar_evolution_1): ... here, replacing condition with - what makes the intent clearer. Remove handling of cases - get_scalar_evolution now handles. - -2017-10-10 Jim Wilson - - PR rtl-optimization/81434 - * haifa-sched.c (prune_ready_list): Init min_cost_group to 0. Update - comment for main loop. In sched_group_found if, also add checks for - pass and min_cost_group. - -2017-10-10 Segher Boessenkool - - * config/rs6000/rs6000.c (TARGET_INSN_COST): New. - (rs6000_insn_cost): New function. - * config/rs6000/rs6000.md (cost): New attribute. - -2017-10-10 Jakub Jelinek - H.J. Lu - - PR target/79565 - PR target/82483 - * config/i386/i386.c (ix86_init_mmx_sse_builtins): Add - OPTION_MASK_ISA_MMX for __builtin_ia32_maskmovq, - __builtin_ia32_vec_ext_v4hi and __builtin_ia32_vec_set_v4hi. - (ix86_expand_builtin): Treat OPTION_MASK_ISA_MMX similarly - to OPTION_MASK_ISA_AVX512VL - builtins that have both - OPTION_MASK_ISA_MMX and some other bit set require both - mmx and the ISAs without the mmx bit. - * config/i386/i386-builtin.def (__builtin_ia32_cvtps2pi, - __builtin_ia32_cvttps2pi, __builtin_ia32_cvtpi2ps, - __builtin_ia32_pavgb, __builtin_ia32_pavgw, __builtin_ia32_pmulhuw, - __builtin_ia32_pmaxub, __builtin_ia32_pmaxsw, __builtin_ia32_pminub, - __builtin_ia32_pminsw, __builtin_ia32_psadbw, __builtin_ia32_pmovmskb, - __builtin_ia32_pshufw, __builtin_ia32_cvtpd2pi, - __builtin_ia32_cvttpd2pi, __builtin_ia32_cvtpi2pd, - __builtin_ia32_pmuludq, __builtin_ia32_pabsb, __builtin_ia32_pabsw, - __builtin_ia32_pabsd, __builtin_ia32_phaddw, __builtin_ia32_phaddd, - __builtin_ia32_phaddsw, __builtin_ia32_phsubw, __builtin_ia32_phsubd, - __builtin_ia32_phsubsw, __builtin_ia32_pmaddubsw, - __builtin_ia32_pmulhrsw, __builtin_ia32_pshufb, __builtin_ia32_psignb, - __builtin_ia32_psignw, __builtin_ia32_psignd, __builtin_ia32_movntq, - __builtin_ia32_paddq, __builtin_ia32_psubq, __builtin_ia32_palignr): - Add OPTION_MASK_ISA_MMX. - -2017-10-10 Andreas Tobler - - * config.gcc (armv7*-*-freebsd*): New target. - (armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define. - -2017-10-10 Jan Hubicka - - * x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, - X86_TUNE_ADJUST_UNROLL, X86_TUNE_ONE_IF_CONV_INSN): Move to right - spot in the file. - -2017-10-10 Richard Sandiford - - * wide-int.h (wide_int_ref_storage): Make host_dependent_precision - a template parameter. - (WIDE_INT_REF_FOR): Update accordingly. - * tree.h (wi::int_traits ): Delete. - (wi::tree_to_widest_ref, wi::tree_to_offset_ref): New typedefs. - (wi::to_widest, wi::to_offset): Use them. Expand commentary. - (wi::tree_to_wide_ref): New typedef. - (wi::to_wide): New function. - * calls.c (get_size_range): Use wi::to_wide when operating on - trees as wide_ints. - * cgraph.c (cgraph_node::create_thunk): Likewise. - * config/i386/i386.c (ix86_data_alignment): Likewise. - (ix86_local_alignment): Likewise. - * dbxout.c (stabstr_O): Likewise. - * dwarf2out.c (add_scalar_info, gen_enumeration_type_die): Likewise. - * expr.c (const_vector_from_tree): Likewise. - * fold-const-call.c (host_size_t_cst_p, fold_const_call_1): Likewise. - * fold-const.c (may_negate_without_overflow_p, negate_expr_p) - (fold_negate_expr_1, int_const_binop_1, const_binop) - (fold_convert_const_int_from_real, optimize_bit_field_compare) - (all_ones_mask_p, sign_bit_p, unextend, extract_muldiv_1) - (fold_div_compare, fold_single_bit_test, fold_plusminus_mult_expr) - (pointer_may_wrap_p, expr_not_equal_to, fold_binary_loc) - (fold_ternary_loc, multiple_of_p, fold_negate_const, fold_abs_const) - (fold_not_const, round_up_loc): Likewise. - * gimple-fold.c (gimple_fold_indirect_ref): Likewise. - * gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Likewise. - (alloca_call_type): Likewise. - * gimple.c (preprocess_case_label_vec_for_gimple): Likewise. - * godump.c (go_output_typedef): Likewise. - * graphite-sese-to-poly.c (tree_int_to_gmp): Likewise. - * internal-fn.c (get_min_precision): Likewise. - * ipa-cp.c (ipcp_store_vr_results): Likewise. - * ipa-polymorphic-call.c - (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise. - * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise. - (ipa_modify_call_arguments): Likewise. - * match.pd: Likewise. - * omp-low.c (scan_omp_1_op, lower_omp_ordered_clauses): Likewise. - * print-tree.c (print_node_brief, print_node): Likewise. - * stmt.c (expand_case): Likewise. - * stor-layout.c (layout_type): Likewise. - * tree-affine.c (tree_to_aff_combination): Likewise. - * tree-cfg.c (group_case_labels_stmt): Likewise. - * tree-data-ref.c (dr_analyze_indices): Likewise. - (prune_runtime_alias_test_list): Likewise. - * tree-dump.c (dequeue_and_dump): Likewise. - * tree-inline.c (remap_gimple_op_r, copy_tree_body_r): Likewise. - * tree-predcom.c (is_inv_store_elimination_chain): Likewise. - * tree-pretty-print.c (dump_generic_node): Likewise. - * tree-scalar-evolution.c (iv_can_overflow_p): Likewise. - (simple_iv_with_niters): Likewise. - * tree-ssa-address.c (addr_for_mem_ref): Likewise. - * tree-ssa-ccp.c (ccp_finalize, evaluate_stmt): Likewise. - * tree-ssa-loop-ivopts.c (constant_multiple_of): Likewise. - * tree-ssa-loop-niter.c (split_to_var_and_offset) - (refine_value_range_using_guard, number_of_iterations_ne_max) - (number_of_iterations_lt_to_ne, number_of_iterations_lt) - (get_cst_init_from_scev, record_nonwrapping_iv) - (scev_var_range_cant_overflow): Likewise. - * tree-ssa-phiopt.c (minmax_replacement): Likewise. - * tree-ssa-pre.c (compute_avail): Likewise. - * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise. - (vn_reference_maybe_forwprop_address, valueized_wider_op): Likewise. - * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise. - * tree-ssa-uninit.c (is_pred_expr_subset_of): Likewise. - * tree-ssanames.c (set_nonzero_bits, get_nonzero_bits): Likewise. - * tree-switch-conversion.c (collect_switch_conv_info, array_value_type) - (dump_case_nodes, try_switch_expansion): Likewise. - * tree-vect-loop-manip.c (vect_gen_vector_loop_niters): Likewise. - (vect_do_peeling): Likewise. - * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise. - * tree-vect-stmts.c (vectorizable_load): Likewise. - * tree-vrp.c (compare_values_warnv, vrp_int_const_binop): Likewise. - (zero_nonzero_bits_from_vr, ranges_from_anti_range): Likewise. - (extract_range_from_binary_expr_1, adjust_range_with_scev): Likewise. - (overflow_comparison_p_1, register_edge_assert_for_2): Likewise. - (is_masked_range_test, find_switch_asserts, maybe_set_nonzero_bits) - (vrp_evaluate_conditional_warnv_with_ops, intersect_ranges): Likewise. - (range_fits_type_p, two_valued_val_range_p, vrp_finalize): Likewise. - (evrp_dom_walker::before_dom_children): Likewise. - * tree.c (cache_integer_cst, real_value_from_int_cst, integer_zerop) - (integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2) - (tree_floor_log2, tree_ctz, mem_ref_offset, tree_int_cst_sign_bit) - (tree_int_cst_sgn, get_unwidened, int_fits_type_p): Likewise. - (get_type_static_bounds, num_ending_zeros, drop_tree_overflow) - (get_range_pos_neg): Likewise. - * ubsan.c (ubsan_expand_ptr_ifn): Likewise. - * config/darwin.c (darwin_mergeable_constant_section): Likewise. - * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise. - * config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise. - * config/avr/avr.c (avr_fold_builtin): Likewise. - * config/bfin/bfin.c (bfin_local_alignment): Likewise. - * config/msp430/msp430.c (msp430_attr): Likewise. - * config/nds32/nds32.c (nds32_insert_attributes): Likewise. - * config/powerpcspe/powerpcspe-c.c - (altivec_resolve_overloaded_builtin): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate) - (rs6000_expand_ternop_builtin): Likewise. - * config/rs6000/rs6000-c.c - (altivec_resolve_overloaded_builtin): Likewise. - * config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise. - (rs6000_expand_ternop_builtin): Likewise. - * config/s390/s390.c (s390_handle_hotpatch_attribute): Likewise. - -2017-10-10 Bin Cheng - - * tree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes - when copying loop nest with only one inner loop. - -2017-10-10 Richard Biener - - * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting - blocks if SCEV is active. - * tree-scalar-evolution.c (analyze_scalar_evolution_1): Remove - dead code. - (analyze_scalar_evolution): Handle cached evolutions the obvious way. - (scev_initialize): Assert we are not yet initialized. - -2017-10-10 Bin Cheng - - * tree-loop-distribution.c (generate_loops_for_partition): Remove - inner loop's exit stmt by making it always exit the loop, otherwise - we would generate an infinite empty loop. - -2017-10-10 Bin Cheng - - * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip - renaming variables in new preheader if it's deleted. - -2017-10-10 Bin Cheng - - * tree-loop-distribution.c (struct partition): Remove unused field - loops of the structure. - (partition_alloc, partition_free): Ditto. - (build_rdg_partition_for_vertex): Ditto. - -2017-10-09 Jeff Law - - * targhooks.c (default_stack_clash_protection_final_dynamic_probe): Fix - return type to match prototype and documentation. - -2010-10-09 Segher Boessenkool - - * config/rs6000/rs6000.c (processor_costs): Move to ... - * config/rs6000/rs6000.h: ... here. - (rs6000_cost): Declare. - -2017-10-09 Eric Botcazou - - * except.c (setjmp_fn): New global variable. - (init_eh): Initialize it if DONT_USE_BUILTIN_SETJMP is defined. - (sjlj_emit_function_enter): Call it instead of BUILTIN_SETJMP - if DONT_USE_BUILTIN_SETJMP is defined. - -2017-10-09 Segher Boessenkool - - * target.def (insn_cost): New hook. - * doc/tm.texi.in (TARGET_INSN_COST): New hook. - * doc/tm.texi: Regenerate. - * rtlanal.c (insn_cost): Use the new hook. - -2017-10-09 Segher Boessenkool - - * combine.c (combine_validate_cost): Compute the new insn_cost, - not just pattern_cost. - (try_combine): Adjust comment. - -2017-10-09 Segher Boessenkool - - * cfgrtl.c (rtl_account_profile_record): Replace insn_rtx_cost with - insn_cost. - * combine.c (uid_insn_cost): Adjust comment. - (combine_validate_cost): Adjust comment. Use pattern_cost instead - of insn_rtx_cost - (combine_instructions): Use insn_cost instead of insn_rtx_cost. - * dse.c (find_shift_sequence): Ditto. - * ifcvt.c (cheap_bb_rtx_cost_p): Ditto. - (bb_valid_for_noce_process_p): Use pattern_cost. - * rtl.h (insn_rtx_cost): Delete. - (pattern_cost): New prototype. - (insn_cost): New prototype. - * rtlanal.c (insn_rtx_cost): Rename to... - (pattern_cost): ... this. - (insn_cost): New. - -2017-10-09 Uros Bizjak - - * config/i386/i386.md (*jcc_2): Remove insn pattern. - (*jcc_0_r_i387): Ditto. - (*jccxf_r_i387): Ditto. - (*jcc_r_i387): Ditto. - (*jccu_r_i387): Ditto. - (*jcc__r_i387): Ditto. - (*jcc): Rename from *jcc_1. - -2017-10-09 Bill Schmidt - - * config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Process - deferred rescans after the lvx/stvx recombination pre-pass. - -2017-10-09 Michael Meissner - - * config/rs6000/amo.h: New include file to provide ISA 3.0 atomic - memory operation instruction support. - * config.gcc (powerpc*-*-*): Include amo.h as an extra header. - (rs6000-ibm-aix[789]*): Likewise. - * doc/extend.texi (PowerPC Atomic Memory Operation Functions): - Document new functions. - -2017-10-09 Richard Biener - - PR tree-optimization/82397 - * tree-data-ref.c (data_ref_compare_tree): Make sure to return - equality only for semantically equal trees. - -2017-10-09 Richard Biener - - PR tree-optimization/82449 - * sese.c (scev_analyzable_p): Check whether the SCEV is linear. - * tree-chrec.h (evolution_function_is_constant_p): Adjust to - allow constant addresses. - * tree-chrec.c (scev_is_linear_expression): Constant evolutions - are linear. - -2017-10-09 Andreas Krebbel - - * config/s390/s390-builtins.def (vec_nabs, vec_vfi): Fix builtin - flags. - -2017-10-09 Andreas Krebbel - - PR target/82463 - * config/s390/vecintrin.h (vec_madd, vec_msub): Fix macro - definitions. - -2017-10-09 Andreas Krebbel - - PR target/82465 - * config/s390/s390-builtins.def (vec_sqrt): Fix builtin flags. - -2017-10-09 Jakub Jelinek - - PR target/82464 - * config/s390/s390-builtins.def (s390_vec_xor_flt_a, - s390_vec_xor_flt_b, s390_vec_xor_flt_c): New. - -2017-10-09 Richard Sandiford - - * wide-int.h (WI_BINARY_OPERATOR_RESULT): New macro. - (WI_BINARY_PREDICATE_RESULT): Likewise. - (wi::binary_traits::operator_result): New type. - (wi::binary_traits::predicate_result): Likewise. - (generic_wide_int::operator~, unary generic_wide_int::operator-) - (generic_wide_int::operator==, generic_wide_int::operator!=) - (generic_wide_int::operator&, generic_wide_int::and_not) - (generic_wide_int::operator|, generic_wide_int::or_not) - (generic_wide_int::operator^, generic_wide_int::operator+ - (binary generic_wide_int::operator-, generic_wide_int::operator*): - Delete. - (operator~, unary operator-, operator==, operator!=, operator&) - (operator|, operator^, operator+, binary operator-, operator*): New - functions. - * expr.c (get_inner_reference): Use wi::bit_and_not. - * fold-const.c (fold_binary_loc): Likewise. - * ipa-prop.c (ipa_compute_jump_functions_for_edge): Likewise. - * tree-ssa-ccp.c (get_value_from_alignment): Likewise. - (bit_value_binop): Likewise. - * tree-ssa-math-opts.c (find_bswap_or_nop_load): Likewise. - * tree-vrp.c (zero_nonzero_bits_from_vr): Likewise. - (extract_range_from_binary_expr_1): Likewise. - (masked_increment): Likewise. - (simplify_bit_ops_using_ranges): Likewise. - -2017-10-09 Martin Jambor - - PR hsa/82416 - * hsa-common.h (hsa_op_with_type): New method extend_int_to_32bit. - * hsa-gen.c (hsa_extend_inttype_to_32bit): New function. - (hsa_type_for_scalar_tree_type): Use it. Always force min32int for - COMPLEX types. - (hsa_fixup_mov_insn_type): New function. - (hsa_op_with_type::get_in_type): Use it. - (hsa_build_append_simple_mov): Likewise. Allow sub-32bit - immediates in an assert. - (hsa_op_with_type::extend_int_to_32bit): New method. - (gen_hsa_insns_for_bitfield): Fixup instruction and intermediary - types. Convert to dest type if necessary. - (gen_hsa_insns_for_bitfield_load): Fixup load type if necessary. - (reg_for_gimple_ssa): Pass false as min32int to - hsa_type_for_scalar_tree_type. - (gen_hsa_addr): Fixup type when creating addresable temporary. - (gen_hsa_cmp_insn_from_gimple): Extend operands if necessary. - (gen_hsa_unary_operation): Extend operands and convert to dest type if - necessary. Call hsa_fixup_mov_insn_type. - (gen_hsa_binary_operation): Changed operand types to hsa_op_with_type, - extend operands and convert to dest type if necessary. - (gen_hsa_insns_for_operation_assignment): Extend operands and convert - to dest type if necessary. - (set_output_in_type): Call hsa_fixup_mov_insn_type. Just ude dest - if conversion nt necessary and size matches. - (gen_hsa_insns_for_load): Call hsa_fixup_mov_insn_type, convert - to dest type if necessary. - (gen_hsa_insns_for_store): Call hsa_fixup_mov_insn_type. - (gen_hsa_insns_for_switch_stmt): Likewise. Also extend operands if - necessary. - (gen_hsa_clrsb): Likewise. - (gen_hsa_ffs): Likewise. - (gen_hsa_divmod): Extend operands and convert to dest type if - necessary. - (gen_hsa_atomic_for_builtin): Change type of op to hsa_op_with_type. - -2017-10-08 Segher Boessenkool - - * config/rs6000/rs6000.md (conditional branch): Clean up formatting. - Remove empty default arguments. Use a brace block as output - statement. - (conditional return): Ditto. - (jump): Ditto. - (indirect_jump): Ditto. Use b%T0 instead of bctr/blr. - (tablejump, tablejumpsi, tablejumpdi, *tablejump_internal1): - Ditto. - (group_ending_nop): Ditto. - (doloop_end): Ditto. - (ctr, ctr_internal1, ctr_internal2): Ditto. - (splitters for those): Ditto. - -2017-10-08 Segher Boessenkool - - * config/rs6000/rs6000-string.c (expand_strncmp_align_check): Invert - a conditional jump (and the compare for it) so that pc_rtx is the - last operand. - * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Adjust - for the deleted and renamed ctr_internal[234] patterns. - * config/rs6000/rs6000.md: Delete second conditional branch pattern. - Delete second conditional return pattern. - (ctr_internal2): Delete this second bdnz pattern. - (ctr_internal3): Rename to ctr_internal2. - (ctr_internal4): Delete this second bdz pattern. - -2017-10-08 Eric Botcazou - - * tree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values. - (always_initialized_rtx_for_ssa_name_p): New predicate. - * tree-outof-ssa.c (remove_ssa_form): Initialize new field of SA. - (finish_out_of_ssa): Free new field of SA. - * tree-ssa-coalesce.h (get_undefined_value_partitions): Declare. - * tree-ssa-coalesce.c: Include tree-ssa.h. - (get_parm_default_def_partitions): Remove extern keyword. - (get_undefined_value_partitions): New function. - * expr.c (expand_expr_real_1) : For a SSA_NAME, do - not set SUBREG_PROMOTED_VAR_P on the sub-register if it may contain - uninitialized bits. - * loop-iv.c (iv_get_reaching_def): Disqualify all subregs. - -2017-10-08 Eric Botcazou - - * builtins.def (BUILT_IN_SETJMP): Revert latest change. - -2017-10-08 Jan Hubicka - - * config/i386/i386.c (ix86_expand_set_or_movmem): Disable 512bit loops - for targets that preffer 128bit. - -2017-10-08 Jan Hubicka - - * config/i386/i386.c (has_dispatch): Disable for Ryzen. - -2017-10-08 Olivier Hainque - - * config/arm/arm.c (arm_set_return_address): Use MEM_VOLATILE_P - on the target mem instead of RTX_FRAME_RELATED_P on the insn to - prevent DSE. - (thumb_set_return_address): Likewise. - -2017-10-08 Olivier Hainque - - * common/config/arm/arm-common.c (arm_except_unwind_info): - Handle DWARF2_UNWIND_INFO. - -2017-10-07 Michael Collison - - * config/aarch64/aarch64.md (*aarch64_reg__minus3): - New pattern. - -2017-10-07 Eric Botcazou - - * builtins.def (BUILT_IN_SETJMP): Declare as library builtin instead - of GCC builtin if DONT_USE_BUILTIN_SETJMP is defined. - * except.c (sjlj_emit_function_enter): If DONT_USE_BUILTIN_SETJMP is - defined, force the creation of a new block for a dispatch label. - -2017-10-07 Jan Hubicka - - * invoke.texi (Wsuggest-attribute=cold): Document. - * common.opt (Wsuggest-attribute=cold): New - * ipa-pure-const.c (warn_function_cold): New function. - * predict.c (compute_function_frequency): Use it. - * predict.h (warn_function_cold): Declare. - -2017-10-06 Jan Hubicka - - * tree-switch-conversion.c (do_jump_if_equal, emit_cmp_and_jump_insns): - Update profile. - -2017-10-06 Martin Liska - - * sanopt.c (struct sanopt_tree_triplet_hash): Remove inline - keyword for member functions. - (struct sanopt_tree_couple): New struct. - (struct sanopt_tree_couple_hash): New function. - (struct sanopt_ctx): Add new hash_map. - (has_dominating_ubsan_ptr_check): New function. - (record_ubsan_ptr_check_stmt): Likewise. - (maybe_optimize_ubsan_ptr_ifn): Likewise. - (sanopt_optimize_walker): Handle IFN_UBSAN_PTR. - (pass_sanopt::execute): Handle also SANITIZE_POINTER_OVERFLOW. - -2017-10-06 Sudakshina Das - - PR target/82440 - * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Only call - aarch64_simd_valid_immediate on CONST_VECTORs. - (aarch64_reg_or_bic_imm): Likewise. - -2017-10-06 Wilco Dijkstra - - PR rtl-optimization/82396 - * haifa-sched.c (ready_sort_real): Disable qsort checking. - -2017-10-06 Sebastian Pop - - * graphite-dependences.c (scop_get_reads): Move code to... - (scop_get_must_writes): Move code to... - (scop_get_may_writes): Move code to... - (scop_get_reads_and_writes): ... here. - (scop_get_dependences): Call scop_get_reads_and_writes. - -2017-10-06 Jakub Jelinek - - PR tree-optimization/82434 - * fold-const.h (can_native_encode_type_p, - can_native_encode_string_p): Remove. - * fold-const.c (native_encode_int): Formatting fixes. If ptr is NULL, - don't encode anything, just return what would be otherwise returned. - (native_encode_fixed, native_encode_complex, native_encode_vector): - Likewise. - (native_encode_string): Likewise. Inline by hand - can_native_encode_string_p. - (can_native_encode_type_p): Remove. - (can_native_encode_string_p): Remove. - * tree-vect-stmts.c (vectorizable_store): Instead of testing just - STRING_CSTs using can_native_encode_string_p, test all - CONSTANT_CLASS_P values using native_encode_expr with NULL ptr. - * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Remove last - argument from native_encode_expr. - (rhs_valid_for_store_merging_p): Use native_encode_expr with NULL ptr. - (pass_store_merging::execute): Don't unnecessarily look for 3 stmts, - but just 2. - -2017-10-06 Richard Biener - - PR tree-optimization/82397 - * tree-vect-data-refs.c (dr_group_sort_cmp): Do not use - operand_equal_p but rely on data_ref_compare_tree for detecting - equalities. - (vect_analyze_data_ref_accesses): Use data_ref_compare_tree - to match up with dr_group_sort_cmp. - -2017-10-06 Andreas Krebbel - - PR target/82322 - * config/s390/s390-builtins.def (s390_vfi): Define new overloaded - builtin. - * config/s390/s390-builtin-types.def: Regenerate. - -2017-10-06 Andreas Krebbel - - PR target/82317 - * config/s390/s390-builtin-types.def: Regenerate. - * config/s390/s390-builtins.def (s390_vfmaxdb_4, s390_vfmindb_4): - Change flag from B_VXE to B_VX. - (s390_vec_min_dbl): Remove B_VXE flag. - -2017-10-06 Richard Biener - - * graphite-isl-ast-to-gimple.c: Include ssa.h and tree-ssa.h. - (translate_isl_ast_to_gimple::translate_pending_phi_nodes, - translate_isl_ast_to_gimple::is_valid_rename, - translate_isl_ast_to_gimple::get_rename, - translate_isl_ast_to_gimple::get_def_bb_for_const, - translate_isl_ast_to_gimple::get_new_name, - translate_isl_ast_to_gimple::collect_all_ssa_names, - translate_isl_ast_to_gimple::copy_loop_phi_args, - translate_isl_ast_to_gimple::collect_all_ssa_names, - translate_isl_ast_to_gimple::copy_loop_phi_args, - translate_isl_ast_to_gimple::copy_loop_phi_nodes, - translate_isl_ast_to_gimple::add_close_phis_to_merge_points, - translate_isl_ast_to_gimple::add_close_phis_to_outer_loops, - translate_isl_ast_to_gimple::copy_loop_close_phi_args, - translate_isl_ast_to_gimple::copy_loop_close_phi_nodes, - translate_isl_ast_to_gimple::copy_cond_phi_args, - translate_isl_ast_to_gimple::copy_cond_phi_nodes, - translate_isl_ast_to_gimple::edge_for_new_close_phis, - translate_isl_ast_to_gimple::add_phi_arg_for_new_expr, - translate_isl_ast_to_gimple::rename_uses, - translate_isl_ast_to_gimple::rename_all_uses): Remove. - (translate_isl_ast_to_gimple::get_rename_from_scev): Simplify. - (set_rename_for_each_def): Likewise. - (graphite_copy_stmts_from_block): Handle debug stmt resetting - here. Handle rewriting SCEV analyzable uses here. - (copy_bb_and_scalar_dependences): Generate code for PHI - copy-in/outs. - (graphite_regenerate_ast_isl): Adjust. - * graphite-scop-detection.c (trivially_empty_bb_p): Move to sese.[ch]. - (add_write, add_read): New functions. - (build_cross_bb_scalars_def): Use it and simplify. - (build_cross_bb_scalars_use): Likewise. - (graphite_find_cross_bb_scalar_vars): Inline into... - (try_generate_gimple_bb): ...here. Add dependences for PHIs, - simulating out-of-SSA. Compute liveout and add dependencies. - (build_scops): Force an empty entry block. - * sese.h (sese_info_t::liveout, sese_info_t::debug_liveout): New - members. - (sese_build_liveouts): Declare. - (sese_trivially_empty_bb_p): Likewise. - * sese.c (sese_build_liveouts_bb): Properly handle PHIs, - compute liveout and debug_liveout. - (sese_bad_liveouts_use): Remove. - (sese_reset_debug_liveouts_bb): Likewise. - (sese_reset_debug_liveouts): Rewrite in terms of debug_liveout. - (sese_build_liveouts): Build liveout and debug_liveout and store - it in region. - (new_sese_info): Adjust. - (free_sese_info): Likewise. - (sese_insert_phis_for_liveouts): Reset debug stmts from here, - do not build liveout here. - (move_sese_in_condition): Adjust region entry. - (scev_analyzable_p): Match up with chrec_apply requirements. - (sese_trivially_empty_bb_p): New. - * tree-into-ssa.c (get_reaching_def): Properly support generating - default-defs for incremental rewrite of anonymous names. - -2017-10-06 Richard Biener - - * graphite-sese-to-poly.c (extract_affine): For casts increasing - precision do not perform modulo reduction. - -2017-10-06 Richard Biener - - PR tree-optimization/82436 - * tree-vect-slp.c (vect_supported_load_permutation_p): More - conservatively choose the vectorization factor when checking - whether we can perform the required load permutation. - (vect_transform_slp_perm_load): Assert when we may not fail. - -2017-10-05 Segher Boessenkool - - * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Correct error - message for incompatible -msdata=* and -mcall-* options. - -2017-10-05 Jan Hubicka - - * config/i386/i386.c (ia32_multipass_dfa_lookahead): Default to issue - rate for post-reload scheduling. - -2017-10-05 Tamar Christina - - * doc/sourcebuild.texi (vect_sizes_16B_8B, vect_sizes_32B_16B): New. - -2017-10-05 Jan Hubicka - - * config/i386/i386.c (znver1_cost): Set branch_cost to 3 (instead of 2) - to improve monte carlo in scimark. - -2017-10-05 Jan Hubicka - - * config/i386/i386.c (ix86_size_cost, i386_cost, i486_cost, - pentium_cost, lakemont_cost, pentiumpro_cost, geode_cost, k6_cost, - athlon_cost, k8_cost, amdfam10_cost, btver1_cost, btver2_cost, - pentium4_cost, nocona_cost): Set reassociation width to 1. - (bdver1_cost, bdver2_cost, bdver3_cost, bdver4_cost): Set reassociation - width to 2 for fp operations and 1 otherwise. - (znver1_cost): Set scalar reassoc width to 4 and vector to 3 and 6 - for int and fp. - (atom_cost): Set reassociation width to 2. - (slm_cost, generic_cost): Set fp reassociation width - to 2 and 1 otherwise. - (intel_cost): Set fp reassociation width to 4 and 1 otherwise. - (core_cost): Set fp reassociation width to 4 and vector to 2. - (ix86_reassociation_width): Rewrite using cost table; special case - plus/minus on Zen; honor X86_TUNE_SSE_SPLIT_REGS - and TARGET_AVX128_OPTIMAL. - * config/i386/i386.h (processor_costs): Add - reassoc_int, reassoc_fp, reassoc_vec_int, reassoc_vec_fp. - (TARGET_VECTOR_PARALLEL_EXECUTION, TARGET_REASSOC_INT_TO_PARALLEL, - TARGET_REASSOC_FP_TO_PARALLEL): Remove. - * x86-tune.def (X86_TUNE_REASSOC_INT_TO_PARALLEL): Remove. - (X86_TUNE_REASSOC_FP_TO_PARALLEL): Remove. - (X86_TUNE_VECTOR_PARALLEL_EXECUTION): Remove. - -2017-10-05 Nathan Sidwell - - * doc/invoke.texi (Wparentheses): Document C++ MVP behaviour. - -2017-10-05 Tamar Christina - - * config/arm/arm.c (arm_test_fpu_data): New. - (arm_run_selftests): Call arm_test_fpu_data. - -2017-10-04 Nathan Sidwell - - * toplev.c (toplev::main): Remove excess parens on pretty_printer - decl. - * caller-save.c (insert_save): Remove excess parens on TO_SAVE parm. - -2017-10-04 Sudakshina Das - - * config/aarch64/aarch64-protos.h (enum simd_immediate_check): New - check type for aarch64_simd_valid_immediate. - (aarch64_output_simd_mov_immediate): Update prototype. - (aarch64_simd_valid_immediate): Update prototype. - * config/aarch64/aarch64-simd.md (orr3): modified pattern to add - support for ORR-immediate. - (and3): modified pattern to add support for BIC-immediate. - * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Function - now checks for valid immediate for BIC and ORR based on new enum - argument. - (aarch64_output_simd_mov_immediate): Function now used to output - BIC/ORR imm as well based on new enum argument. - * config/aarch64/constraints.md (Do): New vector immediate constraint. - (Db) : Likewise. - * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): New predicate. - (aarch64_reg_or_bic_imm): Likewise. - -2017-10-04 Andreas Krebbel - - * config/s390/vx-builtins.md ("vec_mergeh") - ("vec_mergel"): Change mode iterator to V_128_NOSINGLE. - -2017-10-04 Wilco Dijkstra - - Revert r253399: - - PR rtl-optimization/82396 - * haifa-sched.c (autopref_multipass_init): Simplify - initialization. - (autopref_rank_data): Simplify sort order. - * sched-int.h (autopref_multipass_data_): Remove - multi_mem_insn_p, min_offset and max_offset. - -2017-10-04 Andreas Krebbel - - * doc/sourcebuild.texi: Document vect_peeling_profitable. - -2017-10-04 Andreas Krebbel - - * doc/sourcebuild.texi: Document vect_intdouble_cvt and - vect_doubleint_cvt. - -2017-10-04 Andreas Krebbel - - * doc/sourcebuild.texi: Document vect_long_mult. - -2017-10-04 Richard Sandiford - - PR tree-optimization/82413 - * fold-const.c (build_range_check): Use widest_int when comparing - the maximum ETYPE value with HIGH. - -2017-10-04 Wilco Dijkstra - - PR rtl-optimization/82396 - * haifa-sched.c (autopref_multipass_init): Simplify - initialization. - (autopref_rank_data): Simplify sort order. - * sched-int.h (autopref_multipass_data_): Remove - multi_mem_insn_p, min_offset and max_offset. - -2017-10-04 Jakub Jelinek - - PR tree-optimization/82381 - * tree-ssa-reassoc.c (sort_by_operand_rank): Check for different - oeN->rank first. Return 1 or -1 if one op is SSA_NAME and the other - is not. - - PR tree-optimization/82374 - * omp-low.c (create_omp_child_function): Copy DECL_ATTRIBUTES, - DECL_FUNCTION_SPECIFIC_OPTIMIZATION, - DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_VERSIONED from - current_function_decl to the new decl. - -2017-10-03 Michael Meissner - - * config/rs6000/rs6000-builtin.def (BU_FLOAT128_2_HW): Define new - helper macro for IEEE float128 hardware built-in functions. - (SQRTF128_ODD): Add built-in functions with the round-to-odd - semantics. - (TRUNCF128_ODD): Likewise. - (ADDF128_ODD): Likewise. - (SUBF128_ODD): Likewise. - (MULF128_ODD): Likewise. - (DIVF128_ODD): Likewise. - (FMAF128_ODD): Likewise. - * config/rs6000/rs6000.md (UNSPEC_ROUND_TO_ODD): Rename to - UNSPEC_TRUNC_ROUND_TO_ODD. - (UNSPEC_TRUNC_ROUND_TO_ODD): Likewise. - (UNSPEC_ADD_ROUND_TO_ODD): New unspec codes for the IEEE 128-bit - floating point round to odd instructions. - (UNSPEC_SUB_ROUND_TO_ODD): Likewise. - (UNSPEC_MUL_ROUND_TO_ODD): Likewise. - (UNSPEC_DIV_ROUND_TO_ODD): Likewise. - (UNSPEC_FMA_ROUND_TO_ODD): Likewise. - (UNSPEC_SQRT_ROUND_TO_ODD): Likewise. - (truncsf2_hw): Change the truncate with round to odd - expansion to use UNSPEC_TRUNC_ROUND_TO_ODD. - (add3_odd): Add insns for IEEE 128-bit floating point round - to odd hardware instructions. - (sub3_odd): Likewise. - (mul3_odd): Likewise. - (div3_odd): Likewise. - (sqrt2_odd): Likewise. - (fma4_odd): Likewise. - (fms4_odd): Likewise. - (nfma4_odd): Likewise. - (nfms4_odd): Likewise. - (truncdf2_odd): Change the truncate with round to odd - expansion to use UNSPEC_TRUNC_ROUND_TO_ODD. Add a generator - function. - * doc/extend.texi (PowerPC built-in functions): Update documentation - for existing IEEE float128-bit built-in functions. Add built-in - functions that generate the IEEE 128-bit floating point round to - odd instructions. - -2017-10-03 Segher Boessenkool - - PR rtl-optimization/77729 - * simplify-rtx.c (simplify_binary_operation_1): Delete the (X&C1)|C2 - to (X&(C1&~C2))|C2 transformations. - -2017-10-03 Martin Jambor - - PR tree-optimization/82363 - * tree-sra.c (propagate_subaccesses_across_link): In unrecoverable - mismatch, mark lacc written regardless of racc. - -2017-10-03 Jakub Jelinek - - PR tree-optimization/82381 - * tree-ssa-reassoc.c (sort_by_operand_rank): Don't check - stmt_to_insert nor wheather SSA_NAMEs are default defs. - Return 1 or -1 if one of bba and bbb is NULL. If bb_rank is equal, - fallthrough into reassoc_stmt_dominates_stmt_p. - - PR target/82386 - * combine.c (combine_instructions): Don't combine in unreachable - basic blocks. - -2017-10-02 Peter Bergner - - PR target/80210 - * config/rs6000/rs6000.c (rs6000_option_override_internal): Rewrite - function to not use the have_cpu variable. Do not set cpu_index, - rs6000_cpu_index or rs6000_tune_index if we end up using TARGET_DEFAULT - or the default cpu. - (rs6000_valid_attribute_p): Remove duplicate initializations of - old_optimize and func_optimize. - (rs6000_pragma_target_parse): Call rs6000_activate_target_options (). - (rs6000_activate_target_options): Make global. - * config/rs6000/rs6000-protos.h (rs6000_activate_target_options): Add - prototype. - -2017-10-02 Jakub Jelinek - - * tree-dfa.c (get_ref_base_and_extent): Set *pmax_size to -1 - if *poffset + *pmax_size overflows in HOST_WIDE_INT. - Set *poffset to 0 and *psize and *pmax_size to -1 if - *poffset + *psize overflows in HOST_WIDE_INT. - - PR tree-optimization/82387 - PR tree-optimization/82388 - PR tree-optimization/82389 - * tree-ssa-dse.c (dse_classify_store): Test byte_tracking_enabled - instead of live_bytes non-NULL. - -2017-10-02 Georg-Johann Lay - - PR target/41076 - * confg/avr/avr.md (*iorhi3.ashift8-ext.zerox): Add "r,r,0" - alternative. - -2017-10-02 Richard Biener - - * graphite-isl-ast-to-gimple.c (set_codegen_error): With - -fchecking and --param graphite-allow-codegen-errors=0 ICE. - * params.def (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): New param. - -2017-10-02 Richard Sandiford - - * tree.h (wi::int_traits ::decompose): Assert that the - requested precision matches the type's. - * calls.c (alloc_max_size): Calculate the new candidate size as - a widest_int and use wi::to_widest when comparing it with the - current candidate size. - * gimple-ssa-warn-alloca.c (pass_walloca::execute): Compare with - zero rather than integer_zero_node. - * match.pd: Check for a no-op conversion before using wi::add - rather than after. Use tree_to_uhwi when summing small shift - counts into an unsigned int. - -2017-10-02 Richard Sandiford - Alan Hayward - David Sherwood - - PR target/71307 - * config/aarch64/aarch64.h (POINTER_AND_FP_REGS): New reg class. - (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly. - * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle - POINTER_AND_FP_REGS. - -2017-10-02 Richard Biener - - PR tree-optimization/82355 - * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build - a mapping for the enclosing loop but avoid generating one for - the loop tree root. - (copy_bb_and_scalar_dependences): Remove premature codegen - error on PHIs in blocks duplicated into multiple places. - * graphite-scop-detection.c - (scop_detection::stmt_has_simple_data_refs_p): For a loop not - in the region use it as loop and nest to analyze the DR in. - (try_generate_gimple_bb): Likewise. - * graphite-sese-to-poly.c (extract_affine_chrec): Adjust. - (add_loop_constraints): For blocks in a loop not in the region - create a dimension with a single iteration. - * sese.h (gbb_loop_at_index): Remove assert. - -2017-10-01 Kevin Buettner - - * omp-expand.c (adjust_context_scope): New function. - (expand_parallel_call): Call adjust_context_scope. - -2017-10-01 Jeff Law - - * tree-ssa-dom.c (optimize_stmt): Make this a method within the - dom_opt_dom_walker class with direct access to private members. - Add comments. Call test_for_singularity. - (dom_opt_dom_walker::before_dom_children): Corresponding changes. - (dom_opt_dom_walker::after_dom_children): Do not lazily initialize - m_dummy_cond anymore. - (class dom_opt_dom_walker): Initialize m_dummy_cond member in the - class ctor. - (pass_dominator:execute): Build the dummy_cond here and pass it - to the dom_opt_dom_walker ctor. - (test_for_singularity): New function. - -2017-09-30 Krister Walfridsson - Maya Rashish - - * config.gcc (*-*-netbsd*): New variable nbsd_tm_file containing - netbsd.h, netbsd-stdint.h, and netbsd-elf.h. - (alpha*-*-netbsd*) Use nbsd_tm_file. - (arm*-*-netbsdelf*) Likewise. - (i[34567]86-*-netbsdelf*) Likewise. - (x86_64-*-netbsd*) Likewise. - (mips*-*-netbsd*) Likewise. - (powerpc-*-netbsd*) Likewise. - (sh*-*-netbsd*) Likewise. - (sparc-*-netbsdelf*) Likewise. - (sparc64-*-netbsd*) Likewise. - (m68k*-*-netbsdelf*) Use nbsd_tm_file and add CHAR_FAST8/SHORT_FAST16 - to tm_defines. - (vax-*-netbsdelf*) Likewise. - * config/netbsd-stdint.h (INT_FAST8_TYPE): Check CHAR_FAST8. - (UINT_FAST8_TYPE) Likewise. - (INT_FAST16_TYPE) Check CHAR_FAST16. - (UINT_FAST16_TYPE) Likewise. - -2017-09-30 Jakub Jelinek - - PR target/82361 - * config/i386/i386.md - (TARGET_USE_8BIT_IDIV zext divmodsi4 splitter): New define_split. - (divmodsi4_zext_1, divmodsi4_zext_2, *divmodsi4_zext_1, - *divmodsi4_zext_2): New define_insn_and_split. - (*divmodsi4_noext_zext_1, *divmodsi4_noext_zext_2): New define_insn. - (TARGET_USE_8BIT_IDIV zext udivmodsi4 splitter): New define_split. - (udivmodsi4_zext_1, udivmodsi4_zext_2, *udivmodsi4_zext_1, - *udivmodsi4_zext_2, *udivmodsi4_pow2_zext_1, *udivmodsi4_pow2_zext_2): - New define_insn_and_split. - (*udivmodsi4_noext_zext_1, *udivmodsi4_noext_zext_2): New define_insn. - * config/i386/i386.c (ix86_split_idivmod): Handle operands[0] or - operands[1] having DImode when mode is SImode. - - * config/i386/i386.c (ix86_split_idivmod): Use mode instead of - always SImode for DIV and MOD in REG_EQUAL notes. - -2017-09-29 Yury Gribov - - PR middle-end/82319 - * match.pd: Fix handling of NaNs in pattern. - -2017-09-29 Jeff Law - - * sbitmap.c (bitmap_bit_in_range_p): New function. - * sbitmap.h (bitmap_bit_in_range_p): Prototype. - * tree-ssa-dse.c (live_bytes_read): New function. - (dse_classify_store): Ignore reads of dead bytes. - - * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Fix - typos and whitespace errors. - * config/i386/predicates.md (address_no_seg_operand): Likewise. - * config/s390/s390.c (s390_emit_prologue): Likewise. - -2017-09-29 Vladimir Makarov - - PR target/81481 - * ira-costs.c (scan_one_insn): Don't take into account PIC equiv - with a symbol for LRA. - -2017-09-29 Vladimir Makarov - - PR rtl-optimization/82338 - * lra-constraints.c (inherit_in_ebb): Check usage_insns check. - -2017-09-29 Alexander Monakov - - * genmodes.c (calc_wider_mode): Suppress qsort macro. - * system.h [CHECKING_P] (qsort): Redirect to qsort_chk. - (qsort_chk): Declare. - * vec.c [CHECKING_P] (qsort_chk_error): New static function. - (qsort_chk): New function. - -2017-09-29 Bill Schmidt - - PR tree-optimization/82337 - * gimple-ssa-strength-reduction.c (find_phi_def): Don't record a - phi definition if the PHI result appears in an abnormal PHI. - (find_basis_for_base_expr): Don't record a basis if the LHS of the - basis appears in an abnormal PHI. - -2017-09-29 Richard Biener - - * graphite-isl-ast-to-gimple.c - (translate_isl_ast_to_gimple::set_codegen_error): New function. - (binary_op_to_tree): Use it. - (get_rename_from_scev): Likewise. - (copy_loop_phi_nodes): Likewise. - (copy_bb_and_scalar_dependences): Likewise. - (translate_pending_phi_nodes): Likewise. - -2017-09-29 Jakub Jelinek - - PR target/82339 - * config/i386/i386.md (*movdi_internal peephole2): New -Os peephole - for movabsq $(i32 << shift), r64. - -2017-09-28 Uros Bizjak - - * config/i386/i386.c (ix86_print_operand_address_as): Do not check - index when encoding %esp as %rsp to avoid 0x67 prefix. - -2017-09-28 Sergey Shalnov - - * config/i386/i386.md (*movsf_internal, *movdf_internal): - Return 256-bit AVX modes for TARGET_PREFER_AVX256. - -2017-09-28 Thomas Preud'homme - - * config/arm/arm.c (arm_option_override): Forbid ARMv8-M Security - Extensions with more than 16 double VFP registers. - (cmse_nonsecure_entry_clear_before_return): Remove second entry of - to_clear_mask and all code related to it. Replace the remaining - entry by a sbitmap and adapt code accordingly. - -2017-09-28 Henry Linjamäki - - * brig-builtins.def: Change pure attributes to const. - -2017-09-28 Joseph Myers - - * config.gcc (default_gnu_indirect_function): Default to yes for - sparc*-*-linux* with glibc. - -2017-09-28 Joseph Myers - - * config/aarch64/aarch64.c (aarch64_elf_asm_constructor) - (aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section - when creating .init_array and .fini_array sections with priority - specified. - -2017-09-27 Christophe Lyon - - PR target/71727 - * config/aarch64/aarch64.c - (aarch64_builtin_support_vector_misalignment): Always return false - when misalignment is unknown. - -2017-09-27 Kelvin Nilsen - - * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Revise - this function to return false if the definition used by the swap - instruction is artificial, or if the memory address from which the - constant value is loaded is not represented by a base address held - in a register or if the base address register is a frame or stack - pointer. Additionally, return false if the base address of the - loaded constant is a SYMBOL_REF but is not considered to be a - constant. - (replace_swapped_load_constant): New function. - (rs6000_analyze_swaps): Add a new pass to replace a swap of a - loaded constant vector with a load of a swapped constant vector. - -2017-09-27 Carl Love - - * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro. - (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins. - * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the - fctiw instruction. - -2017-09-27 Alexander Monakov - - * haifa-sched.c (autopref_rank_for_schedule): Order 'irrelevant' insns - first, always call autopref_rank_data otherwise. - -2017-09-27 Richard Biener - - * graphite-scop-detection.c (find_scop_parameters): Move - loop bound handling ... - (gather_bbs::before_dom_children): ... here, avoiding the need - to build scop_info->loop_nest. - (record_loop_in_sese): Remove. - * sese.h (sese_info_t::loop_nest): Remove. - * sese.c (new_sese_info): Do not allocate loop_nest. - (free_sese_info): Do not free loop_nest. - -2017-09-27 Jakub Jelinek - - PR c++/82159 - * gimplify.c (gimplify_modify_expr): Don't optimize away zero sized - lhs from calls if the lhs has addressable type. - -2017-09-27 Richard Biener - - * graphite.h (scop::max_alias_set): New member. - * graphite-scop-detection.c: Remove references to non-existing - --param in comments. - (build_alias_sets): Record the maximum alias set used for drs. - (build_scops): Support zero as unlimited for - --param graphite-max-arrays-per-scop. - * graphite-sese-to-poly.c (add_scalar_version_numbers): Remove - and inline into ... - (build_poly_sr_1): ... here. Compute alias set based on the - maximum alias set used for drs rather than - PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP - -2017-09-27 Richard Biener - - * graphite-optimize-isl.c (get_schedule_for_node_st): Allow - --param loop-block-tile-size=0 to disable tiling. - -2017-09-27 Richard Biener - - * doc/invoke.texi (graphite-max-bbs-per-function): Remove. - (graphite-max-nb-scop-params): Document special value zero. - * domwalk.h (dom_walker::STOP): New symbolical constant. - (dom_walker::dom_walker): Add optional parameter for bb to - RPO mapping. - (dom_walker::~dom_walker): Declare. - (dom_walker::before_dom_children): Document STOP return value. - (dom_walker::m_user_bb_to_rpo): New member. - (dom_walker::m_bb_to_rpo): Likewise. - * domwalk.c (dom_walker::dom_walker): Compute bb to RPO - mapping here if not provided by the user. - (dom_walker::~dom_walker): Free bb to RPO mapping if not - provided by the user. - (dom_walker::STOP): Define. - (dom_walker::walk): Do not compute bb to RPO mapping here. - Support STOP return value from before_dom_children to stop - walking. - * graphite-optimize-isl.c (optimize_isl): If the schedule - is the same still generate code if -fgraphite-identity - or -floop-parallelize-all are given. - * graphite-scop-detection.c: Include cfganal.h. - (gather_bbs::gather_bbs): Get and pass through bb to RPO - mapping. - (gather_bbs::before_dom_children): Return STOP for BBs - not in the region. - (build_scops): Compute bb to RPO mapping and pass it to - the domwalk. Treat --param graphite-max-nb-scop-params=0 - as not limiting the number of params. - * graphite.c (graphite_initialize): Remove limit on the - number of basic-blocks in a function. - * params.def (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION): Remove. - (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Adjust to documented - default value of 10. - -2017-09-26 Michael Meissner - - * config/rs6000/vsx.md (peephole for optimizing move SF to GPR): - Adjust code to eliminate needing to do the shift right 32-bits - operation after XSCVDPSPN. - -2017-09-26 Prathamesh Kulkarni - - * match.pd ((X / Y) == 0 -> X < Y): New pattern. - ((X / Y) != 0 -> X >= Y): Likewise. - -2017-09-26 Carl Love - - * config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_XL_LEN_R, - P9V_BUILTIN_VEC_XST_LEN_R): Add support for builtins - vector unsigned char vec_xl_len_r (unsigned char *, size_t); - void vec_xst_len_r (vector unsigned char, unsigned char *, size_t); - * config/rs6000/altivec.h (vec_xl_len_r, vec_xst_len_r): Add defines. - * config/rs6000/rs6000-builtin.def (XL_LEN_R, XST_LEN_R): Add - definitions and overloading. - * config/rs6000/rs6000.c (altivec_expand_builtin): Add case - statement for P9V_BUILTIN_XST_LEN_R. - (altivec_init_builtins): Add def_builtin for P9V_BUILTIN_STXVLL. - * config/rs6000/vsx.md (lxvll, stxvll, xl_len_r, xst_len_r): Add - define_expand and define_insn for the instructions and builtins. - * doc/extend.texi: Update the built-in documentation file for the new - built-in functions. - * config/rs6000/altivec.md (altivec_lvsl_reg, altivec_lvsr_reg): Add - define_insn for the instructions - -2017-09-26 Krister Walfridsson - - PR target/39570 - * gcc/config/netbsd-protos.h: New file. - * gcc/config/netbsd.c: New file. - * gcc/config/netbsd.h (SUBTARGET_INIT_BUILTINS): Define. - * gcc/config/t-netbsd: New file. - * gcc/config.gcc (tm_p_file): Add netbsd-protos.h. - (tmake_file) Add t-netbsd. - (extra_objs) Add netbsd.o. - -2017-09-26 Janus Weil - - PR fortran/82143 - PR fortran/82324 - * doc/sourcebuild.texi: Document fortran_real_10 and fortran_real_16. - -2017-09-26 Michael Meissner - - * config/rs6000/rs6000.md (extendsi2): Add a splitter to do - sign extension from a vector register to a GPR by doing a 32-bit - direct move and then an EXTSW. - (extendsi2 splitter): Likewise. - (movsi_from_sf): Adjust code to eliminate doing a 32-bit shift - right or vector extract after doing XSCVDPSPN. Use - zero_extendsidi2 instead of p8_mfvsrd_4_disf to move the value to - the GPRs. - (movdi_from_sf_zero_ext): Likewise. - (reload_gpr_from_vsxsf): Likewise. - (p8_mfvsrd_4_disf): Delete, no longer used. - (movsi_from_df): Optimize converting a DFmode to a SFmode, and - then needing to move the SFmode to a GPR to use the XSCVDPSP - instruction instead of FRSP and XSCVDPSPN. - * config/rs6000/vsx.md (vsx_xscvspdp_scalar2): Move insn so that - it is adjacent to the other XSCVSPDP insns. - (vsx_xscvdpsp_scalar): Use "ww" constraint instead of "f" to allow - SFmode to be in traditional Altivec registers. - (vsx_xscvdpspn): Eliminate useless alternative constraint. - (vsx_xscvspdpn): Likewise. - (vsx_xscvspdpn_scalar): Likewise. - -2017-09-26 Martin Jambor - - * tree-sra.c (compare_access_positions): Put integral types first, - stabilize sorting of integral types, remove conditions putting - non-full-precision integers last. - (sort_and_splice_var_accesses): Disable scalarization if a - non-integert would be represented by a non-full-precision integer. - -2017-09-26 Joseph Myers - - * config/microblaze/linux.h (TARGET_ASM_FILE_END): Likewise. - * config/pa/pa.h (NEED_INDICATE_EXEC_STACK): Likewise. - * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Likewise. - * config/pa/pa.c (pa_hpux_file_end): Rename to pa_file_end. - Define unconditionally, with [ASM_OUTPUT_EXTERNAL_REAL] - conditionals inside the function instead of around it. Call - file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK. - (TARGET_ASM_FILE_END): Define unconditionally to pa_file_end. - -2017-09-26 Richard Biener - - * graphite-scop-detection.c (scop_detection::build_scop_depth): Rewrite, - fold in ... - (scop_detection::build_scop_breadth): ... this. Removed. - (scop_detection::loop_is_valid_in_scop): Fold into single caller. - (scop_detection::harmful_stmt_in_bb): Likewise. - (scop_detection::graphite_can_represent_stmt): Likewise. - (scop_detection::loop_body_is_valid_scop): Likewise. Remove recursion. - (scop_detection::can_represent_loop): Remove recursion, fold in ... - (scop_detection::can_represent_loop_1): ... this. Removed. - (scop_detection::harmful_loop_in_region): Simplify after inlining - the above and remove more quadraticness. - (build_scops): Adjust. - * tree-data-ref.c (loop_nest_has_data_refs): Remove pointless - quadraticness. - -2017-09-26 Jakub Jelinek - - PR target/82267 - * config/i386/i386.c (ix86_print_operand_address_as): Only test - REGNO (base) == SP_REG if base is a REG. - - PR middle-end/35691 - * tree-ssa-reassoc.c (update_range_test): Dump r->exp each time - if it is different SSA_NAME. - (optimize_range_tests_cmp_bitwise): New function. - (optimize_range_tests): Call it. - -2017-09-26 Richard Biener - - PR tree-optimization/82321 - * graphite.c (canonicalize_loop_closed_ssa): Properly check - for the def being inside the loop. - -2017-09-26 Andreas Krebbel - - * config/s390/vx-builtins.md ("vmslg"): Add missing operand in - assembler output. - * config/s390/s390-builtins.def: Fix constraint on op4. - -2017-09-26 Andreas Krebbel - - * config/s390/s390.c (s390_expand_vec_compare): Use the new mode - independent expanders. - * config/s390/vector.md ("vec_cmpuneq", "vec_cmpltgt") - ("vec_ordered", "vec_unordered"): New expanders. - -2017-09-26 Andreas Krebbel - - * config/s390/s390.c (s390_preferred_simd_mode): Return V4SFmode - for SFmode. - -2017-09-26 Andreas Krebbel - - * config/s390/vector.md ("vec_unpacks_low_v16qi"): Rename to - vec_unpacks_lo_v16qi. - ("vec_unpacku_low_v16qi"): Rename to vec_unpacku_lo_v16qi. - -2017-09-26 Andreas Krebbel - - * config/s390/vector.md ("vec_unpacks_lo_v4sf") - ("vec_unpacks_hi_v4sf", "vec_unpacks_lo_v2df") - ("vec_unpacks_hi_v2df", "vec_pack_trunc_v2df"): New expanders. - -2017-09-26 Andreas Krebbel - - * config/s390/predicates.md ("const_shift_by_byte_operand"): New - predicate. - * config/s390/vector.md ("*vec_srb"): Change modes to V_128 - and V16QI. - ("*vec_slb"): New insn pattern. - ("vec_shr_"): New expander. - * config/s390/vx-builtins.md ("vec_slb"): Turn into expander - and force the shift count operand to V16QImode. - ("vec_srb"): Set shift count mode to V16QI. - -2017-09-26 Andreas Krebbel - - * config/s390/vector.md ("vec_widen_umult_lo_") - ("vec_widen_umult_hi_", "vec_widen_smult_lo_") - ("vec_widen_smult_hi_"): New expander definitions. - -2017-09-26 Richard Earnshaw - - PR target/82175 - * config/arm/arm.h (DRIVER_SELF_SPECS): Separate sub-rules with commas. - -2017-09-26 Richard Biener - - PR tree-optimization/82320 - * tree-ssa-sccvn.c (set_ssa_val_to): Changing undef to undef - isn't a change. - -2017-09-25 Jeff Law - - * config/rs6000/rs6000-protos.h (output_probe_stack_range): Update - prototype for new argument. - * config/rs6000/rs6000.c (rs6000_emit_allocate_stack_1): New function, - mostly extracted from rs6000_emit_allocate_stack. - (rs6000_emit_probe_stack_range_stack_clash): New function. - (rs6000_emit_allocate_stack): Call - rs6000_emit_probe_stack_range_stack_clash as needed. - (rs6000_emit_probe_stack_range): Add additional argument - to call to gen_probe_stack_range{si,di}. - (output_probe_stack_range): New. - (output_probe_stack_range_1): Renamed from output_probe_stack_range. - (output_probe_stack_range_stack_clash): New. - (rs6000_emit_prologue): Emit notes into dump file as requested. - * rs6000.md (allocate_stack): Handle -fstack-clash-protection. - (probe_stack_range): Operand 0 is now early-clobbered. - Add additional operand and pass it to output_probe_stack_range. - -2017-09-25 Bin Cheng - - PR tree-optimization/82163 - * tree-ssa-loop-manip.h (verify_loop_closed_ssa): New parameter. - (checking_verify_loop_closed_ssa): New parameter. - * tree-ssa-loop-manip.c (check_loop_closed_ssa_use): Delete. - (check_loop_closed_ssa_stmt): Delete. - (check_loop_closed_ssa_def, check_loop_closed_ssa_bb): New functions. - (verify_loop_closed_ssa): Check loop closed ssa form for LOOP. - (tree_transform_and_unroll_loop): Check loop closed ssa form only for - changed loops. - -2017-09-25 Pekka Jaaskelainen - - * brig-builtins.def: Treat HSAIL barrier builtins as - setjmp/longjump style functions. - -2017-09-25 Richard Sandiford - - * target.def (constant_alignment): New hook. - * defaults.h (CONSTANT_ALIGNMENT): Delete. - * doc/tm.texi.in (CONSTANT_ALIGNMENT): Replace with... - (TARGET_CONSTANT_ALIGNMENT): ...this new hook. - * doc/tm.texi: Regenerate. - * targhooks.h (default_constant_alignment): Declare. - (constant_alignment_word_strings): Likewise. - * targhooks.c (default_constant_alignment): New function. - (constant_alignment_word_strings): Likewise. - * builtins.c (get_object_alignment_2): Use targetm.constant_alignment - instead of CONSTANT_ALIGNMENT. - * varasm.c (align_variable, get_variable_align, build_constant_desc) - (force_const_mem): Likewise. - * config/aarch64/aarch64.h (CONSTANT_ALIGNMENT): Delete. - * config/aarch64/aarch64.c (aarch64_constant_alignment): New function. - (aarch64_classify_address): Call it instead of CONSTANT_ALIGNMENT. - (TARGET_CONSTANT_ALIGNMENT): Redefine. - * config/alpha/alpha.h (CONSTANT_ALIGNMENT): Delete commented-out - definition. - * config/arc/arc.h (CONSTANT_ALIGNMENT): Delete. - * config/arc/arc.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/arm/arm.h (CONSTANT_ALIGNMENT_FACTOR): Delete. - (CONSTANT_ALIGNMENT): Likewise. - * config/arm/arm.c (TARGET_CONSTANT_ALIGNMENT): Redefine. - (arm_constant_alignment): New function. - * config/bfin/bfin.h (CONSTANT_ALIGNMENT): Delete. - * config/bfin/bfin.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/cr16/cr16.h (CONSTANT_ALIGNMENT): Delete. - * config/cr16/cr16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/cris/cris.h (CONSTANT_ALIGNMENT): Delete. - * config/cris/cris.c (TARGET_CONSTANT_ALIGNMENT): Redefine. - (cris_constant_alignment): New function. - * config/epiphany/epiphany.h (CONSTANT_ALIGNMENT): Delete. - * config/epiphany/epiphany.c (TARGET_CONSTANT_ALIGNMENT): Redefine. - (epiphany_constant_alignment): New function. - * config/fr30/fr30.h (CONSTANT_ALIGNMENT): Delete. - * config/fr30/fr30.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/frv/frv.h (CONSTANT_ALIGNMENT): Delete. - * config/frv/frv.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/ft32/ft32.h (CONSTANT_ALIGNMENT): Delete. - * config/ft32/ft32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/i386/i386.h (CONSTANT_ALIGNMENT): Delete. - * config/i386/i386-protos.h (ix86_constant_alignment): Delete. - * config/i386/i386.c (ix86_constant_alignment): Make static. - Use the same interface as the target hook. - (TARGET_CONSTANT_ALIGNMENT): Redefine. - * config/ia64/ia64.h (CONSTANT_ALIGNMENT): Delete. - * config/ia64/ia64.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/iq2000/iq2000.h (CONSTANT_ALIGNMENT): Delete. - * config/iq2000/iq2000.c (iq2000_constant_alignment): New function. - (TARGET_CONSTANT_ALIGNMENT): Redefine. - * config/lm32/lm32.h (CONSTANT_ALIGNMENT): Delete. - * config/lm32/lm32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/m32r/m32r.h (CONSTANT_ALIGNMENT): Delete. - * config/m32r/m32r.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/mcore/mcore.h (CONSTANT_ALIGNMENT): Delete. - * config/mcore/mcore.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/microblaze/microblaze.h (CONSTANT_ALIGNMENT): Delete. - * config/microblaze/microblaze.c (microblaze_constant_alignment): - New function. - (TARGET_CONSTANT_ALIGNMENT): Redefine. - * config/mips/mips.h (CONSTANT_ALIGNMENT): Delete. - * config/mips/mips.c (mips_constant_alignment): New function. - (TARGET_CONSTANT_ALIGNMENT): Redefine. - * config/mmix/mmix.h (CONSTANT_ALIGNMENT): Delete. - * config/mmix/mmix-protos.h (mmix_constant_alignment): Delete. - * config/mmix/mmix.c (TARGET_CONSTANT_ALIGNMENT): Redefine. - (mmix_constant_alignment): Make static. Use the same interface - as the target hook. - * config/moxie/moxie.h (CONSTANT_ALIGNMENT): Delete. - * config/moxie/moxie.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/nios2/nios2.h (CONSTANT_ALIGNMENT): Delete. - * config/nios2/nios2.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/pa/pa.h (CONSTANT_ALIGNMENT): Delete. - * config/pa/pa.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/powerpcspe/powerpcspe.h (CONSTANT_ALIGNMENT): Delete. - * config/powerpcspe/powerpcspe.c (TARGET_CONSTANT_ALIGNMENT): Redefine. - (rs6000_constant_alignment): New function. - * config/riscv/riscv.h (CONSTANT_ALIGNMENT): Delete. - * config/riscv/riscv.c (riscv_constant_alignment): New function. - (TARGET_CONSTANT_ALIGNMENT): Redefine. - * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Delete. - * config/rs6000/rs6000.c (TARGET_CONSTANT_ALIGNMENT): Redefine. - (rs6000_constant_alignment): New function. - * config/s390/s390.h (CONSTANT_ALIGNMENT): Delete. - * config/s390/s390.c (s390_constant_alignment): New function. - (TARGET_CONSTANT_ALIGNMENT): Redefine. - * config/sh/sh.h (CONSTANT_ALIGNMENT): Delete. - * config/sh/sh.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/sparc/sparc.h (CONSTANT_ALIGNMENT): Delete. - * config/sparc/sparc.c (TARGET_CONSTANT_ALIGNMENT): Redefine. - (sparc_constant_alignment): New function. - * config/spu/spu.h (CONSTANT_ALIGNMENT): Delete. - * config/spu/spu.c (spu_constant_alignment): New function. - (TARGET_CONSTANT_ALIGNMENT): Redefine. - * config/stormy16/stormy16.h (CONSTANT_ALIGNMENT): Delete. - * config/stormy16/stormy16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/tilegx/tilegx.h (CONSTANT_ALIGNMENT): Delete. - * config/tilegx/tilegx.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/tilepro/tilepro.h (CONSTANT_ALIGNMENT): Delete. - * config/tilepro/tilepro.c (TARGET_CONSTANT_ALIGNMENT): Redefine to - constant_alignment_word_strings. - * config/visium/visium.h (CONSTANT_ALIGNMENT): Delete. - * config/visium/visium.c (TARGET_CONSTANT_ALIGNMENT): Redefine. - (visium_constant_alignment): New function. - * config/xtensa/xtensa.h (CONSTANT_ALIGNMENT): Delete. - * config/xtensa/xtensa.c (TARGET_CONSTANT_ALIGNMENT): Redefine. - (xtensa_constant_alignment): New function. - * system.h (CONSTANT_ALIGNMENT): Poison. - -2017-09-25 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling - for early folding of vector stores (ALTIVEC_BUILTIN_ST_*). - (rs6000_builtin_valid_without_lhs): New helper function. - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_ST. - -2017-09-25 Richard Sandiford - - * target.h (vec_perm_indices): Use unsigned short rather than - unsigned char. - (auto_vec_perm_indices): Likewise. - * config/aarch64/aarch64.c (aarch64_vectorize_vec_perm_const_ok): - Use unsigned int rather than unsigned char. - * config/arm/arm.c (arm_vectorize_vec_perm_const_ok): Likewise. - -2017-09-25 Richard Biener - - * cfgloop.h (sort_sibling_loops): Declare. - * cfgloop.c (sort_sibling_loops_cmp): New helper. - (sort_sibling_loops): New function sorting the sibling loop list - in RPO order. - * graphite.c (graphite_transform_loops): Sort sibling loops. - -2017-09-25 Richard Sandiford - - * target.def (vec_perm_const_ok): Change sel parameter to - vec_perm_indices. - * optabs-query.c (can_vec_perm_p): Update accordingly. - * doc/tm.texi: Regenerate. - * config/aarch64/aarch64.c (expand_vec_perm_d): Change perm to - auto_vec_perm_indices and remove separate nelt field. - (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip) - (aarch64_evpc_ext, aarch64_evpc_rev, aarch64_evpc_dup) - (aarch64_evpc_tbl, aarch64_expand_vec_perm_const_1) - (aarch64_expand_vec_perm_const): Update accordingly. - (aarch64_vectorize_vec_perm_const_ok): Likewise. Change sel - to vec_perm_indices. - * config/arm/arm.c (expand_vec_perm_d): Change perm to - auto_vec_perm_indices and remove separate nelt field. - (arm_evpc_neon_vuzp, arm_evpc_neon_vzip, arm_evpc_neon_vrev) - (arm_evpc_neon_vtrn, arm_evpc_neon_vext, arm_evpc_neon_vtbl) - (arm_expand_vec_perm_const_1, arm_expand_vec_perm_const): Update - accordingly. - (arm_vectorize_vec_perm_const_ok): Likewise. Change sel - to vec_perm_indices. - * config/i386/i386.c (ix86_vectorize_vec_perm_const_ok): Change - sel to vec_perm_indices. - * config/ia64/ia64.c (ia64_vectorize_vec_perm_const_ok): Likewise. - * config/mips/mips.c (mips_vectorize_vec_perm_const_ok): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_vectorize_vec_perm_const_ok): - Likewise. - * config/rs6000/rs6000.c (rs6000_vectorize_vec_perm_const_ok): - Likewise. - -2017-09-25 Pierre-Marie de Rodat - - PR debug/82155 - * dwarf2out.c (dwarf2out_early_global_decl): Call dwarf2out_decl - on the FUNCTION_DECL function context if it has a DIE that is a - declaration. - -2017-09-25 Richard Biener - - PR tree-optimization/82285 - * tree-vect-patterns.c (vect_recog_bool_pattern): Also handle - enumeral types. - -2017-09-25 Tom de Vries - - PR target/80035 - PR target/81069 - * config/nvptx/nvptx.c (nvptx_output_call_insn): Add exit after call to - noreturn function. - -2017-09-25 Richard Biener - - * graphite-optimize-isl.c (optimize_isl): Fail and dump if - ISL errors other than isl_error_quota happen. Dump if the - schedule is the same. - * graphite-sese-to-poly.c (build_poly_scop): Fail on ISL - errors instead of aborting inside ISL. - -2017-09-25 Iain Sandoe - - PR target/80556 - * config/i386/darwin.h (REAL_LIB_SPEC): New; put libSystem ahead - of libgcc_eh for m64. - * config/i386/darwin64.h: Likewise. - -2017-09-25 Richard Biener - - PR middle-end/82144 - * dwarf2out.c (gen_enumeration_type_die): Do not add alignment - attribute for incomplete types nor twice for complete ones. - -2017-09-24 Uros Bizjak - - PR target/82267 - * config/i386/i386.c (ix86_print_operand_address_as): Encode - %esp as %rsp to avoid 0x67 prefix if there is no index or base - register. - -2017-09-23 Uros Bizjak - - PR bootstrap/82306 - * config/i386/i386.opt (mprefer-avx256): Use - ix86_target_flags variable. - * config/i386/i386.c (ix86_target_string): Move - -mprefer-avx256 to flag2_opts. - -2017-09-22 Jakub Jelinek - - PR middle-end/35691 - * match.pd: Simplify x == -1 & y == -1 into (x & y) == -1 - and x != -1 | y != -1 into (x & y) != -1. - -2017-09-22 Steve Ellcey - - * config.gcc: Add new case statement to set - default_gnu_indirect_function. Remove it from x86_64-*-linux*, - i[34567]86-*, powerpc*-*-linux*spe*, powerpc*-*-linux*, s390-*-linux*, - s390x-*-linux* case statements. Added aarch64 to the list of - supported architectures. - -2017-09-22 Richard Sandiford - - PR tree-optimization/82289 - * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Check - STMT_VINFO_RELEVANT_P. - -2017-09-22 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vrp.c (extract_range_from_multiplicative_op_1): Assert - for VR_RANGE only; don't allow VR_ANTI_RANGE. - (extract_range_from_binary_expr_1): Don't call - extract_range_from_multiplicative_op_1 if !range_int_cst_p. - -2017-09-22 Richard Sandiford - Alan Hayward - David Sherwood - - * 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. - -2017-09-22 Richard Sandiford - Alan Hayward - David Sherwood - - * 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. - -2017-09-22 Richard Earnshaw - - * 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. - -2017-09-22 Richard Earnshaw - - * 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. - -2017-09-22 Richard Biener - - * 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. - -2017-09-22 Richard Biener - - PR tree-optimization/82291 - * tree-if-conv.c (predicate_mem_writes): Make sure to - remove writes in blocks predicated with false. - -2017-09-22 Richard Biener - - * 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. - -2017-09-22 Richard Biener - - * 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. - -2017-09-22 Sergey Shalnov - - * config/i386/sse.md ("mov_internal"): Use - mode attribute for TARGET_AVX512VL. - -2017-09-21 Sergey Shalnov - - * 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. - -2017-09-21 Jeff Law - - * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): - Fix dump output if the only stack space is for pushed registers. - -2017-09-21 Richard Sandiford - - * config/spu/spu.c (spu_sched_adjust_cost): Update after renaming - of insn_cost. - -2017-09-21 Martin Sebor - - PR c/81882 - * doc/extend.texi (attribute ifunc): Avoid relying on ill-formed - code (in C++) or code that triggers warnings. - -2017-09-21 Eric Botcazou - - * stor-layout.c (bit_from_pos): Do not distribute the conversion. - -2017-09-21 Segher Boessenkool - - * haifa-sched.c: Rename insn_cost to insn_sched_cost. - * sched-rgn.c: Ditto. - * sel-sched-ir.c: Ditto. - -2017-09-21 Alexander Monakov - - * 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. - -2017-09-21 Evgeny Kudryashov - - * 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. - -2017-09-21 Jakub Jelinek - - 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. - -2017-09-21 Richard Biener - - 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. - -2017-09-21 Wilco Dijkstra - - PR target/71951 - * config/aarch64/aarch64.h (LIBGCC2_UNWIND_ATTRIBUTE): Define. - -2017-09-21 Richard Biener - - * 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. - -2017-09-21 Richard Sandiford - Alan Hayward - David Sherwood - - * calls.c (compute_argument_addresses): Use simplify_gen_binary - rather than choosing between plus_constant and gen_rtx_. - * expr.c (emit_push_insn): Likewise. - (expand_expr_real_2): Likewise. - -2017-09-21 Richard Sandiford - Alan Hayward - David Sherwood - - * loop-unroll.c (split_iv): Call copy_rtx on the step. - -2017-09-21 Richard Sandiford - Alan Hayward - David Sherwood - - * tree.c (find_atomic_core_type): Check tree_fits_uhwi_p before - calling tree_to_uhwi. - -2017-09-21 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-ssa-ccp.c (get_value_for_expr): Use a positive test for - INTEGER_CST rather than a negative test for ADDR_EXPR. - -2017-09-21 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vrp.c (extract_range_from_binary_expr_1): Check - int_cst_rangeN before calling value_range_constant_singleton (&vrN). - -2017-09-21 Richard Biener - - 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. - -2017-09-21 Jakub Jelinek - - 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. - -2017-09-20 Andreas Krebbel - Jeff Law - - * 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. - -2017-09-20 Alexandre Oliva - - * 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. - -2017-09-20 Jeff Law - - * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Fix - thinko in stack clash protection support. - - * 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. - -2017-09-20 Segher Boessenkool - - PR target/77687 - * config/rs6000/rs6000.md (stack_restore_tie): Store to a scratch - address instead of to r1 and r11. - -2017-09-20 Sebastian Peryt - - * config.gcc: Support "knm". - * config/i386/driver-i386.c (host_detect_local_cpu): Detect "knm". - * config/i386/i386-c.c (ix86_target_macros_internal): Handle - PROCESSOR_KNM. - * config/i386/i386.c (m_KNM): Define. - (processor_target_table): Add "knm". - (PTA_KNM): Define. - (ix86_option_override_internal): Add "knm". - (ix86_issue_rate): Add PROCESSOR_KNM. - (ix86_adjust_cost): Ditto. - (ia32_multipass_dfa_lookahead): Ditto. - (get_builtin_code_for_version): Handle PROCESSOR_KNM. - (fold_builtin_cpu): Add M_INTEL_KNM. - * config/i386/i386.h (processor_costs): Define TARGET_KNM. - (processor_type): Add PROCESSOR_KNM. - * config/i386/x86-tune.def: Add m_KNM. - * doc/invoke.texi: Add knm as x86 -march=/-mtune= CPU type. - -2017-09-20 Richard Biener - - PR tree-optimization/80213 - * graphite-scop-detection.c (trivially_empty_bb_p): Labels - are allowed in empty BBs as well. - (canonicalize_loop_closed_ssa): Also look for other complex - edges. - (scop_detection::get_sese): Include the loop-closed PHI block - in loop SESEs. - (scop_detection::merge_sese): Remove code adding extra blocks. - (scop_detection::region_has_one_loop): Adjust for get_sese changes. - (build_scops): Assert the final returned scop is invalid. - -2017-09-20 Richard Biener - - PR tree-optimization/82264 - * tree-ssa-sccvn.c (vn_phi_eq): Use safe_dyn_cast to check - for GIMPLE_CONDs. - (vn_phi_lookup): Likewise. - (vn_phi_insert): Likewise. - -2017-09-20 Jakub Jelinek - - * dwarf2out.c (tree_add_const_value_attribute): For INTEGER_CST - that fits into uhwi or shwi, add DW_AT_const_value regardless - of early_dwarf without going through RTL, using add_AT_unsigned - or add_AT_int. - - * dwarf2out.c (DEBUG_LTO_DWO_INFO_SECTION): Reorder defines. - (DEBUG_LTO_ABBREV_SECTION): Likewise. - (DEBUG_LTO_MACINFO_SECTION): Likewise. - (DEBUG_MACRO_SECTION): Likewise. - (DEBUG_LTO_MACRO_SECTION): Likewise. - (DEBUG_STR_DWO_SECTION): Likewise. - (DEBUG_LTO_STR_DWO_SECTION): Likewise. - (DEBUG_LTO_LINE_SECTION): Drop .dwo suffix from the name. - (DEBUG_LTO_DWO_LINE_SECTION): Define. - (DEBUG_LTO_LINE_STR_SECTION): Define. - (init_sections_and_labels): Initialize debug_line_str_section - variable. Initialize debug_loc_section for -gdwarf-5 to - DEBUG_LOCLISTS_SECTION. Formatting fixes. - -2017-09-20 Richard Biener - - * graphite-sese-to-poly.c (extract_affine): Properly handle - POINTER_PLUS_EXPR, BIT_NOT_EXPR and conversion to signed. - -2017-09-20 Richard Biener - - PR tree-optimization/81373 - * graphite-scop-detection.c (build_cross_bb_scalars_def): - Force SESE live-out defs to be handled even if they are - scev_analyzable_p. - -2017-09-19 Jeff Law - - * combine-stack-adj.c (combine_stack_adjustments_for_block): Do - nothing for stack adjustments with REG_STACK_CHECK. - * sched-deps.c (parse_add_or_inc): Reject insns with - REG_STACK_CHECK from dependency breaking. - * config/i386/i386.c (pro_epilogue_adjust_stack): Return insn. - (ix86_adjust_satck_and_probe_stack_clash): Add REG_STACK_NOTEs. - * reg-notes.def (STACK_CHECK): New note. - - * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): New. - (ix86_expand_prologue): Dump stack clash info as needed. - Call ix86_adjust_stack_and_probe_stack_clash as needed. - - * function.c (dump_stack_clash_frame_info): New function. - * function.h (dump_stack_clash_frame_info): Prototype. - (enum stack_clash_probes): New enum. - - * config/alpha/alpha.c (alpha_expand_prologue): Also check - flag_stack_clash_protection. - * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Likewise. - (arm_expand_prologue, thumb1_expand_prologue): Likewise. - (arm_frame_pointer_required): Likewise. - * config/ia64/ia64.c (ia64_compute_frame_size): Likewise. - (ia64_expand_prologue): Likewise. - * config/mips/mips.c (mips_expand_prologue): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Likewise. - * config/sparc/sparc.c (sparc_expand_prologue): Likewise. - (sparc_flat_expand_prologue): Likewise. - * config/spu/spu.c (spu_expand_prologue): Likewise. - - * explow.c: Include "params.h". - (anti_adjust_stack_and_probe_stack_clash): New function. - (get_stack_check_protect): Likewise. - (compute_stack_clash_protection_loop_data): Likewise. - (emit_stack_clash_protection_loop_start): Likewise. - (emit_stack_clash_protection_loop_end): Likewise. - (allocate_dynamic_stack_space): Use get_stack_check_protect. - Use anti_adjust_stack_and_probe_stack_clash. - * explow.h (compute_stack_clash_protection_loop_data): Prototype. - (emit_stack_clash_protection_loop_start): Likewise. - (emit_stack_clash_protection_loop_end): Likewise. - * rtl.h (get_stack_check_protect): Prototype. - * target.def (stack_clash_protection_final_dynamic_probe): New hook. - * targhooks.c (default_stack_clash_protection_final_dynamic_probe): New. - * targhooks.h (default_stack_clash_protection_final_dynamic_probe): - Prototype. - * doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE): - Add @hook. - * doc/tm.texi: Rebuilt. - * config/aarch64/aarch64.c (aarch64_expand_prologue): Use - get_stack_check_protect. - * config/alpha/alpha.c (alpha_expand_prologue): Likewise. - * config/arm/arm.c (arm_expand_prologue): Likewise. - (arm_frame_pointer_required): Likewise. - * config/i386/i386.c (ix86_expand_prologue): Likewise. - * config/ia64/ia64.c (ia64_expand_prologue): Likewise. - * config/mips/mips.c (mips_expand_prologue): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_emit_prologue): Likewise. - * config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise. - * config/sparc/sparc.c (sparc_expand_prologue): Likewise. - (sparc_flat_expand_prologue): Likewise. - - * common.opt (-fstack-clash-protection): New option. - * flag-types.h (enum stack_check_type): Note difference between - -fstack-check= and -fstack-clash-protection. - * params.def (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE): New PARAM. - (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Likewise. - * toplev.c (process_options): Issue warnings/errors for cases - not handled with -fstack-clash-protection. - * doc/invoke.texi (-fstack-clash-protection): Document new option. - (-fstack-check): Note additional problem with -fstack-check=generic. - Note that -fstack-check is primarily for Ada and refer users - to -fstack-clash-protection for stack-clash-protection. - Document new params for stack clash protection. - -2017-09-19 Uros Bizjak - - * config/i386/i386.c (ix86_split_long_move): Do not handle - address used for LEA in a special way. - -2017-09-19 Segher Boessenkool - - * simplify-rtx.c (simplify_binary_operation_1): Fix typo in comment. - -2017-09-19 Martin Sebor - - PR c/81854 - * cgraphunit.c (handle_alias_pairs): Reject aliases between functions - of incompatible types. - -2017-09-19 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling - for early folding of vector loads (ALTIVEC_BUILTIN_LVX_*). - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_LD. - -2017-09-19 Richard Biener - - PR tree-optimization/82244 - * tree-vrp.c (remove_range_assertions): Do not propagate - a constant to abnormals but replace the assert with a copy. - -2017-09-19 Alexander Monakov - - PR rtl-optimization/57878 - PR rtl-optimization/68988 - * lra-assigns.c (reload_pseudo_compare_func): Remove fragmentation - avoidance test involving non_reload_pseudos. Move frequency test - below the general fragmentation avoidance test. - -2017-09-19 Richard Biener - - PR tree-optimization/69728 - * graphite-sese-to-poly.c (schedule_error): New global. - (add_loop_schedule): Handle empty domain by failing the - schedule. - (build_original_schedule): Handle schedule_error. - -2017-09-19 Richard Biener - - * graphite-scop-detection.c (scop_detection::can_represent_loop): - Do not iterate to sibling loops but only to siblings of inner - loops. - -2017-09-18 Andreas Schwab - - PR target/81613 - * config/m68k/m68k.md (moveq feeding equality comparison): Check - that the registers are different. - -2017-09-18 Uros Bizjak - - * config/i386/i386.c (fold_builtin_cpu): Add M_AMDFAM17H - to processor_model and "amdfam17h" to arch_names_table. - * doc/extend.texi (__builtin_cpu_is): Document amdfam17h CPU name. - -2017-09-18 Jakub Jelinek - - PR c/82234 - * doc/extend.texi: Add @findex entry for __builtin_shuffle. - -2017-09-18 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vectorizer.h (vect_slp_analyze_operations): Replace parameters - with a vec_info *. - * tree-vect-loop.c (vect_analyze_loop_operations): Update call - accordingly. - * tree-vect-slp.c (vect_slp_analyze_node_operations): Add vec_info * - parameter. Set SLP_TREE_NUMBER_OF_VEC_STMTS here rather than in - vect_schedule_slp_instance. - (vect_slp_analyze_operations): Replace parameters with a vec_info *. - Update call to vect_slp_analyze_node_operations. Simplify return - value. - (vect_slp_analyze_bb_1): Update call accordingly. - (vect_schedule_slp_instance): Remove vectorization_factor parameter. - Don't calculate SLP_TREE_NUMBER_OF_VEC_STMTS here. - (vect_schedule_slp): Update call accordingly. - -2017-09-18 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Cope - with types that aren't in fact scalar. - -2017-09-18 Richard Sandiford - - * tree-vect-slp.c (vect_record_max_nunits): New function, - split out from... - (vect_build_slp_tree_1): ...here. - (vect_build_slp_tree_2): Call it for phis too. - -2017-09-18 Richard Sandiford - - * tree-vect-stmts.c (vectorizable_mask_load_store): Pass mask_vectype - to vect_get_vec_def_for_operand when getting the mask operand. - -2017-09-18 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-loop.c (vectorizable_live_operation): Fix type of - bitstart. - -2017-09-18 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-loop.c (vectorizable_live_operation): Fix element size - calculation for vector booleans. - -2017-09-18 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-stmts.c (can_vectorize_live_stmts): New function, - split out from... - (vect_transform_stmt): ...here. - (vect_analyze_stmt): Use it instead of calling - vectorizable_live_operation directly. - -2017-09-18 Cesar Philippidis - - * omp-offload.c (oacc_xform_loop): Enable SIMD vectorization on - non-SIMT targets in acc vector loops. - -2017-09-18 Claudiu Zissulescu - - * configure.ac: Add arc and check if assembler supports gdwarf2. - * configure: Regenerate. - -2017-09-18 Richard Biener - - PR tree-optimization/82220 - * tree-vect-loop.c (vect_estimate_min_profitable_iters): Exclude - epilogue niters from the min_profitable_iters compute. - -2017-09-18 Jakub Jelinek - - PR target/82145 - * config/i386/i386.c (ix86_init_large_pic_reg): Revert 2017-09-01 - changes. Turn CODE_LABEL into NOTE_INSN_DELETED_LABEL immediately. - (ix86_init_pic_reg): Revert 2017-09-01 changes. - -2017-09-18 Eric Botcazou - - PR target/81361 - * dwarf2cfi.c (add_cfis_to_fde): Do not generate DW_CFA_set_loc after - switching to a new text section. - -2017-09-18 Richard Biener - - * graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref): - Simplify. - (build_alias_set): Reject aliases with no access function. - -2017-09-18 Richard Biener - - PR tree-optimization/79622 - * graphite-scop-detection.c (build_cross_bb_scalars_def): Properly - handle PHIs. - (build_cross_bb_scalars_use): Likewise. - -2017-09-18 Pierre-Marie de Rodat - - * cgraph.h (cgraph_thunk_info): Fix a typo in a comment. - -2017-09-18 Alan Modra - - PR target/81996 - * gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use - stack_pointer_rtx for count 0. Update comments. Break up - large rtl expression. - -2017-09-17 Daniel Santos - - * config/i386/i386.c (xlogue_layout::STUB_NAME_MAX_LEN): - Increase to 20 bytes. - (xlogue_layout::s_stub_names): Add an additional size-2 diminsion. - (xlogue_layout::get_stub_name): Modify to select the appropairate sse - or avx version of the stub. - -2017-09-17 H.J. Lu - - PR target/82166 - * config/i386/i386.c (ix86_finalize_stack_frame_flags): Properly - compute the minimum stack alignment. Also update preferred stack - boundary for leaf functions. - -2017-09-16 Richard Sandiford - - PR tree-optimization/82228 - * tree-vect-loop.c (vectorizable_live_operation): Move initialization - of ncopies. - -2017-09-16 Chung-Ju Wu - - * common/config/nds32/nds32-common.c - (nds32_option_optimization_table): Refine formatting. - (nds32_option_optimization_table): Use -fsched-pressure and - -fomit-frame-pointer for specific optimization level. - -2017-09-16 Chung-Ju Wu - - * config/nds32/nds32.c: Refine formatting and comments. - * config/nds32/nds32.h: Likewise. - * config/nds32/nds32.md: Likewise. - * config/nds32/nds32-cost.c: Likewise. - * config/nds32/nds32-isr.c: Likewise. - * config/nds32/nds32-md-auxiliary.c: Likewise. - * config/nds32/nds32-multiple.md: Likewise. - * config/nds32/nds32-predicates.c: Likewise. - -2017-09-15 Andrew Sutton - Jakub Jelinek - - Add support for -std=c++2a. - * doc/cpp.texi (__cplusplus): Document value for -std=c++2a - or -std=gnu+2a. - * doc/invoke.texi: Document -std=c++2a and -std=gnu++2a. - -2017-09-15 Steve Ellcey - - PR target/82066 - * doc/extend.texi (Common Function Attributes): Add - references to ARM, AArch64, and S/390 specific attributes. - (Function Specific Option Pragmas): Add AArch64 and S/390 - to list of back ends that support the target pragma. - -2017-09-15 Nathan Sidwell - - * doc/standards.texi: Fix C++17 description. Update URLs for - C++11 & 14. - -2017-09-15 Bernd Edlinger - - * common.opt (Wcast-align=strict): New warning option. - * doc/invoke.texi: Document -Wcast-align=strict. - -2017-09-15 Pierre-Marie de Rodat - - * cgraph.h (cgraph_thunk_info): Add comments. - * cgraph.c (cgraph_node::create_thunk): Adjust comment, make - assert for VIRTUAL_* arguments stricter. - -2017-09-15 Jackson Woodruff - - PR tree-optimization/71026 - * match.pd: Move RDIV patterns from fold-const.c - * fold-const.c (distribute_real_division): Removed. - (fold_binary_loc): Remove calls to distribute_real_divison. - -2017-09-15 Jakub Jelinek - - * doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document - c++1z and gnu++1z as deprecated. Change other references to - -std=c++1z to -std=c++17 and -std=gnu++1z to -std=gnu++17. - Change -Wc++1z-compat to -Wc++17-compat. - * doc/cpp.texi: Document -std=c++17 defines __cplusplus 201703L. - * dwarf2out.c (highest_c_language): Handle C++17. - (gen_compile_unit_die): Likewise. - -2017-09-15 Jakub Jelinek - - PR rtl-optimization/82192 - * combine.c (make_extraction): Don't look through non-paradoxical - SUBREGs or TRUNCATE if pos + len is or might be bigger than - inner's mode. - -2017-09-15 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (function_arg_offset): New hook. - * targhooks.h (default_function_arg_offset): Declare. - * targhooks.c (default_function_arg_offset): New function. - * function.c (locate_and_pad_parm): Use - targetm.calls.function_arg_offset instead of FUNCTION_ARG_OFFSET. - * doc/tm.texi.in (FUNCTION_ARG_OFFSET): Replace with... - (TARGET_FUNCTION_ARG_OFFSET): ...this. - * doc/tm.texi: Regenerate. - * config/spu/spu.h (FUNCTION_ARG_OFFSET): Delete. - * config/spu/spu.c (spu_function_arg_offset): New function. - (TARGET_FUNCTION_ARG_OFFSET): Redefine. - * system.h (FUNCTION_ARG_OFFSET): Poison. - -2017-09-15 Richard Sandiford - Alan Hayard - David Sherwood - - * target.def (truly_noop_truncation): New hook. - (mode_rep_extended): Refer to TARGET_TRULY_NOOP_TRUNCATION rather - than TRULY_NOOP_TRUNCATION. - * hooks.h (hook_bool_uint_uint_true): Declare. - * hooks.c (hook_bool_uint_uint_true): New function. - * doc/tm.texi.in (TRULY_NOOP_TRUNCATION): Replace with... - (TARGET_TRULY_NOOP_TRUNCATION): ...this. - * doc/tm.texi: Regenerate. - * combine.c (make_extraction): Refer to TARGET_TRULY_NOOP_TRUNCATION - rather than TRULY_NOOP_TRUNCATION in comments. - (simplify_comparison): Likewise. - (record_truncated_value): Likewise. - * expmed.c (extract_bit_field_1): Likewise. - (extract_split_bit_field): Likewise. - * convert.c (convert_to_integer_1): Use targetm.truly_noop_truncation - instead of TRULY_NOOP_TRUNCATION. - * function.c (assign_parm_setup_block): Likewise. - * machmode.h (TRULY_NOOP_TRUNCATION_MODES_P): Likewise. - * rtlhooks.c: Include target.h. - * config/aarch64/aarch64.h (TRULY_NOOP_TRUNCATION): Delete. - * config/alpha/alpha.h (TRULY_NOOP_TRUNCATION): Delete. - * config/arc/arc.h (TRULY_NOOP_TRUNCATION): Delete. - * config/arm/arm.h (TRULY_NOOP_TRUNCATION): Delete. - * config/avr/avr.h (TRULY_NOOP_TRUNCATION): Delete. - * config/bfin/bfin.h (TRULY_NOOP_TRUNCATION): Delete. - * config/c6x/c6x.h (TRULY_NOOP_TRUNCATION): Delete. - * config/cr16/cr16.h (TRULY_NOOP_TRUNCATION): Delete. - * config/cris/cris.h (TRULY_NOOP_TRUNCATION): Delete. - * config/epiphany/epiphany.h (TRULY_NOOP_TRUNCATION): Delete. - * config/fr30/fr30.h (TRULY_NOOP_TRUNCATION): Delete. - * config/frv/frv.h (TRULY_NOOP_TRUNCATION): Delete. - * config/ft32/ft32.h (TRULY_NOOP_TRUNCATION): Delete. - * config/h8300/h8300.h (TRULY_NOOP_TRUNCATION): Delete. - * config/i386/i386.h (TRULY_NOOP_TRUNCATION): Delete. - * config/ia64/ia64.h (TRULY_NOOP_TRUNCATION): Delete. - * config/iq2000/iq2000.h (TRULY_NOOP_TRUNCATION): Delete. - * config/lm32/lm32.h (TRULY_NOOP_TRUNCATION): Delete. - * config/m32c/m32c.h (TRULY_NOOP_TRUNCATION): Delete. - * config/m32r/m32r.h (TRULY_NOOP_TRUNCATION): Delete. - * config/m68k/m68k.h (TRULY_NOOP_TRUNCATION): Delete. - * config/mcore/mcore.h (TRULY_NOOP_TRUNCATION): Delete. - * config/microblaze/microblaze.h (TRULY_NOOP_TRUNCATION): Delete. - * config/mips/mips.h (TRULY_NOOP_TRUNCATION): Delete. - * config/mips/mips.c (mips_truly_noop_truncation): New function. - (TARGET_TRULY_NOOP_TRUNCATION): Redefine. - * config/mips/mips.md: Refer to TARGET_TRULY_NOOP_TRUNCATION - rather than TRULY_NOOP_TRUNCATION in comments. - * config/mmix/mmix.h (TRULY_NOOP_TRUNCATION): Delete. - * config/mn10300/mn10300.h (TRULY_NOOP_TRUNCATION): Delete. - * config/moxie/moxie.h (TRULY_NOOP_TRUNCATION): Delete. - * config/msp430/msp430.h (TRULY_NOOP_TRUNCATION): Delete. - * config/nds32/nds32.h (TRULY_NOOP_TRUNCATION): Delete. - * config/nios2/nios2.h (TRULY_NOOP_TRUNCATION): Delete. - * config/nvptx/nvptx.h (TRULY_NOOP_TRUNCATION): Delete. - * config/pa/pa.h (TRULY_NOOP_TRUNCATION): Delete. - * config/pdp11/pdp11.h (TRULY_NOOP_TRUNCATION): Delete. - * config/powerpcspe/powerpcspe.h (TRULY_NOOP_TRUNCATION): Delete. - * config/riscv/riscv.h (TRULY_NOOP_TRUNCATION): Delete. - * config/riscv/riscv.md: Refer to TARGET_TRULY_NOOP_TRUNCATION - rather than TRULY_NOOP_TRUNCATION in comments. - * config/rl78/rl78.h (TRULY_NOOP_TRUNCATION): Delete. - * config/rs6000/rs6000.h (TRULY_NOOP_TRUNCATION): Delete. - * config/rx/rx.h (TRULY_NOOP_TRUNCATION): Delete. - * config/s390/s390.h (TRULY_NOOP_TRUNCATION): Delete. - * config/sh/sh.h (MAYBE_BASE_REGISTER_RTX_P): Remove - TRULY_NOOP_TRUNCATION condition. - (MAYBE_INDEX_REGISTER_RTX_P): Likewise. - (TRULY_NOOP_TRUNCATION): Delete. - * config/sparc/sparc.h (TRULY_NOOP_TRUNCATION): Delete. - * config/spu/spu.h (TRULY_NOOP_TRUNCATION): Delete. - * config/spu/spu.c (spu_truly_noop_truncation): New function. - (TARGET_TRULY_NOOP_TRUNCATION): Redefine. - * config/stormy16/stormy16.h (TRULY_NOOP_TRUNCATION): Delete. - * config/tilegx/tilegx.h (TRULY_NOOP_TRUNCATION): Delete. - * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): New fuction. - (TARGET_TRULY_NOOP_TRUNCATION): Redefine. - * config/tilegx/tilegx.md: Refer to TARGET_TRULY_NOOP_TRUNCATION - rather than TRULY_NOOP_TRUNCATION in comments. - * config/tilepro/tilepro.h (TRULY_NOOP_TRUNCATION): Delete. - * config/v850/v850.h (TRULY_NOOP_TRUNCATION): Delete. - * config/vax/vax.h (TRULY_NOOP_TRUNCATION): Delete. - * config/visium/visium.h (TRULY_NOOP_TRUNCATION): Delete. - * config/xtensa/xtensa.h (TRULY_NOOP_TRUNCATION): Delete. - * system.h (TRULY_NOOP_TRUNCATION): Poison. - -2017-09-15 Christophe Lyon - - PR target/67591 - * config/arm/arm.md (*cmp_and): Add enabled_for_depr_it attribute. - (*cmp_ior): Likewise. - (*ior_scc_scc): Add alternative for enabled_for_depr_it attribute. - (*ior_scc_scc_cmp): Likewise. - (*and_scc_scc): Likewise. - (*and_scc_scc_cmp): Likewise. - -2017-09-15 Richard Sandiford - Alan Hayard - David Sherwood - - * target.def (can_change_mode_class): New hook. - (mode_rep_extended): Refer to it instead of CANNOT_CHANGE_MODE_CLASS. - (hard_regno_nregs): Likewise. - * hooks.h (hook_bool_mode_mode_reg_class_t_true): Declare. - * hooks.c (hook_bool_mode_mode_reg_class_t_true): New function. - * doc/tm.texi.in (CANNOT_CHANGE_MODE_CLASS): Replace with... - (TARGET_CAN_CHANGE_MODE_CLASS): ...this. - (LOAD_EXTEND_OP): Update accordingly. - * doc/tm.texi: Regenerate. - * doc/rtl.texi: Refer to TARGET_CAN_CHANGE_MODE_CLASS instead of - CANNOT_CHANGE_MODE_CLASS. - * hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Replace with... - (REG_CAN_CHANGE_MODE_P): ...this new macro. - * combine.c (simplify_set): Update accordingly. - * emit-rtl.c (validate_subreg): Likewise. - * recog.c (general_operand): Likewise. - * regcprop.c (mode_change_ok): Likewise. - * reload1.c (choose_reload_regs): Likewise. - (inherit_piecemeal_p): Likewise. - * rtlanal.c (simplify_subreg_regno): Likewise. - * postreload.c (reload_cse_simplify_set): Use REG_CAN_CHANGE_MODE_P - instead of CANNOT_CHANGE_MODE_CLASS. - (reload_cse_simplify_operands): Likewise. - * reload.c (push_reload): Use targetm.can_change_mode_class - instead of CANNOT_CHANGE_MODE_CLASS. - (push_reload): Likewise. Also use REG_CAN_CHANGE_MODE_P instead of - REG_CANNOT_CHANGE_MODE_P. - * config/alpha/alpha.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/alpha/alpha.c (alpha_can_change_mode_class): New function. - (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - * config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/arm/arm.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - (arm_can_change_mode_class): New function. - * config/arm/neon.md: Refer to TARGET_CAN_CHANGE_MODE_CLASS rather - than CANNOT_CHANGE_MODE_CLASS in comments. - * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/i386/i386-protos.h (ix86_cannot_change_mode_class): Delete. - * config/i386/i386.c (ix86_cannot_change_mode_class): Replace with... - (ix86_can_change_mode_class): ...this new function, inverting the - sense of the return value. - (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/ia64/ia64.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - (ia64_can_change_mode_class): New function. - * config/m32c/m32c.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/m32c/m32c-protos.h (m32c_cannot_change_mode_class): Delete. - * config/m32c/m32c.c (m32c_cannot_change_mode_class): Replace with... - (m32c_can_change_mode_class): ...this new function, inverting the - sense of the return value. - (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - * config/mips/mips.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/mips/mips-protos.h (mips_cannot_change_mode_class): Delete. - * config/mips/mips.c (mips_cannot_change_mode_class): Replace with... - (mips_can_change_mode_class): ...this new function, inverting the - sense of the return value. - (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - * config/msp430/msp430.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/msp430/msp430.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - (msp430_can_change_mode_class): New function. - * config/nvptx/nvptx.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/nvptx/nvptx.c (nvptx_can_change_mode_class): New function. - (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - * config/pa/pa32-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/pa/pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/pa/pa-protos.h (pa_cannot_change_mode_class): Delete. - * config/pa/pa.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - (pa_cannot_change_mode_class): Replace with... - (pa_can_change_mode_class): ...this new function, inverting the - sense of the return value. - (pa_modes_tieable_p): Refer to TARGET_CAN_CHANGE_MODE_CLASS rather - than CANNOT_CHANGE_MODE_CLASS in comments. - * config/pdp11/pdp11.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/pdp11/pdp11-protos.h (pdp11_cannot_change_mode_class): Delete. - * config/pdp11/pdp11.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - (pdp11_cannot_change_mode_class): Replace with... - (pdp11_can_change_mode_class): ...this new function, inverting the - sense of the return value. - * config/powerpcspe/powerpcspe.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/powerpcspe/powerpcspe-protos.h - (rs6000_cannot_change_mode_class_ptr): Delete. - * config/powerpcspe/powerpcspe.c - (rs6000_cannot_change_mode_class_ptr): Delete. - (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - (rs6000_option_override_internal): Assign to - targetm.can_change_mode_class instead of - rs6000_cannot_change_mode_class_ptr. - (rs6000_cannot_change_mode_class): Replace with... - (rs6000_can_change_mode_class): ...this new function, inverting the - sense of the return value. - (rs6000_debug_cannot_change_mode_class): Replace with... - (rs6000_debug_can_change_mode_class): ...this new function. - * config/riscv/riscv.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/riscv/riscv.c (riscv_can_change_mode_class): New function. - (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/rs6000/rs6000-protos.h (rs6000_cannot_change_mode_class_ptr): - Delete. - * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class_ptr): Delete. - (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - (rs6000_option_override_internal): Assign to - targetm.can_change_mode_class instead of - rs6000_cannot_change_mode_class_ptr. - (rs6000_cannot_change_mode_class): Replace with... - (rs6000_can_change_mode_class): ...this new function, inverting the - sense of the return value. - (rs6000_debug_cannot_change_mode_class): Replace with... - (rs6000_debug_can_change_mode_class): ...this new function. - * config/s390/s390.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/s390/s390-protos.h (s390_cannot_change_mode_class): Delete. - * config/s390/s390.c (s390_cannot_change_mode_class): Replace with... - (s390_can_change_mode_class): ...this new function, inverting the - sense of the return value. - (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - * config/sh/sh.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/sh/sh-protos.h (sh_cannot_change_mode_class): Delete. - * config/sh/sh.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - (sh_cannot_change_mode_class): Replace with... - (sh_can_change_mode_class): ...this new function, inverting the - sense of the return value. - * config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/sparc/sparc.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - (sparc_can_change_mode_class): New function. - * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/spu/spu.c (spu_can_change_mode_class): New function. - (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - * config/visium/visium.h (CANNOT_CHANGE_MODE_CLASS): Delete. - * config/visium/visium.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. - (visium_can_change_mode_class): New function. - * system.h (CANNOT_CHANGE_MODE_CLASS): Poison. - -2017-09-15 Richard Biener - - PR tree-optimization/82217 - * tree-ssa-sccvn.c (visit_phi): Properly handle all VN_TOP - but not undefined case. - -2017-09-15 Jakub Jelinek - - PR target/82145 - * postreload.c (reload_cse_simplify_operands): Skip - NOTE_INSN_DELETED_LABEL similarly to skipping CODE_LABEL. - -2017-09-15 Richard Biener - - PR tree-optimization/68823 - * graphite-scop-detection.c (build_alias_set): If we have a - possible dependence check whether we can handle them by just - looking at the DRs DR_ACCESS_FNs. - (build_scops): If build_alias_set fails, fail the SCOP. - -2017-09-14 Michael Meissner - - * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1_HW): New macros - to support float128 built-in functions that require the ISA 3.0 - hardware. - (BU_FLOAT128_3_HW): Likewise. - (SQRTF128): Add support for the IEEE 128-bit square root and fma - built-in functions. - (FMAF128): Likewise. - (FMAQ): Likewise. - * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add - support for built-in functions that need the ISA 3.0 IEEE 128-bit - floating point instructions. - (rs6000_invalid_builtin): Likewise. - (rs6000_builtin_mask_names): Likewise. - * config/rs6000/rs6000.h (MASK_FLOAT128_HW): Likewise. - (RS6000_BTM_FLOAT128_HW): Likewise. - (RS6000_BTM_COMMON): Likewise. - * config/rs6000/rs6000.md (fma4_hw): Add a generator - function. - * doc/extend.texi (RS/6000 built-in functions): Document the - IEEE 128-bit floating point square root and fused multiply-add - built-in functions. - -2017-09-14 Pat Haugen - - * config/rs6000/rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC - reg (r2) isn't in the set of registers defined in the prologue. - -2017-09-14 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vectorizer.h (_loop_vec_info): Add max_vectorization_factor. - (LOOP_VINFO_MAX_VECT_FACTOR): New macro. - (LOOP_VINFO_ORIG_VECT_FACTOR): Replace with... - (LOOP_VINFO_ORIG_MAX_VECT_FACTOR): ...this new macro. - * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Update - accordingly. - * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize - max_vectorization_factor. - (vect_analyze_loop_2): Set LOOP_VINFO_MAX_VECT_FACTOR. - -2017-09-14 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vectorizer.h (vect_min_worthwhile_factor): Delete. - (vect_worthwhile_without_simd_p): Declare. - * tree-vect-loop.c (vect_worthwhile_without_simd_p): New function. - (vectorizable_reduction): Use it. - * tree-vect-stmts.c (vectorizable_shift): Likewise. - (vectorizable_operation): Likewise. - -2017-09-14 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vectorizer.h (vect_get_num_copies): New function. - * tree-vect-data-refs.c (vect_get_data_access_cost): Use it. - * tree-vect-loop.c (vectorizable_reduction): Likewise. - (vectorizable_induction): Likewise. - (vectorizable_live_operation): Likewise. - * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise. - (vectorizable_bswap): Likewise. - (vectorizable_call): Likewise. - (vectorizable_conversion): Likewise. - (vectorizable_assignment): Likewise. - (vectorizable_shift): Likewise. - (vectorizable_operation): Likewise. - (vectorizable_store): Likewise. - (vectorizable_load): Likewise. - (vectorizable_condition): Likewise. - (vectorizable_comparison): Likewise. - (vect_analyze_stmt): Pass the slp node to vectorizable_live_operation. - -2017-09-14 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-vect-loop.c (vectorizable_induction): Use gimple_build instead - of vect_init_vector. - -2017-09-14 Richard Sandiford - Alan Hayward - David Sherwood - - * gimple-fold.h (gimple_build_vector_from_val): Declare, and provide - an inline wrapper that provides a location. - (gimple_build_vector): Likewise. - * gimple-fold.c (gimple_build_vector_from_val): New function. - (gimple_build_vector): Likewise. - * tree-vect-loop.c (get_initial_def_for_reduction): Use the new - functions to build the initial value. Always return a gimple value. - (get_initial_defs_for_reduction): Likewise. Only compute - neutral_vec once. - (vect_create_epilog_for_reduction): Don't call force_gimple_operand or - vect_init_vector on the results from get_initial_def(s)_for_reduction. - (vectorizable_induction): Use gimple_build_vector rather than - vect_init_vector. - -2017-09-14 Richard Sandiford - Alan Hayward - David Sherwood - - * target.h (vec_perm_indices): New typedef. - (auto_vec_perm_indices): Likewise. - * optabs-query.h: Include target.h - (can_vec_perm_p): Take a vec_perm_indices *. - * optabs-query.c (can_vec_perm_p): Likewise. - (can_mult_highpart_p): Update accordingly. Use auto_vec_perm_indices. - * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. - * tree-vect-generic.c (lower_vec_perm): Likewise. - * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise. - (vect_grouped_load_supported): Likewise. - (vect_shift_permute_load_chain): Likewise. - (vect_permute_store_chain): Use auto_vec_perm_indices. - (vect_permute_load_chain): Likewise. - * fold-const.c (fold_vec_perm): Take vec_perm_indices. - (fold_ternary_loc): Update accordingly. Use auto_vec_perm_indices. - Update uses of can_vec_perm_p. - * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Replace the - mode with a number of elements. Take a vec_perm_indices *. - (vect_create_epilog_for_reduction): Update accordingly. - Use auto_vec_perm_indices. - (have_whole_vector_shift): Likewise. Update call to can_vec_perm_p. - * tree-vect-slp.c (vect_build_slp_tree_1): Likewise. - (vect_transform_slp_perm_load): Likewise. - (vect_schedule_slp_instance): Use auto_vec_perm_indices. - * tree-vectorizer.h (vect_gen_perm_mask_any): Take a vec_perm_indices. - (vect_gen_perm_mask_checked): Likewise. - * tree-vect-stmts.c (vect_gen_perm_mask_any): Take a vec_perm_indices. - (vect_gen_perm_mask_checked): Likewise. - (vectorizable_mask_load_store): Use auto_vec_perm_indices. - (vectorizable_store): Likewise. - (vectorizable_load): Likewise. - (perm_mask_for_reverse): Likewise. Update call to can_vec_perm_p. - (vectorizable_bswap): Likewise. - -2017-09-14 Richard Sandiford - Alan Hayward - David Sherwood - - * tree.h (build_vector): Take a vec instead of a tree *. - * tree.c (build_vector): Likewise. - (build_vector_from_ctor): Update accordingly. - (build_vector_from_val): Likewise. - * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise. - * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. - * tree-vect-generic.c (add_rshift): Likewise. - (expand_vector_divmod): Likewise. - (optimize_vector_constructor): Likewise. - * tree-vect-slp.c (vect_get_constant_vectors): Likewise. - (vect_transform_slp_perm_load): Likewise. - (vect_schedule_slp_instance): Likewise. - * tree-vect-stmts.c (vectorizable_bswap): Likewise. - (vectorizable_call): Likewise. - (vect_gen_perm_mask_any): Likewise. Add elements in order. - * expmed.c (make_tree): Likewise. - * fold-const.c (fold_negate_expr_1): Use auto_vec when building - a vector passed to build_vector. - (fold_convert_const): Likewise. - (exact_inverse): Likewise. - (fold_ternary_loc): Likewise. - (fold_relational_const): Likewise. - (const_binop): Likewise. Use VECTOR_CST_ELT directly when operating - on VECTOR_CSTs, rather than going through vec_cst_ctor_to_array. - (const_unop): Likewise. Store the reduction accumulator in a - variable rather than an array. - (vec_cst_ctor_to_array): Take the number of elements as a parameter. - (fold_vec_perm): Update calls accordingly. Use auto_vec for - the new vector, rather than constructing it after the input arrays. - (native_interpret_vector): Use auto_vec when building - a vector passed to build_vector. Add elements in order. - * tree-vect-loop.c (get_initial_defs_for_reduction): Use - auto_vec when building a vector passed to build_vector. - (vect_create_epilog_for_reduction): Likewise. - (vectorizable_induction): Likewise. - (get_initial_def_for_reduction): Likewise. Fix indentation of - case statements. - * config/sparc/sparc.c (sparc_handle_vis_mul8x16): Change n_elts - to a vec *. - (sparc_fold_builtin): Use auto_vec when building a vector - passed to build_vector. - -2017-09-14 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-core.h (tree_base::u): Add an "nelts" field. - (tree_vector): Use VECTOR_CST_NELTS as the length. - * tree.c (tree_size): Likewise. - (make_vector): Initialize VECTOR_CST_NELTS. - * tree.h (VECTOR_CST_NELTS): Use the u.nelts field. - * cfgexpand.c (expand_debug_expr): Use VECTOR_CST_NELTS instead of - TYPE_VECTOR_SUBPARTS. - * expr.c (const_vector_mask_from_tree): Consistently use "units" - as the number of units, setting it from VECTOR_CST_NELTS. - (const_vector_from_tree): Likewise. - * fold-const.c (negate_expr_p): Use VECTOR_CST_NELTS instead of - TYPE_VECTOR_SUBPARTS for the number of elements in a VECTOR_CST. - (fold_negate_expr_1): Likewise. - (fold_convert_const): Likewise. - (const_binop): Likewise. Differentiate the number of output and - input elements. - (const_unop): Likewise. - (fold_ternary_loc): Use VECTOR_CST_NELTS for the number of elements - in a VECTOR_CST, asserting that it is the same as TYPE_VECTOR_SUBPARTS - in cases that did the opposite. - -2017-09-14 Richard Biener - - * tree-ssa-sccvn.c (visit_phi): Merge undefined values similar - to VN_TOP. - -2017-09-14 Eric Botcazou - - * dwarf2out.c (dwarf2out_source_line): Remove superfluous test. - -2017-09-14 Jakub Jelinek - - PR target/81325 - * cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions - if and where to split a bb, except for splitting before debug insn - sequences followed by non-label real insn. Delete debug insns - in between basic blocks. - - * combine.c (make_compound_operation_int): Formatting fixes. - - * config/alpha/elf.h (LINK_EH_SPEC): Add -static-pie support. - * config/alpha/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise. - * config/netbsd.h (LINK_EH_SPEC): Likewise. - * config/sol2.h (LINK_EH_SPEC): Likewise. - * config/arm/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise. - * config/s390/linux.h (LINK_SPEC): Likewise. - * config/freebsd.h (LINK_EH_SPEC): Likewise. - * config/openbsd.h (LINK_EH_SPEC): Likewise. - * config/lm32/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise. - * config/aarch64/aarch64-linux.h (LINUX_TARGET_LINK_SPEC): Likewise. - * config/powerpcspe/sysv4.h (LINK_EH_SPEC): Likewise. - * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise. - * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Fix a typo. - * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Formatting fix. - -2017-09-13 Jakub Jelinek - - * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Add -static-pie - support. - (ENDFILE_LINUX_SPEC): Likewise. - (LINK_EH_SPEC): Likewise. - * config/rs6000/linux64.h (LINK_SHLIB_SPEC): Likewise. - (LINK_OS_LINUX_SPEC32): Likewise. - (LINK_OS_LINUX_SPEC64): Likewise. - * config/rs6000/linux.h (LINK_SHLIB_SPEC): Likewise. - (LINK_OS_LINUX_SPEC): Likewise. - -2017-09-13 Martin Liska - - PR middle-end/82154 - * stmt.c (expand_sjlj_dispatch_table): Use CASE_LOW when - CASE_HIGH is NULL_TREE. - -2017-09-13 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (secondary_memory_needed): New hook. - (secondary_reload): Refer to TARGET_SECONDARY_MEMORY_NEEDED - instead of SECONDARY_MEMORY_NEEDED. - (secondary_memory_needed_mode): Likewise. - * hooks.h (hook_bool_mode_reg_class_t_reg_class_t_false): Declare. - * hooks.c (hook_bool_mode_reg_class_t_reg_class_t_false): New function. - * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED): Replace with... - (TARGET_SECONDARY_MEMORY_NEEDED): ...this. - (SECONDARY_MEMORY_NEEDED_RTX): Update reference accordingly. - * doc/tm.texi: Regenerate. - * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED): Delete. - * config/alpha/alpha.c (alpha_secondary_memory_needed): New function. - (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. - * config/i386/i386.h (SECONDARY_MEMORY_NEEDED): Delete. - * config/i386/i386-protos.h (ix86_secondary_memory_needed): Delete. - * config/i386/i386.c (inline_secondary_memory_needed): Put the - mode argument first and change the reg_class arguments to reg_class_t. - (ix86_secondary_memory_needed): Likewise. Remove the strict parameter. - Make static. Update the call to inline_secondary_memory_needed. - (ix86_register_move_cost): Update the call to - inline_secondary_memory_needed. - (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. - * config/ia64/ia64.h (SECONDARY_MEMORY_NEEDED): Delete commented-out - definition. - * config/ia64/ia64.c (spill_xfmode_rfmode_operand): Refer to - TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED - in comment. - * config/mips/mips.h (SECONDARY_MEMORY_NEEDED): Delete. - * config/mips/mips-protos.h (mips_secondary_memory_needed): Delete. - * config/mips/mips.c (mips_secondary_memory_needed): Make static - and match hook interface. Add comment from mips.h. - (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. - * config/mmix/mmix.md (truncdfsf2): Refer to - TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED - in comment. - * config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED): Rename to... - (PA_SECONDARY_MEMORY_NEEDED): ...this, and put the mode argument first. - * config/pa/pa.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. - (pa_secondary_memory_needed): New function. - * config/pdp11/pdp11.h (SECONDARY_MEMORY_NEEDED): Delete. - * config/pdp11/pdp11-protos.h (pdp11_secondary_memory_needed): Delete. - * config/pdp11/pdp11.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. - (pdp11_secondary_memory_needed): Make static and match hook interface. - * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED): Delete. - * config/powerpcspe/powerpcspe-protos.h - (rs6000_secondary_memory_needed_ptr): Delete. - * config/powerpcspe/powerpcspe.c (rs6000_secondary_memory_needed_ptr): - Delete. - (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. - (rs6000_option_override_internal): Assign to - targetm.secondary_memory_needed rather than - rs6000_secondary_memory_needed_ptr. - (rs6000_secondary_memory_needed): Match hook interface. - (rs6000_debug_secondary_memory_needed): Likewise. - * config/riscv/riscv.h (SECONDARY_MEMORY_NEEDED): Delete. - * config/riscv/riscv.c (riscv_secondary_memory_needed): New function. - (riscv_register_move_cost): Use it instead of SECONDARY_MEMORY_NEEDED. - (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. - * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED): Delete. - * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_ptr): - Delete. - * config/rs6000/rs6000.c (rs6000_secondary_memory_needed_ptr): Delete. - (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. - (rs6000_option_override_internal): Assign to - targetm.secondary_memory_needed rather than - rs6000_secondary_memory_needed_ptr. - (rs6000_secondary_memory_needed): Match hook interface. - (rs6000_debug_secondary_memory_needed): Likewise. - * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Delete. - * config/s390/s390.c (s390_secondary_memory_needed): New function. - (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. - * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED): Delete. - * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. - (sparc_secondary_memory_needed): New function. - * lra-constraints.c (check_and_process_move): Refer to - TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED - in comment. - (curr_insn_transform): Likewise. - (process_alt_operands): Use targetm.secondary_memory_needed - instead of TARGET_SECONDARY_MEMORY_NEEDED. - (check_secondary_memory_needed_p): Likewise. - (choose_split_class): Likewise. - * reload.c: Unconditionally include code that was previously - conditional on SECONDARY_MEMORY_NEEDED. - (push_secondary_reload): Use targetm.secondary_memory_needed - instead of TARGET_SECONDARY_MEMORY_NEEDED. - (push_reload): Likewise. - * reload1.c: Unconditionally include code that was previously - conditional on SECONDARY_MEMORY_NEEDED. - (choose_reload_regs): Use targetm.secondary_memory_needed - instead of TARGET_SECONDARY_MEMORY_NEEDED. - (gen_reload): Likewise. - * system.h (SECONDARY_MEMORY_NEEDED): Poison. - -2017-09-13 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (secondary_memory_needed_mode): New hook: - * targhooks.c (default_secondary_memory_needed_mode): Declare. - * targhooks.h (default_secondary_memory_needed_mode): New function. - * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED_MODE): Replace with... - (TARGET_SECONDARY_MEMORY_NEEDED_MODE): ...this. - * doc/tm.texi: Regenerate. - * lra-constraints.c (check_and_process_move): Use - targetm.secondary_memory_needed_mode instead of - TARGET_SECONDARY_MEMORY_NEEDED_MODE. - (curr_insn_transform): Likewise. - * reload.c (get_secondary_mem): Likewise. - * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Delete. - * config/alpha/alpha.c (alpha_secondary_memory_needed_mode): New - function. - (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine. - * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Delete. - * config/i386/i386.c (ix86_secondary_memory_needed_mode): New function. - (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine. - * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED_MODE): - Delete. - * config/powerpcspe/powerpcspe-protos.h - (rs6000_secondary_memory_needed_mode): Delete. - * config/powerpcspe/powerpcspe.c - (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine. - (rs6000_secondary_memory_needed_mode): Make static. - * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): Delete. - * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_mode): - Delete. - * config/rs6000/rs6000.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE): - Redefine. - (rs6000_secondary_memory_needed_mode): Make static. - * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Delete. - * config/s390/s390.c (s390_secondary_memory_needed_mode): New function. - (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine. - * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Delete. - * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE): - Redefine. - (sparc_secondary_memory_needed_mode): New function. - * system.h (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Poison. - -2017-09-13 Jackson Woodruff - - * config/aarch64/constraints.md (Umq): New constraint. - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): - Change to use Umq. - (mov): Update condition. - -2017-09-13 Kyrylo Tkachov - - * gimple-ssa-store-merging.c (sort_by_bitpos): Compare store order - when bitposition is the same. - -2017-09-13 Richard Biener - - * dwarf2out.c (output_die_symbol): Remove. - (output_die): Do not output a DIEs symbol. - -2017-09-13 Richard Biener - - PR middle-end/82128 - * gimple-fold.c (gimple_fold_call): Update SSA name in-place to - default-def to avoid breaking iterator update with the weird - interaction with cgraph_update_edges_for_call_stmt_node. - -2017-09-13 Richard Biener - - * tree-cfg.c (verify_gimple_assign_binary): Add verification - for WIDEN_SUM_EXPR, VEC_WIDEN_MULT_{HI,LO,EVEN,ODD}_EXPR, - VEC_PACK_{TRUNC,SAT,FIX_TRUNC}_EXPR. - (verify_gimple_assign_ternary): Add verification for DOT_PROD_EXPR. - -2017-09-13 Kugan Vivekanandarajah - - * config/aarch64/aarch64.c (aarch64_override_options_after_change_1): - Disable pc relative literal load irrespective of - TARGET_FIX_ERR_A53_84341 for default. - -2017-09-12 Eric Botcazou - - * config/sparc/sparc.c (output_return): Output the source location of - the insn in the delay slot, if any. - (output_sibcall): Likewise. - -2017-09-12 H.J. Lu - - PR driver/81498 - * common.opt (-static-pie): New alias. - (shared): Negate static-pie. - (-no-pie): Update help text. - (-pie): Likewise. - (static-pie): New option. - * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add - -static-pie support. - (GNU_USER_TARGET_ENDFILE_SPEC): Likewise. - (LINK_EH_SPEC): Likewise. - (LINK_GCC_C_SEQUENCE_SPEC): Likewise. - * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise. - * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise. - * gcc.c (LINK_COMMAND_SPEC): Likewise. - (init_gcc_specs): Likewise. - (init_spec): Likewise. - (display_help): Update help message for -pie. - * doc/invoke.texi: Update -pie, -no-pie and -static. Document - -static-pie. - -2017-09-12 Wilco Dijkstra - - * config/aarch64/aarch64.md (movsi_aarch64): Remove all '*'. - (movdi_aarch64): Likewise. - (movti_aarch64): Likewise. - -2017-09-12 Simon Wright - - PR target/80204 - * config/darwin-driver.c (darwin_find_version_from_kernel): Eliminate - calculation of the minor version, always output as 0. - -2017-09-12 Jakub Jelinek - - PR target/82112 - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For - ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion - on it early, rather than manual conversion late. For - ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion - instead of performing manual conversion. - -2017-09-12 Carl Love - - * config/rs6000/altivec.md (vec_widen_umult_even_v4si, - vec_widen_smult_even_v4si): Add define expands for vmuleuw, vmulesw, - vmulouw, vmulosw. - * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW, - VMULOSW): Add definitions. - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW, - ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries. - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin, - builtin_function_type): Add ALTIVEC_BUILTIN_* case statements. - -2017-09-12 James Greenhalgh - - * config/aarch64/aarch64.md (movdi_aarch64): Set load/store - types correctly. - (movti_aarch64): Likewise. - (movdf_aarch64): Likewise. - (movtf_aarch64): Likewise. - (load_pairdi): Likewise. - (store_pairdi): Likewise. - (load_pairdf): Likewise. - (store_pairdf): Likewise. - (loadwb_pair_): Likewise. - (storewb_pair_): Likewise. - (ldr_got_small_): Likewise. - (ldr_got_small_28k_): Likewise. - (ldr_got_tiny): Likewise. - * config/aarch64/iterators.md (ldst_sz): New. - (ldpstp_sz): Likewise. - * config/aarch64/thunderx.md (thunderx_storepair): Split store_8 - to store_16. - (thunderx_load): Split load_8 to load_16. - * config/aarch64/thunderx2t99.md (thunderx2t99_loadpair): Split - load_8 to load_16. - (thunderx2t99_storepair_basic): Split store_8 to store_16. - * config/arm/xgene1.md (xgene1_load_pair): Split load_8 to load_16. - (xgene1_store_pair): Split store_8 to store_16. - * config/aarch64/falkor.md (falkor_ld_3_ld): Split load_8 to load_16. - (falkor_st_0_st_sd): Split store_8 to store_16. - -2017-09-12 James Greenhalgh - - * config/arm/types.md (type): Rename load1/2/3/4 to load_4/8/12/16 - and store1/2/3/4 to store_4/8/12/16. - * config/aarch64/aarch64.md: Update for rename. - * config/arm/arm.md: Likewise.: Likewise. - * config/arm/arm.c: Likewise. - * config/arm/thumb1.md: Likewise. - * config/arm/thumb2.md: Likewise. - * config/arm/vfp.md: Likewise. - * config/arm/arm-generic.md: Likewise. - * config/arm/arm1020e.md: Likewise. - * config/arm/arm1026ejs.md: Likewise. - * config/arm/arm1136jfs.md: Likewise. - * config/arm/arm926ejs.md: Likewise. - * config/arm/cortex-a15.md: Likewise. - * config/arm/cortex-a17.md: Likewise. - * config/arm/cortex-a5.md: Likewise. - * config/arm/cortex-a53.md: Likewise. - * config/arm/cortex-a57.md: Likewise. - * config/arm/cortex-a7.md: Likewise. - * config/arm/cortex-a8.md: Likewise. - * config/arm/cortex-a9.md: Likewise. - * config/arm/cortex-m4.md: Likewise. - * config/arm/cortex-m7.md: Likewise. - * config/arm/cortex-r4.md: Likewise. - * config/arm/exynos-m1.md: Likewise. - * config/arm/fa526.md: Likewise. - * config/arm/fa606te.md: Likewise. - * config/arm/fa626te.md: Likewise. - * config/arm/fa726te.md: Likewise. - * config/arm/fmp626.md: Likewise. - * config/arm/iwmmxt.md: Likewise. - * config/arm/ldmstm.md: Likewise. - * config/arm/marvell-pj4.md: Likewise. - * config/arm/xgene1.md: Likewise. - * config/aarch64/thunderx.md: Likewise. - * config/aarch64/thunderx2t99.md: Likewise. - * config/aarch64/falkor.md: Likewise. - -2017-09-12 Martin Liska - - * attribs.c (private_lookup_attribute): New function. - * attribs.h (private_lookup_attribute): Declared here. - (lookup_attribute): Called from this place. - -2017-09-12 Richard Biener - - PR tree-optimization/82157 - * tree-ssa-pre.c (remove_dead_inserted_code): Do not remove - stmts with side-effects. - -2017-09-12 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (hard_regno_nregs): New hook. - (class_max_nregs): Refer to it instead of HARD_REGNO_NREGS. - * targhooks.h (default_hard_regno_nregs): Declare. - * targhooks.c (default_hard_regno_nregs): New function. - * doc/tm.texi.in (HARD_REGNO_NREGS): Replace with... - (TARGET_HARD_REGNO_NREGS): ...this hook. - (HARD_REGNO_NREGS_HAS_PADDING): Update accordingly. - (CLASS_MAX_NREGS): Likewise. - * doc/tm.texi: Regenerate. - * reginfo.c (init_reg_modes_target): Use targetm.hard_regno_nregs - instead of HARD_REGNO_NREGS. - * rtl.h (REG_NREGS): Refer to TARGET_HARD_REGNO_NREGS rather than - HARD_REGNO_NREGS in the comment. - * config/aarch64/aarch64.h (HARD_REGNO_NREGS): Delete. - * config/aarch64/aarch64-protos.h (aarch64_hard_regno_nregs): Delete. - * config/aarch64/aarch64.c (aarch64_hard_regno_nregs): Make static. - Return an unsigned int. - (TARGET_HARD_REGNO_NREGS): Redefine. - * config/alpha/alpha.h (HARD_REGNO_NREGS): Delete. - * config/arc/arc.h (HARD_REGNO_NREGS): Delete. - * config/arc/arc.c (TARGET_HARD_REGNO_NREGS): Redefine. - (arc_hard_regno_nregs): New function. - * config/arm/arm.h (HARD_REGNO_NREGS): Delete. - * config/arm/arm.c (TARGET_HARD_REGNO_NREGS): Redefine. - (arm_hard_regno_nregs): New function. - * config/avr/avr.h (HARD_REGNO_NREGS): Delete. - * config/bfin/bfin.h (HARD_REGNO_NREGS): Delete. - * config/bfin/bfin.c (bfin_hard_regno_nregs): New function. - (TARGET_HARD_REGNO_NREGS): Redefine. - * config/c6x/c6x.h (HARD_REGNO_NREGS): Delete. - * config/cr16/cr16.h (LONG_REG_P): Use targetm.hard_regno_nregs. - (HARD_REGNO_NREGS): Delete. - * config/cr16/cr16.c (TARGET_HARD_REGNO_NREGS): Redefine. - (cr16_hard_regno_nregs): New function. - (cr16_memory_move_cost): Use it instead of HARD_REGNO_NREGS. - * config/cris/cris.h (HARD_REGNO_NREGS): Delete. - * config/cris/cris.c (TARGET_HARD_REGNO_NREGS): Redefine. - (cris_hard_regno_nregs): New function. - * config/epiphany/epiphany.h (HARD_REGNO_NREGS): Delete. - * config/fr30/fr30.h (HARD_REGNO_NREGS): Delete. - (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs. - * config/frv/frv.h (HARD_REGNO_NREGS): Delete. - (CLASS_MAX_NREGS): Remove outdated copy of documentation. - * config/frv/frv-protos.h (frv_hard_regno_nregs): Delete. - * config/frv/frv.c (TARGET_HARD_REGNO_NREGS): Redefine. - (frv_hard_regno_nregs): Make static. Take and return an - unsigned int. - (frv_class_max_nregs): Remove outdated copy of documentation. - * config/ft32/ft32.h (HARD_REGNO_NREGS): Delete. - * config/h8300/h8300.h (HARD_REGNO_NREGS): Delete. - * config/h8300/h8300-protos.h (h8300_hard_regno_nregs): Delete. - * config/h8300/h8300.c (h8300_hard_regno_nregs): Delete. - * config/i386/i386.h (HARD_REGNO_NREGS): Delete. - * config/i386/i386.c (ix86_hard_regno_nregs): New function. - (TARGET_HARD_REGNO_NREGS): Redefine. - * config/ia64/ia64.h (HARD_REGNO_NREGS): Delete. - (CLASS_MAX_NREGS): Update comment. - * config/ia64/ia64.c (TARGET_HARD_REGNO_NREGS): Redefine. - (ia64_hard_regno_nregs): New function. - * config/iq2000/iq2000.h (HARD_REGNO_NREGS): Delete. - * config/lm32/lm32.h (HARD_REGNO_NREGS): Delete. - * config/m32c/m32c.h (HARD_REGNO_NREGS): Delete. - * config/m32c/m32c-protos.h (m32c_hard_regno_nregs): Delete. - * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Take and return - an unsigned int. - (m32c_hard_regno_nregs): Likewise. Make static. - (TARGET_HARD_REGNO_NREGS): Redefine. - * config/m32r/m32r.h (HARD_REGNO_NREGS): Delete. - * config/m68k/m68k.h (HARD_REGNO_NREGS): Delete. - * config/m68k/m68k.c (TARGET_HARD_REGNO_NREGS): Redefine. - (m68k_hard_regno_nregs): New function. - * config/mcore/mcore.h (HARD_REGNO_NREGS): Delete. - * config/microblaze/microblaze.h (HARD_REGNO_NREGS): Delete. - * config/mips/mips.h (HARD_REGNO_NREGS): Delete. - * config/mips/mips-protos.h (mips_hard_regno_nregs): Delete. - * config/mips/mips.c (mips_hard_regno_nregs): Make static. - Take and return an unsigned int. - (TARGET_HARD_REGNO_NREGS): Redefine. - * config/mmix/mmix.h (HARD_REGNO_NREGS): Delete. - (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs. - * config/mn10300/mn10300.h (HARD_REGNO_NREGS): Delete. - * config/moxie/moxie.h (HARD_REGNO_NREGS): Delete. - * config/msp430/msp430.h (HARD_REGNO_NREGS): Delete. - * config/msp430/msp430-protos.h (msp430_hard_regno_nregs): Delete. - * config/msp430/msp430.c (TARGET_HARD_REGNO_NREGS): Redefine. - (msp430_hard_regno_nregs): Make static. Take and return an - unsigned int. - * config/nds32/nds32.h (HARD_REGNO_NREGS): Delete. - * config/nds32/nds32-protos.h (nds32_hard_regno_nregs): Delete. - * config/nds32/nds32.c (nds32_hard_regno_nregs): Delete. - (nds32_hard_regno_mode_ok): Use targetm.hard_regno_nregs. - * config/nios2/nios2.h (HARD_REGNO_NREGS): Delete. - * config/nvptx/nvptx.h (HARD_REGNO_NREGS): Delete. - * config/nvptx/nvptx.c (nvptx_hard_regno_nregs): New function. - (TARGET_HARD_REGNO_NREGS): Redefine. - * config/pa/pa32-regs.h (HARD_REGNO_NREGS): Rename to... - (PA_HARD_REGNO_NREGS): ...this. - * config/pa/pa64-regs.h (HARD_REGNO_NREGS): Rename to... - (PA_HARD_REGNO_NREGS): ...this. - * config/pa/pa.c (TARGET_HARD_REGNO_NREGS): Redefine. - (pa_hard_regno_nregs): New function. - * config/pdp11/pdp11.h (HARD_REGNO_NREGS): Delete. - * config/pdp11/pdp11.c (TARGET_HARD_REGNO_NREGS): Redefine. - (pdp11_hard_regno_nregs): New function. - * config/powerpcspe/powerpcspe.h (HARD_REGNO_NREGS): Delete. - * config/powerpcspe/powerpcspe.c (TARGET_HARD_REGNO_NREGS): Redefine. - (rs6000_hard_regno_nregs_hook): New function. - * config/riscv/riscv.h (HARD_REGNO_NREGS): Delete. - * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete. - * config/riscv/riscv.c (riscv_hard_regno_nregs): Make static. - Take and return an unsigned int. Move earlier in file. - (TARGET_HARD_REGNO_NREGS): Redefine. - * config/rl78/rl78.h (HARD_REGNO_NREGS): Delete. - * config/rl78/rl78-protos.h (rl78_hard_regno_nregs): Delete. - * config/rl78/rl78.c (TARGET_HARD_REGNO_NREGS): Reefine. - (rl78_hard_regno_nregs): Make static. Take and return an - unsigned int. - * config/rs6000/rs6000.h (HARD_REGNO_NREGS): Delete. - * config/rs6000/rs6000.c (TARGET_HARD_REGNO_NREGS): Redefine. - (rs6000_hard_regno_nregs_hook): New function. - * config/rx/rx.h (HARD_REGNO_NREGS): Delete. - * config/rx/rx.c (rx_hard_regno_nregs): New function. - (TARGET_HARD_REGNO_NREGS): Redefine. - * config/s390/s390.h (HARD_REGNO_NREGS): Delete. - * config/s390/s390.c (REGNO_PAIR_OK): Use s390_hard_regno_nregs - instead of HARD_REGNO_NREGS. - (s390_hard_regno_nregs): New function. - (s390_hard_regno_mode_ok): Add comment from s390.h. - (TARGET_HARD_REGNO_NREGS): Redefine. - * config/sh/sh.h (HARD_REGNO_NREGS): Delete. - * config/sh/sh.c (TARGET_HARD_REGNO_NREGS): Redefine. - (sh_hard_regno_nregs): New function. - (sh_pass_in_reg_p): Use it. - * config/sparc/sparc.h (HARD_REGNO_NREGS): Delete. - * config/sparc/sparc.c (TARGET_HARD_REGNO_NREGS): Redefine. - (sparc_hard_regno_nregs): New function. - * config/spu/spu.h (HARD_REGNO_NREGS): Delete. - * config/spu/spu.c (spu_hard_regno_nregs): New function. - (spu_function_arg_advance): Use it, supplying a valid register number. - (TARGET_HARD_REGNO_NREGS): Redefine. - * config/stormy16/stormy16.h (HARD_REGNO_NREGS): Delete. - * config/tilegx/tilegx.h (HARD_REGNO_NREGS): Delete. - * config/tilepro/tilepro.h (HARD_REGNO_NREGS): Delete. - * config/v850/v850.h (HARD_REGNO_NREGS): Delete. - * config/vax/vax.h (HARD_REGNO_NREGS): Delete. - * config/visium/visium.h (HARD_REGNO_NREGS): Delete. - (CLASS_MAX_NREGS): Remove copy of old documentation. - * config/visium/visium.c (TARGET_HARD_REGNO_NREGS): Redefine. - (visium_hard_regno_nregs): New function. - (visium_hard_regno_mode_ok): Use it instead of HARD_REGNO_NREGS. - * config/xtensa/xtensa.h (HARD_REGNO_NREGS): Delete. - * config/xtensa/xtensa.c (TARGET_HARD_REGNO_NREGS): Redefine. - xtensa_hard_regno_nregs): New function. - * system.h (HARD_REGNO_NREGS): Poison. - -2017-09-12 Richard Sandiford - - * config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Use - hard_regno_nregs instead of HARD_REGNO_NREGS. - (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Likewise. - * config/c6x/c6x.c (c6x_expand_prologue): Likewise. - (c6x_expand_epilogue): Likewise. - * config/frv/frv.c (frv_alloc_temp_reg): Likewise. - (frv_read_iacc_argument): Likewise. - * config/sh/sh.c: Include regs.h. - (sh_print_operand): Use hard_regno_nregs instead of HARD_REGNO_NREGS. - (regs_used): Likewise. - (output_stack_adjust): Likewise. - * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Likewise. - * expmed.c: Include regs.h. - (store_bit_field_1): Use hard_regno_nregs instead of HARD_REGNO_NREGS. - * ree.c: Include regs.h. - (combine_reaching_defs): Use hard_regno_nregs instead of - HARD_REGNO_NREGS. - (add_removable_extension): Likewise. - -2017-09-12 Richard Sandiford - - * regs.h (hard_regno_nregs): Turn into a function. - (end_hard_regno): Update accordingly. - * caller-save.c (setup_save_areas): Likewise. - (save_call_clobbered_regs): Likewise. - (replace_reg_with_saved_mem): Likewise. - (insert_restore): Likewise. - (insert_save): Likewise. - * combine.c (can_change_dest_mode): Likewise. - (move_deaths): Likewise. - (distribute_notes): Likewise. - * config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_cannot_change_mode_class) - (rs6000_split_multireg_move): Likewise. - (rs6000_register_move_cost): Likewise. - (rs6000_memory_move_cost): Likewise. - * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Likewise. - (rs6000_split_multireg_move): Likewise. - (rs6000_register_move_cost): Likewise. - (rs6000_memory_move_cost): Likewise. - * cselib.c (cselib_reset_table): Likewise. - (cselib_lookup_1): Likewise. - * emit-rtl.c (set_mode_and_regno): Likewise. - * function.c (aggregate_value_p): Likewise. - * ira-color.c (setup_profitable_hard_regs): Likewise. - (check_hard_reg_p): Likewise. - (calculate_saved_nregs): Likewise. - (assign_hard_reg): Likewise. - (improve_allocation): Likewise. - (calculate_spill_cost): Likewise. - * ira-emit.c (modify_move_list): Likewise. - * ira-int.h (ira_hard_reg_set_intersection_p): Likewise. - (ira_hard_reg_in_set_p): Likewise. - * ira.c (setup_reg_mode_hard_regset): Likewise. - (clarify_prohibited_class_mode_regs): Likewise. - (check_allocation): Likewise. - * lra-assigns.c (find_hard_regno_for_1): Likewise. - (lra_setup_reg_renumber): Likewise. - (setup_try_hard_regno_pseudos): Likewise. - (spill_for): Likewise. - (assign_hard_regno): Likewise. - (setup_live_pseudos_and_spill_after_risky_transforms): Likewise. - * lra-constraints.c (in_class_p): Likewise. - (lra_constraint_offset): Likewise. - (simplify_operand_subreg): Likewise. - (lra_constraints): Likewise. - (split_reg): Likewise. - (split_if_necessary): Likewise. - (invariant_p): Likewise. - (inherit_in_ebb): Likewise. - * lra-lives.c (process_bb_lives): Likewise. - * lra-remat.c (reg_overlap_for_remat_p): Likewise. - (get_hard_regs): Likewise. - (do_remat): Likewise. - * lra-spills.c (assign_spill_hard_regs): Likewise. - * mode-switching.c (create_pre_exit): Likewise. - * postreload.c (reload_combine_recognize_pattern): Likewise. - * recog.c (peep2_find_free_register): Likewise. - * regcprop.c (kill_value_regno): Likewise. - (set_value_regno): Likewise. - (copy_value): Likewise. - (maybe_mode_change): Likewise. - (find_oldest_value_reg): Likewise. - (copyprop_hardreg_forward_1): Likewise. - * regrename.c (check_new_reg_p): Likewise. - (regrename_do_replace): Likewise. - * reload.c (push_reload): Likewise. - (combine_reloads): Likewise. - (find_dummy_reload): Likewise. - (operands_match_p): Likewise. - (find_reloads): Likewise. - (find_equiv_reg): Likewise. - (reload_adjust_reg_for_mode): Likewise. - * reload1.c (count_pseudo): Likewise. - (count_spilled_pseudo): Likewise. - (find_reg): Likewise. - (clear_reload_reg_in_use): Likewise. - (free_for_value_p): Likewise. - (allocate_reload_reg): Likewise. - (choose_reload_regs): Likewise. - (reload_adjust_reg_for_temp): Likewise. - (emit_reload_insns): Likewise. - (delete_output_reload): Likewise. - * rtlanal.c (subreg_get_info): Likewise. - * sched-deps.c (sched_analyze_reg): Likewise. - * sel-sched.c (init_regs_for_mode): Likewise. - (mark_unavailable_hard_regs): Likewise. - (choose_best_reg_1): Likewise. - (verify_target_availability): Likewise. - * valtrack.c (dead_debug_insert_temp): Likewise. - * var-tracking.c (track_loc_p): Likewise. - (emit_note_insn_var_location): Likewise. - * varasm.c (make_decl_rtl): Likewise. - * reginfo.c (choose_hard_reg_mode): Likewise. - (init_reg_modes_target): Refer directly to - this_target_regs->x_hard_regno_nregs. - -2017-09-12 Richard Sandiford - - * ira-costs.c (record_operand_costs): Use in_hard_reg_set_p - instead of hard_regno_nregs. - -2017-09-12 Richard Sandiford - - * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Use - end_hard_regno instead of hard_regno_nregs. - * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise. - * config/sparc/sparc.h (ASM_DECLARE_REGISTER_GLOBAL): Likewise. - * config/visium/visium.c (visium_hard_regno_mode_ok): Likewise. - * ira-color.c (improve_allocation): Likewise. - * lra-assigns.c (find_hard_regno_for_1): Likewise. - * lra-lives.c (mark_regno_live): Likewise. - (mark_regno_dead): Likewise. - * lra-remat.c (operand_to_remat): Likewise. - * lra.c (collect_non_operand_hard_regs): Likewise. - * postreload.c (reload_combine_note_store): Likewise. - (move2add_valid_value_p): Likewise. - * reload.c (regno_clobbered_p): Likewise. - -2017-09-12 Richard Sandiford - - * config/frv/frv.c (FOR_EACH_REGNO): Use END_REGNO instead of - hard_regno_nregs. - * config/v850/v850.c (v850_reorg): Likewise. - * reload.c (refers_to_regno_for_reload_p): Likewise. - (find_equiv_reg): Likewise. - * reload1.c (reload_reg_reaches_end_p): Likewise. - -2017-09-12 Richard Sandiford - - * caller-save.c (add_used_regs): Use REG_NREGS instead of - hard_regno_nregs. - * config/aarch64/aarch64.c (aarch64_split_combinev16qi): Likewise. - * config/arm/arm.c (output_move_neon): Likewise. - (arm_attr_length_move_neon): Likewise. - (neon_split_vcombine): Likewise. - * config/c6x/c6x.c (c6x_mark_reg_read): Likewise. - (c6x_mark_reg_written): Likewise. - (c6x_dwarf_register_span): Likewise. - * config/i386/i386.c (ix86_save_reg): Likewise. - * config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise. - (rws_access_reg): Likewise. - * config/s390/s390.c (s390_call_saved_register_used): Likewise. - * mode-switching.c (create_pre_exit): Likewise. - * ree.c (combine_reaching_defs): Likewise. - (add_removable_extension): Likewise. - * regcprop.c (find_oldest_value_reg): Likewise. - (copyprop_hardreg_forward_1): Likewise. - * reload.c (reload_inner_reg_of_subreg): Likewise. - (push_reload): Likewise. - (combine_reloads): Likewise. - (find_dummy_reload): Likewise. - (reload_adjust_reg_for_mode): Likewise. - * reload1.c (find_reload_regs): Likewise. - (forget_old_reloads_1): Likewise. - (reload_reg_free_for_value_p): Likewise. - (reload_adjust_reg_for_temp): Likewise. - (emit_reload_insns): Likewise. - (delete_output_reload): Likewise. - * sel-sched.c (choose_best_reg_1): Likewise. - (choose_best_pseudo_reg): Likewise. - -2017-09-12 Richard Sandiford - Alan Hayward - David Sherwood - - * defaults.h (SLOW_UNALIGNED_ACCESS): Delete. - * target.def (slow_unaligned_access): New hook. - * targhooks.h (default_slow_unaligned_access): Declare. - * targhooks.c (default_slow_unaligned_access): New function. - * doc/tm.texi.in (SLOW_UNALIGNED_ACCESS): Replace with... - (TARGET_SLOW_UNALIGNED_ACCESS): ...this. - * doc/tm.texi: Regenerate. - * config/alpha/alpha.h (SLOW_UNALIGNED_ACCESS): Delete. - * config/arm/arm.h (SLOW_UNALIGNED_ACCESS): Delete. - * config/i386/i386.h (SLOW_UNALIGNED_ACCESS): Delete commented-out - definition. - * config/powerpcspe/powerpcspe.h (SLOW_UNALIGNED_ACCESS): Delete. - * config/powerpcspe/powerpcspe.c (TARGET_SLOW_UNALIGNED_ACCESS): - Redefine. - (rs6000_slow_unaligned_access): New function. - (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS. - (expand_block_compare): Likewise. - (expand_strn_compare): Likewise. - (rs6000_rtx_costs): Likewise. - * config/riscv/riscv.h (SLOW_UNALIGNED_ACCESS): Delete. - (riscv_slow_unaligned_access): Likewise. - * config/riscv/riscv.c (riscv_slow_unaligned_access): Rename to... - (riscv_slow_unaligned_access_p): ...this and make static. - (riscv_option_override): Update accordingly. - (riscv_slow_unaligned_access): New function. - (TARGET_SLOW_UNALIGNED_ACCESS): Redefine. - * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Delete. - * config/rs6000/rs6000.c (TARGET_SLOW_UNALIGNED_ACCESS): Redefine. - (rs6000_slow_unaligned_access): New function. - (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS. - (rs6000_rtx_costs): Likewise. - * config/rs6000/rs6000-string.c (expand_block_compare) - (expand_strn_compare): Use targetm.slow_unaligned_access instead - of SLOW_UNALIGNED_ACCESS. - * config/tilegx/tilegx.h (SLOW_UNALIGNED_ACCESS): Delete. - * config/tilepro/tilepro.h (SLOW_UNALIGNED_ACCESS): Delete. - * calls.c (expand_call): Use targetm.slow_unaligned_access instead - of SLOW_UNALIGNED_ACCESS. - * expmed.c (simple_mem_bitfield_p): Likewise. - * expr.c (alignment_for_piecewise_move): Likewise. - (emit_group_load_1): Likewise. - (emit_group_store): Likewise. - (copy_blkmode_from_reg): Likewise. - (emit_push_insn): Likewise. - (expand_assignment): Likewise. - (store_field): Likewise. - (expand_expr_real_1): Likewise. - * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise. - * lra-constraints.c (simplify_operand_subreg): Likewise. - * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise. - * gimple-ssa-store-merging.c: Likewise in block comment at start - of file. - * tree-ssa-strlen.c: Include target.h. - (handle_builtin_memcmp): Use targetm.slow_unaligned_access instead - of SLOW_UNALIGNED_ACCESS. - * system.h (SLOW_UNALIGNED_ACCESS): Poison. - -2017-09-12 Richard Sandiford - - PR rtl-optimization/82185 - * expmed.c (emit_store_flag_int): Only test tem if it has been - initialized. - -2017-09-12 Richard Biener - - PR middle-end/82149 - * match.pd ((FTYPE) N CMP CST): Fix typo. - -2017-09-12 Simon Atanasyan - - * config/mips/mips.c (mips_attribute_table): Add 'short_call' - attribute. - (mips_near_type_p): Add 'short_call' attribute as a synonym - for 'near'. - * doc/extend.texi (short_call): Document new function attribute. - -2017-09-12 Jakub Jelinek - - PR target/82112 - * c-common.c (sync_resolve_size): Instead of c_dialect_cxx () - assertion check that in the condition. - (get_atomic_generic_size): Likewise. Before testing if parameter - has pointer type, if it has array type, call for C++ - default_conversion to perform array-to-pointer conversion. - -2017-09-12 Richard Biener - - * tree-vect-generic.c (expand_vector_operations_1): Do nothing - for operations we cannot scalarize. - -2017-09-12 Aldy Hernandez - - * tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC - vectors heap vectors. Clean up comments. - Make visited_bbs a reference. - (profitable_jump_thread_path): Make GC - vectors heap vectors. Clean up comments. - Misc cleanups. - (convert_and_register_jump_thread_path): Make GC vectors heap - vectors. - (check_subpath_and_update_thread_path): Same. Clean up comments. - Make visited_bbs a reference. - (handle_phi): Abstract common code to to - register_jump_thread_path_if_profitable. - Rename VAR_BB to DEF_BB. - Update comments. - Make GC vectors heap vectors. - Make visited_bbs a reference. - (handle_assignment): Same. - (register_jump_thread_path_if_profitable): New. - (fsm_find_control_statement_thread_paths): Rename VAR_BB to - DEF_BB. - Make GC vectors heap vectors. Clean up comments. - Make visited_bbs a reference. - (find_jump_threads_backwards): Make visited_bbs live in the stack. - * tree-ssa-threadupdate.c (delete_jump_thread_path): Fix typo in - comment. - -2017-09-11 Max Filippov - - PR target/82181 - * config/xtensa/xtensa.c (xtensa_mem_offset): Check that both - words of E_DImode object are reachable by xtensa_uimm8x4 access. - -2017-09-11 Vidya Praveen - - Revert r251800 and r251799. - -2017-09-11 Martin Jambor - - PR hsa/82119 - * hsa-gen.c (gen_hsa_phi_from_gimple_phi): Process ADDR_EXPRs in - arguments in advance. - * hsa-regalloc.c (naive_process_phi): New parameter predecessors, - use it to find predecessor edges. - (naive_outof_ssa): Collect vector of predecessors. - -2017-09-08 Jason Merrill - - PR c++/70029 - ICE with ref-qualifier and -flto - * langhooks.h (struct lang_hooks_for_types): Add - copy_lang_qualifiers. - * attribs.c (build_type_attribute_qual_variant): Use it. - * langhooks-def.h (LANG_HOOKS_COPY_LANG_QUALIFIERS): Default to - NULL. - (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it. - * tree.c (verify_type): Re-enable TYPE_CANONICAL main variant check. - -2017-09-08 Eric Botcazou - - PR target/81988 - * config/sparc/sparc.md (mulsi3): Rename into *mulsi3_sp32. - (*mulsi3_sp64): New instruction. - (mulsi3): New expander. - -2017-09-08 Uros Bizjak - - * config/alpha/alpha.c (alpha_print_operand) : Remove. - -2017-09-08 Rainer Orth - - * sancov.c: Include memmodel.h. - -2017-09-07 Eric Botcazou - - PR target/80897 - * config/sparc/sparc.c (sparc_emit_set_symbolic_const64): Deal with too - large offsets. - -2017-09-07 Carl Love - - * config/rs6000/vsx.md (define_insn "*stxvl"): Add missing argument to - the sldi instruction. - -2017-09-07 David Edelsohn - - * sancov.c: Include tm_p.h. - -2017-09-07 Jakub Jelinek - - PR target/81979 - * output.h (switch_to_other_text_partition): New declaration. - * varasm.c (switch_to_other_text_partition): New function. - * config/rs6000/rs6000.c (uses_TOC): Return 2 if - NOTE_INSN_SWITCH_TEXT_SECTIONS is seen before finding load_toc_* insn. - (rs6000_elf_declare_function_name): If uses_TOC returned 2, switch - to the other text partition before emitting LCL label and switch back - after emitting the word after it. - -2017-09-07 Richard Biener - - * passes.def (pass_split_crit_edges): Remove instance before PRE. - * tree-ssa-pre.c (pass_pre::execute): Instead manually split - critical edges here, after loop init. - (pass_data_pre): Remove PROP_no_crit_edges flags. - * tree-ssa-sccvn.c (vn_reference_lookup_3): Use vn_valueize - for valueization of call args to avoid leaking VN_TOP. - (visit_use): Assert we do not visit default defs. - (init_scc_vn): Use build_decl for VN_TOP to make name nicer. - Use error_mark_node to more easily detect leaking VN_TOP. - All default-defs are varying, not VN_TOP. Mark them visited. - (run_scc_vn): Make code match comment. - -2017-09-07 Michael Meissner - - * config/rs6000/rs6000-cpus.def (OTHER_VSX_VECTOR_MASKS): Delete - OPTION_MASK_FLOAT128_KEYWORD. - (POWERPC_MASKS): Likewise. - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Delete - support for the -mfloat128-type option, and make -mfloat128 - default on PowerPC Linux systems. Define or undefine - __FLOAT128__ and __FLOAT128_HARDWARE__ for the current options. - Define __float128 to be __ieee128 if IEEE 128-bit support is - enabled, or undefine it. - (rs6000_cpu_cpp_builtins): Delete defining __FLOAT128__ here. - Delete defining __FLOAT128_TYPE__. - * config/rs6000/rs6000.opt (x_TARGET_FLOAT128_TYPE): Delete the - -mfloat128-type option and make -mfloat128 default on PowerPC - Linux systems. - (TARGET_FLOAT128_TYPE): Likewise. - (-mfloat128-type): Likewise. - * config/rs6000/rs6000.c (rs6000_option_override_internal): - Delete the -mfloat128-type option and make -mfloat128 default on - PowerPC Linux systems. Always use __ieee128 to be the keyword for - the IEEE 128-bit type, and map __float128 to __ieee128 if IEEE - 128-bit floating point is enabled. Change tests from using - -mfloat128-type to -mfloat128. - (rs6000_mangle_type): Use the correct mangling for the __float128 - type even if normal long double is restricted to 64-bits. - (floatn_mode): Enable the _Float128 type by default on VSX Linux - systems. - * config/rs6000/rs6000.h (MASK_FLOAT128_TYPE): Delete. - (MASK_FLOAT128_KEYWORD): Define new shortcut macro. - (RS6000BTM_FLOAT128): Define in terms of -mfloat128, not - -mfloat128-type. - * doc/invoke.texi (RS/6000 and PowerPC Options): Update - documentation for -mfloat128. - -2017-09-06 Olivier Hainque - - * config.gcc (powerpc-wrs-vxworksspe): Now match as vxworks*spe. - -2017-09-06 Wish Wu - Jakub Jelinek - - * asan.c (initialize_sanitizer_builtins): Add - BT_FN_VOID_UINT8_UINT8, BT_FN_VOID_UINT16_UINT16, - BT_FN_VOID_UINT32_UINT32, BT_FN_VOID_UINT64_UINT64, - BT_FN_VOID_FLOAT_FLOAT, BT_FN_VOID_DOUBLE_DOUBLE and - BT_FN_VOID_UINT64_PTR variables. - * builtin-types.def (BT_FN_VOID_UINT8_UINT8): New fn type. - (BT_FN_VOID_UINT16_UINT16): Likewise. - (BT_FN_VOID_UINT32_UINT32): Likewise. - (BT_FN_VOID_FLOAT_FLOAT): Likewise. - (BT_FN_VOID_DOUBLE_DOUBLE): Likewise. - (BT_FN_VOID_UINT64_PTR): Likewise. - * common.opt (flag_sanitize_coverage): New variable. - (fsanitize-coverage=trace-pc): Remove. - (fsanitize-coverage=): Add. - * flag-types.h (enum sanitize_coverage_code): New enum. - * fold-const.c (fold_range_test): Disable non-short-circuit - optimization if flag_sanitize_coverage. - (fold_truth_andor): Likewise. - * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise. - * opts.c (COVERAGE_SANITIZER_OPT): Define. - (coverage_sanitizer_opts): New array. - (get_closest_sanitizer_option): Add OPTS argument, handle also - OPT_fsanitize_coverage_. - (parse_sanitizer_options): Adjusted to also handle - OPT_fsanitize_coverage_. - (common_handle_option): Add OPT_fsanitize_coverage_. - * sancov.c (instrument_comparison, instrument_switch): New function. - (sancov_pass): Add trace-cmp support. - * sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_CMP1, - BUILT_IN_SANITIZER_COV_TRACE_CMP2, BUILT_IN_SANITIZER_COV_TRACE_CMP4, - BUILT_IN_SANITIZER_COV_TRACE_CMP8, - BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP1, - BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP2, - BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP4, - BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP8, - BUILT_IN_SANITIZER_COV_TRACE_CMPF, BUILT_IN_SANITIZER_COV_TRACE_CMPD, - BUILT_IN_SANITIZER_COV_TRACE_SWITCH): New builtins. - * doc/invoke.texi: Document -fsanitize-coverage=trace-cmp. - -2017-09-06 Richard Earnshaw - - * 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. - -2017-09-06 Richard Earnshaw - - * 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 (OPTIONS_H_EXTRA): 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. - -2017-09-06 Richard Biener - - * tree-ssa-pre.c (NECESSARY): Remove. - (create_expression_by_pieces): Do not touch pass-local flags. - (insert_into_preds_of_block): Likewise. - (do_pre_regular_insertion): Likewise. - (eliminate_insert): Likewise. - (eliminate_dom_walker::before_dom_children): Likewise. - (fini_eliminate): Do not look at inserted_exprs. - (mark_operand_necessary): Remove. - (remove_dead_inserted_code): Replace with simple work-list - algorithm based on inserted_exprs and SSA uses. - (pass_pre::execute): Re-order fini_eliminate and - remove_dead_inserted_code. - -2017-09-06 Olivier Hainque - - * config/powerpcspe/vxworks.h (VXCPU_FOR_8548): Correct definition - for VxWorks 7. Adjust surrounding comments. - -2017-09-06 Richard Biener - - * gimple-ssa-strength-reduction.c - (find_candidates_dom_walker::before_dom_children): Also allow - pointer types. - -2017-09-06 Richard Biener - - PR tree-optimization/82108 - * tree-vect-stmts.c (vectorizable_load): Fix pointer adjustment - for gap in the non-permutation SLP case. - -2017-09-06 Martin Jambor - - PR tree-optimization/82078 - * tree-sra.c (sort_and_splice_var_accesses): Move call to - add_access_to_work_queue... - (build_accesses_from_assign): ...here. - (propagate_all_subaccesses): Make sure racc is the group - representative, if there is one. - -2017-09-06 Jakub Jelinek - - PR middle-end/82095 - * varasm.c (categorize_decl_for_section): Use SECCAT_TBSS for TLS vars with - NULL DECL_INITIAL. - -2017-09-06 Richard Biener - - * gimple-ssa-strength-reduction.c - (find_candidates_dom_walker::before_doom_children): Use a - type and not a mode check. - -2017-09-06 Bernd Edlinger - - PR target/77308 - * config/arm/predicates.md (arm_general_adddi_operand): Create new - non-vfp predicate. - * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Use new predicates. - -2017-09-05 Jeff Law - - PR tree-optimization/64910 - * tree-ssa-reassoc.c (reassociate_bb): Restrict last change to - cases where we have 3 or more operands. - -2017-09-05 Jakub Jelinek - - PR middle-end/81768 - * omp-low.c (lower_omp_for): Recompute tree invariant if - gimple_omp_for_initial/final is ADDR_EXPR. - - PR middle-end/81768 - * omp-expand.c (expand_omp_simd): Force second operands of COND_EXPR - into gimple val before gimplification fo the COND_EXPR. - -2017-09-05 Aldy Hernandez - - * tree-ssa-threadupdate.c (duplicate_thread_path): Remove unused - REGION_COPY argument. - (thread_through_all_blocks): Remove unused argument to - duplicate_thread_path. - -2017-09-05 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-protos.h (aarch64_gen_adjusted_ldpstp): - Take a scalar_mode rather than a machine_mode. - (aarch64_operands_adjust_ok_for_ldpstp): Likewise. - * config/aarch64/aarch64.c (aarch64_simd_container_mode): Likewise. - (aarch64_operands_adjust_ok_for_ldpstp): Likewise. - (aarch64_gen_adjusted_ldpstp): Likewise. - (aarch64_expand_vector_init): Use scalar_mode instead of machine_mode. - -2017-09-05 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-protos.h (aarch64_is_extend_from_extract): - Take a scalar_int_mode instead of a machine_mode. - (aarch64_mask_and_shift_for_ubfiz_p): Likewise. - (aarch64_output_scalar_simd_mov_immediate): Likewise. - (aarch64_simd_scalar_immediate_valid_for_move): Likewise. - (aarch64_simd_attr_length_rglist): Delete. - * config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Take - a scalar_int_mode instead of a machine_mode. - (aarch64_add_offset): Likewise. - (aarch64_internal_mov_immediate): Likewise - (aarch64_add_constant_internal): Likewise. - (aarch64_add_constant): Likewise. - (aarch64_movw_imm): Likewise. - (aarch64_rtx_arith_op_extract_p): Likewise. - (aarch64_mask_and_shift_for_ubfiz_p): Likewise. - (aarch64_simd_scalar_immediate_valid_for_move): Likewise. - Remove assert that the mode isn't a vector. - (aarch64_output_scalar_simd_mov_immediate): Likewise. - (aarch64_expand_mov_immediate): Update calls after above changes. - (aarch64_output_casesi): Use as_a . - (aarch64_and_bitmask_imm): Check for scalar integer modes. - (aarch64_move_imm): Likewise. - (aarch64_can_const_movi_rtx_p): Likewise. - (aarch64_strip_extend): Likewise. - (aarch64_extr_rtx_p): Likewise. - (aarch64_rtx_costs): Likewise, using wode_mode as the mode of - a CONST_INT when the mode parameter is VOIDmode. - (aarch64_float_const_rtx_p): Use scalar_int_mode for a temporary. - -2017-09-05 Richard Sandiford - - * machmode.h (bitwise_mode_for_mode): Return opt_mode. - * stor-layout.c (bitwise_mode_for_mode): Likewise. - (bitwise_type_for_mode): Update accordingly. - -2017-09-05 Richard Sandiford - - * stor-layout.h (mode_for_size_tree): Return an opt_mode. - * stor-layout.c (mode_for_size_tree): Likewise. - (mode_for_array): Update accordingly. - (layout_decl): Likewise. - (compute_record_mode): Likewise. Only set the mode once. - -2017-09-05 Richard Sandiford - - * target.def (get_mask_mode): Change return type to opt_mode. - Expand commentary. - * doc/tm.texi: Regenerate. - * targhooks.h (default_get_mask_mode): Return an opt_mode. - * targhooks.c (default_get_mask_mode): Likewise. - * config/i386/i386.c (ix86_get_mask_mode): Likewise. - * optabs-query.c (can_vec_mask_load_store_p): Update use of - targetm.get_mask_mode. - * tree.c (build_truth_vector_type): Likewise. - -2017-09-05 Richard Sandiford - - * machmode.h (mode_for_vector): Return an opt_mode. - * stor-layout.c (mode_for_vector): Likewise. - (mode_for_int_vector): Update accordingly. - (layout_type): Likewise. - * config/i386/i386.c (emit_memmov): Likewise. - (ix86_expand_set_or_movmem): Likewise. - (ix86_expand_vector_init): Likewise. - (ix86_get_mask_mode): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_expand_vec_perm_const_1): - Likewise. - * config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Likewise. - * expmed.c (extract_bit_field_1): Likewise. - * expr.c (expand_expr_real_2): Likewise. - * optabs-query.c (can_vec_perm_p): Likewise. - (can_vec_mask_load_store_p): Likewise. - * optabs.c (expand_vec_perm): Likewise. - * targhooks.c (default_get_mask_mode): Likewise. - * tree-vect-stmts.c (vectorizable_store): Likewise. - (vectorizable_load): Likewise. - (get_vectype_for_scalar_type_and_size): Likewise. - -2017-09-05 Richard Sandiford - - * machmode.h (mode_for_int_vector): New function. - * stor-layout.c (mode_for_int_vector): Likewise. - * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Use it. - * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Likewise. - * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise. - * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise. - (s390_expand_vcond): Likewise. - -2017-09-05 Richard Sandiford - - * machmode.h (opt_machine_mode): New type. - (opt_mode): Allow construction from anything that can be - converted to a T. - (is_a, as_a, dyn_cast): Add overloads for opt_mode. - (mode_for_size): Return an opt_machine_mode. - * stor-layout.c (mode_for_size): Likewise. - (mode_for_size_tree): Update call accordingly. - (bitwise_mode_for_mode): Likewise. - (make_fract_type): Likewise. - (make_accum_type): Likewise. - * caller-save.c (replace_reg_with_saved_mem): Update call - accordingly. - * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise. - * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise. - * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise. - * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise. - * expmed.c (extract_bit_field_1): Likewise. - * reload.c (get_secondary_mem): Likewise. - * varasm.c (assemble_integer): Likewise. - * lower-subreg.c (simplify_subreg_concatn): Likewise. Move - early-out. - -2017-09-05 Richard Sandiford - - * machmode.h (decimal_float_mode_for_size): New function. - * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Use float_mode_for_size. - (REAL_VALUE_TO_TARGET_DOUBLE): Likewise. - (REAL_VALUE_TO_TARGET_SINGLE): Likewise. - (REAL_VALUE_TO_TARGET_DECIMAL128): Use decimal_float_mode_for_size. - (REAL_VALUE_TO_TARGET_DECIMAL64): Likewise. - (REAL_VALUE_TO_TARGET_DECIMAL32): Likewise. - -2017-09-05 Richard Sandiford - - * builtins.c (expand_builtin_powi): Use int_mode_for_size. - (get_builtin_sync_mode): Likewise. - (expand_ifn_atomic_compare_exchange): Likewise. - (expand_builtin_atomic_clear): Likewise. - (expand_builtin_atomic_test_and_set): Likewise. - (fold_builtin_atomic_always_lock_free): Likewise. - * calls.c (compute_argument_addresses): Likewise. - (emit_library_call_value_1): Likewise. - (store_one_arg): Likewise. - * combine.c (combine_instructions): Likewise. - * config/aarch64/aarch64.c (aarch64_function_value): Likewise. - * config/arm/arm.c (arm_function_value): Likewise. - (aapcs_allocate_return_reg): Likewise. - * config/c6x/c6x.c (c6x_expand_movmem): Likewise. - * config/i386/i386.c (construct_container): Likewise. - (ix86_gimplify_va_arg): Likewise. - (ix86_expand_sse_cmp): Likewise. - (emit_memmov): Likewise. - (emit_memset): Likewise. - (expand_small_movmem_or_setmem): Likewise. - (ix86_expand_pextr): Likewise. - (ix86_expand_pinsr): Likewise. - * config/lm32/lm32.c (lm32_block_move_inline): Likewise. - * config/microblaze/microblaze.c (microblaze_block_move_straight): - Likewise. - * config/mips/mips.c (mips_function_value_1) Likewise. - (mips_block_move_straight): Likewise. - (mips_expand_ins_as_unaligned_store): Likewise. - * config/powerpcspe/powerpcspe.c - (rs6000_darwin64_record_arg_advance_flush): Likewise. - (rs6000_darwin64_record_arg_flush): Likewise. - * config/rs6000/rs6000.c - (rs6000_darwin64_record_arg_advance_flush): Likewise. - (rs6000_darwin64_record_arg_flush): Likewise. - * config/sparc/sparc.c (sparc_function_arg_1): Likewise. - (sparc_function_value_1): Likewise. - * config/spu/spu.c (adjust_operand): Likewise. - (spu_emit_branch_or_set): Likewise. - (arith_immediate_p): Likewise. - * emit-rtl.c (gen_lowpart_common): Likewise. - * expr.c (expand_expr_real_1): Likewise. - * function.c (assign_parm_setup_block): Likewise. - * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise. - * reload1.c (alter_reg): Likewise. - * stor-layout.c (mode_for_vector): Likewise. - (layout_type): Likewise. - -2017-09-05 Richard Sandiford - - * config/spu/spu.c (exp2_immediate_p): Use int_mode_for_mode. - (spu_convert_move): Likewise. - * lower-subreg.c (resolve_simple_move): Likewise. - -2017-09-05 Bill Schmidt - - PR target/81833 - * config/rs6000/altivec.md (altivec_vsum2sws): Convert from a - define_insn to a define_expand. - (altivec_vsum2sws_direct): New define_insn. - (altivec_vsumsws): Convert from a define_insn to a define_expand. - -2017-09-05 Wilco Dijkstra - - * config/arm/arm.c (arm_option_params_internal): Improve setting of - max_insns_skipped. - -2017-09-05 H.J. Lu - - PR target/59501 - PR target/81624 - PR target/81769 - * config/i386/i386.c (ix86_finalize_stack_frame_flags): Don't - realign stack if stack alignment needed is less than incoming - stack boundary. - -2017-09-05 Marek Polacek - - PR sanitizer/82072 - * convert.c (convert_to_integer_1) : Move the ubsan - check earlier. - -2017-09-05 Wilco Dijkstra - - * explow.c (get_dynamic_stack_size): Improve dynamic alignment. - -2017-09-05 Richard Biener - - PR tree-optimization/82084 - * fold-const.c (can_native_encode_string_p): Handle wide characters. - -2017-09-05 Richard Biener - - PR tree-optimization/82102 - * tree-ssa-pre.c (fini_eliminate): Check if lhs is NULL. - -2017-09-05 Martin Liska - - PR tree-optimization/82032 - * tree-cfg.c (generate_range_test): New function. - * tree-cfg.h (generate_range_test): Declared here. - * tree-cfgcleanup.c (convert_single_case_switch): New function. - (cleanup_control_expr_graph): Use it. - * tree-switch-conversion.c (try_switch_expansion): Remove - assert. - (emit_case_nodes): Use generate_range_test. - -2017-09-04 Uros Bizjak - - PR target/82098 - * config/i386/i386.md (*_mask): Add - TARGET_USE_BT to insn constraint. - (*btr_mask): Ditto. - -2017-09-04 Wilco Dijkstra - - * config/arm/arm.c (arm_legitimate_index_p): Add comment. - (thumb2_legitimate_index_p): Use correct range for DI/DF mode. - -2017-09-04 Bernd Edlinger - - PR target/77308 - * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Split early except for - TARGET_NEON and TARGET_IWMMXT. - (anddi3, iordi3, xordi3, one_cmpldi2): Split while expanding except for - TARGET_NEON and TARGET_IWMMXT. - (*one_cmpldi2_insn): Moved the body of one_cmpldi2 here. - -2017-09-04 Uros Bizjak - - * config/i386/i386-protos.h (ix86_tls_address_pattern_p) New prototype. - (ix86_rewrite_tls_address): Ditto. - * config/i386/i386.c (ix86_tls_address_pattern_p) New function. - (ix86_rewrite_tls_address_1): Ditto. - (ix86_rewrite_tls_address): Ditto. - * config/i386/predicates.md (tls_address_pattern): New predicate. - * config/i386/i386.md (TLS address splitter): New splitter. - -2017-09-04 Richard Biener - - PR tree-optimization/82084 - * fold-const.h (can_native_encode_string_p): Declare. - * fold-const.c (can_native_encode_string_p): Factor out from ... - (native_encode_string): ... here. - * tree-vect-stmts.c (vectorizable_store): Call it to avoid - vectorizing stores from constants we later cannot handle. - -2017-09-04 Marek Polacek - - PR c/81783 - * doc/invoke.texi: Update -Wtautological-compare documentation. - -2017-09-04 Jeff Law - - PR tree-optimization/64910 - * tree-ssa-reassoc.c (reassociate_bb): For bitwise binary ops, - swap the first and last operand if the last is a constant. - -2017-09-04 Marek Polacek - - PR sanitizer/82072 - * convert.c (do_narrow): When sanitizing signed integer overflows, - bail out for signed types. - (convert_to_integer_1) : Likewise. - -2017-09-04 Richard Biener - - PR tree-optimization/82060 - * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): - Move devirtualization after stmt folding and before EH/AB/noreturn - cleanup to get the stmt refs canonicalized. Use a bool instead - of gimple_modified_p since that doesn't work for NOPs. Schedule - NOPs generated by folding for removal. - -2017-09-04 Richard Sandiford - Alan Hayward - David Sherwood - - * coretypes.h (pad_direction): New enum. - * defaults.h (DEFAULT_FUNCTION_ARG_PADDING): Delete. - (FUNCTION_ARG_PADDING): Likewise. - * target.def (function_arg_padding): New hook. - * targhooks.h (default_function_arg_padding): Declare. - * targhooks.c (default_function_arg_padding): New function. - * doc/tm.texi.in (FUNCTION_ARG_PADDING): Replace with... - (TARGET_FUNCTION_ARG_PADDING): ...this. - * doc/tm.texi: Regenerate. - * calls.c (store_unaligned_arguments_into_pseudos): Use pad_direction - instead of direction. - (compute_argument_addresses): Likewise. - (load_register_parameters): Likewise. - (emit_library_call_value_1): Likewise. - (store_one_arg): Use targetm.calls.function_arg_padding instead - of FUNCTION_ARG_PADDING. - (must_pass_in_stack_var_size_or_pad): Likewise. - * expr.c (emit_group_load_1): Use pad_direction instead of direction. - (emit_group_store): Likewise. - (emit_single_push_insn_1): Use targetm.calls.function_arg_padding - instead of FUNCTION_ARG_PADDING. - (emit_push_insn): Likewise, and propagate enum change throughout - function. - * function.h (direction): Delete. - (locate_and_pad_arg_data::where_pad): Use pad_direction instead - of direction. - * function.c (assign_parm_find_stack_rtl): Likewise. - (assign_parm_setup_block_p): Likewise. - (assign_parm_setup_block): Likewise. - (gimplify_parameters): Likewise. - (locate_and_pad_parm): Use targetm.calls.function_arg_padding - instead of FUNCTION_ARG_PADDING, and propagate enum change throughout - function. - * config/aarch64/aarch64.h (FUNCTION_ARG_PADDING): Delete. - (BLOCK_REG_PADDING): Use pad_direction instead of direction. - * config/aarch64/aarch64-protos.h (aarch64_pad_arg_upward): Delete. - * config/aarch64/aarch64.c (aarch64_pad_arg_upward): Replace with... - (aarch64_function_arg_padding): ...this new function. - (aarch64_gimplify_va_arg_expr): Use pad_direction instead of direction. - (TARGET_FUNCTION_ARG_PADDING): Redefine. - * config/arm/arm.h (FUNCTION_ARG_PADDING): Delete. - (BLOCK_REG_PADDING): Use pad_direction instead of direction. - * config/arm/arm-protos.h (arm_pad_arg_upward): Delete. - * config/arm/arm.c (TARGET_FUNCTION_ARG_PADDING): Redefine. - (arm_pad_arg_upward): Replace with... - (arm_function_arg_padding): ...this new function. - * config/c6x/c6x.h (BLOCK_REG_PADDING): Use pad_direction instead - of direction. - * config/ia64/hpux.h (FUNCTION_ARG_PADDING): Delete. - * config/ia64/ia64-protos.h (ia64_hpux_function_arg_padding): Delete. - * config/ia64/ia64.c (TARGET_FUNCTION_ARG_PADDING): Redefine. - (ia64_hpux_function_arg_padding): Replace with... - (ia64_function_arg_padding): ...this new function. Use pad_direction - instead of direction. Check for TARGET_HPUX. - * config/iq2000/iq2000.h (FUNCTION_ARG_PADDING): Delete. - * config/iq2000/iq2000.c (TARGET_FUNCTION_ARG_PADDING): Redefine. - (iq2000_function_arg_padding): New function. - * config/mips/mips-protos.h (mips_pad_arg_upward): Delete. - * config/mips/mips.c (mips_pad_arg_upward): Replace with... - (mips_function_arg_padding): ...this new function. - (mips_pad_reg_upward): Update accordingly. - (TARGET_FUNCTION_ARG_PADDING): Redefine. - * config/mips/mips.h (PAD_VARARGS_DOWN): Use - targetm.calls.function_arg_padding. - (FUNCTION_ARG_PADDING): Delete. - (BLOCK_REG_PADDING): Use pad_direction instead of direction. - * config/nios2/nios2.h (FUNCTION_ARG_PADDING): Delete. - (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding. - * config/nios2/nios2-protos.h (nios2_function_arg_padding): Delete. - (nios2_block_reg_padding): Return pad_direction instead of direction. - * config/nios2/nios2.c (nios2_block_reg_padding): Return pad_direction - instead of direction. - (nios2_function_arg_padding): Likewise. Make static. - (TARGET_FUNCTION_ARG_PADDING): Redefine. - * config/pa/pa.h (FUNCTION_ARG_PADDING): Delete. - (BLOCK_REG_PADDING): Use targetm.calls.function_arg_padding. - * config/pa/pa-protos.h (pa_function_arg_padding): Delete. - * config/pa/pa.c (TARGET_FUNCTION_ARG_PADDING): Redefine. - (pa_function_arg_padding): Make static. Return pad_direction instead - of direction. - * config/powerpcspe/powerpcspe.h (FUNCTION_ARG_PADDING): Delete. - (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding. - * config/powerpcspe/aix.h (BLOCK_REG_PADDING): Use pad_direction - instead of direction. Use targetm.calls.function_arg_padding. - * config/powerpcspe/darwin.h (BLOCK_REG_PADDING): Likewise. - * config/powerpcspe/freebsd64.h (BLOCK_REG_PADDING): Likewise. - * config/powerpcspe/linux64.h (BLOCK_REG_PADDING): Likewise. - * config/powerpcspe/powerpcspe-protos.h (function_arg_padding): Delete. - * config/powerpcspe/powerpcspe.c (TARGET_FUNCTION_ARG_PADDING): - Redefine. - (function_arg_padding): Rename to... - (rs6000_function_arg_padding): ...this. Make static. Return - pad_direction instead of direction. - (rs6000_return_in_msb): Use rs6000_function_arg_padding. - * config/rs6000/rs6000.h (FUNCTION_ARG_PADDING): Delete. - (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding. - * config/rs6000/aix.h (BLOCK_REG_PADDING): Use pad_direction - instead of direction. Use targetm.calls.function_arg_padding. - * config/rs6000/darwin.h (BLOCK_REG_PADDING): Likewise. - * config/rs6000/freebsd64.h (BLOCK_REG_PADDING): Likewise. - * config/rs6000/linux64.h (BLOCK_REG_PADDING): Likewise. - * config/rs6000/rs6000-protos.h (function_arg_padding): Delete. - * config/rs6000/rs6000.c (TARGET_FUNCTION_ARG_PADDING): Redefine. - (function_arg_padding): Rename to... - (rs6000_function_arg_padding): ...this. Make static. Return - pad_direction instead of direction. - (rs6000_return_in_msb): Use rs6000_function_arg_padding. - * config/s390/s390.h (FUNCTION_ARG_PADDING): Delete. - * config/s390/s390.c (s390_function_arg_padding): New function. - (TARGET_FUNCTION_ARG_PADDING): Redefine. - * config/sparc/sparc.h (FUNCTION_ARG_PADDING): Delete. - * config/sparc/sparc-protos.h (function_arg_padding): Delete. - * config/sparc/sparc.c (TARGET_FUNCTION_ARG_PADDING): Redefine. - (function_arg_padding): Rename to... - (sparc_function_arg_padding): ...this. Make static. Return - pad_direction instead of direction. - * config/spu/spu.h (FUNCTION_ARG_PADDING): Delete. - * config/spu/spu.c (spu_function_arg_padding): New function. - (TARGET_FUNCTION_ARG_PADDING): Redefine. - * system.h (FUNCTION_ARG_PADDING): Poison. - -2017-09-04 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (modes_tieable_p): New hook. - * doc/tm.texi (MODES_TIEABLE_P): Replace with... - (TARGET_MODES_TIEABLE_P): ...this. - * doc/tm.texi.in: Regenerate. - * hooks.h (hook_bool_mode_mode_true): Declare. - * hooks.c (hook_bool_mode_mode_true): New function. - * combine.c (subst): Use targetm.modes_tieable_p instead of - MODES_TIEABLE_P. - * dse.c (find_shift_sequence): Likewise. - * expmed.c (extract_low_bits): Likewise. - * lower-subreg.c: Include target.h. - (find_decomposable_subregs): Use targetm.modes_tieable_p instead of - MODES_TIEABLE_P. - * rtlanal.c (rtx_cost): Likewise. - * config/aarch64/aarch64.h (MODES_TIEABLE_P): Delete. - * config/aarch64/aarch64-protos.h (aarch64_modes_tieable_p): Delete. - * config/aarch64/aarch64.c (aarch64_modes_tieable_p): Make static. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/alpha/alpha.h (MODES_TIEABLE_P): Delete. - * config/alpha/alpha.c (alpha_modes_tieable_p): New function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/arc/arc.h (MODES_TIEABLE_P): Delete. - * config/arc/arc.c (TARGET_MODES_TIEABLE_P): Redefine. - (arc_modes_tieable_p): New function. - * config/arm/arm.h (MODES_TIEABLE_P): Delete. - * config/arm/arm-protos.h (arm_modes_tieable_p): Delete. - * config/arm/arm.c (TARGET_MODES_TIEABLE_P): Redefine. - (arm_modes_tieable_p): Make static. - * config/avr/avr.h (MODES_TIEABLE_P): Delete. - * config/bfin/bfin.h (MODES_TIEABLE_P): Delete. - * config/bfin/bfin.c (bfin_modes_tieable_p): New function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/c6x/c6x.h (MODES_TIEABLE_P): Delete. - * config/c6x/c6x.c (c6x_modes_tieable_p): New function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/cr16/cr16.h (MODES_TIEABLE_P): Delete. - * config/cr16/cr16.c (TARGET_MODES_TIEABLE_P): Redefine. - (cr16_modes_tieable_p): New function. - * config/cris/cris.h (MODES_TIEABLE_P): Delete. - * config/epiphany/epiphany.h (MODES_TIEABLE_P): Delete. - * config/fr30/fr30.h (MODES_TIEABLE_P): Delete. - (TRULY_NOOP_TRUNCATION): Update comment. - * config/frv/frv.h (MODES_TIEABLE_P): Delete. - (TRULY_NOOP_TRUNCATION): Update comment. - * config/frv/frv.c (TARGET_MODES_TIEABLE_P): Redefine. - (frv_modes_tieable_p): New function. - * config/ft32/ft32.h (MODES_TIEABLE_P): Delete. - * config/h8300/h8300.h (MODES_TIEABLE_P): Delete. - * config/h8300/h8300.c (h8300_modes_tieable_p): New function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/i386/i386.h (MODES_TIEABLE_P): Delete. - * config/i386/i386-protos.h (ix86_modes_tieable_p): Delete. - * config/i386/i386.c (ix86_modes_tieable_p): Make static. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/ia64/ia64.h (MODES_TIEABLE_P): Delete. - * config/ia64/ia64.c (TARGET_MODES_TIEABLE_P): Redefine. - (ia64_modes_tieable_p): New function. - * config/iq2000/iq2000.h (MODES_TIEABLE_P): Delete. - * config/iq2000/iq2000.c (TARGET_MODES_TIEABLE_P): Redefine. - (iq2000_modes_tieable_p): New function. - * config/lm32/lm32.h (MODES_TIEABLE_P): Delete. - * config/lm32/lm32.c (TARGET_MODES_TIEABLE_P): Redefine. - (lm32_modes_tieable_p): New function. - * config/m32c/m32c.h (MODES_TIEABLE_P): Delete. - * config/m32c/m32c-protos.h (m32c_modes_tieable_p): Delete. - * config/m32c/m32c.c (m32c_modes_tieable_p): Make static. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/m32r/m32r.h (MODES_TIEABLE_P): Delete. - * config/m32r/m32r.c (TARGET_MODES_TIEABLE_P): Redefine. - (m32r_modes_tieable_p): New function. - * config/m68k/m68k.h (MODES_TIEABLE_P): Delete. - * config/m68k/m68k.c (TARGET_MODES_TIEABLE_P): Redefine. - (m68k_modes_tieable_p): New function. - * config/mcore/mcore.h (MODES_TIEABLE_P): Delete. - * config/mcore/mcore.c (TARGET_MODES_TIEABLE_P): Redefine. - (mcore_modes_tieable_p): New function. - * config/microblaze/microblaze.h (MODES_TIEABLE_P): Delete. - * config/microblaze/microblaze.c (microblaze_modes_tieable_p): New - function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/mips/mips.h (MODES_TIEABLE_P): Delete. - * config/mips/mips-protos.h (mips_modes_tieable_p): Delete. - * config/mips/mips.c (mips_modes_tieable_p): Make static. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/mmix/mmix.h (MODES_TIEABLE_P): Delete. - * config/mn10300/mn10300.h (MODES_TIEABLE_P): Delete. - * config/mn10300/mn10300-protos.h (mn10300_modes_tieable): Delete. - * config/mn10300/mn10300.c (mn10300_modes_tieable): Rename to... - (mn10300_modes_tieable_p): ...this and make static. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/moxie/moxie.h (MODES_TIEABLE_P): Delete. - * config/msp430/msp430.h (MODES_TIEABLE_P): Delete. - * config/msp430/msp430-protos.h (msp430_modes_tieable_p): Delete. - * config/msp430/msp430.c (TARGET_MODES_TIEABLE_P): Redefine. - (msp430_modes_tieable_p): Make static. - * config/nds32/nds32.h (MODES_TIEABLE_P): Delete. - * config/nds32/nds32.c (nds32_modes_tieable_p): New function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/nios2/nios2.h (MODES_TIEABLE_P): Delete. - * config/nvptx/nvptx.h (MODES_TIEABLE_P): Delete. - * config/nvptx/nvptx.c (nvptx_modes_tieable_p): New function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/pa/pa.h (MODES_TIEABLE_P): Delete. - * config/pa/pa-protos.h (pa_modes_tieable_p): Delete. - * config/pa/pa.c (pa_modes_tieable_p): Make static. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/pdp11/pdp11.h (MODES_TIEABLE_P): Delete. - * config/pdp11/pdp11.c (TARGET_MODES_TIEABLE_P): Redefine. - (pdp11_modes_tieable_p): New function. - * config/powerpcspe/powerpcspe.h (MODES_TIEABLE_P): Delete. - * config/powerpcspe/powerpcspe.c (TARGET_MODES_TIEABLE_P): Redefine. - (rs6000_modes_tieable_p): New function. - (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P. - * config/powerpcspe/powerpcspe.md: Update comment. - * config/riscv/riscv.h (MODES_TIEABLE_P): Delete. - * config/riscv/riscv.c (riscv_modes_tieable_p): New function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/rl78/rl78.h (MODES_TIEABLE_P): Delete. - * config/rl78/rl78.c (TARGET_MODES_TIEABLE_P): Redefine. - (rl78_modes_tieable_p): New function. - * config/rs6000/rs6000.h (MODES_TIEABLE_P): Delete. - * config/rs6000/rs6000.c (TARGET_MODES_TIEABLE_P): Redefine. - (rs6000_modes_tieable_p): New function. - (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P. - * config/rs6000/rs6000.md: Update comment. - * config/rx/rx.h (MODES_TIEABLE_P): Delete. - * config/rx/rx.c (rx_modes_tieable_p): New function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/s390/s390.h (MODES_TIEABLE_P): Delete. - * config/s390/s390.c (s390_modes_tieable_p): New function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/sh/sh.h (MODES_TIEABLE_P): Delete. - * config/sh/sh.c (TARGET_MODES_TIEABLE_P): Redefine. - (sh_modes_tieable_p): New function. - * config/sparc/sparc.h (MODES_TIEABLE_P): Delete. - * config/sparc/sparc-protos.h (sparc_modes_tieable_p): Delete. - * config/sparc/sparc.c (TARGET_MODES_TIEABLE_P): Redefine. - (sparc_modes_tieable_p): Make static. - * config/spu/spu.h (MODES_TIEABLE_P): Delete. - * config/spu/spu.c (spu_modes_tieable_p): New function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/stormy16/stormy16.h (MODES_TIEABLE_P): Delete. - * config/stormy16/stormy16.c (xstormy16_modes_tieable_p): New function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/tilegx/tilegx.h (MODES_TIEABLE_P): Delete. - * config/tilepro/tilepro.h (MODES_TIEABLE_P): Delete. - * config/v850/v850.h (MODES_TIEABLE_P): Delete. - * config/v850/v850.c (v850_modes_tieable_p): New function. - (TARGET_MODES_TIEABLE_P): Redefine. - * config/vax/vax.h (MODES_TIEABLE_P): Delete. - * config/visium/visium.h (MODES_TIEABLE_P): Delete. - * config/visium/visium.c (TARGET_MODES_TIEABLE_P): Redefine. - (visium_modes_tieable_p): New function. - * config/xtensa/xtensa.h (MODES_TIEABLE_P): Delete. - * config/xtensa/xtensa.c (TARGET_MODES_TIEABLE_P): Redefine. - (xtensa_modes_tieable_p): New function. - * system.h (MODES_TIEABLE_P): Poison. - -2017-09-04 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (hard_regno_mode_ok): New hook. - * doc/tm.texi (HARD_REGNO_MODE_OK): Replace with... - (TARGET_HARD_REGNO_MODE_OK): ...this. - * doc/tm.texi.in: Regenerate. - * hooks.h (hook_bool_uint_mode_true): Declare. - * hooks.c (hook_bool_uint_mode_true): New function. - * doc/md.texi: Refer to targetm.hard_regno_mode_ok instead of - HARD_REGNO_MODE_OK. - * genpreds.c (write_insn_preds_c): Add an include of target.h. - * alias.c (init_alias_target): Use targetm.hard_regno_mode_ok - instead of HARD_REGNO_MODE_OK. - * caller-save.c: Include target.h. - (reg_save_code): Use targetm.hard_regno_mode_ok instead of - HARD_REGNO_MODE_OK. - * combine.c (can_combine_p): Likewise. - (combinable_i3pat): Likewise. - (can_change_dest_mode): Likewise. - * expr.c (init_expr_target): Likewise. - (convert_move): Likewise. - (convert_modes): Likewise. - * ira.c (setup_prohibited_class_mode_regs): Likewise. - (setup_prohibited_mode_move_regs): Likewise. - * ira.h (target_ira): Likewise. - * lra-assigns.c (find_hard_regno_for_1): Likewise. - * lra-constraints.c (process_alt_operands): Likewise. - (split_reg): Likewise. - * recog.c (peep2_find_free_register): Likewise. - * ree.c (combine_reaching_defs): Likewise. - * regcprop.c (maybe_mode_change): Likewise. - * reginfo.c (init_reg_sets_1): Likewise. - (choose_hard_reg_mode): Likewise. - (simplifiable_subregs): Likewise. - * regrename.c (check_new_reg_p): Likewise. - * reload.c (find_valid_class): Likewise. - (find_valid_class_1): Likewise. - (reload_inner_reg_of_subreg): Likewise. - (push_reload): Likewise. - (combine_reloads): Likewise. - (find_dummy_reload): Likewise. - (find_reloads): Likewise. - * reload1.c (find_reg): Likewise. - (set_reload_reg): Likewise. - (allocate_reload_reg): Likewise. - (choose_reload_regs): Likewise. - (reload_adjust_reg_for_temp): Likewise. - * rtlanal.c (subreg_size_offset_from_lsb): Likewise. - (simplify_subreg_regno): Likewise. - * sel-sched.c (init_regs_for_mode): Likewise. - * varasm.c (make_decl_rtl): Likewise. - * config/aarch64/aarch64.h (HARD_REGNO_MODE_OK): Delete. - (MODES_TIEABLE_P): Use targetm.hard_regno_mode_ok instead of - HARD_REGNO_MODE_OK. - * config/aarch64/aarch64-protos.h (aarch64_hard_regno_mode_ok): Delete. - * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Make static. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/alpha/alpha.h (HARD_REGNO_MODE_OK): Delete. - * config/alpha/alpha.c (alpha_hard_regno_mode_ok): New function. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/arc/arc.h (arc_hard_regno_mode_ok): Delete. - (arc_mode_class): Delete. - (HARD_REGNO_MODE_OK): Delete. - * config/arc/arc.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (arc_hard_regno_mode_ok): Rename old array to... - (arc_hard_regno_mode_ok_modes): ...this. - (arc_conditional_register_usage): Update accordingly. - (arc_mode_class): Make static. - (arc_hard_regno_mode_ok): New function. - * config/arm/arm.h (HARD_REGNO_MODE_OK): Delete. - * config/arm/arm-protos.h (arm_hard_regno_mode_ok): Delete. - * config/arm/arm.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (arm_hard_regno_mode_ok): Make static. - * config/arm/arm.md (movdi): Use targetm.hard_regno_mode_ok instead of - HARD_REGNO_MODE_OK. - * config/avr/avr-protos.h (avr_hard_regno_mode_ok): Delete. - * config/avr/avr.h (HARD_REGNO_MODE_OK): Delete. - * config/avr/avr.c (avr_hard_regno_mode_ok): Make static and - return a bool. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/bfin/bfin-protos.h (hard_regno_mode_ok): Delete. - * config/bfin/bfin.h (HARD_REGNO_MODE_OK): Delete. - * config/bfin/bfin.c (hard_regno_mode_ok): Rename to... - (bfin_hard_regno_mode_ok): ...this. Make static and return a bool. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/bfin/predicates.md (valid_reg_operand): Use - targetm.hard_regno_mode_ok instead of HARD_REGNO_MODE_OK. - * config/c6x/c6x.h (HARD_REGNO_MODE_OK): Delete. - * config/c6x/c6x.c (c6x_hard_regno_mode_ok): New function. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/cr16/cr16.h (HARD_REGNO_MODE_OK): Delete. - * config/cr16/cr16-protos.h (cr16_hard_regno_mode_ok): Delete. - * config/cr16/cr16.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (cr16_hard_regno_mode_ok): Make static and return a bool. - * config/cris/cris.h (HARD_REGNO_MODE_OK): Delete. - * config/cris/cris.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (cris_hard_regno_mode_ok): New function. - * config/epiphany/epiphany.h (epiphany_hard_regno_mode_ok): Delete. - (epiphany_mode_class): Delete. - (HARD_REGNO_MODE_OK): Delete. - * config/epiphany/epiphany-protos.h (hard_regno_mode_ok): Delete. - * config/epiphany/epiphany.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (hard_regno_mode_ok): Rename to... - (epiphany_hard_regno_mode_ok): ...this. Make static and return a bool. - * config/fr30/fr30.h (HARD_REGNO_MODE_OK): Delete. - * config/fr30/fr30.md: Refer to targetm.hard_regno_mode_ok instead of - HARD_REGNO_MODE_OK. - * config/frv/frv.h (HARD_REGNO_MODE_OK): Delete. - * config/frv/frv-protos.h (frv_hard_regno_mode_ok): Delete. - * config/frv/frv.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (frv_hard_regno_mode_ok): Make static and return a bool. - * config/frv/frv.md: Refer to targetm.hard_regno_mode_ok instead of - HARD_REGNO_MODE_OK. - * config/ft32/ft32.h (HARD_REGNO_MODE_OK): Delete. - * config/h8300/h8300.h (HARD_REGNO_MODE_OK): Delete. - * config/h8300/h8300-protos.h (h8300_hard_regno_mode_ok): Delete. - * config/h8300/h8300.c (h8300_hard_regno_mode_ok): Make static - and return a bool. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/i386/i386.h (HARD_REGNO_MODE_OK): Delete. - * config/i386/i386-protos.h (ix86_hard_regno_mode_ok): Delete. - * config/i386/i386.c (ix86_hard_regno_mode_ok): Make static and - return a bool. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/ia64/ia64.h (HARD_REGNO_MODE_OK): Delete. - * config/ia64/ia64.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (ia64_hard_regno_mode_ok): New function. - * config/iq2000/iq2000.h (HARD_REGNO_MODE_OK): Delete. - * config/iq2000/iq2000.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (iq2000_hard_regno_mode_ok): New function. - * config/lm32/lm32.h (HARD_REGNO_MODE_OK): Delete. - * config/lm32/lm32.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (lm32_hard_regno_mode_ok): New function. - * config/m32c/m32c.h (HARD_REGNO_MODE_OK): Delete. - * config/m32c/m32c-protos.h (m32c_hard_regno_ok): Delete. - * config/m32c/m32c.c (class_can_hold_mode): Use m32c_hard_regno_mode_ok - instead of HARD_REGNO_MODE_OK. - (m32c_hard_regno_ok): Rename to... - (m32c_hard_regno_mode_ok): ...this. Make static and return a bool. - (m32c_cannot_change_mode_class): Update accordingly. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/m32r/m32r.h (m32r_hard_regno_mode_ok): Delete. - (m32r_mode_class): Delete. - (HARD_REGNO_MODE_OK): Delete. - * config/m32r/m32r.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (m32r_hard_regno_mode_ok): Rename to... - (m32r_hard_regno_modes): ...this. - (m32r_mode_class): Make static. - (m32r_hard_regno_mode_ok): New function. - * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Delete. - * config/m68k/m68k-protos.h (m68k_regno_mode_ok): Delete. - * config/m68k/m68k.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (m68k_hard_regno_mode_ok): Make static. - * config/mcore/mcore.h (HARD_REGNO_MODE_OK): Delete. - * config/mcore/mcore.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (mcore_hard_regno_mode_ok): New function. - * config/microblaze/microblaze.h (microblaze_hard_regno_mode_ok) - (HARD_REGNO_MODE_OK): Delete. - * config/microblaze/microblaze.c (microblaze_hard_regno_mode_ok): - Rename to... - (microblaze_hard_regno_mode_ok_p): ...this and make static. - (microblaze_hard_regno_mode_ok): New function. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/mips/mips.h (HARD_REGNO_MODE_OK): Delete. - (mips_hard_regno_mode_ok): Delete. - * config/mips/mips.c (mips_hard_regno_mode_ok): Rename to... - (mips_hard_regno_mode_ok_p): ...this and make static. - (mips_hard_regno_mode_ok_p): Rename to... - (mips_hard_regno_mode_ok_uncached): ...this. - (mips_hard_regno_mode_ok): New function. - (mips_class_max_nregs): Use mips_hard_regno_mode_ok instead - of HARD_REGNO_MODE_OK. - (mips_option_override): Update after above name changes. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/mmix/mmix.h (HARD_REGNO_MODE_OK): Delete. - * config/mn10300/mn10300.h (HARD_REGNO_MODE_OK): Delete. - * config/mn10300/mn10300-protos.h (mn10300_hard_regno_mode_ok): Delete. - * config/mn10300/mn10300.c (mn10300_hard_regno_mode_ok): Make static. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/moxie/moxie.h (HARD_REGNO_MODE_OK): Delete. - * config/msp430/msp430.h (HARD_REGNO_MODE_OK): Delete. - * config/msp430/msp430-protos.h (msp430_hard_regno_mode_ok): Delete. - * config/msp430/msp430.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (msp430_hard_regno_mode_ok): Make static and return a bool. - * config/nds32/nds32.h (HARD_REGNO_MODE_OK): Delete. - * config/nds32/nds32-protos.h (nds32_hard_regno_mode_ok): Delete. - * config/nds32/nds32.c (nds32_hard_regno_mode_ok): Make static - and return a bool. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/nios2/nios2.h (HARD_REGNO_MODE_OK): Delete. - * config/nvptx/nvptx.h (HARD_REGNO_MODE_OK): Delete. - * config/pa/pa.h (MODES_TIEABLE_P): Update commentary. - * config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): Rename to... - (PA_HARD_REGNO_MODE_OK): ...this - * config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Rename to... - (PA_HARD_REGNO_MODE_OK): ...this. - * config/pa/pa.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (pa_hard_regno_mode_ok): New function. - * config/pdp11/pdp11.h (HARD_REGNO_MODE_OK): Delete. - * config/pdp11/pdp11.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (pdp11_hard_regno_mode_ok): New function. - * config/powerpcspe/powerpcspe.h (HARD_REGNO_MODE_OK): Delete. - * config/powerpcspe/powerpcspe-protos.h (rs6000_hard_regno_mode_ok_p): - Delete. - * config/powerpcspe/powerpcspe.c (rs6000_hard_regno_mode_ok_p): - Make static. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - (rs6000_hard_regno_mode_ok): Rename to... - (rs6000_hard_regno_mode_ok_uncached): ...this. - (rs6000_init_hard_regno_mode_ok): Update accordingly. - (rs6000_hard_regno_mode_ok): New function. - * config/riscv/riscv.h (HARD_REGNO_MODE_OK): Delete. - * config/riscv/riscv-protos.h (riscv_hard_regno_mode_ok_p): Delete. - * config/riscv/riscv.c (riscv_hard_regno_mode_ok_p): Rename to... - (riscv_hard_regno_mode_ok): ...this and make static. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/rl78/rl78.h (HARD_REGNO_MODE_OK): Delete. - * config/rl78/rl78-protos.h (rl78_hard_regno_mode_ok): Delete. - * config/rl78/rl78.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (rl78_hard_regno_mode_ok): Make static and return bool. - * config/rs6000/rs6000.h (HARD_REGNO_MODE_OK): Delete. - * config/rs6000/rs6000-protos.h (rs6000_hard_regno_mode_ok_p): - Delete. - * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_p): Make static. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - (rs6000_hard_regno_mode_ok): Rename to... - (rs6000_hard_regno_mode_ok_uncached): ...this. - (rs6000_init_hard_regno_mode_ok): Update accordingly. - (rs6000_hard_regno_mode_ok): New function. - * config/rx/rx.h (HARD_REGNO_MODE_OK): Delete. - * config/rx/rx.c (rx_hard_regno_mode_ok): New function. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/s390/s390.h (HARD_REGNO_MODE_OK): Delete. - * config/s390/s390-protos.h (s390_hard_regno_mode_ok): Delete. - * config/s390/s390.c (s390_hard_regno_mode_ok): Make static. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/sh/sh.h (HARD_REGNO_MODE_OK): Delete. - * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Delete. - * config/sh/sh.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (sh_hard_regno_mode_ok): Make static. - * config/sparc/constraints.md: Refer to targetm.hard_regno_mode_ok - instead of HARD_REGNO_MODE_OK. - * config/sparc/sparc.h (hard_regno_mode_classes): Delete. - (sparc_mode_class): Delete. - (HARD_REGNO_MODE_OK): Delete. - * config/sparc/sparc.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (hard_regno_mode_classes): Make static. - (sparc_mode_class): Likewise. - (sparc_hard_regno_mode_ok): New function. - * config/spu/spu.h (HARD_REGNO_MODE_OK): Delete. - * config/stormy16/stormy16.h (HARD_REGNO_MODE_OK): Delete. - * config/stormy16/stormy16.c (xstormy16_hard_regno_mode_ok): New - function. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/tilegx/tilegx.h (HARD_REGNO_MODE_OK): Delete. - * config/tilepro/tilepro.h (HARD_REGNO_MODE_OK): Delete. - * config/v850/v850.h (HARD_REGNO_MODE_OK): Delete. - * config/v850/v850.c (v850_hard_regno_mode_ok): New function. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - * config/vax/vax.h (HARD_REGNO_MODE_OK): Delete. - * config/visium/visium.h (HARD_REGNO_MODE_OK): Delete. - * config/visium/visium.c (TARGET_HARD_REGNO_MODE_OK): Redefine. - (visium_hard_regno_mode_ok): New function. - * config/visium/visium.md: Refer to targetm.hard_regno_mode_ok - instead of HARD_REGNO_MODE_OK. - * config/xtensa/xtensa.h (xtensa_hard_regno_mode_ok): Delete. - (HARD_REGNO_MODE_OK): Delete. - * config/xtensa/xtensa.c (xtensa_hard_regno_mode_ok): Rename to... - (xtensa_hard_regno_mode_ok_p): ...this and make static. - (xtensa_option_override): Update accordingly. - (TARGET_HARD_REGNO_MODE_OK): Redefine. - (xtensa_hard_regno_mode_ok): New function. - * system.h (HARD_REGNO_MODE_OK): Poison. - -2017-09-04 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (hard_regno_call_part_clobbered): New hook. - * doc/tm.texi.in (HARD_REGNO_CALL_PART_CLOBBERED): Replace with... - (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): ...this hook. - * doc/tm.texi: Regenerate. - * hooks.h (hook_bool_uint_mode_false): Declare. - * hooks.c (hook_bool_uint_mode_false): New function. - * regs.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. - * cselib.c (cselib_process_insn): Use - targetm.hard_regno_call_part_clobbered instead of - HARD_REGNO_CALL_PART_CLOBBERED. - * ira-conflicts.c (ira_build_conflicts): Likewise. - * ira-costs.c (ira_tune_allocno_costs): Likewise. - * lra-constraints.c (need_for_call_save_p): Likewise. - * lra-lives.c: Include target.h. - (check_pseudos_live_through_calls): Use - targetm.hard_regno_call_part_clobbered instead of - HARD_REGNO_CALL_PART_CLOBBERED. - * regcprop.c: Include target.h. - (copyprop_hardreg_forward_1): Use - targetm.hard_regno_call_part_clobbered instead of - HARD_REGNO_CALL_PART_CLOBBERED. - * reginfo.c (choose_hard_reg_mode): Likewise. - * regrename.c (check_new_reg_p): Likewise. - * reload.c (find_equiv_reg): Likewise. - * reload1.c (emit_reload_insns): Likewise. - * sched-deps.c (deps_analyze_insn): Likewise. - * sel-sched.c (init_regs_for_mode): Likewise. - (mark_unavailable_hard_regs): Likewise. - * targhooks.c (default_dwarf_frame_reg_mode): Likewise. - * config/aarch64/aarch64.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. - * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered): - New function. - (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. - * config/avr/avr.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. - * config/avr/avr-protos.h (avr_hard_regno_call_part_clobbered): - Delete. - * config/avr/avr.c (avr_hard_regno_call_part_clobbered): Make static - and return a bool. - (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. - * config/i386/i386.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. - * config/i386/i386.c (ix86_hard_regno_call_part_clobbered): New - function. - (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. - * config/mips/mips.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. - * config/mips/mips.c (mips_hard_regno_call_part_clobbered): New - function. - (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. - * config/powerpcspe/powerpcspe.h (HARD_REGNO_CALL_PART_CLOBBERED): - Delete. - * config/powerpcspe/powerpcspe.c - (rs6000_hard_regno_call_part_clobbered): New function. - (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. - * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. - * config/rs6000/rs6000.c (rs6000_hard_regno_call_part_clobbered): - New function. - (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. - * config/s390/s390.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. - * config/s390/s390.c (s390_hard_regno_call_part_clobbered): New - function. - (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. - * config/sh/sh.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. - * system.h (HARD_REGNO_CALL_PART_CLOBBERED): Poison. - -2017-09-04 Richard Sandiford - Alan Hayward - David Sherwood - - * rtl.h (subreg_memory_offset): Declare. - * emit-rtl.c (subreg_memory_offset): New function. - * expmed.c (store_bit_field_1): Use it. - * expr.c (undefined_operand_subword_p): Likewise. - * simplify-rtx.c (simplify_subreg): Likewise. - -2017-09-04 Alexander Monakov - - PR rtl-optimization/57448 - PR target/67458 - PR target/81316 - * optabs.c (expand_atomic_load): Place compiler memory barriers if - using atomic_load pattern. - (expand_atomic_store): Likewise. - -2017-09-04 Jakub Jelinek - - PR sanitizer/81981 - * gimple-fold.c (gimple_fold_call): Optimize away useless UBSAN_PTR - and UBSAN_BOUNDS internal calls. Clean up IFN_UBSAN_OBJECT_SIZE - handling. Use replace_call_with_value with NULL instead of - gsi_replace, unlink_stmt_vdef and release_defs. - - * gdbhooks.py (OptMachineModePrinter.to_string): Use 8 spaces - instead of tab. - - * lra-remat.c (reg_overlap_for_remat_p): Fix a pasto. - -2017-09-04 Richard Sandiford - - PR bootstrap/82045 - * rtl.h (emit_library_call_value_1): Declare. - (emit_library_call): Replace declaration with a series of overloads. - Remove the parameter count argument. - (emit_library_call_value): Likewise. - * calls.c (emit_library_call_value_1): Make global. Replace varargs - with an "rtx_mode_t *". - (emit_library_call_value): Delete. - (emit_library_call): Likewise. - * asan.c (asan_emit_stack_protection): Update calls accordingly. - (asan_emit_allocas_unpoison): Likewise. - * builtins.c (expand_builtin_powi): Likewise. - (expand_asan_emit_allocas_unpoison): Likewise. - * cfgexpand.c (expand_main_function): Likewise. - * config/aarch64/aarch64.c (aarch64_trampoline_init): Likewise. - * config/aarch64/aarch64.h (PROFILE_HOOK): Likewise. - * config/alpha/alpha.c (alpha_trampoline_init): Likewise. - * config/arm/arm.c (arm_trampoline_init): Likewise. - (arm_call_tls_get_addr): Likewise. - (arm_expand_divmod_libfunc): Likewise. - * config/bfin/bfin.md (umulsi3_highpart): Likewise. - (smulsi3_highpart): Likewise. - * config/c6x/c6x.c (c6x_initialize_trampoline): Likewise. - (c6x_expand_compare): Likewise. - (c6x_expand_movmem): Likewise. - * config/frv/frv.c (frv_trampoline_init): Likewise. - * config/i386/i386.c (ix86_trampoline_init): Likewise. - (ix86_expand_divmod_libfunc): Likewise. - * config/ia64/ia64.c (ia64_expand_tls_address): Likewise. - (ia64_expand_compare): Likewise. - (ia64_profile_hook): Likewise. - * config/ia64/ia64.md (save_stack_nonlocal): Likewise. - (nonlocal_goto): Likewise. - (restore_stack_nonlocal): Likewise. - * config/m32r/m32r.c (block_move_call): Likewise. - (m32r_trampoline_init): Likewise. - * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Likewise. - * config/m68k/m68k.c (m68k_call_tls_get_addr): Likewise. - (m68k_call_m68k_read_tp): Likewise. - * config/microblaze/microblaze.c (microblaze_call_tls_get_addr) - (microblaze_expand_divide): Likewise. - * config/mips/mips.h (mips_args): Likewise. - * config/mips/sdemtk.h (mips_sync_icache): Likewise. - (MIPS_ICACHE_SYNC): Likewise. - * config/nios2/nios2.c (nios2_emit_expensive_div): Likewise. - (nios2_trampoline_init): Likewise. - * config/pa/pa.c (hppa_tls_call): Likewise. - (pa_trampoline_init): Likewise. - * config/pa/pa.md (canonicalize_funcptr_for_compare): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_legitimize_tls_address) - (expand_strn_compare): Likewise. - (rs6000_generate_compare): Likewise. - (rs6000_expand_float128_convert): Likewise. - (output_profile_hook): Likewise. - (rs6000_trampoline_init): Likewise. - * config/powerpcspe/powerpcspe.md (neg2): Likewise. - * config/riscv/riscv.h (PROFILE_HOOK): Likewise. - * config/rs6000/rs6000-string.c (expand_strn_compare): Likewise. - * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise. - (rs6000_generate_compare): Likewise. - (rs6000_expand_float128_convert): Likewise. - (output_profile_hook): Likewise. - (rs6000_trampoline_init): Likewise. - * config/rs6000/rs6000.md (neg2): Likewise. - * config/sh/sh.c (sh_trampoline_init): Likewise. - * config/sparc/sparc.c (emit_soft_tfmode_libcall): Likewise. - (sparc_emit_float_lib_cmp): Likewise. - (sparc32_initialize_trampoline): Likewise. - (sparc64_initialize_trampoline): Likewise. - (sparc_profile_hook): Likewise. - * config/spu/spu.c (ea_load_store): Likewise. - * config/spu/spu.md (floatunssidf2): Likewise. - * config/tilegx/tilegx.c (tilegx_trampoline_init): Likewise. - * config/tilepro/tilepro.c (tilepro_trampoline_init): Likewise. - * config/visium/visium.c (expand_block_move_4): Likewise. - (expand_block_move_2): Likewise. - (expand_block_move_1): Likewise. - (expand_block_set_4): Likewise. - (expand_block_set_2): Likewise. - (expand_block_set_1): Likewise. - (visium_trampoline_init): Likewise. - (visium_profile_hook): Likewise. - * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Likewise. - (xtensa_setup_frame_addresses): Likewise. - (xtensa_trampoline_init): Likewise. - * except.c (sjlj_emit_function_enter): Likewise. - (sjlj_emit_function_exit): Likewise. - * explow.c (allocate_dynamic_stack_space): Likewise. - (probe_stack_range): Likewise. - * expr.c (convert_mode_scalar): Likewise. - * optabs.c (expand_binop): Likewise. - (expand_twoval_binop_libfunc): Likewise. - (expand_unop): Likewise. - (prepare_cmp_insn): Likewise. - (prepare_float_lib_cmp): Likewise. - (expand_float): Likewise. - (expand_fix): Likewise. - (expand_fixed_convert): Likewise. - (maybe_emit_sync_lock_test_and_set): Likewise. - (expand_atomic_compare_and_swap): Likewise. - (expand_mem_thread_fence): Likewise. - (expand_atomic_fetch_op): Likewise. - -2017-09-03 Gerald Pfeifer - - * doc/generic.texi (OpenACC): Adjust URL. - * doc/invoke.texi (C Dialect Options): Ditto. - -2017-09-03 Uros Bizjak - - * config/i386/i386.md (*bt): Use nonimmediate_operand - predicate for operand 1. Add (m,) constraint. - (*jcc_bt): Use nonimmediate_operand predicate for operand 1. - Prevent memory operand 1 with register operand 2. - -2017-09-01 Segher Boessenkool - - PR rtl-optimization/82024 - * combine.c (try_combine): If the combination result is a PARALLEL, - and we only need to retain the SET in there that would be placed - at I2, check that we can place that at I3 instead, before doing so. - -2017-09-01 Jakub Jelinek - - PR target/81766 - * config/i386/i386.c (ix86_init_large_pic_reg): Return label - instead of void. - (ix86_init_pic_reg): Remember label from ix86_init_large_pic_reg, - if non-NULL and preceded by NOTE_INSN_BASIC_BLOCK, swap the note - and label. - -2017-09-01 Joerg Sonnenberger - Jeff Law - - * varasm.c (bss_initializer_p): Do not put constants into .bss - (categorize_decl_for_section): Handle bss_initializer_p returning - false when DECL_INITIAL is NULL. - -2017-09-01 Andreas Krebbel - - PR target/82012 - * config/s390/s390.c (s390_can_inline_p): New function. - -2017-09-01 Jeff Law - - PR tree-optimization/82052 - * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): - Always initialize the returned slot after a hash table miss - when INSERT is true. - -2017-09-01 Alexander Monakov - - * config/s390/s390.md (mem_signal_fence): Remove. - * doc/md.texi (mem_signal_fence): Remove. - * optabs.c (expand_mem_signal_fence): Remove uses of mem_signal_fence. - Update comments. - * target-insns.def (mem_signal_fence): Remove. - -2017-09-01 Jakub Jelinek - - PR sanitizer/81902 - * doc/invoke.texi: Document -fsanitize=pointer-overflow. - - PR sanitizer/81923 - * asan.c (create_odr_indicator): Strip name encoding from assembler - name before appending it after __odr_asan_. - -2017-09-01 Martin Liska - - PR tree-optimization/82059 - * gimple-ssa-isolate-paths.c (isolate_path): Add profile and - frequency only when an edge is redirected. - -2017-09-01 Claudiu Zissulescu - - * config/arc/arc-c.c (__ARC_LPC_WIDTH__): Add builtin define. - * config/arc/arc.c (ARC_MAX_LOOP_LENGTH): Define. - (arc_conditional_register_usage): Remove ARC600 lp_count - exception. - (arc_file_start): Emit Tag_ARC_CPU_variation. - (arc_can_use_doloop_p): New conditions to use ZOLs. - (hwloop_fail): New function. - (hwloop_optimize): Likewise. - (hwloop_pattern_reg): Likewise. - (arc_doloop_hooks): New struct, to be used with reorg_loops. - (arc_reorg_loops): New function, calls reorg_loops. - (arc_reorg): Call arc_reorg_loops. Remove old ZOL handling. - (arc600_corereg_hazard): Remove ZOL checking, case handled by - hwloop_optimize. - (arc_loop_hazard): Remove function, functionality moved into - hwloop_optimize. - (arc_hazard): Remove arc_loop_hazard call. - (arc_adjust_insn_length): Remove ZOL handling, functionality moved - into hwloop_optimize. - (arc_label_align): Remove ZOL handling. - * config/arc/arc.h (LOOP_ALIGN): Changed to 0. - * config/arc/arc.md (doloop_begin): Remove pattern. - (doloop_begin_i): Likewise. - (doloop_end_i): Likewise. - (doloop_fallback): Likewise. - (doloop_fallback_m): Likewise. - (doloop_end): Reimplement expand. - (arc_lp): New pattern for LP instruction. - (loop_end): New pattern. - (loop_fail): Likewise. - (decrement_and_branch_until_zero): Likewise. - * config/arc/arc.opt (mlpc-width): New option. - * doc/invoke.texi (mlpc-width): Document option. - -2017-09-01 Claudiu Zissulescu - - * config/arc/arc.c (arc_ifcvt): Remove use of merge_blocks call. - (arc_ccfsm_advance): Fix checking for delay slots. - (arc_reorg): Add rtl dump after each call to arc_ifcvt. - -2017-09-01 Claudiu Zissulescu - - * config/arc/arc.md (movqi_insn): Add stores to save constant long - immediates. - (movhi_insn): Update store instruction constraint which are saving - 6-bit short immediates. - (movsi_insn): Consider also short scaled load operations. - (zero_extendhisi2_i): Use Usd constraint instead of T. - (extendhisi2_i): Add q constraint. - (arc_clzsi2): Add type and length attributes. - (arc_ctzsi2): Likewise. - * config/arc/constraints.md (Usc): Update constraint, the - assembler can parse two relocations for a single instruction. - -2017-09-01 Claudiu Zissulescu - - * config/arc/arc.c (arc_use_anchors_for_symbol_p): New function. - (TARGET_USE_ANCHORS_FOR_SYMBOL_P): Define. - -2017-08-31 Olivier Hainque - - * config.gcc (powerpc-wrs-vxworks|vxworksae|vxworksmils): Now - match as powerpc-wrs-vxworks*. - -2017-08-31 James Greenhalgh - - * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge): Fix - register constraint for by-element operand. - (aarch64_mls_elt_merge): Likewise. - -2017-08-31 Claudiu Zissulescu - - * config/arc/arc.c (arc_can_follow_jump): Check for short - branches. - -2017-08-31 Claudiu Zissulescu - - * config.gcc: Use g.opt for arc. - * config/arc/arc.c (LEGITIMATE_SCALED_ADDRESS_P): Deleted, - functionality moved to ... - (legitimate_scaled_address_p): New function, ...here. - (LEGITIMATE_SMALL_DATA_OFFSET_P): New define. - (LEGITIMATE_SMALL_DATA_ADDRESS_P): Use the above define. - (legitimate_offset_address_p): Delete TARGET_NO_SDATA_SET - condition. - (arc_override_options): Handle G option. - (arc_output_pic_addr_const): Correct function definition. - (arc_legitimate_address_p): Use legitimate_scaled_address_p. - (arc_decl_anon_ns_mem_p): Delete. - (arc_in_small_data_p): Overhaul this function to take into - consideration the value given via G option. - (arc_rewrite_small_data_1): Renamed and corrected old - arc_rewrite_small_data function. - (arc_rewrite_small_data): New function. - (small_data_pattern): Don't use pic_offset_table_rtx. - * config/arc/arc.h (CC1_SPEC): Recognize G option. - * config/arc/simdext.md (movmisalignv2hi): Use - prepare_move_operands function. - (mov*): Likewise. - (movmisalign*): Likewise. - * doc/invoke.texi (ARC options): Document -G option. - -2017-08-31 Claudiu Zissulescu - - * config/arc/arc-protos.h (compact_sda_memory_operand): Update - prototype. - * config/arc/arc.c (arc_print_operand): Output scalled address for - sdata whenever is possible. - (arc_in_small_data_p): Allow sdata for 64bit datum when double - load/stores are available. - (compact_sda_memory_operand): Check for the alignment required by - code density instructions. - * config/arc/arc.md (movsi_insn): Use newly introduced Us0 - constraint. - * config/arc/constraints.md (Usd): Update constraint. - (Us0): New constraint. - (Usc): Update constraint. - -2017-08-31 Richard Biener - - PR middle-end/82054 - * dwarf2out.c (dwarf2out_early_global_decl): Process each - function only once. - -2017-08-31 Tamar Christina - - * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins): - Resize type_signature. - -2017-08-31 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64.c (aarch64_base_register_rtx_p): Only allow - subregs whose inner modes can be stored in GPRs. - (aarch64_classify_index): Likewise. - -2017-08-31 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/iterators.md (V_cmp_result): Rename to... - (V_INT_EQUIV): ...this. - (v_cmp_result): Rename to... - (v_int_equiv): ...this. - * config/aarch64/aarch64.md (xorsign3): Update accordingly. - * config/aarch64/aarch64-simd.md (xorsign3): Likewise. - (copysign3): Likewise. - (aarch64_simd_bsl_internal): Likewise. - (aarch64_simd_bsl): Likewise. - (vec_cmp): Likewise. - (vcond): Likewise. - (vcond): Likewise. - (vcondu): Likewise. - (aarch64_cm): Likewise. - (aarch64_cmtst): Likewise. - (aarch64_fac): Likewise. - (vec_perm_const): Likewise. - (vcond_mask_): Rename to... - (vcond_mask_): ...this. - (vec_cmp): Rename to... - (vec_cmp): ...this. - -2017-08-31 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-modes.def: Remove 32-, 48- and 64-byte - vector modes. - * config/aarch64/iterators.md (VRL2, VRL3, VRL4): Delete. - * config/aarch64/aarch64.md (UNSPEC_LD2_DREG, UNSPEC_LD3_DREG) - (UNSPEC_LD4_DREG): New unspecs. - * config/aarch64/aarch64-simd.md (aarch64_ld2_dreg_le) - (aarch64_ld2_dreg_be): Replace with... - (aarch64_ld2_dreg): ...this pattern and use the new DREG - unspec. - (aarch64_ld3_dreg_le) - (aarch64_ld3_dreg_be): Replace with... - (aarch64_ld3_dreg): ...this pattern and use the new DREG - unspec. - (aarch64_ld4_dreg_le) - (aarch64_ld4_dreg_be): Replace with... - (aarch64_ld4_dreg): ...this pattern and use the new DREG - unspec. - -2017-08-30 Bill Schmidt - - PR tree-optimization/81987 - * gimple-ssa-strength-reduction.c (insert_initializers): Don't - insert an initializer in a location not dominated by the stride - definition. - -2017-08-30 Eric Botcazou - - * tree-eh.c (lower_try_finally_switch): Set the location of the finally - on the entire header of the finally block in the fallthru case. - -2017-08-30 Eric Botcazou - - * varasm.c (decode_addr_const): Deal with INDIRECT_REF . - -2017-08-30 Pat Haugen - - * config/rs6000/rs6000.c (rs6000_emit_prologue_move_from_cr): Rename from - rs6000_emit_move_from_cr and call renamed function. - (rs6000_emit_prologue): Call renamed functions. - * config/rs6000/rs6000.md (prologue_movesi_from_cr): Rename from - movesi_from_cr, remove volatile CRs. - -2017-08-30 Jon Beniston - Richard Biener - - * tree-vect-patterns.c (vect_pattern_recog_1): Use VECTOR_TYPE_P instead - of VECTOR_MODE_P check. - * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Allow single - element vector types. - -2017-08-30 Richard Sandiford - - * df.h (df_read_modify_subreg_p): Remove in favor of... - * rtl.h (read_modify_subreg_p): ...this new function. Take a - const_rtx instead of an rtx. - * cprop.c (local_cprop_find_used_regs): Update accordingly. - * df-problems.c (df_word_lr_mark_ref): Likewise. - * ira-lives.c (mark_pseudo_reg_live): Likewise. - (mark_pseudo_reg_dead): Likewise. - (mark_ref_dead): Likewise. - * reginfo.c (init_subregs_of_mode): Likewise. - * sched-deps.c (sched_analyze_1): Likewise. - * df-scan.c (df_def_record_1): Likewise. - (df_uses_record): Likewise. - (df_read_modify_subreg_p): Remove in favor of... - * rtlanal.c (read_modify_subreg_p): ...this new function. Take a - const_rtx instead of an rtx. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * rtl.h (partial_subreg_p): New function. - * caller-save.c (save_call_clobbered_regs): Use it. - * calls.c (expand_call): Likewise. - * combine.c (combinable_i3pat): Likewise. - (simplify_set): Likewise. - (make_extraction): Likewise. - (make_compound_operation_int): Likewise. - (gen_lowpart_or_truncate): Likewise. - (force_to_mode): Likewise. - (make_field_assignment): Likewise. - (reg_truncated_to_mode): Likewise. - (record_truncated_value): Likewise. - (move_deaths): Likewise. - * cse.c (record_jump_cond): Likewise. - (cse_insn): Likewise. - * cselib.c (cselib_lookup_1): Likewise. - * expmed.c (extract_bit_field_using_extv): Likewise. - * function.c (assign_parm_setup_reg): Likewise. - * ifcvt.c (noce_convert_multiple_sets): Likewise. - * ira-build.c (create_insn_allocnos): Likewise. - * lra-coalesce.c (merge_pseudos): Likewise. - * lra-constraints.c (match_reload): Likewise. - (simplify_operand_subreg): Likewise. - (curr_insn_transform): Likewise. - * lra-lives.c (process_bb_lives): Likewise. - * lra.c (new_insn_reg): Likewise. - (lra_substitute_pseudo): Likewise. - * regcprop.c (mode_change_ok): Likewise. - (maybe_mode_change): Likewise. - (copyprop_hardreg_forward_1): Likewise. - * reload.c (push_reload): Likewise. - (find_reloads): Likewise. - (find_reloads_subreg_address): Likewise. - * reload1.c (alter_reg): Likewise. - (eliminate_regs_1): Likewise. - * simplify-rtx.c (simplify_unary_operation_1): Likewise. - -2017-08-30 David Edelsohn - - * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Revert - back to if statements, including unpack. - -2017-08-30 Martin Liska - - PR inline-asm/82001 - * ipa-icf-gimple.c (func_checker::compare_tree_list_operand): - Rename to ... - (func_checker::compare_asm_inputs_outputs): ... this function. - (func_checker::compare_gimple_asm): Use the function to compare - also ASM constrains. - * ipa-icf-gimple.h: Rename the function. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * coretypes.h (complex_mode): New type. - * gdbhooks.py (build_pretty_printer): Handle it. - * machmode.h (complex_mode): New class. - (complex_mode::includes_p): New function. - (is_complex_int_mode): Likewise. - (is_complex_float_mode): Likewise. - * genmodes.c (get_mode_class): Handle complex mode classes. - * function.c (expand_function_end): Use is_complex_int_mode. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * coretypes.h (scalar_mode_pod): New typedef. - * gdbhooks.py (build_pretty_printer): Handle it. - * machmode.h (gt_ggc_mx, gt_pch_nx): New functions. - * fixed-value.h (fixed_value::mode): Change type to scalar_mode_pod. - * fold-const.c (fold_convert_const_int_from_fixed): Use scalar_mode. - * tree-streamer-in.c (unpack_ts_fixed_cst_value_fields): Use - as_a . - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (mode_for_vector): Take a scalar_mode instead - of a machine_mode. - * stor-layout.c (mode_for_vector): Likewise. - * explow.c (promote_mode): Use as_a . - * sdbout.c (sdbout_parms): Use is_a . - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (preferred_simd_mode): Take a scalar_mode - instead of a machine_mode. - * targhooks.h (default_preferred_simd_mode): Likewise. - * targhooks.c (default_preferred_simd_mode): Likewise. - * config/arc/arc.c (arc_preferred_simd_mode): Likewise. - * config/arm/arm.c (arm_preferred_simd_mode): Likewise. - * config/c6x/c6x.c (c6x_preferred_simd_mode): Likewise. - * config/epiphany/epiphany.c (epiphany_preferred_simd_mode): Likewise. - * config/i386/i386.c (ix86_preferred_simd_mode): Likewise. - * config/mips/mips.c (mips_preferred_simd_mode): Likewise. - * config/nvptx/nvptx.c (nvptx_preferred_simd_mode): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_preferred_simd_mode): - Likewise. - * config/rs6000/rs6000.c (rs6000_preferred_simd_mode): Likewise. - * config/s390/s390.c (s390_preferred_simd_mode): Likewise. - * config/sparc/sparc.c (sparc_preferred_simd_mode): Likewise. - * config/aarch64/aarch64.c (aarch64_preferred_simd_mode): Likewise. - (aarch64_simd_scalar_immediate_valid_for_move): Update accordingly. - * doc/tm.texi: Regenerate. - * optabs-query.c (can_vec_mask_load_store_p): Return false for - non-scalar modes. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (scalar_mode_supported_p): Take a scalar_mode - instead of a machine_mode. - * targhooks.h (default_scalar_mode_supported_p): Likewise. - * targhooks.c (default_scalar_mode_supported_p): Likewise. - * config/aarch64/aarch64.c (aarch64_scalar_mode_supported_p): Likewise. - * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise. - * config/arm/arm.c (arm_scalar_mode_supported_p): Likewise. - * config/avr/avr.c (avr_scalar_mode_supported_p): Likewise. - * config/c6x/c6x.c (c6x_scalar_mode_supported_p): Likewise. - * config/i386/i386.c (ix86_scalar_mode_supported_p): Likewise. - * config/ia64/ia64.c (ia64_scalar_mode_supported_p): Likewise. - * config/mips/mips.c (mips_scalar_mode_supported_p): Likewise. - * config/msp430/msp430.c (msp430_scalar_mode_supported_p): Likewise. - * config/pa/pa.c (pa_scalar_mode_supported_p): Likewise. - * config/pdp11/pdp11.c (pdp11_scalar_mode_supported_p): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_scalar_mode_supported_p): - Likewise. - * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Likewise. - * config/s390/s390.c (s390_scalar_mode_supported_p): Likewise. - * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise. - * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise. - * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p): - Likewise. - * doc/tm.texi: Regenerate. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * coretypes.h (opt_scalar_mode): New typedef. - * gdbhooks.py (build_pretty_printers): Handle it. - * machmode.h (mode_iterator::get_2xwider): Add overload for - opt_mode. - * emit-rtl.c (init_emit_once): Use opt_scalar_mode when iterating - over scalar modes. - * expr.c (convert_mode_scalar): Likewise. - * omp-low.c (omp_clause_aligned_alignment): Likewise. - * optabs.c (expand_float): Likewise. - (expand_fix): Likewise. - * tree-vect-stmts.c (vectorizable_conversion): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * optabs.c (expand_float): Explicitly check for scalars before - using a branching expansion. - (expand_fix): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.c (convert_mode): Split scalar handling out into... - (convert_mode_scalar): ...this new function. Treat the modes - as scalar_modes. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * omp-expand.c (expand_omp_atomic): Use is_int_mode, is_float_mode - and scalar_mode. - * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * fixed-value.h (fixed_from_double_int): Take a scalar_mode - rather than a machine_mode. - (fixed_from_string): Likewise. - (fixed_convert): Likewise. - (fixed_convert_from_int): Likewise. - (fixed_convert_from_real): Likewise. - (real_convert_from_fixed): Likewise. - * fixed-value.c (fixed_from_double_int): Likewise. - (fixed_from_string): Likewise. - (fixed_convert): Likewise. - (fixed_convert_from_int): Likewise. - (fixed_convert_from_real): Likewise. - (real_convert_from_fixed): Likewise. - * config/avr/avr.c (avr_out_round): Use as_a . - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * emit-rtl.c (immed_double_const): Use is_a instead - of separate mode class checks. Do not allow vector modes here. - (immed_wide_int_const): Use as_a . - * explow.c (trunc_int_for_mode): Likewise. - * rtl.h (wi::int_traits::get_precision): Likewise. - (wi::shwi): Likewise. - (wi::min_value): Likewise. - (wi::max_value): Likewise. - * dwarf2out.c (loc_descriptor): Likewise. - * simplify-rtx.c (simplify_immed_subreg): Fix rtx_mode_t argument - for CONST_WIDE_INT. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * tree.h (SCALAR_TYPE_MODE): New macro. - * expr.c (expand_expr_addr_expr_1): Use it. - (expand_expr_real_2): Likewise. - * fold-const.c (fold_convert_const_fixed_from_fixed): Likeise. - (fold_convert_const_fixed_from_int): Likewise. - (fold_convert_const_fixed_from_real): Likewise. - (native_encode_fixed): Likewise - (native_encode_complex): Likewise - (native_encode_vector): Likewise. - (native_interpret_fixed): Likewise. - (native_interpret_real): Likewise. - (native_interpret_complex): Likewise. - (native_interpret_vector): Likewise. - * omp-simd-clone.c (simd_clone_adjust_return_type): Likewise. - (simd_clone_adjust_argument_types): Likewise. - (simd_clone_init_simd_arrays): Likewise. - (simd_clone_adjust): Likewise. - * stor-layout.c (layout_type): Likewise. - * tree.c (build_minus_one_cst): Likewise. - * tree-cfg.c (verify_gimple_assign_ternary): Likewise. - * tree-inline.c (estimate_move_cost): Likewise. - * tree-ssa-math-opts.c (convert_plusminus_to_widen): Likewise. - * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise. - (vectorizable_reduction): Likewise. - * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Likewise. - (vect_recog_mixed_size_cond_pattern): Likewise. - (check_bool_pattern): Likewise. - (adjust_bool_pattern): Likewise. - (search_type_for_mask_1): Likewise. - * tree-vect-slp.c (vect_schedule_slp_instance): Likewise. - * tree-vect-stmts.c (vectorizable_conversion): Likewise. - (vectorizable_load): Likewise. - (vectorizable_store): Likewise. - * ubsan.c (ubsan_encode_value): Likewise. - * varasm.c (output_constant): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * coretypes.h (scalar_mode): New class. - * machmode.h (scalar_mode): Likewise. - (scalar_mode::includes_p): New function. - (mode_to_inner): Return a scalar_mode rather than a machine_mode. - * gdbhooks.py (build_pretty_printers): Handle scalar_mode. - * genmodes.c (get_mode_class): Handle remaining scalar modes. - * cfgexpand.c (expand_debug_expr): Use scalar_mode. - * expmed.c (store_bit_field_1): Likewise. - (extract_bit_field_1): Likewise. - * expr.c (write_complex_part): Likewise. - (read_complex_part): Likewise. - (emit_move_complex_push): Likewise. - (expand_expr_real_2): Likewise. - * function.c (assign_parm_setup_reg): Likewise. - (assign_parms_unsplit_complex): Likewise. - * optabs.c (expand_binop): Likewise. - * rtlanal.c (subreg_get_info): Likewise. - * simplify-rtx.c (simplify_immed_subreg): Likewise. - * varasm.c (output_constant_pool_2): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * expmed.c (extract_high_half): Use scalar_int_mode and remove - assertion. - (expmed_mult_highpart_optab): Likewise. - (expmed_mult_highpart): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * builtins.h (builtin_strncpy_read_str): Take a scalar_int_mode - instead of a machine_mode. - (builtin_memset_read_str): Likewise. - * builtins.c (c_readstr): Likewise. - (builtin_memcpy_read_str): Likewise. - (builtin_strncpy_read_str): Likewise. - (builtin_memset_read_str): Likewise. - (builtin_memset_gen_str): Likewise. - (expand_builtin_signbit): Use scalar_int_mode for local variables. - * cfgexpand.c (convert_debug_memory_address): Take a scalar_int_mode - instead of a machine_mode. - * combine.c (simplify_if_then_else): Use scalar_int_mode for local - variables. - (make_extraction): Likewise. - (try_widen_shift_mode): Take and return scalar_int_modes instead - of machine_modes. - * config/aarch64/aarch64.c (aarch64_libgcc_cmp_return_mode): Return - a scalar_int_mode instead of a machine_mode. - * config/avr/avr.c (avr_addr_space_address_mode): Likewise. - (avr_addr_space_pointer_mode): Likewise. - * config/cr16/cr16.c (cr16_unwind_word_mode): Likewise. - * config/msp430/msp430.c (msp430_addr_space_pointer_mode): Likewise. - (msp430_unwind_word_mode): Likewise. - * config/spu/spu.c (spu_unwind_word_mode): Likewise. - (spu_addr_space_pointer_mode): Likewise. - (spu_addr_space_address_mode): Likewise. - (spu_libgcc_cmp_return_mode): Likewise. - (spu_libgcc_shift_count_mode): Likewise. - * config/rl78/rl78.c (rl78_addr_space_address_mode): Likewise. - (rl78_addr_space_pointer_mode): Likewise. - (fl78_unwind_word_mode): Likewise. - (rl78_valid_pointer_mode): Take a scalar_int_mode instead of a - machine_mode. - * config/alpha/alpha.c (vms_valid_pointer_mode): Likewise. - * config/ia64/ia64.c (ia64_vms_valid_pointer_mode): Likewise. - * config/mips/mips.c (mips_mode_rep_extended): Likewise. - (mips_valid_pointer_mode): Likewise. - * config/tilegx/tilegx.c (tilegx_mode_rep_extended): Likewise. - * config/ft32/ft32.c (ft32_valid_pointer_mode): Likewise. - (ft32_addr_space_pointer_mode): Return a scalar_int_mode instead - of a machine_mode. - (ft32_addr_space_address_mode): Likewise. - * config/m32c/m32c.c (m32c_valid_pointer_mode): Take a - scalar_int_mode instead of a machine_mode. - (m32c_addr_space_pointer_mode): Return a scalar_int_mode instead - of a machine_mode. - (m32c_addr_space_address_mode): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_abi_word_mode): Likewise. - (rs6000_eh_return_filter_mode): Likewise. - * config/rs6000/rs6000.c (rs6000_abi_word_mode): Likewise. - (rs6000_eh_return_filter_mode): Likewise. - * config/s390/s390.c (s390_libgcc_cmp_return_mode): Likewise. - (s390_libgcc_shift_count_mode): Likewise. - (s390_unwind_word_mode): Likewise. - (s390_valid_pointer_mode): Take a scalar_int_mode rather than a - machine_mode. - * target.def (mode_rep_extended): Likewise. - (valid_pointer_mode): Likewise. - (addr_space.valid_pointer_mode): Likewise. - (eh_return_filter_mode): Return a scalar_int_mode rather than - a machine_mode. - (libgcc_cmp_return_mode): Likewise. - (libgcc_shift_count_mode): Likewise. - (unwind_word_mode): Likewise. - (addr_space.pointer_mode): Likewise. - (addr_space.address_mode): Likewise. - * doc/tm.texi: Regenerate. - * dojump.c (prefer_and_bit_test): Take a scalar_int_mode rather than - a machine_mode. - (do_jump): Use scalar_int_mode for local variables. - * dwarf2cfi.c (init_return_column_size): Take a scalar_int_mode - rather than a machine_mode. - * dwarf2out.c (convert_descriptor_to_mode): Likewise. - (scompare_loc_descriptor_wide): Likewise. - (scompare_loc_descriptor_narrow): Likewise. - * emit-rtl.c (adjust_address_1): Use scalar_int_mode for local - variables. - * except.c (sjlj_emit_dispatch_table): Likewise. - (expand_builtin_eh_copy_values): Likewise. - * explow.c (convert_memory_address_addr_space_1): Likewise. - Take a scalar_int_mode rather than a machine_mode. - (convert_memory_address_addr_space): Take a scalar_int_mode rather - than a machine_mode. - (memory_address_addr_space): Use scalar_int_mode for local variables. - * expmed.h (expand_mult_highpart_adjust): Take a scalar_int_mode - rather than a machine_mode. - * expmed.c (mask_rtx): Likewise. - (init_expmed_one_conv): Likewise. - (expand_mult_highpart_adjust): Likewise. - (extract_high_half): Likewise. - (expmed_mult_highpart_optab): Likewise. - (expmed_mult_highpart): Likewise. - (expand_smod_pow2): Likewise. - (expand_sdiv_pow2): Likewise. - (emit_store_flag_int): Likewise. - (adjust_bit_field_mem_for_reg): Use scalar_int_mode for local - variables. - (extract_low_bits): Likewise. - * expr.h (by_pieces_constfn): Take a scalar_int_mode rather than - a machine_mode. - * expr.c (pieces_addr::adjust): Likewise. - (can_store_by_pieces): Likewise. - (store_by_pieces): Likewise. - (clear_by_pieces_1): Likewise. - (expand_expr_addr_expr_1): Likewise. - (expand_expr_addr_expr): Use scalar_int_mode for local variables. - (expand_expr_real_1): Likewise. - (try_casesi): Likewise. - * final.c (shorten_branches): Likewise. - * fold-const.c (fold_convert_const_int_from_fixed): Change the - type of "mode" to machine_mode. - * internal-fn.c (expand_arith_overflow_result_store): Take a - scalar_int_mode rather than a machine_mode. - (expand_mul_overflow): Use scalar_int_mode for local variables. - * loop-doloop.c (doloop_modify): Likewise. - (doloop_optimize): Likewise. - * optabs.c (expand_subword_shift): Take a scalar_int_mode rather - than a machine_mode. - (expand_doubleword_shift_condmove): Likewise. - (expand_doubleword_shift): Likewise. - (expand_doubleword_clz): Likewise. - (expand_doubleword_popcount): Likewise. - (expand_doubleword_parity): Likewise. - (expand_absneg_bit): Use scalar_int_mode for local variables. - (prepare_float_lib_cmp): Likewise. - * rtl.h (convert_memory_address_addr_space_1): Take a scalar_int_mode - rather than a machine_mode. - (convert_memory_address_addr_space): Likewise. - (get_mode_bounds): Likewise. - (get_address_mode): Return a scalar_int_mode rather than a - machine_mode. - * rtlanal.c (get_address_mode): Likewise. - * stor-layout.c (get_mode_bounds): Take a scalar_int_mode rather - than a machine_mode. - * targhooks.c (default_mode_rep_extended): Likewise. - (default_valid_pointer_mode): Likewise. - (default_addr_space_valid_pointer_mode): Likewise. - (default_eh_return_filter_mode): Return a scalar_int_mode rather - than a machine_mode. - (default_libgcc_cmp_return_mode): Likewise. - (default_libgcc_shift_count_mode): Likewise. - (default_unwind_word_mode): Likewise. - (default_addr_space_pointer_mode): Likewise. - (default_addr_space_address_mode): Likewise. - * targhooks.h (default_eh_return_filter_mode): Likewise. - (default_libgcc_cmp_return_mode): Likewise. - (default_libgcc_shift_count_mode): Likewise. - (default_unwind_word_mode): Likewise. - (default_addr_space_pointer_mode): Likewise. - (default_addr_space_address_mode): Likewise. - (default_mode_rep_extended): Take a scalar_int_mode rather than - a machine_mode. - (default_valid_pointer_mode): Likewise. - (default_addr_space_valid_pointer_mode): Likewise. - * tree-ssa-address.c (addr_for_mem_ref): Use scalar_int_mode for - local variables. - * tree-ssa-loop-ivopts.c (get_shiftadd_cost): Take a scalar_int_mode - rather than a machine_mode. - * tree-switch-conversion.c (array_value_type): Use scalar_int_mode - for local variables. - * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise. - * var-tracking.c (use_narrower_mode): Take a scalar_int_mode rather - than a machine_mode. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * dojump.c (do_jump_by_parts_greater_rtx): Change the type of - the mode argument to scalar_int_mode. - (do_jump_by_parts_zero_rtx): Likewise. - (do_jump_by_parts_equality_rtx): Likewise. - (do_jump_by_parts_greater): Take a mode argument. - (do_jump_by_parts_equality): Likewise. - (do_jump_1): Update calls accordingly. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * is-a.h (safe_dyn_cast): New function. - * rtl.h (rtx_jump_table_data::get_data_mode): New function. - (jump_table_for_label): Likewise. - * final.c (final_addr_vec_align): Take an rtx_jump_table_data * - instead of an rtx_insn *. - (shorten_branches): Use dyn_cast instead of LABEL_P and - JUMP_TABLE_DATA_P. Use jump_table_for_label and - rtx_jump_table_data::get_data_mode. - (final_scan_insn): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (try_combine): Use is_a when - trying to combine a full-register integer set with a subreg - integer set. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.c (expand_expr_addr_expr): Add a new_tmode local variable - that is always either address_mode or pointer_mode. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.c (expand_expr_real_2): Use word_mode instead of innermode - when the two are known to be equal. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * simplify-rtx.c (simplify_const_unary_operation): Use - is_a instead of checking for a nonzero - precision. Forcibly convert op_mode to a scalar_int_mode - in that case. More clearly differentiate the operand and - result modes and use the former when deciding what the value - of a count-bits operation should be. Use is_int_mode instead - of checking for a MODE_INT. Remove redundant check for whether - this mode has a zero precision. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * optabs.c (widen_leading): Change the type of the mode argument - to scalar_int_mode. Use opt_scalar_int_mode for the mode iterator. - (widen_bswap): Likewise. - (expand_parity): Likewise. - (expand_ctz): Change the type of the mode argument to scalar_int_mode. - (expand_ffs): Likewise. - (epand_unop): Check for scalar integer modes before calling the - above routines. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.c (const_scalar_mask_from_tree): Add a mode argument. - Expand commentary. - (expand_expr_real_1): Update call accordingly. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * expmed.c (store_bit_field_using_insv): Add op0_mode and - value_mode arguments. Use scalar_int_mode internally. - (store_bit_field_1): Rename the new integer mode from imode - to op0_mode and use it instead of GET_MODE (op0). Update calls - to store_split_bit_field, store_bit_field_using_insv and - store_fixed_bit_field. - (store_fixed_bit_field): Add op0_mode and value_mode arguments. - Use scalar_int_mode internally. Use a bit count rather than a mode - when calculating the largest bit size for get_best_mode. - Update calls to store_split_bit_field and store_fixed_bit_field_1. - (store_fixed_bit_field_1): Add mode and value_mode arguments. - Remove assertion that OP0 has a scalar integer mode. - (store_split_bit_field): Add op0_mode and value_mode arguments. - Update calls to extract_fixed_bit_field. - (extract_bit_field_using_extv): Add an op0_mode argument. - Use scalar_int_mode internally. - (extract_bit_field_1): Rename the new integer mode from imode to - op0_mode and use it instead of GET_MODE (op0). Update calls to - extract_split_bit_field, extract_bit_field_using_extv and - extract_fixed_bit_field. - (extract_fixed_bit_field): Add an op0_mode argument. Update calls - to extract_split_bit_field and extract_fixed_bit_field_1. - (extract_fixed_bit_field_1): Add a mode argument. Remove assertion - that OP0 has a scalar integer mode. Use as_a - on the target mode. - (extract_split_bit_field): Add an op0_mode argument. Update call - to extract_fixed_bit_field. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * cse.c (cse_insn): Use opt_scalar_int_mode for the mode iterator. - * explow.c (hard_function_value): Likewise. - * expmed.c (extract_fixed_bit_field_1): Likewise. Move the - convert_to_mode call outside the loop. - * expr.c (alignment_for_piecewise_move): Use opt_scalar_int_mode - for the mode iterator. Require the mode specified by max_pieces - to exist. - (emit_block_move_via_movmem): Use opt_scalar_int_mode for the - mode iterator. - (copy_blkmode_to_reg): Likewise. - (set_storage_via_setmem): Likewise. - * optabs.c (prepare_cmp_insn): Likewise. - * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise. - * stor-layout.c (finish_bitfield_representative): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * rtl.h (subreg_unpromoted_mode, subreg_promoted_mode): New functions. - * expr.c (convert_move): Use them. - (convert_modes): Likewise. - (store_expr_with_bounds): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * rtl.h (rtl_hooks::reg_nonzero_bits): Add a scalar_int_mode - parameter for the mode of "x". Remove the "known_x", "known_mode" - and "known_ret" arguments. Change the type of the mode argument - to scalar_int_mode. - (rtl_hooks:reg_num_sign_bit_copies): Likewise. - * combine.c (reg_nonzero_bits_for_combine): Update accordingly. - (reg_num_sign_bit_copies_for_combine): Likewise. - * rtlanal.c (nonzero_bits1): Likewise. - (num_sign_bit_copies1): Likewise. - * rtlhooks-def.h (reg_nonzero_bits_general): Likewise. - (reg_num_sign_bit_copies_general): Likewise. - * rtlhooks.c (reg_num_sign_bit_copies_general): Likewise. - (reg_nonzero_bits_general): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * rtlanal.c (num_sign_bit_copies): Handle VOIDmode here rather - than in subroutines. Return 1 for non-integer modes. - (cached_num_sign_bit_copies): Change the type of the mode parameter - to scalar_int_mode. - (num_sign_bit_copies1): Likewise. Remove early exit for other mode - classes. Handle CONST_INT_P first and then check whether X also - has a scalar integer mode. Check the same thing for inner registers - of a SUBREG and for values that are being extended or truncated. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * rtlanal.c (nonzero_bits): Handle VOIDmode here rather than - in subroutines. Return the mode mask for non-integer modes. - (cached_nonzero_bits): Change the type of the mode parameter - to scalar_int_mode. - (nonzero_bits1): Likewise. Remove early exit for other mode - classes. Handle CONST_INT_P first and then check whether X - also has a scalar integer mode. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.c (widest_int_mode_for_size): Make the comment match the code. - Return a scalar_int_mode and assert that the size is greater than - one byte. - (by_pieces_ninsns): Update accordingly and remove VOIDmode handling. - (op_by_pieces_d::op_by_pieces_d): Likewise. - (op_by_pieces_d::run): Likewise. - (can_store_by_pieces): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (extract_left_shift): Add a mode argument and update - recursive calls. - (make_compound_operation_int): Change the type of the mode parameter - to scalar_int_mode and update the call to extract_left_shift. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (simplify_and_const_int): Change the type of the mode - parameter to scalar_int_mode. - (simplify_and_const_int_1): Likewise. Update recursive call. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (simplify_compare_const): Check that the mode is a - scalar_int_mode (rather than VOIDmode) before testing its - precision. - (simplify_comparison): Move COMPARISON_P handling out of the - loop and restrict the latter part of the loop to scalar_int_modes. - Check is_a before calling HWI_COMPUTABLE_MODE_P - and when considering SUBREG_REGs. Use is_int_mode instead of - checking GET_MODE_CLASS against MODE_INT. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (try_widen_shift_mode): Move check for equal modes to... - (simplify_shift_const_1): ...here. Use scalar_int_mode for - shift_unit_mode and for modes involved in scalar shifts. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (force_int_to_mode): New function, split out from... - (force_to_mode): ...here. Keep xmode up-to-date and use it - instead of GET_MODE (x). - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * optabs-query.h (extraction_insn::struct_mode): Change type to - opt_scalar_int_mode and update comment. - (extraction_insn::field_mode): Change type to scalar_int_mode. - (extraction_insn::pos_mode): Likewise. - * combine.c (make_extraction): Update accordingly. - * optabs-query.c (get_traditional_extraction_insn): Likewise. - (get_optab_extraction_insn): Likewise. - * recog.c (simplify_while_replacing): Likewise. - * expmed.c (narrow_bit_field_mem): Change the type of the mode - parameter to opt_scalar_int_mode. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (bit_field_mode_iterator::next_mode): Take a pointer - to a scalar_int_mode instead of a machine_mode. - (bit_field_mode_iterator::m_mode): Change type to opt_scalar_int_mode. - (get_best_mode): Return a boolean and use a pointer argument to store - the selected mode. Replace the limit mode parameter with a bit limit. - * expmed.c (adjust_bit_field_mem_for_reg): Use scalar_int_mode - for the values returned by bit_field_mode_iterator::next_mode. - (store_bit_field): Update call to get_best_mode. - (store_fixed_bit_field): Likewise. - (extract_fixed_bit_field): Likewise. - * expr.c (optimize_bitfield_assignment_op): Likewise. - * fold-const.c (optimize_bit_field_compare): Likewise. - (fold_truth_andor_1): Likewise. - * stor-layout.c (bit_field_mode_iterator::next_mode): As above. - Update for new type of m_mode. - (get_best_mode): As above. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * expmed.c (strict_volatile_bitfield_p): Change the type of fieldmode - to scalar_int_mode. Remove check for SCALAR_INT_MODE_P. - (store_bit_field): Check is_a before calling - strict_volatile_bitfield_p. - (extract_bit_field): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (cstore_mode): Return a scalar_int_mode. - * doc/tm.texi: Regenerate. - * config/sparc/sparc.c (sparc_cstore_mode): Return a scalar_int_mode. - * targhooks.h (default_cstore_mode): Likewise. - * targhooks.c (default_cstore_mode): Likewise, using a forced - conversion. - * expmed.c (emit_cstore): Expect the target of the cstore to be - a scalar_int_mode. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * cfgloop.h (rtx_iv): Change type of extend_mode and mode to - scalar_int_mode. - (niter_desc): Likewise mode. - (iv_analyze): Add a mode parameter. - (biv_p): Likewise. - (iv_analyze_expr): Pass the mode paraeter before the rtx it describes - and change its type to scalar_int_mode. - * loop-iv.c: Update commentary at head of file. - (iv_constant): Pass the mode paraeter before the rtx it describes - and change its type to scalar_int_mode. Remove VOIDmode handling. - (iv_subreg): Change the type of the mode parameter to scalar_int_mode. - (iv_extend): Likewise. - (shorten_into_mode): Likewise. - (iv_add): Use scalar_int_mode. - (iv_mult): Likewise. - (iv_shift): Likewise. - (canonicalize_iv_subregs): Likewise. - (get_biv_step_1): Pass the outer_mode parameter before the rtx - it describes and change its mode to scalar_int_mode. Also change - the type of the returned inner_mode to scalar_int_mode. - (get_biv_step): Likewise, turning outer_mode from a pointer - into a direct parameter. Update call to get_biv_step_1. - (iv_analyze_biv): Add an outer_mode parameter. Update calls to - iv_constant and get_biv_step. - (iv_analyze_expr): Pass the mode parameter before the rtx it describes - and change its type to scalar_int_mode. Don't initialise iv->mode - to VOIDmode and remove later checks for its still being VOIDmode. - Update calls to iv_analyze_op and iv_analyze_expr. Check - is_a when changing the mode under consideration. - (iv_analyze_def): Ignore registers that don't have a scalar_int_mode. - Update call to iv_analyze_expr. - (iv_analyze_op): Add a mode parameter. Reject subregs whose - inner register is not also a scalar_int_mode. Update call to - iv_analyze_biv. - (iv_analyze): Add a mode parameter. Update call to iv_analyze_op. - (biv_p): Add a mode parameter. Update call to iv_analyze_biv. - (iv_number_of_iterations): Use is_a instead of - separate mode class checks. Update calls to iv_analyze. Remove - fix-up of VOIDmodes after iv_analyze_biv. - * loop-unroll.c (analyze_iv_to_split_insn): Reject registers that - don't have a scalar_int_mode. Update call to biv_p. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * cfgexpand.c (convert_debug_memory_address): Use - as_a . - * combine.c (expand_compound_operation): Likewise. - (make_extraction): Likewise. - (change_zero_ext): Likewise. - (simplify_comparison): Likewise. - * cse.c (cse_insn): Likewise. - * dwarf2out.c (minmax_loc_descriptor): Likewise. - (mem_loc_descriptor): Likewise. - (loc_descriptor): Likewise. - * expmed.c (init_expmed_one_mode): Likewise. - (synth_mult): Likewise. - (emit_store_flag_1): Likewise. - (expand_divmod): Likewise. Use HWI_COMPUTABLE_MODE_P instead - of a comparison with size. - * expr.c (expand_assignment): Use as_a . - (reduce_to_bit_field_precision): Likewise. - * function.c (expand_function_end): Likewise. - * internal-fn.c (expand_arith_overflow_result_store): Likewise. - * loop-doloop.c (doloop_modify): Likewise. - * optabs.c (expand_binop): Likewise. - (expand_unop): Likewise. - (expand_copysign_absneg): Likewise. - (prepare_cmp_insn): Likewise. - (maybe_legitimize_operand): Likewise. - * recog.c (const_scalar_int_operand): Likewise. - * rtlanal.c (get_address_mode): Likewise. - * simplify-rtx.c (simplify_unary_operation_1): Likewise. - (simplify_cond_clz_ctz): Likewise. - * tree-nested.c (get_nl_goto_field): Likewise. - * tree.c (build_vector_type_for_mode): Likewise. - * var-tracking.c (use_narrower_mode): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * tree.h (SCALAR_INT_TYPE_MODE): New macro. - * builtins.c (expand_builtin_signbit): Use it. - * cfgexpand.c (expand_debug_expr): Likewise. - * dojump.c (do_jump): Likewise. - (do_compare_and_jump): Likewise. - * dwarf2cfi.c (expand_builtin_init_dwarf_reg_sizes): Likewise. - * expmed.c (make_tree): Likewise. - * expr.c (expand_expr_real_2): Likewise. - (expand_expr_real_1): Likewise. - (try_casesi): Likewise. - * fold-const-call.c (fold_const_call_ss): Likewise. - * fold-const.c (unextend): Likewise. - (extract_muldiv_1): Likewise. - (fold_single_bit_test): Likewise. - (native_encode_int): Likewise. - (native_encode_string): Likewise. - (native_interpret_int): Likewise. - * gimple-fold.c (gimple_fold_builtin_memset): Likewise. - * internal-fn.c (expand_addsub_overflow): Likewise. - (expand_neg_overflow): Likewise. - (expand_mul_overflow): Likewise. - (expand_arith_overflow): Likewise. - * match.pd: Likewise. - * stor-layout.c (layout_type): Likewise. - * tree-cfg.c (verify_gimple_assign_ternary): Likewise. - * tree-ssa-math-opts.c (convert_mult_to_widen): Likewise. - * tree-ssanames.c (get_range_info): Likewise. - * tree-switch-conversion.c (array_value_type) Likewise. - * tree-vect-patterns.c (vect_recog_rotate_pattern): Likewise. - (vect_recog_divmod_pattern): Likewise. - (vect_recog_mixed_size_cond_pattern): Likewise. - * tree-vrp.c (extract_range_basic): Likewise. - (simplify_float_conversion_using_ranges): Likewise. - * tree.c (int_fits_type_p): Likewise. - * ubsan.c (instrument_bool_enum_load): Likewise. - * varasm.c (mergeable_string_section): Likewise. - (narrowing_initializer_constant_valid_p): Likewise. - (output_constant): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (NARROWEST_INT_MODE): New macro. - * expr.c (alignment_for_piecewise_move): Use it instead of - GET_CLASS_NARROWEST_MODE (MODE_INT). - (push_block): Likewise. - * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator): - Likewise. - * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * postreload.c (move2add_valid_value_p): Change the type of the - mode parameter to scalar_int_mode. - (move2add_use_add2_insn): Add a mode parameter and use it instead - of GET_MODE (reg). - (move2add_use_add3_insn): Likewise. - (reload_cse_move2add): Update accordingly. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * expr.c (expand_expr_real_2): Use scalar_int_mode for the - double-word mode. - * lower-subreg.c (resolve_shift_zext): Use is_a . - * optabs.c (expand_unop): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * dwarf2out.c (typed_binop): Change mode parameter to scalar_int_mode. - (clz_loc_descriptor): Likewise. Remove SCALAR_INT_MODE_P check. - (popcount_loc_descriptor): Likewise. - (bswap_loc_descriptor): Likewise. - (rotate_loc_descriptor): Likewise. - (mem_loc_descriptor): Add is_a checks before - calling the functions above. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (sign_extend_short_imm): Add is_a - checks. - (try_combine): Likewise. - (simplify_if_then_else): Likewise. - * cse.c (cse_insn): Likewise. - * dwarf2out.c (mem_loc_descriptor): Likewise. - * emit-rtl.c (gen_lowpart_common): Likewise. - * simplify-rtx.c (simplify_truncation): Likewise. - (simplify_binary_operation_1): Likewise. - (simplify_const_relational_operation): Likewise. - (simplify_ternary_operation): Likewise. - * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * cse.c (cse_insn): Add is_a checks. - * reload.c (push_reload): Likewise. - (find_reloads): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (find_split_point): Add is_a checks. - (make_compound_operation_int): Likewise. - (change_zero_ext): Likewise. - * expr.c (convert_move): Likewise. - (convert_modes): Likewise. - * fwprop.c (forward_propagate_subreg): Likewise. - * loop-iv.c (get_biv_step_1): Likewise. - * optabs.c (widen_operand): Likewise. - * postreload.c (move2add_valid_value_p): Likewise. - * recog.c (simplify_while_replacing): Likewise. - * simplify-rtx.c (simplify_unary_operation_1): Likewise. - (simplify_binary_operation_1): Likewise. Remove redundant - mode equality check. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (combine_simplify_rtx): Add checks for - is_a . - (simplify_if_then_else): Likewise. - (make_field_assignment): Likewise. - (simplify_comparison): Likewise. - * ifcvt.c (noce_try_bitop): Likewise. - * loop-invariant.c (canonicalize_address_mult): Likewise. - * simplify-rtx.c (simplify_unary_operation_1): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * gimple-fold.c (gimple_fold_builtin_memory_op): Use - is_a instead of != BLKmode. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * cfgexpand.c (expand_debug_expr): Use is_a - instead of != VOIDmode. - * combine.c (if_then_else_cond): Likewise. - (change_zero_ext): Likewise. - * dwarf2out.c (mem_loc_descriptor): Likewise. - (loc_descriptor): Likewise. - * rtlanal.c (canonicalize_condition): Likewise. - * simplify-rtx.c (simplify_relational_operation_1): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * simplify-rtx.c (simplify_binary_operation_1): Use - is_a instead of !VECTOR_MODE_P. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * wide-int.h (int_traits) New class. - (int_traits) Likewise. - * cfgexpand.c (expand_debug_expr): Use is_a . - Use GET_MODE_UNIT_PRECISION and remove redundant test for - SCALAR_INT_MODE_P. - * combine.c (set_nonzero_bits_and_sign_copies): Use - is_a . - (find_split_point): Likewise. - (combine_simplify_rtx): Likewise. - (simplify_logical): Likewise. - (expand_compound_operation): Likewise. - (expand_field_assignment): Likewise. - (make_compound_operation): Likewise. - (extended_count): Likewise. - (change_zero_ext): Likewise. - (simplify_comparison): Likewise. - * dwarf2out.c (scompare_loc_descriptor): Likewise. - (ucompare_loc_descriptor): Likewise. - (minmax_loc_descriptor): Likewise. - (mem_loc_descriptor): Likewise. - (loc_descriptor): Likewise. - * expmed.c (init_expmed_one_mode): Likewise. - * lra-constraints.c (lra_constraint_offset): Likewise. - * optabs.c (prepare_libcall_arg): Likewise. - * postreload.c (move2add_note_store): Likewise. - * reload.c (operands_match_p): Likewise. - * rtl.h (load_extend_op): Likewise. - * rtlhooks.c (gen_lowpart_general): Likewise. - * simplify-rtx.c (simplify_truncation): Likewise. - (simplify_unary_operation_1): Likewise. - (simplify_binary_operation_1): Likewise. - (simplify_const_binary_operation): Likewise. - (simplify_const_relational_operation): Likewise. - (simplify_subreg): Likewise. - * stor-layout.c (bitwise_mode_for_mode): Likewise. - * var-tracking.c (adjust_mems): Likewise. - (prepare_call_arguments): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (is_int_mode): New fuction. - * combine.c (find_split_point): Use it. - (combine_simplify_rtx): Likewise. - (simplify_if_then_else): Likewise. - (simplify_set): Likewise. - (simplify_shift_const_1): Likewise. - (simplify_comparison): Likewise. - * config/aarch64/aarch64.c (aarch64_rtx_costs): Likewise. - * cse.c (notreg_cost): Likewise. - (cse_insn): Likewise. - * cselib.c (cselib_lookup_1): Likewise. - * dojump.c (do_jump_1): Likewise. - (do_compare_rtx_and_jump): Likewise. - * dse.c (get_call_args): Likewise. - * dwarf2out.c (rtl_for_decl_init): Likewise. - (native_encode_initializer): Likewise. - * expmed.c (emit_store_flag_1): Likewise. - (emit_store_flag): Likewise. - * expr.c (convert_modes): Likewise. - (store_field): Likewise. - (expand_expr_real_1): Likewise. - * fold-const.c (fold_read_from_constant_string): Likewise. - * gimple-ssa-sprintf.c (get_format_string): Likewise. - * optabs-libfuncs.c (gen_int_libfunc): Likewise. - * optabs.c (expand_binop): Likewise. - (expand_unop): Likewise. - (expand_abs_nojump): Likewise. - (expand_one_cmpl_abs_nojump): Likewise. - * simplify-rtx.c (mode_signbit_p): Likewise. - (val_signbit_p): Likewise. - (val_signbit_known_set_p): Likewise. - (val_signbit_known_clear_p): Likewise. - (simplify_relational_operation_1): Likewise. - * tree.c (vector_type_mode): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (smallest_mode_for_size): Fix formatting. - (smallest_int_mode_for_size): New function. - * cfgexpand.c (expand_debug_expr): Use smallest_int_mode_for_size - instead of smallest_mode_for_size. - * combine.c (make_extraction): Likewise. - * config/arc/arc.c (arc_expand_movmem): Likewise. - * config/arm/arm.c (arm_expand_divmod_libfunc): Likewise. - * config/i386/i386.c (ix86_get_mask_mode): Likewise. - * config/s390/s390.c (s390_expand_insv): Likewise. - * config/sparc/sparc.c (assign_int_registers): Likewise. - * config/spu/spu.c (spu_function_value): Likewise. - (spu_function_arg): Likewise. - * coverage.c (get_gcov_type): Likewise. - (get_gcov_unsigned_t): Likewise. - * dse.c (find_shift_sequence): Likewise. - * expmed.c (store_bit_field_1): Likewise. - * expr.c (convert_move): Likewise. - (store_field): Likewise. - * internal-fn.c (expand_arith_overflow): Likewise. - * optabs-query.c (get_best_extraction_insn): Likewise. - * optabs.c (expand_twoval_binop_libfunc): Likewise. - * stor-layout.c (layout_type): Likewise. - (initialize_sizetypes): Likewise. - * targhooks.c (default_get_mask_mode): Likewise. - * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (opt_mode::else_blk): New function. - (int_mode_for_mode): Declare. - * stor-layout.c (int_mode_for_mode): Return an opt_scalar_int_mode. - * builtins.c (expand_builtin_signbit): Adjust for new int_mode_for_mode - return type. - * cfgexpand.c (expand_debug_expr): Likewise. - * combine.c (gen_lowpart_or_truncate): Likewise. - (gen_lowpart_for_combine): Likewise. - * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Likewise. - * config/avr/avr.c (avr_to_int_mode): Likewise. - (avr_out_plus_1): Likewise. - (avr_out_plus): Likewise. - (avr_out_round): Likewise. - * config/i386/i386.c (ix86_split_to_parts): Likewise. - * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise. - (s390_expand_vcond): Likewise. - * config/spu/spu.c (spu_split_immediate): Likewise. - (spu_expand_mov): Likewise. - * dse.c (get_stored_val): Likewise. - * expmed.c (store_bit_field_1): Likewise. - (convert_extracted_bit_field): Use int_mode_for_mode instead of - int_mode_for_size. - (extract_bit_field_1): Adjust for new int_mode_for_mode return type. - (extract_low_bits): Likewise. - * expr.c (emit_group_load_1): Likewise. Separate out the BLKmode - handling rather than repeating the check. - (emit_group_store): Likewise. - (emit_move_via_integer): Adjust for new int_mode_for_mode return type. - * optabs.c (expand_absneg_bit): Likewise. - (expand_copysign_absneg): Likewise. - (expand_copysign_bit): Likewise. - * tree-if-conv.c (ifcvt_can_use_mask_load_store): Likewise. - * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise. - * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise. - * var-tracking.c (prepare_call_arguments): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Use - int_mode_for_mode instead of mode_for_size. - * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (int_mode_for_size): New function. - * builtins.c (set_builtin_user_assembler_name): Use int_mode_for_size - instead of mode_for_size. - * calls.c (save_fixed_argument_area): Likewise. Make use of BLKmode - explicit. - * combine.c (expand_field_assignment): Use int_mode_for_size - instead of mode_for_size. - (make_extraction): Likewise. - (simplify_shift_const_1): Likewise. - (simplify_comparison): Likewise. - * dojump.c (do_jump): Likewise. - * dwarf2out.c (mem_loc_descriptor): Likewise. - * emit-rtl.c (init_derived_machine_modes): Likewise. - * expmed.c (flip_storage_order): Likewise. - (convert_extracted_bit_field): Likewise. - * expr.c (copy_blkmode_from_reg): Likewise. - * graphite-isl-ast-to-gimple.c (max_mode_int_precision): Likewise. - * internal-fn.c (expand_mul_overflow): Likewise. - * lower-subreg.c (simple_move): Likewise. - * optabs-libfuncs.c (init_optabs): Likewise. - * simplify-rtx.c (simplify_unary_operation_1): Likewise. - * tree.c (vector_type_mode): Likewise. - * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise. - * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Likewise. - * tree-vect-generic.c (expand_vector_parallel): Likewise. - * tree-vect-stmts.c (vectorizable_load): Likewise. - (vectorizable_store): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * coretypes.h (pod_mode): New type. - (scalar_int_mode_pod): New typedef. - * machmode.h (pod_mode): New class. - (int_n_data_t::m): Change type to scalar_int_mode_pod. - * genmodes.c (emit_mode_int_n): Update accordingly. - * lower-subreg.h (target_lower_subreg): Change type to - scalar_int_mode_pod. - * gdbhooks.py (build_pretty_printer): Handle pod_mode and - scalar_int_mode_pod. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * config/powerpcspe/powerpcspe.h (rs6000_pmode): Change type from - machine_mode to scalar_int_mode. - * config/powerpcspe/powerpcspe.c (rs6000_pmode): Likewise. - (rs6000_option_override_internal): Remove cast to int. - * config/rs6000/rs6000.h (rs6000_pmode): Change type from - machine_mode to scalar_int_mode. - * config/rs6000/rs6000.c (rs6000_pmode): Likewise. - (rs6000_option_override_internal): Remove cast to int. - * config/s390/s390.h (Pmode): Remove cast to machine_mode. - * config/epiphany/epiphany.h (RTX_OK_FOR_OFFSET_P): Add cast - to machine_mode. - * config/s390/s390.c (s390_expand_builtin): Likewise. - * coretypes.h (scalar_int_mode): New type. - (opt_scalar_int_mode): New typedef. - * machmode.h (scalar_int_mode): New class. - (scalar_int_mode::includes_p): New function. - (byte_mode): Change type to scalar_int_mode. - (word_mode): Likewise. - (ptr_mode): Likewise. - * emit-rtl.c (byte_mode): Likewise. - (word_mode): Likewise. - (ptr_mode): Likewise. - (init_derived_machine_modes): Update accordingly. - * genmodes.c (get_mode_class): Return scalar_int_mode for MODE_INT - and MODE_PARTIAL_INT. - * gdbhooks.py (build_pretty_printer): Handle scalar_int_mode and - opt_scalar_int_mode. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (libgcc_floating_mode_supported_p): Take a - scalar_float_mode. - * doc/tm.texi: Regenerate. - * targhooks.h (default_libgcc_floating_mode_supported_p): Take a - scalar_float_mode. - * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise. - * config/aarch64/aarch64.c (aarch64_libgcc_floating_mode_supported_p): - Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (default_floatn_mode): Return an opt_scalar_float_mode. - * doc/tm.texi: Regenerate. - * config/arm/arm.c (arm_floatn_mode): Return an opt_scalar_float_mode. - * config/powerpcspe/powerpcspe.c (rs6000_floatn_mode): Likewise. - * config/rs6000/rs6000.c (rs6000_floatn_mode): Likewise. - * targhooks.h (default_floatn_mode): Likewise. - * targhooks.c (default_floatn_mode): Likewise. - * tree.c (build_common_tree_nodes): Update accordingly. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (mode_iterator::start): Provide overload for opt_modes. - (mode_iterator::iterate_p): Likewise. - (mode_iterator::get_wider): Likewise. - * expr.c (init_expr_target): Use opt_scalar_float_mode. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * coretypes.h (opt_scalar_float_mode): New typedef. - * machmode.h (float_mode_for_size): New function. - * emit-rtl.c (double_mode): Delete. - (init_emit_once): Use float_mode_for_size. - * stor-layout.c (layout_type): Likewise. - * gdbhooks.py (build_pretty_printer): Handle opt_scalar_float_mode. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * output.h (assemble_real): Take a scalar_float_mode. - * config/arm/arm.c (arm_assemble_integer): Update accordingly. - * config/arm/arm.md (consttable_4): Likewise. - (consttable_8): Likewise. - (consttable_16): Likewise. - * config/mips/mips.md (consttable_float): Likewise. - * config/s390/s390.c (s390_output_pool_entry): Likewise. - * varasm.c (assemble_real): Take a scalar_float_mode. - (output_constant_pool_2): Update accordingly. - (output_constant): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * tree.h (SCALAR_FLOAT_TYPE_MODE): New macro. - * builtins.c (expand_builtin_signbit): Use it instead of TYPE_MODE. - * fold-const.c (fold_convert_const_real_from_fixed): Likewise. - (native_encode_real): Likewise. - (native_interpret_real): Likewise. - * hsa-brig.c (emit_immediate_scalar_to_buffer): Likewise. - * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * optabs-libfuncs.c (gen_trunc_conv_libfunc): Use is_a - . Simplify. - (gen_extend_conv_libfunc): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * coretypes.h (scalar_float_mode): New type. - * machmode.h (mode_traits::from_int): Use machine_mode if - USE_ENUM_MODES is defined. - (is_a): New function. - (as_a): Likewise. - (dyn_cast): Likewise. - (scalar_float_mode): New class. - (scalar_float_mode::includes_p): New function. - (is_float_mode): Likewise. - * gdbhooks.py (MachineModePrinter): New class. - (build_pretty_printer): Use it for scalar_float_mode. - * real.h (FLOAT_MODE_FORMAT): Use as_a . - (format_helper::format_helper): Turn into a template. - * genmodes.c (get_mode_class): New function. - (emit_insn_modes_h): Give modes the class returned by get_mode_class, - or machine_mode if none. - * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Use - as_a . - * dwarf2out.c (mem_loc_descriptor): Likewise. - (insert_float): Likewise. - (add_const_value_attribute): Likewise. - * simplify-rtx.c (simplify_immed_subreg): Likewise. - * optabs.c (expand_absneg_bit): Take a scalar_float_mode. - (expand_unop): Update accordingly. - (expand_abs_nojump): Likewise. - (expand_copysign_absneg): Take a scalar_float_mode. - (expand_copysign_bit): Likewise. - (expand_copysign): Update accordingly. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * coretypes.h (opt_mode): New class. - * machmode.h (opt_mode): Likewise. - (opt_mode::else_void): New function. - (opt_mode::require): Likewise. - (opt_mode::exists): Likewise. - (GET_MODE_WIDER_MODE): Turn into a function and return an opt_mode. - (GET_MODE_2XWIDER_MODE): Likewise. - (mode_iterator::get_wider): Update accordingly. - (mode_iterator::get_2xwider): Likewise. - (mode_iterator::get_known_wider): Likewise, turning into a template. - * combine.c (make_extraction): Update use of GET_MODE_WIDER_MODE, - forcing a wider mode to exist. - * config/cr16/cr16.h (LONG_REG_P): Likewise. - * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise. - * config/c6x/c6x.c (c6x_rtx_costs): Update use of - GET_MODE_2XWIDER_MODE, forcing a wider mode to exist. - * lower-subreg.c (init_lower_subreg): Likewise. - * optabs-libfuncs.c (init_sync_libfuncs_1): Likewise, but not - on the final iteration. - * config/i386/i386.c (ix86_expand_set_or_movmem): Check whether - a wider mode exists before asking for a move pattern. - (get_mode_wider_vector): Update use of GET_MODE_WIDER_MODE, - forcing a wider mode to exist. - (expand_vselect_vconcat): Update use of GET_MODE_2XWIDER_MODE, - returning false if no such mode exists. - * config/ia64/ia64.c (expand_vselect_vconcat): Likewise. - * config/mips/mips.c (mips_expand_vselect_vconcat): Likewise. - * expmed.c (init_expmed_one_mode): Update use of GET_MODE_WIDER_MODE. - Avoid checking for a MODE_INT if we already know the mode is not a - SCALAR_INT_MODE_P. - (extract_high_half): Update use of GET_MODE_WIDER_MODE, - forcing a wider mode to exist. - (expmed_mult_highpart_optab): Likewise. - (expmed_mult_highpart): Likewise. - * expr.c (expand_expr_real_2): Update use of GET_MODE_WIDER_MODE, - using else_void. - * lto-streamer-in.c (lto_input_mode_table): Likewise. - * optabs-query.c (find_widening_optab_handler_and_mode): Likewise. - * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise. - * internal-fn.c (expand_mul_overflow): Update use of - GET_MODE_2XWIDER_MODE. - * omp-low.c (omp_clause_aligned_alignment): Likewise. - * tree-ssa-math-opts.c (convert_mult_to_widen): Update use of - GET_MODE_WIDER_MODE. - (convert_plusminus_to_widen): Likewise. - * tree-switch-conversion.c (array_value_type): Likewise. - * var-tracking.c (emit_note_insn_var_location): Likewise. - * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise. - Return false inside rather than outside the loop if no wider mode - exists - * optabs.c (expand_binop): Update use of GET_MODE_WIDER_MODE - and GET_MODE_2XWIDER_MODE - (can_compare_p): Use else_void. - * gdbhooks.py (OptMachineModePrinter): New class. - (build_pretty_printer): Use it for opt_mode. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * tree-switch-conversion.c (array_value_type): Only read TYPE_MODE - once. Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * machmode.h (mode_traits): New structure. - (get_narrowest_mode): New function. - (mode_iterator::start): Likewise. - (mode_iterator::iterate_p): Likewise. - (mode_iterator::get_wider): Likewise. - (mode_iterator::get_known_wider): Likewise. - (mode_iterator::get_2xwider): Likewise. - (FOR_EACH_MODE_IN_CLASS): New mode iterator. - (FOR_EACH_MODE): Likewise. - (FOR_EACH_MODE_FROM): Likewise. - (FOR_EACH_MODE_UNTIL): Likewise. - (FOR_EACH_WIDER_MODE): Likewise. - (FOR_EACH_2XWIDER_MODE): Likewise. - * builtins.c (expand_builtin_strlen): Use new mode iterators. - * combine.c (simplify_comparison): Likewise - * config/i386/i386.c (type_natural_mode): Likewise. - * cse.c (cse_insn): Likewise. - * dse.c (find_shift_sequence): Likewise. - * emit-rtl.c (init_derived_machine_modes): Likewise. - (init_emit_once): Likewise. - * explow.c (hard_function_value): Likewise. - * expmed.c (extract_fixed_bit_field_1): Likewise. - (extract_bit_field_1): Likewise. - (expand_divmod): Likewise. - (emit_store_flag_1): Likewise. - * expr.c (init_expr_target): Likewise. - (convert_move): Likewise. - (alignment_for_piecewise_move): Likewise. - (widest_int_mode_for_size): Likewise. - (emit_block_move_via_movmem): Likewise. - (copy_blkmode_to_reg): Likewise. - (set_storage_via_setmem): Likewise. - (compress_float_constant): Likewise. - * omp-low.c (omp_clause_aligned_alignment): Likewise. - * optabs-query.c (get_best_extraction_insn): Likewise. - * optabs.c (expand_binop): Likewise. - (expand_twoval_unop): Likewise. - (expand_twoval_binop): Likewise. - (widen_leading): Likewise. - (widen_bswap): Likewise. - (expand_parity): Likewise. - (expand_unop): Likewise. - (prepare_cmp_insn): Likewise. - (prepare_float_lib_cmp): Likewise. - (expand_float): Likewise. - (expand_fix): Likewise. - (expand_sfix_optab): Likewise. - * postreload.c (move2add_use_add2_insn): Likewise. - * reg-stack.c (reg_to_stack): Likewise. - * reginfo.c (choose_hard_reg_mode): Likewise. - * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise. - * stor-layout.c (mode_for_size): Likewise. - (smallest_mode_for_size): Likewise. - (mode_for_vector): Likewise. - (finish_bitfield_representative): Likewise. - * tree-ssa-math-opts.c (target_supports_divmod_p): Likewise. - * tree-vect-generic.c (type_for_widest_vector_mode): Likewise. - * tree-vect-stmts.c (vectorizable_conversion): Likewise. - * var-tracking.c (prepare_call_arguments): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * genconditions.c (write_header): Add a "#define USE_ENUM_MODES". - * genmodes.c (emit_insn_modes_h): Define FOOmode to E_FOOmode if - USE_ENUM_MODES is defined and to ((void) 0, E_FOOmode) otherwise. - * machmode.h (mode_size): Move earlier in file. - (mode_precision): Likewise. - (mode_inner): Likewise. - (mode_nunits): Likewise. - (mode_unit_size): Likewise. - (unit_unit_precision): Likewise. - (mode_wider): Likewise. - (mode_2xwider): Likewise. - (machine_mode): New class. - (mode_to_bytes): New function. - (mode_to_bits): Likewise. - (mode_to_precision): Likewise. - (mode_to_inner): Likewise. - (mode_to_unit_size): Likewise. - (mode_to_unit_precision): Likewise. - (mode_to_nunits): Likewise. - (GET_MODE_SIZE): Use mode_to_bytes. - (GET_MODE_BITSIZE): Use mode_to_bits. - (GET_MODE_PRECISION): Use mode_to_precision. - (GET_MODE_INNER): Use mode_to_inner. - (GET_MODE_UNIT_SIZE): Use mode_to_unit_size. - (GET_MODE_UNIT_PRECISION): Use mode_to_unit_precision. - (GET_MODE_NUNITS): Use mode_to_nunits. - * system.h (ALWAYS_INLINE): New macro. - * config/powerpcspe/powerpcspe-c.c - (altivec_resolve_overloaded_builtin): Use machine_mode instead of - int for arg1_mode and arg2_mode. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type): - Prefix mode names with E_ in case statements. - * config/aarch64/aarch64-elf.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. - * config/aarch64/aarch64.c (aarch64_split_simd_combine): Likewise. - (aarch64_split_simd_move): Likewise. - (aarch64_gen_storewb_pair): Likewise. - (aarch64_gen_loadwb_pair): Likewise. - (aarch64_gen_store_pair): Likewise. - (aarch64_gen_load_pair): Likewise. - (aarch64_get_condition_code_1): Likewise. - (aarch64_constant_pool_reload_icode): Likewise. - (get_rsqrte_type): Likewise. - (get_rsqrts_type): Likewise. - (get_recpe_type): Likewise. - (get_recps_type): Likewise. - (aarch64_gimplify_va_arg_expr): Likewise. - (aarch64_simd_container_mode): Likewise. - (aarch64_emit_load_exclusive): Likewise. - (aarch64_emit_store_exclusive): Likewise. - (aarch64_expand_compare_and_swap): Likewise. - (aarch64_gen_atomic_cas): Likewise. - (aarch64_emit_bic): Likewise. - (aarch64_emit_atomic_swap): Likewise. - (aarch64_emit_atomic_load_op): Likewise. - (aarch64_evpc_trn): Likewise. - (aarch64_evpc_uzp): Likewise. - (aarch64_evpc_zip): Likewise. - (aarch64_evpc_ext): Likewise. - (aarch64_evpc_rev): Likewise. - (aarch64_evpc_dup): Likewise. - (aarch64_gen_ccmp_first): Likewise. - (aarch64_gen_ccmp_next): Likewise. - * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise. - (alpha_emit_xfloating_libcall): Likewise. - (emit_insxl): Likewise. - (alpha_arg_type): Likewise. - * config/arc/arc.c (arc_vector_mode_supported_p): Likewise. - (arc_preferred_simd_mode): Likewise. - (arc_secondary_reload): Likewise. - (get_arc_condition_code): Likewise. - (arc_print_operand): Likewise. - (arc_legitimate_constant_p): Likewise. - * config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. - * config/arc/arc.md (casesi_load): Likewise. - (casesi_compact_jump): Likewise. - * config/arc/predicates.md (proper_comparison_operator): Likewise. - (cc_use_register): Likewise. - * config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. - * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise. - (arm_init_iwmmxt_builtins): Likewise. - * config/arm/arm.c (thumb1_size_rtx_costs): Likewise. - (neon_expand_vector_init): Likewise. - (arm_attr_length_move_neon): Likewise. - (maybe_get_arm_condition_code): Likewise. - (arm_emit_vector_const): Likewise. - (arm_preferred_simd_mode): Likewise. - (arm_output_iwmmxt_tinsr): Likewise. - (thumb1_output_casesi): Likewise. - (thumb2_output_casesi): Likewise. - (arm_emit_load_exclusive): Likewise. - (arm_emit_store_exclusive): Likewise. - (arm_expand_compare_and_swap): Likewise. - (arm_evpc_neon_vuzp): Likewise. - (arm_evpc_neon_vzip): Likewise. - (arm_evpc_neon_vrev): Likewise. - (arm_evpc_neon_vtrn): Likewise. - (arm_evpc_neon_vext): Likewise. - (arm_validize_comparison): Likewise. - * config/arm/neon.md (neon_vc): Likewise. - * config/avr/avr-c.c (avr_resolve_overloaded_builtin): Likewise. - * config/avr/avr.c (avr_rtx_costs_1): Likewise. - * config/c6x/c6x.c (c6x_vector_mode_supported_p): Likewise. - (c6x_preferred_simd_mode): Likewise. - * config/epiphany/epiphany.c (get_epiphany_condition_code): Likewise. - (epiphany_rtx_costs): Likewise. - * config/epiphany/predicates.md (proper_comparison_operator): - Likewise. - * config/frv/frv.c (condexec_memory_operand): Likewise. - (frv_emit_move): Likewise. - (output_move_single): Likewise. - (output_condmove_single): Likewise. - (frv_hard_regno_mode_ok): Likewise. - (frv_matching_accg_mode): Likewise. - * config/h8300/h8300.c (split_adds_subs): Likewise. - (h8300_rtx_costs): Likewise. - (h8300_print_operand): Likewise. - (compute_mov_length): Likewise. - (output_logical_op): Likewise. - (compute_logical_op_length): Likewise. - (compute_logical_op_cc): Likewise. - (h8300_shift_needs_scratch_p): Likewise. - (output_a_shift): Likewise. - (compute_a_shift_length): Likewise. - (compute_a_shift_cc): Likewise. - (expand_a_rotate): Likewise. - (output_a_rotate): Likewise. - * config/i386/i386.c (classify_argument): Likewise. - (function_arg_advance_32): Likewise. - (function_arg_32): Likewise. - (function_arg_64): Likewise. - (function_value_64): Likewise. - (ix86_gimplify_va_arg): Likewise. - (ix86_legitimate_constant_p): Likewise. - (put_condition_code): Likewise. - (split_double_mode): Likewise. - (ix86_avx256_split_vector_move_misalign): Likewise. - (ix86_expand_vector_logical_operator): Likewise. - (ix86_split_idivmod): Likewise. - (ix86_expand_adjust_ufix_to_sfix_si): Likewise. - (ix86_build_const_vector): Likewise. - (ix86_build_signbit_mask): Likewise. - (ix86_match_ccmode): Likewise. - (ix86_cc_modes_compatible): Likewise. - (ix86_expand_branch): Likewise. - (ix86_expand_sse_cmp): Likewise. - (ix86_expand_sse_movcc): Likewise. - (ix86_expand_int_sse_cmp): Likewise. - (ix86_expand_vec_perm_vpermi2): Likewise. - (ix86_expand_vec_perm): Likewise. - (ix86_expand_sse_unpack): Likewise. - (ix86_expand_int_addcc): Likewise. - (ix86_split_to_parts): Likewise. - (ix86_vectorize_builtin_gather): Likewise. - (ix86_vectorize_builtin_scatter): Likewise. - (avx_vpermilp_parallel): Likewise. - (inline_memory_move_cost): Likewise. - (ix86_tieable_integer_mode_p): Likewise. - (x86_maybe_negate_const_int): Likewise. - (ix86_expand_vector_init_duplicate): Likewise. - (ix86_expand_vector_init_one_nonzero): Likewise. - (ix86_expand_vector_init_one_var): Likewise. - (ix86_expand_vector_init_concat): Likewise. - (ix86_expand_vector_init_interleave): Likewise. - (ix86_expand_vector_init_general): Likewise. - (ix86_expand_vector_set): Likewise. - (ix86_expand_vector_extract): Likewise. - (emit_reduc_half): Likewise. - (ix86_emit_i387_round): Likewise. - (ix86_mangle_type): Likewise. - (ix86_expand_round_sse4): Likewise. - (expand_vec_perm_blend): Likewise. - (canonicalize_vector_int_perm): Likewise. - (ix86_expand_vec_one_operand_perm_avx512): Likewise. - (expand_vec_perm_1): Likewise. - (expand_vec_perm_interleave3): Likewise. - (expand_vec_perm_even_odd_pack): Likewise. - (expand_vec_perm_even_odd_1): Likewise. - (expand_vec_perm_broadcast_1): Likewise. - (ix86_vectorize_vec_perm_const_ok): Likewise. - (ix86_expand_vecop_qihi): Likewise. - (ix86_expand_mul_widen_hilo): Likewise. - (ix86_expand_sse2_abs): Likewise. - (ix86_expand_pextr): Likewise. - (ix86_expand_pinsr): Likewise. - (ix86_preferred_simd_mode): Likewise. - (ix86_simd_clone_compute_vecsize_and_simdlen): Likewise. - * config/i386/sse.md (*andnot3): Likewise. - (3): Likewise. - (*3): Likewise. - * config/ia64/ia64.c (ia64_expand_vecint_compare): Likewise. - (ia64_expand_atomic_op): Likewise. - (ia64_arg_type): Likewise. - (ia64_mode_to_int): Likewise. - (ia64_scalar_mode_supported_p): Likewise. - (ia64_vector_mode_supported_p): Likewise. - (expand_vec_perm_broadcast): Likewise. - * config/iq2000/iq2000.c (iq2000_move_1word): Likewise. - (iq2000_function_arg_advance): Likewise. - (iq2000_function_arg): Likewise. - * config/m32c/m32c.c (m32c_preferred_reload_class): Likewise. - * config/m68k/m68k.c (output_dbcc_and_branch): Likewise. - (m68k_libcall_value): Likewise. - (m68k_function_value): Likewise. - (sched_attr_op_type): Likewise. - * config/mcore/mcore.c (mcore_output_move): Likewise. - * config/microblaze/microblaze.c (microblaze_function_arg_advance): - Likewise. - (microblaze_function_arg): Likewise. - * config/mips/mips.c (mips16_build_call_stub): Likewise. - (mips_print_operand): Likewise. - (mips_mode_ok_for_mov_fmt_p): Likewise. - (mips_vector_mode_supported_p): Likewise. - (mips_preferred_simd_mode): Likewise. - (mips_expand_vpc_loongson_even_odd): Likewise. - (mips_expand_vec_unpack): Likewise. - (mips_expand_vi_broadcast): Likewise. - (mips_expand_vector_init): Likewise. - (mips_expand_vec_reduc): Likewise. - (mips_expand_msa_cmp): Likewise. - * config/mips/mips.md (casesi_internal_mips16_): Likewise. - * config/mn10300/mn10300.c (mn10300_print_operand): Likewise. - (cc_flags_for_mode): Likewise. - * config/msp430/msp430.c (msp430_print_operand): Likewise. - * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Likewise. - (nds32_output_casesi_pc_relative): Likewise. - * config/nds32/nds32.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. - * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Likewise. - (nvptx_gen_unpack): Likewise. - (nvptx_gen_pack): Likewise. - (nvptx_gen_shuffle): Likewise. - (nvptx_gen_wcast): Likewise. - (nvptx_preferred_simd_mode): Likewise. - * config/pa/pa.c (pa_secondary_reload): Likewise. - * config/pa/predicates.md (base14_operand): Likewise. - * config/powerpcspe/powerpcspe-c.c - (altivec_resolve_overloaded_builtin): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_setup_reg_addr_masks): - Likewise. - (rs6000_preferred_simd_mode): Likewise. - (output_vec_const_move): Likewise. - (rs6000_expand_vector_extract): Likewise. - (rs6000_split_vec_extract_var): Likewise. - (reg_offset_addressing_ok_p): Likewise. - (rs6000_legitimate_offset_address_p): Likewise. - (rs6000_legitimize_address): Likewise. - (rs6000_emit_set_const): Likewise. - (rs6000_const_vec): Likewise. - (rs6000_emit_move): Likewise. - (spe_build_register_parallel): Likewise. - (rs6000_darwin64_record_arg_recurse): Likewise. - (swap_selector_for_mode): Likewise. - (spe_init_builtins): Likewise. - (paired_init_builtins): Likewise. - (altivec_init_builtins): Likewise. - (do_load_for_compare): Likewise. - (rs6000_generate_compare): Likewise. - (rs6000_expand_float128_convert): Likewise. - (emit_load_locked): Likewise. - (emit_store_conditional): Likewise. - (rs6000_output_function_epilogue): Likewise. - (rs6000_handle_altivec_attribute): Likewise. - (rs6000_function_value): Likewise. - (emit_fusion_gpr_load): Likewise. - (emit_fusion_p9_load): Likewise. - (emit_fusion_p9_store): Likewise. - * config/powerpcspe/predicates.md (easy_fp_constant): Likewise. - (fusion_gpr_mem_load): Likewise. - (fusion_addis_mem_combo_load): Likewise. - (fusion_addis_mem_combo_store): Likewise. - * config/rs6000/predicates.md (easy_fp_constant): Likewise. - (fusion_gpr_mem_load): Likewise. - (fusion_addis_mem_combo_load): Likewise. - (fusion_addis_mem_combo_store): Likewise. - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Likewise. - * config/rs6000/rs6000-string.c (do_load_for_compare): Likewise. - * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise. - (rs6000_preferred_simd_mode): Likewise. - (output_vec_const_move): Likewise. - (rs6000_expand_vector_extract): Likewise. - (rs6000_split_vec_extract_var): Likewise. - (reg_offset_addressing_ok_p): Likewise. - (rs6000_legitimate_offset_address_p): Likewise. - (rs6000_legitimize_address): Likewise. - (rs6000_emit_set_const): Likewise. - (rs6000_const_vec): Likewise. - (rs6000_emit_move): Likewise. - (rs6000_darwin64_record_arg_recurse): Likewise. - (swap_selector_for_mode): Likewise. - (paired_init_builtins): Likewise. - (altivec_init_builtins): Likewise. - (rs6000_expand_float128_convert): Likewise. - (emit_load_locked): Likewise. - (emit_store_conditional): Likewise. - (rs6000_output_function_epilogue): Likewise. - (rs6000_handle_altivec_attribute): Likewise. - (rs6000_function_value): Likewise. - (emit_fusion_gpr_load): Likewise. - (emit_fusion_p9_load): Likewise. - (emit_fusion_p9_store): Likewise. - * config/rx/rx.c (rx_gen_move_template): Likewise. - (flags_from_mode): Likewise. - * config/s390/predicates.md (s390_alc_comparison): Likewise. - (s390_slb_comparison): Likewise. - * config/s390/s390.c (s390_handle_vectorbool_attribute): Likewise. - (s390_vector_mode_supported_p): Likewise. - (s390_cc_modes_compatible): Likewise. - (s390_match_ccmode_set): Likewise. - (s390_canonicalize_comparison): Likewise. - (s390_emit_compare_and_swap): Likewise. - (s390_branch_condition_mask): Likewise. - (s390_rtx_costs): Likewise. - (s390_secondary_reload): Likewise. - (__SECONDARY_RELOAD_CASE): Likewise. - (s390_expand_cs): Likewise. - (s390_preferred_simd_mode): Likewise. - * config/s390/vx-builtins.md (vec_packsu_u): Likewise. - * config/sh/sh.c (sh_print_operand): Likewise. - (dump_table): Likewise. - (sh_secondary_reload): Likewise. - * config/sh/sh.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. - * config/sh/sh.md (casesi_worker_1): Likewise. - (casesi_worker_2): Likewise. - * config/sparc/predicates.md (icc_comparison_operator): Likewise. - (fcc_comparison_operator): Likewise. - * config/sparc/sparc.c (sparc_expand_move): Likewise. - (emit_soft_tfmode_cvt): Likewise. - (sparc_preferred_simd_mode): Likewise. - (output_cbranch): Likewise. - (sparc_print_operand): Likewise. - (sparc_expand_vec_perm_bmask): Likewise. - (vector_init_bshuffle): Likewise. - * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise. - (spu_vector_mode_supported_p): Likewise. - (spu_expand_insv): Likewise. - (spu_emit_branch_or_set): Likewise. - (spu_handle_vector_attribute): Likewise. - (spu_builtin_splats): Likewise. - (spu_builtin_extract): Likewise. - (spu_builtin_promote): Likewise. - (spu_expand_sign_extend): Likewise. - * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise. - (tilegx_simd_int): Likewise. - * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p): Likewise. - (tilepro_simd_int): Likewise. - * config/v850/v850.c (const_double_split): Likewise. - (v850_print_operand): Likewise. - (ep_memory_offset): Likewise. - * config/vax/vax.c (vax_rtx_costs): Likewise. - (vax_output_int_move): Likewise. - (vax_output_int_add): Likewise. - (vax_output_int_subtract): Likewise. - * config/visium/predicates.md (visium_branch_operator): Likewise. - * config/visium/visium.c (rtx_ok_for_offset_p): Likewise. - (visium_print_operand_address): Likewise. - * config/visium/visium.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. - * config/xtensa/xtensa.c (xtensa_mem_offset): Likewise. - (xtensa_expand_conditional_branch): Likewise. - (xtensa_copy_incoming_a7): Likewise. - (xtensa_output_literal): Likewise. - * dfp.c (decimal_real_maxval): Likewise. - * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * genmodes.c (mode_size_inline): Add an E_ prefix to mode names. - (mode_nunits_inline): Likewise. - (mode_inner_inline): Likewise. - (mode_unit_size_inline): Likewise. - (mode_unit_precision_inline): Likewise. - (emit_insn_modes_h): Likewise. Also emit a #define of the - unprefixed name. - (emit_mode_wider): Add an E_ prefix to mode names. - (emit_mode_complex): Likewise. - (emit_mode_inner): Likewise. - (emit_mode_adjustments): Likewise. - (emit_mode_int_n): Likewise. - * config/aarch64/aarch64-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP) - (v2si_UP, v2sf_UP, v1df_UP, di_UP, df_UP, v16qi_UP, v8hi_UP, v8hf_UP) - (v4si_UP, v4sf_UP, v2di_UP, v2df_UP, ti_UP, oi_UP, ci_UP, xi_UP) - (si_UP, sf_UP, hi_UP, hf_UP, qi_UP): Likewise. - (CRC32_BUILTIN, ENTRY): Likewise. - * config/aarch64/aarch64.c (aarch64_push_regs): Likewise. - (aarch64_pop_regs): Likewise. - (aarch64_process_components): Likewise. - * config/alpha/alpha.c (alpha_emit_conditional_move): Likewise. - * config/arm/arm-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP, v2si_UP) - (v2sf_UP, di_UP, v16qi_UP, v8hi_UP, v8hf_UP, v4si_UP, v4sf_UP) - (v2di_UP, ti_UP, ei_UP, oi_UP, hf_UP, si_UP, void_UP): Likewise. - * config/arm/arm.c (arm_init_libfuncs): Likewise. - * config/i386/i386-builtin-types.awk (ix86_builtin_type_vect_mode): - Likewise. - * config/i386/i386-builtin.def (pcmpestr): Likewise. - (pcmpistr): Likewise. - * config/microblaze/microblaze.c (double_memory_operand): Likewise. - * config/mmix/mmix.c (mmix_output_condition): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok): - Likewise. - * config/rl78/rl78.c (mduc_regs): Likewise. - * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise. - (htm_expand_builtin): Likewise. - * config/sh/sh.h (REGISTER_NATURAL_MODE): Likewise. - * config/sparc/sparc.c (emit_save_or_restore_regs): Likewise. - * config/xtensa/xtensa.c (print_operand): Likewise. - * expmed.h (NUM_MODE_PARTIAL_INT): Likewise. - (NUM_MODE_VECTOR_INT): Likewise. - * genoutput.c (null_operand): Likewise. - (output_operand_data): Likewise. - * genrecog.c (print_parameter_value): Likewise. - * lra.c (debug_operand_data): Likewise. - -2017-08-30 Richard Sandiford - - * dwarf2out.c (scompare_loc_descriptor_wide) - (scompare_loc_descriptor_narrow): New functions, split out from... - (scompare_loc_descriptor): ...here. - * expmed.c (emit_store_flag_int): New function, split out from... - (emit_store_flag): ...here. - -2017-08-30 Richard Biener - - * dwarf2out.c (dwarf2out_finish): Remove setting AT_pubnames. - (dwarf2out_early_finish): Move setting of AT_pubnames from - early debug output to early finish. - -2017-08-30 Jozef Lawrynowicz - - * gcc/config/msp430/msp430.h: Pass -mcode/data-region to the linker - and -mdata-region to the assembler. - -2017-08-30 Richard Biener - - * dwarf2out.c (add_dwarf_attr): Check we don't add duplicate - attributes. - (gen_subprogram_die): Add DW_AT_object_pointer only early. - (dwarf2out_early_global_decl): Only generate a DIE for the - abstract origin if it doesn't already exist or is a declaration DIE. - (resolve_addr): Do not add the linkage name twice when - generating a stub DIE for the DW_TAG_GNU_call_site target. - -2017-08-30 Richard Sandiford - - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Use machine_mode rather than int for arg1_mode. - -2017-08-29 Michael Meissner - - PR target/82015 - * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Insure - that the second argument of the built-in functions to unpack - 128-bit scalar types to 64-bit values is 0 or 1. Change to use a - switch statement instead a lot of if statements. - * config/rs6000/rs6000.md (unpack, FMOVE128_VSX iterator): - Allow 64-bit values to be in Altivec registers as well as - traditional floating point registers. - (pack, FMOVE128_VSX iterator): Likewise. - -2017-08-29 Alexander Monakov - - * ira-costs.c (record_address_regs): Handle both operands of PLUS for - MAX_REGS_PER_ADDRESS == 1. - -2017-08-29 Uros Bizjak - - * config/i386/i386.opt (flag_fentry): Do not init to -1. - * config/i386/i386.c (ix86_option_override_internal): Simplify - setting of opts->x_flag_entry. - -2017-08-29 Bill Schmidt - Jakub Jelinek - Richard Biener - - PR tree-optimization/81503 - * gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure - folded constant fits in the target type; reorder tests for clarity. - -2017-08-29 Martin Liska - - * passes.def: Include pass_lower_switch. - * stmt.c (dump_case_nodes): Remove and move to - tree-switch-conversion. - (case_values_threshold): Likewise. - (expand_switch_as_decision_tree_p): Likewise. - (emit_case_decision_tree): Likewise. - (expand_case): Likewise. - (balance_case_nodes): Likewise. - (node_has_low_bound): Likewise. - (node_has_high_bound): Likewise. - (node_is_bounded): Likewise. - (emit_case_nodes): Likewise. - (struct simple_case_node): New struct. - (add_case_node): Remove. - (emit_case_dispatch_table): Use vector instead of case_list. - (reset_out_edges_aux): Remove. - (compute_cases_per_edge): Likewise. - (expand_case): Build list of simple_case_node. - (expand_sjlj_dispatch_table): Use it. - * tree-switch-conversion.c (struct case_node): Moved from - stmt.c and adjusted. - (emit_case_nodes): Likewise. - (node_has_low_bound): Likewise. - (node_has_high_bound): Likewise. - (node_is_bounded): Likewise. - (case_values_threshold): Likewise. - (reset_out_edges_aux): Likewise. - (compute_cases_per_edge): Likewise. - (add_case_node): Likewise. - (dump_case_nodes): Likewise. - (balance_case_nodes): Likewise. - (expand_switch_as_decision_tree_p): Likewise. - (emit_jump): Likewise. - (emit_case_decision_tree): Likewise. - (try_switch_expansion): Likewise. - (do_jump_if_equal): Likewise. - (emit_cmp_and_jump_insns): Likewise. - (fix_phi_operands_for_edge): New function. - (record_phi_operand_mapping): Likewise. - (class pass_lower_switch): New pass. - (pass_lower_switch::execute): New function. - (make_pass_lower_switch): Likewise. - (conditional_probability): - * timevar.def: Add TV_TREE_SWITCH_LOWERING. - * tree-pass.h: Add make_pass_lower_switch. - -2017-08-29 Jozef Lawrynowicz - - PR target/80993 - * gcc/config/msp430/msp430.c (msp430_attr): Mark interrupt - handlers as used. - -2017-08-29 Richard Biener - - * dwarf2out.c (add_dwarf_attr): When checking is enabled verify - we do not add a DW_AT_inline attribute twice. - (gen_subprogram_die): Remove code setting DW_AT_inline on - DECL_ABSTRACT_P nodes. - -2017-08-29 Richard Sandiford - - * gimplify.c (gimplify_call_expr): Copy the nothrow flag to - calls to internal functions. - (gimplify_modify_expr): Likewise. - * tree-call-cdce.c (use_internal_fn): Likewise. - * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise. - (convert_to_divmod): Set the nothrow flag. - * tree-if-conv.c (predicate_mem_writes): Likewise. - * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise. - (vectorizable_call): Likewise. - (vectorizable_store): Likewise. - (vectorizable_load): Likewise. - * tree-vect-patterns.c (vect_recog_pow_pattern): Likewise. - (vect_recog_mask_conversion_pattern): Likewise. - -2017-08-29 Martin Liska - - PR other/39851 - * gcc.c (driver_handle_option): Add new argument. - * opts-common.c (handle_option): Pass - target_option_override_hook. - * opts-global.c (lang_handle_option): Add new option. - (set_default_handlers): Add new argument. - (decode_options): Likewise. - * opts.c (target_handle_option): Likewise. - (common_handle_option): Call target_option_override_hook. - * opts.h (struct cl_option_handler_func): Add hook for - target option override. - (struct cl_option_handlers): Likewise. - (set_default_handlers): Add new argument. - (decode_options): Likewise. - (common_handle_option): Likewise. - (target_handle_option): Likewise. - * toplev.c (toplev::main): Pass targetm.target_option.override - hook. - -2017-08-29 Richard Biener - Dominik Infuehr - - * tree-vect-slp.c (vect_bb_slp_scalar_cost): Properly confine - life to the active subtree. - -2017-08-28 Jeff Law - - * tree-ssa-dom.c (edge_info::record_simple_equiv): Call - derive_equivalences. - (derive_equivalences_from_bit_ior, record_temporary_equivalences): - Code moved into.... - (edge_info::derive_equivalences): New private member function - - * tree-ssa-dom.c (class edge_info): Changed from a struct - to a class. Add ctor/dtor, methods and data members. - (edge_info::edge_info): Renamed from allocate_edge_info. - Initialize additional members. - (edge_info::~edge_info): New. - (free_dom_edge_info): Delete the edge info. - (record_edge_info): Use new class & associated member functions. - Tighten forms for testing for edge equivalences. - (record_temporary_equivalences): Iterate over the simple - equivalences rather than assuming there's only one per edge. - (cprop_into_successor_phis): Iterate over the simple - equivalences rather than assuming there's only one per edge. - (optimize_stmt): Use operand_equal_p rather than pointer - equality for mini-DSE code. - -2017-08-28 Nathan Sidwell - - * gcc.c (execute): Fold SIGPIPE handling into switch - statement. Adjust internal error message. - -2017-08-28 Richard Biener - - PR debug/81993 - * dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes): - Do nothing for removed DIEs. - -2017-08-28 Richard Biener - - PR tree-optimization/81977 - * tree-ssa-sccvn.c (vn_reference_lookup_3): Fix look through - memcpy. - -2017-08-28 Alexander Monakov - - PR target/80640 - * doc/md.texi (mem_thread_fence): Remove mention of mode. Rewrite. - * optabs.c (expand_mem_thread_fence): Emit a compiler barrier when - using targetm.gen_mem_thread_fence. - -2017-08-27 Uros Bizjak - - PR target/81995 - * config/i386/i386.md (*): Change operand 2 - predicate to register_operand. Reorder operands. - (*btr): Ditto. - (*_mask): Change operand 3 predicate to register_operand. - (*btr_mask): Ditto. - -2017-08-25 Steven Munroe - - * config.gcc (powerpc*-*-*): Add xmmintrin.h and mm_malloc.h. - * config/rs6000/xmmintrin.h: New file. - * config/rs6000/x86intrin.h [__ALTIVEC__]: Include xmmintrin.h. - -2017-08-25 Bill Schmidt - - PR target/81504 - * config/rs6000/rs6000-p8swap.c (find_alignment_op): Add reference - parameter and_insn and return it. - (recombine_lvx_pattern): Insert a copy to ensure availability of - the base register of the copied masking operation at the point of - the instruction replacement. - (recombine_stvx_pattern): Likewise. - -2017-08-25 Michael Meissner - - * config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete - undocumented switches. - (-mpower9-dform-vector): Likewise. - (-mpower9-dform): Likewise. - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update - comments to delete references to -mpower9-dform* switches. - * config/rs6000/predicates.md (vsx_quad_dform_memory_operand): - Delete reference to -mpower9-dform* switches, test for - -mpower9-vector instead. - * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise. - (OTHER_P9_VECTOR_MASKS): Likewise. - (POWERPC_MASKS): Likewise. - * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change - tests against -mpower9-dform* to -mpower9-vector. Delete code - that checked for -mpower9-dform* consistancy with other options. - Add test for -mpower9-misc to enable other power9 switches. - (rs6000_init_hard_regno_mode_ok): Likewise. - (rs6000_option_override_internal): Likewise. - (rs6000_emit_prologue): Likewise. - (rs6000_emit_epilogue): Likewise. - (rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}. - (rs6000_disable_incompatiable_switches): Delete -mpower9-dform. - (emit_fusion_p9_load): Change tests for -mpower9-dform-scalar - -mpower9-vector. - (emit_fusion_p9_store): Likewise. - * config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete - resetting these macros if the assembler does not support ISA 3.0 - instructions. - (TARGET_P9_DFORM_VECTOR): Likewise. - * config/rs6000/rs6000.md (peepholes to optimize altivec memory): - Change to use -mpower9-vector instead of -mpower9-dform-scalar. - -2017-08-25 Alan Modra - - PR rtl-optimization/81747 - * cse.c (cse_extended_basic_block): Don't attempt to record - equivalences for degenerate conditional branches that branch - to their fall-through. - -2017-08-24 Martin Sebor - - PR middle-end/81908 - * gimple-fold.c (size_must_be_zero_p): New function. - (gimple_fold_builtin_memory_op): Call it. - -2017-08-24 Steven Munroe - - * config/rs6000/mm_malloc.h: New file. - -2017-08-24 Bin Cheng - - PR tree-optimization/81913 - * tree-ssa-loop-niter.c (number_of_iterations_cond): Skip niter - analysis when either IVs in condition can wrap. - -2017-08-24 Uros Bizjak - - * dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40. - * dwarf2cfi.c (MAX_ARTIFICIAL_LABEL_BYTES): Remove. - -2017-08-24 Richard Biener - - PR target/81921 - * targhooks.c (default_target_can_inline_p): Properly - use target_option_default_node when no DECL_FUNCTION_SPECIFIC_TARGET - is present and always compare. - * config/i386/i386.c (ix86_valid_target_attribute_tree): Do not - infer -mfpmath=sse from TARGET_SSE_P. - (ix86_can_inline_p): Properly use target_option_default_node when - no DECL_FUNCTION_SPECIFIC_TARGET is present and always compare. - -2017-08-24 Richard Biener - - PR debug/81936 - * dwarf2out.c (output_die): Handle flag_generate_offload like - flag_generate_lto. - (output_comp_unit): Likewise. - (gen_array_type_die): Likewise. - (dwarf2out_early_finish): Likewise. - (note_variable_value_in_expr): Likewise. - (dwarf2out_finish): Likewise. Adjust assert. - * cgraphunit.c (symbol_table::compile): Move setting of - flag_generate_offload earlier ... - (symbol_table::finalize_compilation_unit): ... here, before - early debug finalization. - -2017-08-24 Richard Biener - - * config/i386/i386.c: Include symbol-summary.h, ipa-prop.h - and ipa-fnsummary.h. - (ix86_can_inline_p): When ix86_fpmath flags do not match - check whether the callee uses FP math at all. - -2017-08-24 Aldy Hernandez - - PR middle-end/81931 - * tree-ssanames.c (get_nonzero_bits): Use element_precision - instead of TYPE_PRECISION. - -2017-08-24 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (make_extraction): Use subreg_offset_from_lsb. - -2017-08-23 Daniel Santos - - * config/i386/i386.h (ix86_frame::stack_realign_allocate_offset): - Remove field. - (ix86_frame::stack_realign_allocate): New field. - (struct machine_frame_state): Modify comments. - (machine_frame_state::sp_realigned_fp_end): New field. - * config/i386/i386.c (ix86_compute_frame_layout): Rework stack frame - layout calculation. - (sp_valid_at): Add assertion to assure no attempt to access invalid - offset of a realigned stack. - (fp_valid_at): Likewise. - (choose_baseaddr): Modify comments. - (ix86_emit_outlined_ms2sysv_save): Adjust to changes in - ix86_expand_prologue. - (ix86_expand_prologue): Modify stack realignment and allocation. - (ix86_expand_epilogue): Modify comments. - * doc/sourcebuild.texi: Add documentation for target selectors avx2, - avx2_runtime, avx512f, and avx512f_runtime. - -2017-08-23 Uros Bizjak - - * config/i386/i386.opt: Remove unneeded Init(0) initializations. - (mstackrealign): Do not init to -1. - * config/i386/i386.c (ix86_option_override_internal): - Check opts_set, not opts when setting default value of - opts->x_ix86_force_align_arg_pointer. - -2017-08-23 Richard Biener - - * function.c (fndecl_name): Use verbosity 1 (no arguments) for - lang_hooks.decl_printable_name. - * print-rtl-function.c (print_rtx_function): Likewise. - * tree-pretty-print.c (dump_function_header): Likewise. - -2017-08-23 Richard Biener - - PR lto/81940 - * dwarf2out.c (dwarf2out_abstract_function): Handle LTO with - -g0 at compile-time. - -2017-08-23 Tamar Christina - - PR middle-end/19706 - * doc/sourcebuild.texi (Other hardware attributes): - Document xorsign. - -2017-08-23 Tamar Christina - - PR middle-end/19706 - * tree-ssa-math-opts.c (convert_expand_mult_copysign): - Fix single-use check. - -2017-08-23 Thomas Preud'homme - - * gcc.c (execute): Only test for SIGKILL and SIGQUIT if available. - -2017-08-22 Daniel Santos - - * doc/install.texi: Modify to add more details on running selected - tests. - -2017-08-22 Daniel Santos - - * config/i386/i386.c (ix86_option_override_internal): Error when -mx32 - is combined with -mabi=ms. - (ix86_function_type_abi): Limit errors for mixing -mx32 with attribute - ms_abi. - -2017-08-22 Bill Schmidt - - PR tree-optimization/81488 - * gimple-ssa-strength-reduction (struct slsr_cand_d): Add visited - and cached_basis fields. - (MAX_SPREAD): New constant. - (alloc_cand_and_find_basis): Initialize new fields. - (clear_visited): New function. - (create_phi_basis_1): Rename from create_phi_basis, set visited - and cached_basis fields. - (create_phi_basis): New wrapper function. - (phi_add_costs_1): Rename from phi_add_costs, add spread - parameter, set visited field, short-circuit when limits reached. - (phi_add_costs): New wrapper function. - (record_phi_increments_1): Rename from record_phi_increments, set - visited field. - (record_phi_increments): New wrapper function. - (phi_incr_cost_1): Rename from phi_incr_cost, set visited field. - (phi_incr_cost): New wrapper function. - (all_phi_incrs_profitable_1): Rename from - all_phi_incrs_profitable, set visited field. - (all_phi_incrs_profitable): New wrapper function. - -2017-08-22 Richard Sandiford - Alan Hayward - David Sherwood - - * rtl.h (paradoxical_subreg_p): Define inline, and add a version - that takes the outer and inner modes. - * doc/rtl.texi: Use paradoxical_subreg_p instead of a GET_MODE_SIZE - comparison as the canonical test for a paradoxical subreg. - * combine.c (simplify_set): Use paradoxical_subreg_p. - (make_extraction): Likewise. - (force_to_mode): Likewise. - (rtx_equal_for_field_assignment_p): Likewise. - (gen_lowpart_for_combine): Likewise. - (simplify_comparison): Likewise. - * cse.c (equiv_constant): Likewise. - * expmed.c (store_bit_field_1): Likewise. - * final.c (alter_subreg): Likewise. - * fwprop.c (propagate_rtx): Likewise. - (forward_propagate_subreg): Likewise. - * ira-conflicts.c (ira_build_conflicts): Likewise. - * lower-subreg.c (simplify_gen_subreg_concatn): Likewise. - * lra-constraints.c (curr_insn_transform): Likewise. - (split_reg): Likewise. - * lra-eliminations.c (move_plus_up): Likewise. - (lra_eliminate_regs_1): Likewise. - * recog.c (general_operand): Likewise. - * ree.c (combine_reaching_defs): Likewise. - * reload.c (push_reload): Likewise. - (find_reloads): Likewise. - * reload1.c (elimination_effects): Likewise. - (compute_reload_subreg_offset): Likewise. - (choose_reload_regs): Likewise. - * rtlanal.c (subreg_lsb_1): Likewise. - * simplify-rtx.c (simplify_unary_operation_1): Likewise. - (simplify_subreg): Likewise. - * var-tracking.c (track_loc_p): Likewise. - * emit-rtl.c (byte_lowpart_offset): Likewise. - (paradoxical_subreg_p): Delete out-of-line definition. - -2017-08-22 Jeff Law - - PR tree-optimization/81741 - PR tree-optimization/71947 - * tree-ssa-dom.c: Include tree-inline.h. - (record_temporary_equivalences): Only record SSA_NAME = SSA_NAME - equivalences if one is more expensive to compute than the other. - * tree-ssa-scopedtables.h (class const_or_copies): Make - record_const_or_copy_raw method private. - (class avail_exprs_stack): New method simplify_binary_operation. - * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Call - avail_exprs_stack::simplify_binary_operation as needed. - (avail_exprs_stack::simplify_binary_operation): New function. - -2017-08-22 Sebastian Huber - - * config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt. - * config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define. - (DOT_SYMBOLS): Likewise. - (MINIMAL_TOC_SECTION_ASM_OP): Likewise. - (RELOCATABLE_NEEDS_FIXUP): Likewise. - (RS6000_ABI_NAME): Likewise. - (TARGET_CMODEL): Likewise. - (TOC_SECTION_ASM_OP): Likewise. - (SET_CMODEL): New macro. - (SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options. - -2017-08-22 Richard Biener - - * tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT] - to allow for free-lang-data replacements similar to verify_type_variant. - -2017-08-22 Richard Sandiford - Alan Hayward - David Sherwood - - * config/aarch64/aarch64.md (casesi): Use DImode rather than - VOIDmode for the LABEL_REF. - -2017-08-22 Richard Biener - - * tree-cfg.c (gimple_split_edge): Avoid reallocating target PHI nodes. - -2017-08-22 Richard Biener - - * common.opt (feliminate-dwarf2-dups): Ignore. - * doc/invoke.texi (feliminate-dwarf2-dups): Remove documentation. - * dwarf2out.c (push_new_compile_unit, pop_compile_unit, - same_die_p_wrap, compute_section_prefix, - is_symbol_die, assign_symbol_names, break_out_includes): Remove. - (comdat_symbol_id, comdat_symbol_number): Likewise. - (cu_hash_table_entry, cu_hash_table_entry_hasher, cu_hash_type): - Likewise. - (check_duplicate_cu, record_comdat_symbol_number): Likewise. - (output_die): Mark unreachable path unreachable. - (dwarf2out_start_source_file): Do not create DW_TAG_GNU_BINCL. - (dwarf2out_end_source_file): Do not create DW_TAG_GNU_EINCL. - (dwarf2out_init): Remove code handling flag_eliminate_dwarf2_dups. - (dwarf2out_early_finish): Likewise. - -2017-08-22 Aldy Hernandez - - * wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend. - -2017-08-22 Georg-Johann Lay - - PR target/81910 - * config/avr/avr.c (avr_handle_addr_attribute): Early return if - not VAR_P. Filter attribute warnings with OPT_Wattributes. - (avr_attribute_table) : Initialize - .decl_required with true. - -2017-08-21 Michael Meissner - - * config/rs6000/rs6000-cpus.def (-mvsx-scalar-float): Delete - undocumented debugging options. - (-mvsx-scalar-double): Likewise. - (-mallow-df-permute): Likewise. - (-mvectorize-builtins): Likewise. - * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise. - (rs6000_builtin_vectorized_function): Likewise. - (rs6000_builtin_md_vectorized_function): Likewise. - (rs6000_opt_vars): Likewise. - -2017-08-21 Uros Bizjak - - PR target/46091 - * config/i386/i386.md (*btsq_imm): Rename from *btsq. - (*btrq_imm): Rename from *btrq. - (*btcq_imm): Rename from *btcq. - (btsc): New code attribute. - (*): New insn pattern. - (*btr): Ditto. - (*_mask): New insn_and_split pattern. - (*btr_mask): Ditto. - -2017-08-21 Richard Sandiford - Alan Hayward - David Sherwood - - * function.c (pad_below): Simplify padding calculation. - -2017-08-21 Richard Sandiford - Alan Hayward - David Sherwood - - * target.def (function_prologue): Remove frame size argument. - (function_epilogue): Likewise. - * doc/tm.texi: Regenerate. - * final.c (final_start_function): Update call to function_prologue. - (final_end_function): Update call to function_epilogue. - (default_function_pro_epilogue): Remove frame size argument. - * output.h (default_function_pro_epilogue): Likewise. - * config/arm/arm.c (arm_output_function_epilogue): Likewise. - (arm_output_function_prologue): Likewise. - * config/frv/frv.c (frv_function_prologue): Likewise. - (frv_function_epilogue): Likewise. - * config/i386/i386.c (ix86_output_function_epilogue): Likewise. - * config/ia64/ia64.c (ia64_output_function_prologue): Likewise. - (ia64_output_function_epilogue): Likewise. - * config/m32r/m32r.c (m32r_output_function_prologue): Likewise. - (m32r_output_function_epilogue): Likewise. - * config/microblaze/microblaze.c (microblaze_function_prologue) - (microblaze_function_epilogue): Likewise. - * config/mips/mips.c (mips_output_function_prologue): Likewise. - (mips_output_function_epilogue): Likewise. - * config/mmix/mmix.c (mmix_target_asm_function_prologue): Likewise. - (mmix_target_asm_function_epilogue): Likewise. - * config/msp430/msp430.c (msp430_start_function): Likewise. - * config/nds32/nds32.c (nds32_asm_function_prologue): Likewise. - (nds32_asm_function_epilogue): Likewise. - * config/nios2/nios2.c (nios2_asm_function_prologue): Likewise. - * config/pa/pa.c (pa_output_function_prologue): Likewise. - (pa_output_function_epilogue): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_output_function_prologue) - (rs6000_output_function_epilogue): Likewise. - * config/rl78/rl78.c (rl78_start_function): Likewise. - * config/rs6000/rs6000.c (rs6000_output_function_prologue): Likewise. - (rs6000_output_function_epilogue): Likewise. - * config/rx/rx.c (rx_output_function_prologue): Likewise. - * config/sh/sh.c (sh_output_function_epilogue): Likewise. - * config/sparc/sparc.c (sparc_asm_function_prologue): Likewise. - (sparc_asm_function_epilogue): Likewise. - -2017-08-21 Richard Sandiford - - * tree.h (type_has_mode_precision_p): New function. - * convert.c (convert_to_integer_1): Use it. - * expr.c (expand_expr_real_2): Likewise. - (expand_expr_real_1): Likewise. - * fold-const.c (fold_single_bit_test_into_sign_test): Likewise. - * match.pd: Likewise. - * tree-ssa-forwprop.c (simplify_rotate): Likewise. - * tree-ssa-math-opts.c (convert_mult_to_fma): Likewise. - * tree-tailcall.c (process_assignment): Likewise. - * tree-vect-loop.c (vectorizable_reduction): Likewise. - * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern) - (vect_recog_mult_pattern, vect_recog_divmod_pattern): Likewise. - * tree-vect-stmts.c (vectorizable_conversion): Likewise. - (vectorizable_assignment): Likewise. - (vectorizable_shift): Likewise. - (vectorizable_operation): Likewise. - * tree-vrp.c (register_edge_assert_for_2): Likewise. - -2017-08-21 Wilco Dijkstra - - * match.pd: Add pow (C, x) simplification. - -2017-08-21 Richard Biener - - PR tree-optimization/81900 - * tree-ssa-pre.c (compute_antic_aux): Properly compute changed - for blocks with abnormal predecessors. - (compute_antic): Do not set visited flag prematurely. - -2017-08-21 Georg-Johann Lay - - PR target/79883 - * config/avr/avr.c (avr_set_current_function): Typo in diagnostic. - -2017-08-21 Richard Sandiford - - * stor-layout.h (vector_type_mode): Move to... - * tree.h (vector_type_mode): ...here. - * stor-layout.c (vector_type_mode): Move to... - * tree.c (vector_type_mode): ...here. Include rtl.h and regs.h. - -2017-08-21 Richard Biener - - * debug.h (struct gcc_debug_hooks): Add die_ref_for_decl and - register_external_die hooks. - (debug_false_tree_charstarstar_uhwistar): Declare. - (debug_nothing_tree_charstar_uhwi): Likewise. - * debug.c (do_nothing_debug_hooks): Adjust. - (debug_false_tree_charstarstar_uhwistar): New do nothing. - (debug_nothing_tree_charstar_uhwi): Likewise. - * dbxout.c (dbx_debug_hooks): Adjust. - (xcoff_debug_hooks): Likewise. - * sdbout.c (sdb_debug_hooks): Likewise. - * vmsdbgout.c (vmsdbg_debug_hooks): Likewise. - * dwarf2out.c (macinfo_label_base): New global. - (dwarf2out_register_external_die): New function for the - register_external_die hook. - (dwarf2out_die_ref_for_decl): Likewise for die_ref_for_decl. - (dwarf2_debug_hooks): Use them. - (dwarf2_lineno_debug_hooks): Adjust. - (struct die_struct): Add with_offset flag. - (DEBUG_LTO_DWO_INFO_SECTION, DEBUG_LTO_INFO_SECTION, - DEBUG_LTO_DWO_ABBREV_SECTION, DEBUG_LTO_ABBREV_SECTION, - DEBUG_LTO_DWO_MACINFO_SECTION, DEBUG_LTO_MACINFO_SECTION, - DEBUG_LTO_DWO_MACRO_SECTION, DEBUG_LTO_MACRO_SECTION, - DEBUG_LTO_LINE_SECTION, DEBUG_LTO_DWO_STR_OFFSETS_SECTION, - DEBUG_LTO_STR_DWO_SECTION, DEBUG_STR_LTO_SECTION): New macros - defining section names for the early LTO debug variants. - (reset_indirect_string): New helper. - (add_AT_external_die_ref): Helper for dwarf2out_register_external_die. - (print_dw_val): Add support for offsetted symbol references. - (get_ultimate_context): Split out from is_cxx. - (is_cxx): Use get_ultimate_context. - (is_fortran): Add decl overload. - (compute_comp_unit_symbol): Split out worker from - compute_section_prefix. - (compute_section_prefix): Call compute_comp_unit_symbol and - set comdat_type_p here. - (output_die): Skip DIE symbol output for the LTO added one. - Handle DIE symbol references with offset. - (output_comp_unit): Guard section name mangling properly. - For LTO debug sections emit a symbol at the section beginning - which we use to refer to its DIEs. - (add_abstract_origin_attribute): For DIEs registered via - dwarf2out_register_external_die directly refer to the early - DIE rather than indirectly through the shadow one we created. - Remove obsolete call to dwarf2out_abstract_function for - non-function/block origins. - (gen_array_type_die): When generating early LTO debug do - not emit DW_AT_string_length. - (gen_formal_parameter_die): Do not re-create DIEs for PARM_DECLs - late when in LTO. As suggested place a gcc_unreachable for - the DECL_ABSTRACT_P case. - (gen_subprogram_die): Avoid another specification DIE - for early built declarations/definitions for the late LTO case. - (gen_variable_die): Add type references for late duplicated VLA dies - when in late LTO. - (gen_inlined_subroutine_die): Do not call dwarf2out_abstract_function, - we have the abstract instance already. - (process_scope_var): Adjust decl DIE contexts in LTO which - first puts them in limbo. - (gen_decl_die): Do not generate type DIEs late apart from - types for VLAs or for decls we do not yet have a DIE. Do not - call dwarf2out_abstract_function late. - (dwarf2out_early_global_decl): Make sure to create DIEs - for abstract instances of a decl first. - (dwarf2out_late_global_decl): Adjust comment. - (output_macinfo_op): With multiple macro sections use - macinfo_label_base to distinguish labels. - (output_macinfo): Likewise. Update macinfo_label_base. - Pass in the line info label. - (note_variable_value_in_expr): When generating LTO resolve - all variable values here by generating DIEs as needed. - (init_sections_and_labels): Add early LTO debug flag parameter - and generate different sections and names if set. Add generation - counter for the labels so we can have multiple of them. - (reset_dies): Helper to allow DIEs to be output multiple times. - (dwarf2out_finish): When outputting DIEs to the fat part of an - LTO object first reset DIEs. - (dwarf2out_early_finish): Output early DIEs when generating LTO. - (modified_type_die): Check for decl_ultimate_origin being self - before recursing. - (gen_type_die_with_usage): Likewise. - (gen_typedef_die): Allow decl_ultimate_origin being self. - (set_decl_abstract_flags): Remove. - (set_block_abstract_flags): Likewise. - (dwarf2out_abstract_function): Treat the early generated DIEs - as the abstract copy and only add DW_AT_inline and - DW_AT_artificial here and call set_decl_origin_self. - If the DIE has an abstract origin don't do anything. - * tree.c (free_lang_data): Build a dummy TRANSLATION_UNIT_DECL - if we have none yet (Go fails to build one, PR78628). - (variably_modified_type_p): Prevent endless recursion for Ada - cyclic pointer types. - * lto-streamer-in.c: Include debug.h. - (dref_queue): New global. - (lto_read_tree_1): Stream in DIE references. - (lto_input_tree): Register DIE references. - (input_function): Stream DECL_DEBUG_ARGS. - * lto-streamer-out.c: Include debug.h. - (lto_write_tree_1): Output DIE references. - (DFS::DFS_write_tree_body): Follow DECL_ABSTRACT_ORIGIN. - Force a TRANSLATION_UNIT_DECL DECL_CONTEXT for file-scope decls. - (output_function): Stream DECL_DEBUG_ARGS. - * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers): - Stream DECL_ABSTRACT_ORIGIN. - * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise. - (write_ts_decl_minimal_tree_pointers): Force a TRANSLATION_UNIT_DECL - DECL_CONTEXT for file-scope decls. - * lto-streamer.h (struct dref_entry): Declare. - (dref_queue): Likewise. - * cfgexpand.c (pass_expand::execute): Do not call the - outlining_inline_function hook here. - * lto-wrapper.c (debug_obj): New global. - (tool_cleanup): Unlink it if required. - (debug_objcopy): New function. - (run_gcc): Handle early debug sections in the IL files by - extracting them to separate files, partially linkin them and - feeding the result back as result to the linker. - * config/darwin.h (DEBUG_LTO_INFO_SECTION, DEBUG_LTO_ABBREV_SECTION, - DEBUG_LTO_MACINFO_SECTION, DEBUG_LTO_LINE_SECTION, - DEBUG_STR_LTO_SECTION, DEBUG_LTO_MACRO_SECTION): Put early debug - sections into a separate segment. - * config/darwin.c (darwin_asm_named_section): Handle __GNU_DWARF_LTO - segments. - (darwin_asm_dwarf_section): Likewise. - (darwin_asm_output_dwarf_offset): Likewise. - * config/i386/i386.c (make_resolver_func): Set DECL_IGNORED_P. - -2017-08-21 Richard Sandiford - Alan Hayward - David Sherwood - - * read-md.h (md_reader::record_potential_iterator_use): Replace - pointer argument with an rtx and an index. - * read-rtl.c (iterator_group::apply_iterator): Likewise. - (apply_mode_iterator): Likewise. - (apply_code_iterator): Likewise. - (apply_int_iterator): Likewise. - (apply_subst_iterator): Likewise. - (record_iterator_use): Likewise. - (record_attribute_use): Likewise. - (md_reader::record_potential_iterator_use): Likewise. Update calls - to record_iterator_use and apply_iterator. - (iterator_use): Replace ptr with x and index. - (attribute_use): Likewise. - (apply_attribute_uses): Update calls to apply_iterator. - (apply_iterators): Likewise. Update initialization of iterator_use. - (rtx_reader::read_rtx_code): Update calls to record_iterator_use - and record_potential_iterator_use. - (rtx_reader::read_rtx_operand): Likewise. - -2017-08-21 Richard Sandiford - Alan Hayward - David Sherwood - - * varasm.c (const_rtx_hash_1): Don't hash in the mode of a - CONST_WIDE_INT. - -2017-08-21 Richard Biener - - PR middle-end/81884 - * tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses - at struct end conservatively when comparing common bases. - -2017-08-21 Richard Biener - - * tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member. - (mem_ref_in_stmt): Remove. - (determine_max_movement): Use ref index to get at the reference. - (invariantness_dom_walker::before_dom_children): Deal with - lim data already initialized. - (gather_mem_refs_stmt): Initialize lim data and record ref index. - -2017-08-19 Uros Bizjak - - * config/i386/i386.h (OPTION_MASK_ISA_ROUND): Remove. - (TARGET_ISA_ROUND): Ditto. - (TARGET_ROUND): Ditto. - * config/i386/i386.c: Substitute TARGET_ROUND with TARGET_SSE4_1. - * config/i386/i386.md: Ditto. - * config/i386/sse.md: Ditto. - * config/i386/i386-builtin.def: Substitute OPTION_MASK_ISA_ROUND - with OPTION_MASK_ISA_SSE4_1. - -2017-08-19 Uros Bizjak - - PR target/81894 - * doc/extend.texi (x86 Built-in Functions): Correct the name of - __builtin_ia32_lzcnt_u16. - -2017-08-18 Peter Bergner - - PR target/80210 - * config/rs6000/rs6000.c (rs6000_activate_target_options): New function. - (rs6000_set_current_function): Rewrite function to use it. - -2017-08-18 H.J. Lu - - PR c/53037 - * print-tree.c (print_node): Support DECL_WARN_IF_NOT_ALIGN - and TYPE_WARN_IF_NOT_ALIGN. - * stor-layout.c (do_type_align): Merge DECL_WARN_IF_NOT_ALIGN. - (handle_warn_if_not_align): New. - (place_union_field): Call handle_warn_if_not_align. - (place_field): Call handle_warn_if_not_align. - Copy TYPE_WARN_IF_NOT_ALIGN. - (finish_builtin_struct): Copy TYPE_WARN_IF_NOT_ALIGN. - (layout_type): Likewise. - * tree-core.h (tree_type_common): Add warn_if_not_align. Set - spare to 18. - (tree_decl_common): Add warn_if_not_align. - * tree.c (build_range_type_1): Copy TYPE_WARN_IF_NOT_ALIGN. - * tree.h (TYPE_WARN_IF_NOT_ALIGN): New. - (SET_TYPE_WARN_IF_NOT_ALIGN): Likewise. - (DECL_WARN_IF_NOT_ALIGN): Likewise. - (SET_DECL_WARN_IF_NOT_ALIGN): Likewise. - * doc/extend.texi: Document warn_if_not_aligned attribute. - * doc/invoke.texi: Document -Wif-not-aligned and -Wpacked-not-aligned. - -2017-08-17 Martin Liska - - PR bootstrap/81864 - * tree-loop-distribution.c (ddrs_table): Change type to pointer type. - (get_data_dependence): Use it as pointer type. - (distribute_loop): Likewise. - -2017-08-17 Bill Schmidt - - * config/rs6000/altivec.md (UNSPEC_VMRGOW_DIRECT): New constant. - (p8_vmrgew_v4sf_direct): Generalize to p8_vmrgew__direct. - (p8_vmrgow__direct): New define_insn. - * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Properly - handle endianness for vmrgew and vmrgow permute patterns. - -2017-08-17 Peter Bergner - - * config/rs6000/altivec.md (VParity): Remove TARGET_VSX_TIMODE. - * config/rs6000/rs6000-cpus.def: Remove comment. - (ISA_2_7_MASKS_SERVER): Delete OPTION_MASK_VSX_TIMODE; - (POWERPC_MASKS): Likewise. - * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Remove unneeded - use of TARGET_VSX_TIMODE. - (rs6000_setup_reg_addr_masks): Change TARGET_VSX_TIMODE to TARGET_VSX. - (rs6000_init_hard_regno_mode_ok): Remove unneeded uses of - TARGET_VSX_TIMODE. Change use of TARGET_VSX_TIMODE to TARGET_VSX. - (rs6000_option_override_internal): Remove dead code. - (rs6000_legitimize_address): Change TARGET_VSX_TIMODE to TARGET_VSX. - (rs6000_legitimize_reload_address): Likewise. - (rs6000_legitimate_address_p): Likewise. - (rs6000_opt_masks): Delete "vsx-timode". - (rs6000_disable_incompatible_switches): Remove mention of -mvsx-timode - from function comment. - * config/rs6000/rs6000.h (MASK_VSX_TIMODE): Delete. - * config/rs6000/rs6000.md (FMOVE128_GPR): Remove TARGET_VSX_TIMODE. - (V16QI, V8HI, V4SI, V4SF, V2DI, V2DF, V1TI): Remove useless empty - condition. - * config/rs6000/rs6000.opt (mvsx-timode): Replace with stub. - * config/rs6000/vector.md (VEC_IP): Remove TARGET_VSX_TIMODE. - * config/rs6000/vsx.md (VSX_LE_128): Likewise. - (VSX_TI): Likewise. - (VSX_M): Likewise. - (define_peephole2): Likewise. - -2017-08-17 Martin Sebor - - PR c/81859 - * pretty-print.c (pp_format): Use strnlen in %.*s to avoid reading - past the end of an array. - (test_pp_format): Add test cases. - -2017-08-17 Richard Sandiford - - * internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): Add - missing ECF_NOTHROW flags. - -2017-08-17 Peter Bergner - - PR target/72804 - * config/rs6000/vsx.md (*vsx_le_permute_): Add support for - operands residing in integer registers. - (*vsx_le_perm_load_): Likewise. - (*vsx_le_perm_store_): Likewise. - (define_peephole2): Add peepholes to optimize the above. - -2017-08-17 Marek Polacek - - PR middle-end/81814 - * fold-const.c (operand_equal_for_comparison_p): Remove code that used - to mimic what shorten_compare did. Change the return type to bool. - (fold_cond_expr_with_comparison): Update call to - operand_equal_for_comparison_p. - (fold_ternary_loc): Likewise. - -2017-08-17 Jackson Woodruff - - * aarch64-simd.md (mov): No longer force zero immediate into - register. - (*aarch64_simd_mov): Add new case for stp using zero immediate. - -2017-08-17 Richard Biener - - * tree-ssa-structalias.c (solve_graph): When propagating - to successors update the graphs succ edges and avoid duplicate work. - -2017-08-17 Maxim Ostapenko - - PR target/81861 - * config/i386/i386.c (ix86_option_override_internal): Save target - specific options after ix86_stack_protector_guard_reg was changed. - -2017-08-17 Richard Biener - - PR tree-optimization/81827 - * tree-ssa-structalias.c (struct variable_info): Add is_reg_var flag. - (new_var_info): Initialize it conservatively. - (get_call_vi): Mark register vars. - (new_scalar_tmp_constraint_exp): Likewise. - (handle_rhs_call): Likewise. - (handle_const_call): Likewise. - (create_function_info_for): Likewise. - (solve_constraints): Sort varinfos to separate register from - non-register vars to pack points-to solution bitmaps during - iteration. - -2017-08-17 Marek Polacek - - * gimplify.c (gimplify_adjust_omp_clauses): Compare with 0 instead of 1. - -2017-08-17 Richard Biener - - * tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p - to true when overflow is undefined and we saturated the result. - -2017-08-17 Alan Modra - - PR target/80938 - * config/rs6000/rs6000.c (rs6000_savres_strategy): Revert 2017-08-09. - Don't use store multiple if only one reg needs saving. - (interesting_frame_related_regno): New function. - (rs6000_frame_related): Don't emit frame info for regs that - don't need saving. - (rs6000_emit_epilogue): Likewise. - -2017-08-16 Nathan Sidwell - - * tree-core.h (tree_type_non_common): Rename binfo to lang_1. - * tree.h (TYPE_BINFO): Use type_non_common.maxval. - (TYPE_LANG_SLOT_1): Use type_non_common.lang_1, for any type. - * tree.c (free_lang_data_in_type): Use else-if chain. Always - clear TYPE_LANG_1. Remove obsolete member-function stripping. - (find_decls_types_r): Comment about TYPE_MAX_VALUES_RAW. - (verify_type): Adjust for TYPE_BINFO move. - * lto-streamer-out.c (DFS::DFS_write_tree_body): No need to - process TYPE_BINFO directly. - (hash_tree): Likewise. - * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers): - Likewise. - * tree-streamer-out.c (write_ts_type_non_common_tree_pointers): - Likewise. - -2017-08-16 David Malcolm - - * diagnostic-show-locus.c (colorizer::m_caret): Remove unused field. - -2017-08-16 Uros Bizjak - - PR target/46091 - * config/i386/i386.md (*anddi_1_btr): Change predicates of - operand 0 and operand 1 to nomimmediate_operand. Add "m" constraint. - Add ix86_binary_operator_ok to insn constraint. - (*iordi_1_bts): Ditto. - (*xordi_1_btc): Ditto. - (*btsq): Change predicate of operand 0 to nonimmediate_operand. - Update corresponding peephole2 pattern. - (*btrq): Ditto. - (*btcq): Ditto. - -2017-08-16 Bin Cheng - - PR tree-optimization/81832 - * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Don't - copy loop header which has IFN_LOOP_DIST_ALIAS call. - -2017-08-16 Marek Polacek - - PR middle/81695 - * fold-const.c (fold_indirect_ref_1): Restore original behavior - regarding size_zero_node. - -2017-08-16 Martin Liska - - PR target/81753 - * config.gcc: Respect previously set extra_objs in case - of darwin target. - -2017-08-16 Richard Sandiford - - PR tree-optimization/81835 - * tree-vect-loop.c (vect_is_simple_reduction): Simply checks for - the phi SSA_NAME. Check that the condition in a COND_EXPR does - not depend on the phi. - -2017-08-16 Alan Modra - - * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Delete - dead code. - -2017-08-16 Alan Modra - - * config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Merge.. - (save_reg_p): ..into this. Update all callers. - (first_reg_to_save): Simplify. - -2017-08-16 Alan Modra - - * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't restore - fixed regs. - -2017-08-15 Joseph Myers - - PR target/78460 - PR target/67712 - * config/sh/sh-mem.cc (sh_expand_cmpnstr): Only unroll for - constant count if that count is less than 32. - -2017-08-15 Nathan Sidwell - - * gcc.c (execute): Emit friendlier message if inferior is killed - by an external cause. - -2017-08-15 Richard Biener - - PR tree-optimization/81790 - * tree-ssa-sccvn.c (vn_lookup_simplify_result): Handle both - CONSTRUCTORs from simplifying and VN. - -2017-08-14 Martin Sebor - - * builtin-attrs.def: Add comments. - -2017-08-14 Martin Sebor - - PR c/81117 - * doc/extend.texi (attribute nonstring): Document new attribute. - -2017-08-14 Martin Sebor - - PR c/81117 - * tree-diagnostic.c (default_tree_printer): Handle %G. - * gimple-pretty-print.h (percent_G_format): Declare new function. - * gimple-pretty-print.c (percent_G_format): Define. - * tree-pretty-print.c (percent_K_format): Add argument. - -2017-08-14 Martin Sebor - - PR translation/79998 - * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): - Remove a stray space. - -2017-08-14 Uros Bizjak - - PR target/46091 - * config/i386/i386.md (*anddi_1_btr): New insn_and_split pattern. - (*iordi_1_bts): Ditto. - (*xordi_1_btc): Ditto. - -2017-08-14 Bill Schmidt - - PR target/79845 - * config/rs6000/linux64.h (INVALID_64BIT): Use quoted strings. - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Likewise. - * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Use - quoted strings, and make more translator-friendly. - (darwin_rs6000_override_options): Likewise. - (rs6000_option_override_internal): Likewise. - (rs6000_return_in_memory): Fix overlong line. - (init_cmulative_args): Use quoted strings, and make more - translator-friendly. - (rs6000_pass_by_reference): Fix overlong line. - (def_builtin): Use quoted strings. - (altivec_expand_predicate_builtin): Use quoted strings, and make - more translator-friendly. - (htm_expand_builtin): Use quoted strings. - (cpu_expand_builtin): Use quoted strings, and make more - translator-friendly. - (altivec_expand_builtin): Likewise. - (paired_expand_predicate_builtin): Likewise. - (rs6000_invalid_builtin): Likewise. - (builtin_function_type): Use quoted strings. - (rs6000_expand_split_stack_prologue): Use quoted strings, and make - more translator-friendly. - (rs6000_trampoline_init): Likewise. - (rs6000_handle_altivec_attribute): Likewise. - (rs6000_inner_target_options): Use quoted strings. - (rs6000_disable_incompatible_switches): Likewise. - * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Use quoted - strings, and make more translator-friendly. - (SUBSUBTARGET_OVERRIDE_OPTIONS): Use quoted strings. - -2017-08-14 Bin Cheng - - PR tree-optimization/81799 - * tree-loop-distribution.c (version_loop_by_alias_check): Force - cond_expr to simple gimple operand. - -2017-08-14 Wilco Dijkstra - - PR middle-end/46932 - * doc/sourcebuild.texi (autoincdec): Add autoincdec description. - -2017-08-14 Georg-Johann Lay - - PR target/81754 - PR target/81268 - * config/avr/avr.opt (mgas-isr-prologues): New Var avr_gasisr_prologues. - * config/avr/avr.md (gasisr, *gasisr): Use it instead of - TARGET_GASISR_PROLOGUES. - * config/avr/avr.c (avr_option_override): Same. - (avr_pass_pre_proep::execute): Same. - -2017-08-13 H.J. Lu - - PR target/81820 - * config/i386/i386.c (ix86_finalize_stack_frame_flags): Replace - frame pointer with stack pointer - UNITS_PER_WORD in debug insns. - -2017-08-13 Uros Bizjak - - * config/i386/i386.md (*load_tp_): Redefine as - define_insn_and_split. Split to a memory load from 0 in - DEFAULT_TLS_SEG_REG address space. Merge with *load_tp_x32 - using PTR mode iterator. - (*load_tp_x32_zext"): Redefine as define_insn_and_split. - Split to a memory load from 0 in DEFAULT_TLS_SEG_REG address space. - (*add_tp_): Redefine as define_insn_and_split. - Split to an add with a memory load from 0 in DEFAULT_TLS_SEG_REG - address space. Merge with *add_tp_x32 using PTR mode iterator. - (*add_tp_x32_zext"): Redefine as define_insn_and_split. - Split to an add with a memory load from 0 in - DEFAULT_TLS_SEG_REG address space. - -2017-08-12 Andrew Pinski - - * config/aarch64/aarch64-option-extensions.def (rdma): - Fix feature string to what Linux prints out in /proc/cpuinfo. - -2017-08-12 Pierre-Marie de Rodat - - PR ada/79542 - * dwarf2out.c (modified_type_die): For C typedef types that have - an ultimate origin, process the ultimate origin instead of the - input type. - (gen_typedef_die): Assert that input DECLs have no ultimate - origin. - (gen_type_die_with_usage): For typedef variants that have an - ultimate origin, just call gen_decl_die on the original DECL. - (process_scope_var): Avoid creating DIEs for local typedefs and - concrete static variables. - -2017-08-12 Alan Modra - - PR target/81170 - PR target/81295 - * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Upgrade to - match gnu-user.h startfile. - (ENDFILE_LINUX_SPEC): Similarly. - -2017-08-11 Thomas Schwinge - - PR lto/81430 - * config/nvptx/nvptx.c (nvptx_override_options_after_change): - Remove function. - (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Remove definition. - -2017-08-11 Tamar Christina - * config/aarch64/aarch64.md (mov): Change. - (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64): - aarch64_reg_or_fp_float into aarch64_reg_or_fp_zero. - * config/aarch64/predicates.md (aarch64_reg_or_fp_float): Removed. - -2017-08-11 Eric Botcazou - - * tree-sra.c (build_access_from_expr_1): Use more precise diagnostics - for storage order barriers. - -2017-08-11 Martin Liska - - PR tree-opt/79987 - * tree-chkp.c (chkp_get_bounds_for_decl_addr): Do not instrument - variables of void type. - -2017-08-11 Martin Liska - - * asan.c (asan_protect_global): Replace ASM_OUTPUT_DEF with - TARGET_SUPPORTS_ALIASES. - * cgraph.c (cgraph_node::create_same_body_alias): Likewise. - * ipa-visibility.c (can_replace_by_local_alias): Likewise. - (optimize_weakref): Likewise. - * symtab.c (symtab_node::noninterposable_alias): Likewise. - * varpool.c (varpool_node::create_extra_name_alias): Likewise. - * defaults.h: Introduce TARGET_SUPPORTS_ALIASES. - -2017-08-11 Martin Liska - - PR ipa/81213 - * config/i386/i386.c (make_resolver_func): Do complete - refactoring of the function. - -2017-08-10 Uros Bizjak - - PR target/81708 - * config/i386/i386.opt (mstack-protector-guard-symbol=): New option - * config/i386/i386.c (ix86_stack_protect_guard): Use - ix86_stack_protect_guard_symbol_str to generate varible declaration. - * doc/invoke.texi (x86 Options): Document - -mstack-protector-guard-symbol= option. - -2017-08-10 Uros Bizjak - - * config/i386/i386-protos.h (ix86_split_stack_guard): New prototype. - * config/i386/i386.c (ix86_split_stack_guard): New function. - (ix86_xpand_split_stack_prologue): Call ix86_split_stack_guard. - (ix86_legitimate_address_p) : Remove. - (i386_asm_output_addr_const_extra) : Ditto. - (optput_pic_addr_const): Remove UNSPEC_STACK_CHECK handling. - * config/i386/i386.md (unspec): Remove UNSPEC_STACK_CHECK. - (split_stack_space_check): Call ix86_split_stack_guard. - -2017-08-10 Martin Sebor - - * print-tree.c (print_node): Print location using the established - format %s:%i%i. - Replace spaces with colons. - (debug_raw, debug): Ditto. - -2017-08-10 Martin Sebor - - PR c++/81586 - * pretty-print.c (pp_format): Correct the handling of %s precision. - -2017-08-10 H.J. Lu - - PR target/81736 - * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed - to ... - (ix86_finalize_stack_frame_flags): This. Also clear - frame_pointer_needed if -fno-omit-frame-pointer is used without - stack access. - (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags - with ix86_finalize_stack_frame_flags. - (ix86_expand_epilogue): Likewise. - (ix86_expand_split_stack_prologue): Likewise. - * doc/invoke.texi: Add a note for -fno-omit-frame-pointer. - -2017-08-10 Martin Liska - - PR c++/81355 - * c-attribs.c (handle_target_attribute): - Report warning for an empty string argument of target attribute. - -2017-08-09 Jakub Jelinek - - PR c/81687 - * omp-low.c (omp_copy_decl): Don't remap FORCED_LABEL or DECL_NONLOCAL - LABEL_DECLs. - * tree-cfg.c (move_stmt_op): Don't adjust DECL_CONTEXT of FORCED_LABEL - or DECL_NONLOCAL labels. - (move_stmt_r) : Adjust DECL_CONTEXT of FORCED_LABEL - or DECL_NONLOCAL labels here. - -2017-08-09 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Add blurb - to indicate when early gimple folding has been disabled. - (rs6000_gimple_fold_builtin): Add debug content. - (rs6000_invalid_builtin): Fix whitespace. - (rs6000_expand_builtin): Fix whitespace. - * config/rs6000/rs6000.opt: Add option for -mfold-gimple. - -2017-08-09 Segher Boessenkool - - PR target/80938 - * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't use - SAVE_MULTIPLE if not all the registers that saves, should be saved. - -2017-08-09 Jim Wilson - - * config/aarch64/aarch64-cores.def (falkor): Use falkor pipeline. - (qdf24xx): Likewise. - * config/aarch64/aarch64.md: Include falkor.md. - * config/aarch64/falkor.md: New. - -2017-08-09 Marek Polacek - - PR c/81233 - * diagnostic-core.h (emit_diagnostic_valist): Add declaration. - * diagnostic.c (emit_diagnostic): Add a comment. - (emit_diagnostic_valist): New function. - -2017-08-09 Marek Polacek - - PR c/81417 - * input.c (make_location): New overload. - * input.h (make_location): Declare. - -2017-08-08 Alan Modra - H.J. Lu - - PR driver/81523 - * gcc.c (NO_PIE_SPEC): Delete. - (PIE_SPEC): Define as !no-pie/pie. Move static|shared|r - exclusion.. - (LINK_PIE_SPEC): ..to here. - (LINK_COMMAND_SPEC): Support -no-pie. - * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Correct - chain of crtbegin*.o selection, update for PIE_SPEC changes and - format. - (GNU_USER_TARGET_ENDFILE_SPEC): Similarly. - * config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Similarly. - (ENDFILE_CRTEND_SPEC): Similarly. - -2017-08-08 Uros Bizjak - - PR target/81708 - * config/i386/i386.opt (mstack-protector-guard-reg=): New option - (mstack-protector-guard-offset=): Ditto. - * config/i386/i386.c (ix86_option_override): Handle - -mstack-protector-guard-reg= and -mstack-protector-guard-offset= - options. - (ix86_stack_protect_guard): Use ix86_stack_protect_guard_reg and - ix86_stack_protect_guard_offset variables. - (TARGET_STACK_PROTECT_GUARD): Always define. - * doc/invoke.texi (x86 Options): Document -mstack-protector-guard-reg= - and -mstack-protector-guard-offset= options. - -2017-08-08 Bin Cheng - - * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): Handle - boundary case for the last candidate. - -2017-08-08 Bin Cheng - - * doc/invoke.texi: Document -ftree-loop-distribution for O3. - * opts.c (default_options_table): Add OPT_ftree_loop_distribution. - -2017-08-08 Tamar Christina - - PR middle-end/19706 - * config/aarch64/aarch64.md (xorsign3): New optabs. - * config/aarch64/aarch64-builtins.c - (aarch64_builtin_vectorized_function): Added CASE_CFN_XORSIGN. - * config/aarch64/aarch64-simd-builtins.def: Added xorsign BINOP. - * config/aarch64/aarch64-simd.md: Added xorsign3 - -2017-08-08 Tamar Christina - Andrew Pinski - - PR middle-end/19706 - * internal-fn.def (XORSIGN): New. - * optabs.def (xorsign_optab): New. - * tree-ssa-math-opts.c (is_copysign_call_with_1): New. - (convert_expand_mult_copysign): New. - (pass_optimize_widening_mul::execute): Call - convert_expand_mult_copysign. - -2017-08-08 Bill Schmidt - - PR tree-optimization/81354 - * gimple-ssa-strength-reduction.c (create_add_on_incoming_edge): - Insert on edges rather than explicitly creating landing pads. - (analyze_candidates_and_replace): Commit edge inserts. - -2017-08-08 Richard Biener - - PR middle-end/81719 - * tree-ssa-loop-niter.c: Include tree-dfa.h. - (expand_simple_operations): Also look through ADDR_EXPRs with - MEM_REF bases treating them as POINTER_PLUS_EXPR. - -2017-08-08 Richard Biener - - PR tree-optimization/81723 - * tree-vect-slp.c (struct bst_traits): New hash traits. - (bst_fail): New global. - (vect_build_slp_tree_2): New worker, split out from ... - (vect_build_slp_tree): ... this now wrapping it with using - bst_fail set to cache SLP tree build fails. Properly handle - max_tree_size. - (vect_analyze_slp_instance): Allocate and free bst_fail. - -2017-08-08 Martin Liska - - PR tree-opt/81696 - * ipa-icf-gimple.c (func_checker::compare_cst_or_decl): Consider - LABEL_DECLs that can be from a different function. - -2017-08-08 Bin Cheng - - PR tree-optimization/81744 - * tree-predcom.c (prepare_finalizers_chain): Deep copy expr of - loop's number of iterations. - -2017-08-08 Martin Liska - - * asan.c: Include header files. - * attribs.c (build_decl_attribute_variant): New function moved - from tree.[ch]. - (build_type_attribute_qual_variant): Likewise. - (cmp_attrib_identifiers): Likewise. - (simple_cst_list_equal): Likewise. - (omp_declare_simd_clauses_equal): Likewise. - (attribute_value_equal): Likewise. - (comp_type_attributes): Likewise. - (build_type_attribute_variant): Likewise. - (lookup_ident_attribute): Likewise. - (remove_attribute): Likewise. - (merge_attributes): Likewise. - (merge_type_attributes): Likewise. - (merge_decl_attributes): Likewise. - (merge_dllimport_decl_attributes): Likewise. - (handle_dll_attribute): Likewise. - (attribute_list_equal): Likewise. - (attribute_list_contained): Likewise. - * attribs.h (lookup_attribute): New function moved from tree.[ch]. - (lookup_attribute_by_prefix): Likewise. - * bb-reorder.c: Include header files. - * builtins.c: Likewise. - * calls.c: Likewise. - * cfgexpand.c: Likewise. - * cgraph.c: Likewise. - * cgraphunit.c: Likewise. - * convert.c: Likewise. - * dwarf2out.c: Likewise. - * final.c: Likewise. - * fold-const.c: Likewise. - * function.c: Likewise. - * gimple-expr.c: Likewise. - * gimple-fold.c: Likewise. - * gimple-pretty-print.c: Likewise. - * gimple.c: Likewise. - * gimplify.c: Likewise. - * hsa-common.c: Likewise. - * hsa-gen.c: Likewise. - * internal-fn.c: Likewise. - * ipa-chkp.c: Likewise. - * ipa-cp.c: Likewise. - * ipa-devirt.c: Likewise. - * ipa-fnsummary.c: Likewise. - * ipa-inline.c: Likewise. - * ipa-visibility.c: Likewise. - * ipa.c: Likewise. - * lto-cgraph.c: Likewise. - * omp-expand.c: Likewise. - * omp-general.c: Likewise. - * omp-low.c: Likewise. - * omp-offload.c: Likewise. - * omp-simd-clone.c: Likewise. - * opts-global.c: Likewise. - * passes.c: Likewise. - * predict.c: Likewise. - * sancov.c: Likewise. - * sanopt.c: Likewise. - * symtab.c: Likewise. - * toplev.c: Likewise. - * trans-mem.c: Likewise. - * tree-chkp.c: Likewise. - * tree-eh.c: Likewise. - * tree-into-ssa.c: Likewise. - * tree-object-size.c: Likewise. - * tree-parloops.c: Likewise. - * tree-profile.c: Likewise. - * tree-ssa-ccp.c: Likewise. - * tree-ssa-live.c: Likewise. - * tree-ssa-loop.c: Likewise. - * tree-ssa-sccvn.c: Likewise. - * tree-ssa-structalias.c: Likewise. - * tree-ssa.c: Likewise. - * tree-streamer-in.c: Likewise. - * tree-vectorizer.c: Likewise. - * tree-vrp.c: Likewise. - * tsan.c: Likewise. - * ubsan.c: Likewise. - * varasm.c: Likewise. - * varpool.c: Likewise. - * tree.c: Remove functions moved to attribs.[ch]. - * tree.h: Likewise. - * config/aarch64/aarch64.c: Add attrs.h header file. - * config/alpha/alpha.c: Likewise. - * config/arc/arc.c: Likewise. - * config/arm/arm.c: Likewise. - * config/avr/avr.c: Likewise. - * config/bfin/bfin.c: Likewise. - * config/c6x/c6x.c: Likewise. - * config/cr16/cr16.c: Likewise. - * config/cris/cris.c: Likewise. - * config/darwin.c: Likewise. - * config/epiphany/epiphany.c: Likewise. - * config/fr30/fr30.c: Likewise. - * config/frv/frv.c: Likewise. - * config/ft32/ft32.c: Likewise. - * config/h8300/h8300.c: Likewise. - * config/i386/winnt.c: Likewise. - * config/ia64/ia64.c: Likewise. - * config/iq2000/iq2000.c: Likewise. - * config/lm32/lm32.c: Likewise. - * config/m32c/m32c.c: Likewise. - * config/m32r/m32r.c: Likewise. - * config/m68k/m68k.c: Likewise. - * config/mcore/mcore.c: Likewise. - * config/microblaze/microblaze.c: Likewise. - * config/mips/mips.c: Likewise. - * config/mmix/mmix.c: Likewise. - * config/mn10300/mn10300.c: Likewise. - * config/moxie/moxie.c: Likewise. - * config/msp430/msp430.c: Likewise. - * config/nds32/nds32-isr.c: Likewise. - * config/nds32/nds32.c: Likewise. - * config/nios2/nios2.c: Likewise. - * config/nvptx/nvptx.c: Likewise. - * config/pa/pa.c: Likewise. - * config/pdp11/pdp11.c: Likewise. - * config/powerpcspe/powerpcspe.c: Likewise. - * config/riscv/riscv.c: Likewise. - * config/rl78/rl78.c: Likewise. - * config/rx/rx.c: Likewise. - * config/s390/s390.c: Likewise. - * config/sh/sh.c: Likewise. - * config/sol2.c: Likewise. - * config/sparc/sparc.c: Likewise. - * config/spu/spu.c: Likewise. - * config/stormy16/stormy16.c: Likewise. - * config/tilegx/tilegx.c: Likewise. - * config/tilepro/tilepro.c: Likewise. - * config/v850/v850.c: Likewise. - * config/vax/vax.c: Likewise. - * config/visium/visium.c: Likewise. - * config/xtensa/xtensa.c: Likewise. - -2017-08-07 Michael Meissner - - PR target/81593 - * config/rs6000/vsx.md (vsx_concat_, VSX_D): Cleanup - constraints since the -mupper-regs-* switches have been - eliminated. - (vsx_concat__1): New combiner insns to recognize inserting - into a vector from a double word element that was extracted from - another vector, and eliminate extra XXPERMDI instructions. - (vsx_concat__2): Likewise. - (vsx_concat__3): Likewise. - (vsx_set_, VSX_D): Rewrite vector set in terms of vector - concat to allow optimizing inserts from previous extracts. - -2017-08-07 Uros Bizjak - - * config/i386/i386.c (ix86_stack_protect_guard): Generate - memory reference to a SSP offset in TLS address space. - (ix86_print_operand) : Remove. - (ix86_print_operand_punct_valid_p): Remove '@' code. - * config/i386/i386.md (unspec): Remove UNSPEC_SP_TLS_SET and - UNSPEC_SP_TLS_TEST. - (stack_tls_protect_set_): Remove. - (stack_protect_set): Do not call gen_stack_tls_protect_set_. - (stack_tls_protect_test_): Remove. - (stack_protect_test): Do not call gen_stack_tls_protect_test_. - -2017-08-07 Olivier Hainque - - PR target/81755 - * config/vxworksae.h (VXWORKS_HAVE_TLS): Define. - -2017-08-07 Douglas Rupp - - * Makefile.in (install-mkheaders): Fix typo, where the multi_dir - variable was referenced as multidir in command. - -2017-08-07 Jakub Jelinek - - PR c/69389 - * gimplify.c (goa_stabilize_expr): Handle BIT_INSERT_EXPR and - BIT_FIELD_REF. - -2017-08-07 Martin Liska - - * config/m32c/m32c.c: Add include of stringpool.h and attribs.h. - * config/rl78/rl78.c: Add include of attribs.h. - * config/sh/sh.c: Likewise. - * config/v850/v850.c: Likewise. - -2017-08-07 Tom de Vries - - PR middle-end/78266 - * omp-expand.c (expand_oacc_for): Ensure diff_type is large enough. - -2017-08-07 Martin Liska - - * config/mips/mips.c: Include attribs.h. - -2017-08-07 Thomas Koenig - - PR fortran/68829 - * doc/invoke.texi: Document change in behvaior for -Ofast for - Fortran. - -2017-08-07 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_pushwb_single_reg): - Use gen_frame_mem. - (aarch64_pop_regs): Likewise. - (aarch64_gen_load_pair): Likewise. - (aarch64_save_callee_saves): Likewise. - (aarch64_restore_callee_saves): Likewise. - -2017-08-07 H.J. Lu - - * config/i386/i386.c: Revert the last change. - -2017-08-07 H.J. Lu - - PR target/81736 - * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed - to ... - (ix86_finalize_stack_frame_flags): This. Also clear - frame_pointer_needed if -fno-omit-frame-pointer is used without - stack access. - (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags - with ix86_finalize_stack_frame_flags. - (ix86_expand_epilogue): Likewise. - (ix86_expand_split_stack_prologue): Likewise. - -2017-08-07 H.J. Lu - - PR target/81743 - * config/i386/i386.c (get_builtin_code_for_version): Set priority - to P_AES for Westmere. - -2017-08-07 Jonathan Yong <10walls@gmail.com> - - * config/i386/mingw.opt (fset-stack-executable): Removed. - * config/i386/cygming.opt (fset-stack-executable): Moved - from mingw.opt. - * config/i386/cygwin.h: Define CHECK_EXECUTE_STACK_ENABLED. - -2017-08-07 Segher Boessenkool - - * print-rtl.c (print_exp): Print NOT as "~" instead of as "!". - -2017-08-07 Marek Polacek - - PR middle-end/81737 - * fold-const.c (fold_indirect_ref_1): Check type_domain. - -2017-08-07 Martin Liska - - * attribs.h (canonicalize_attr_name): New function. - (cmp_attribs): Move from c-format.c and adjusted. - (is_attribute_p): Moved from tree.h. - * tree-inline.c: Add new includes. - * tree.c (cmp_attrib_identifiers): Use cmp_attribs. - (private_is_attribute_p): Remove. - (private_lookup_attribute): Likewise. - (private_lookup_attribute_by_prefix): Simplify. - (remove_attribute): Use is_attribute_p. - * tree.h: Remove removed declarations. - -2017-08-07 Jakub Jelinek - - PR middle-end/81698 - * stmt.c (emit_case_dispatch_table): Add DEFAULT_EDGE argument, - instead of computing it in the function. Formatting fix. - (expand_case): Don't rely on default_edge being the first edge, - clear it if removing it, pass default_edge to - emit_case_dispatch_table. - (expand_sjlj_dispatch_table): Pass NULL as DEFAULT_EDGE, formatting - fix. - -2017-08-06 Uros Bizjak - - * config/alpha/alpha.c (alpha_reorg): If trap is the last active - insn in the function, emit NOP after the insn. - -2017-08-06 Tom de Vries - - * omp-expand.c (expand_oacc_for): Add missing edge probability for tile - and element loops. - -2017-08-06 Tom de Vries - - * omp-expand.c (expand_oacc_for): Add missing edge probability for chunk - loop. - -2017-08-04 Yury Gribov - - PR tree-optimization/57371 - * match.pd: New pattern. - -2017-08-04 Marek Polacek - - PR middle-end/81695 - * fold-const.c (fold_indirect_ref_1): For ((int *)&a + 4 -> a[1], - perform the computation in offset_int. - -2017-08-04 Richard Sandiford - - PR tree-optimization/81136 - * tree-vectorizer.h: Include tree-hash-traits.h. - (vec_base_alignments): New typedef. - (vec_info): Add a base_alignments field. - (vect_record_base_alignments): Declare. - * tree-data-ref.h (data_reference): Add an is_conditional_in_stmt - field. - (DR_IS_CONDITIONAL_IN_STMT): New macro. - (create_data_ref): Add an is_conditional_in_stmt argument. - * tree-data-ref.c (create_data_ref): Likewise. Use it to initialize - the is_conditional_in_stmt field. - (data_ref_loc): Add an is_conditional_in_stmt field. - (get_references_in_stmt): Set the is_conditional_in_stmt field. - (find_data_references_in_stmt): Update call to create_data_ref. - (graphite_find_data_references_in_stmt): Likewise. - * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise. - * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise. - (vect_record_base_alignment): New function. - (vect_record_base_alignments): Likewise. - (vect_compute_data_ref_alignment): Adjust base_addr and aligned_to - for nested statements even if we fail to compute a misalignment. - Use pooled base alignments for unconditional references. - (vect_find_same_alignment_drs): Compare base addresses instead - of base objects. - (vect_analyze_data_refs_alignment): Call vect_record_base_alignments. - * tree-vect-slp.c (vect_slp_analyze_bb_1): Likewise. - -2017-08-04 Richard Sandiford - - * tree-vectorizer.h (vec_info): Add a constructor and destructor. - Add an explicit name for the enum. Use auto_vec for slp_instances - and grouped_stores. - (_loop_vec_info): Add a constructor and destructor. Use auto_vec - for all vectors. - (_bb_vec_info): Add a constructor and destructor. - (vinfo_for_stmt): Return NULL for uids of -1 as well. - (destroy_loop_vec_info): Delete. - (vect_destroy_datarefs): Likewise. - * tree-vectorizer.c (vect_destroy_datarefs): Delete. - (vec_info::vec_info): New function. - (vec_info::~vec_info): Likewise. - (vectorize_loops): Use delete instead of destroy_loop_vec_info. - * tree-parloops.c (gather_scalar_reductions): Use delete instead of - destroy_loop_vec_info. - * tree-vect-loop.c (new_loop_vec_info): Replace with... - (_loop_vec_info::_loop_vec_info): ...this. - (destroy_loop_vec_info): Replace with... - (_loop_vec_info::~_loop_vec_info): ...this. Unconditionally delete - the stmt_vec_infos. Leave handling of vec_info information to its - destructor. Remove explicit vector releases. - (vect_analyze_loop_form): Use new instead of new_loop_vec_info. - (vect_analyze_loop): Use delete instead of destroy_loop_vec_info. - * tree-vect-slp.c (new_bb_vec_info): Replace with... - (_bb_vec_info::_bb_vec_info): ...this. Don't reserve space in - BB_VINFO_GROUPED_STORES or BB_VINFO_SLP_INSTANCES. - (destroy_bb_vec_info): Replace with... - (_bb_vec_info::~_bb_vec_info): ...this. Leave handling of vec_info - information to its destructor. - (vect_slp_analyze_bb_1): Use new and delete instead of - new_bb_vec_info and destroy_bb_vec_info. - (vect_slp_bb): Replace 2 calls to destroy_bb_vec_info with a - single delete. - -2017-08-04 Richard Sandiford - - * tree-data-ref.h (subscript): Add access_fn field. - (data_dependence_relation): Add could_be_independent_p. - (SUB_ACCESS_FN, DDR_COULD_BE_INDEPENDENT_P): New macros. - (same_access_functions): Move to tree-data-ref.c. - * tree-data-ref.c (ref_contains_union_access_p): New function. - (access_fn_component_p): Likewise. - (access_fn_components_comparable_p): Likewise. - (dr_analyze_indices): Add a reference to access_fn_component_p. - (dump_data_dependence_relation): Use SUB_ACCESS_FN instead of - DR_ACCESS_FN. - (constant_access_functions): Likewise. - (add_other_self_distances): Likewise. - (same_access_functions): Likewise. (Moved from tree-data-ref.h.) - (initialize_data_dependence_relation): Use XCNEW and remove - explicit zeroing of DDR_REVERSED_P. Look for a subsequence - of access functions that have the same type. Allow the - subsequence to end with different bases in some circumstances. - Record the chosen access functions in SUB_ACCESS_FN. - (build_classic_dist_vector_1): Replace ddr_a and ddr_b with - a_index and b_index. Use SUB_ACCESS_FN instead of DR_ACCESS_FN. - (subscript_dependence_tester_1): Likewise dra and drb. - (build_classic_dist_vector): Update calls accordingly. - (subscript_dependence_tester): Likewise. - * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Check - DDR_COULD_BE_INDEPENDENT_P. - * tree-vectorizer.h (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Test - comp_alias_ddrs instead of may_alias_ddrs. - * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr): - New function. - (vect_analyze_data_ref_dependence): Use it if - DDR_COULD_BE_INDEPENDENT_P, but fall back to using the recorded - distance vectors if that fails. - (dependence_distance_ge_vf): New function. - (vect_prune_runtime_alias_test_list): Use it. Don't clear - LOOP_VINFO_MAY_ALIAS_DDRS. - -2017-08-04 Richard Biener - - PR middle-end/81705 - * fold-const.c (fold_binary_loc): Properly restrict - minus_var0 && minus_var1 case when associating undefined overflow - entities. - -2017-08-04 Tom de Vries - - * omp-simd-clone.c (simd_clone_adjust): Add missing edge probability. - -2017-08-03 Bill Schmidt - - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Don't start diagnostic messages with a capital letter. - * config/rs6000/rs6000.c (rs6000_option_override_internal): - Likewise. - (rs6000_invalid_builtin): Likewise. - (rs6000_trampoline_init): Likewise. - -2017-08-03 Jakub Jelinek - - PR target/81621 - * bb-reorder.c (pass_partition_blocks::execute): Return TODO_df_finish - after setting changeable df flags. - -2017-08-03 Richard Biener - - * tree-ssa-reassoc.c (should_break_up_subtract): Also break - up if the use is in USE - X. - -2017-08-03 Alexander Monakov - - * toplev.c (dumpfile.h): New include. - (internal_error_reentered): New static function. Use it... - (internal_error_function): ...here to handle reentered internal_error. - -2017-08-03 Richard Biener - - PR middle-end/81148 - * fold-const.c (split_tree): Add minus_var and minus_con - arguments, remove unused loc arg. Never generate NEGATE_EXPRs - here but always use minus_*. - (associate_trees): Assert we never associate with MINUS_EXPR - and NULL first operand. Do not recurse for PLUS_EXPR operands - when associating as MINUS_EXPR either. - (fold_binary_loc): Track minus_var and minus_con. - -2017-08-03 Tom de Vries - - PR lto/81430 - * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): If - ACCEL_COMPILER, apply finish_options on - DECL_FUNCTION_SPECIFIC_OPTIMIZATION. - -2017-08-03 Tom de Vries - - PR target/81662 - * config/nvptx/nvptx.c (nvptx_option_override): Emit sorry if - function_entry_patch_area_size > 0. - -2017-08-03 Jakub Jelinek - - PR driver/81650 - * calls.c (alloc_max_size): Use HOST_WIDE_INT_UC (10??) - instead of 10??LU, perform unit multiplication in wide_int, - don't change alloc_object_size_limit if the limit is larger - than SSIZE_MAX. - - PR tree-optimization/81655 - PR tree-optimization/81588 - * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Handle also - the case when ranges[i].low and high are 1 for unsigned type with - precision 1. - - PR middle-end/81052 - * omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp. - (pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd. - -2017-08-03 Prathamesh Kulkarni - - * tree-vrp.h: Add include guard. - -2017-08-02 Uros Bizjak - - PR target/81644 - * config/i386/i386.md (unspecv): Add UNSPECV_UD2. - (ud2): New insn pattern. - * config/i386/i386.c (ix86_expand_epilogue): - For naked functions, generate ud2 instead of trap insn. - -2017-08-02 Marek Polacek - - PR other/81667 - * alloc-pool.h (base_pool_allocator): Initialize m_elt_size. - -2017-08-02 Tom de Vries - Cesar Philippidis - - * config/nvptx/nvptx.c (nvptx_lockless_update, nvptx_lockfull_update): - Add missing edge probabilities. - -2017-08-02 Tamar Christina - - * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int): - Correct endianness. - -2017-08-02 Jakub Jelinek - - PR middle-end/79499 - * function.c (thread_prologue_and_epilogue_insns): Determine blocks - for find_many_sub_basic_blocks bitmap by looking up BLOCK_FOR_INSN - of first NONDEBUG_INSN_P in each of the split_prologue_seq and - prologue_seq sequences - if any. - -2017-08-02 Richard Biener - - * tree-vect-stmts.c (vectorizable_store): Perform vector extracts - via vectors if supported, integer extracts via punning if supported - or otherwise vector extracts. - -2017-08-02 Richard Biener - - * tree-ssa-pre.c (bitmap_insert_into_set_1): Remove and inline - into ... - (bitmap_insert_into_set): ... this. - -2017-08-02 Richard Biener - - PR tree-optimization/81633 - Revert - 2015-08-17 Alan Hayward - - PR tree-optimization/71752 - * tree-vect-slp.c (vect_get_slp_defs): Handle null operands. - -2017-08-01 Daniel Santos - - * config/i386/i386.h (ix86_frame::outlined_save_offset): Remove field. - (machine_function::call_ms2sysv_pad_out): Remove field. - * config/i386/i386.c (xlogue_layout::get_stack_space_used): Modify. - (ix86_compute_frame_layout): Likewise. - -2017-08-01 H.J. Lu - - PR target/81654 - * config/i386/i386.c (ix86_set_func_type): Disallow naked - attribute with interrupt attribute. - -2017-08-01 Andrew Pinski - - * tree-ssa-scopedtables.c (hashable_expr_equal_p): Check - BIT_INSERT_EXPR's operand 1 - to see if the types precision matches. - -2017-08-01 Martin Liska - - PR middle-end/70140 - * builtins.c (expand_builtin_memcpy_args): Remove. - (expand_builtin_memcpy): Call newly added function - expand_builtin_memory_copy_args. - (expand_builtin_memcpy_with_bounds): Likewise. - (expand_builtin_mempcpy): Remove last argument. - (expand_builtin_mempcpy_with_bounds): Likewise. - (expand_builtin_memory_copy_args): New function created from - expand_builtin_mempcpy_args with small modifications. - (expand_builtin_mempcpy_args): Remove. - (expand_builtin_stpcpy): Remove unused argument. - (expand_builtin): Likewise. - (expand_builtin_with_bounds): Likewise. - -2017-08-01 Martin Liska - - Revert r250771 - Make mempcpy more optimal (PR middle-end/70140). - -2017-08-01 Jakub Jelinek - - PR target/81622 - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For - __builtin_vec_cmpne verify both arguments are compatible vectors - before looking at TYPE_MODE on the element type. For __builtin_vec_ld - verify arg1_type is a pointer or array type. For __builtin_vec_st, - move computation of aligned to after checking the argument types. - Formatting fixes. - - PR target/80846 - * config/rs6000/vsx.md (vextract_fp_from_shorth, - vextract_fp_from_shortl): Add element mode after mode in gen_vec_init* - calls. - -2017-08-01 Jerome Lambourg - Doug Rupp - Olivier Hainque - - * config.gcc (arm-wrs-vxworks*): Rework to handle arm-wrs-vxworks7 as - well as arm-wrs-vxworks. Update target_cpu_name from arm6 (arch v3) to - arm8 (arch v4). - * config/arm/vxworks.h (MAYBE_TARGET_BPABI_CPP_BUILTINS): New, helper - for TARGET_OS_CPP_BUILTIN. - (TARGET_OS_CPP_BUILTIN): Invoke MAYBE_TARGET_BPABI_CPP_BUILTINS(), - refine CPU definitions for arm_arch5 and add those for arm_arch6 and - arm_arch7. - (MAYBE_ASM_ABI_SPEC): New, helper for SUBTARGET_EXTRA_ASM_SPEC, - passing required abi options to the assembler for EABI configurations. - (EXTRA_CC1_SPEC): New macro, to help prevent the implicit production - of .text.hot and .text.unlikely sections for kernel modules when - using ARM style exceptions. - (CC1_SPEC): Remove obsolete attempt at mimicking Diab toolchain - options. Add EXTRA_CC1_SPEC. - (VXWORKS_ENDIAN_SPEC): Adjust comment and remove handling of Diab - toolchain options. - (DWARF2_UNWIND_INFO): Redefine to handle the pre/post VxWorks 7 - transition. - (ARM_TARGET2_DWARF_FORMAT): Define. - * config/arm/t-vxworks: Adjust multilib control to removal of the - Diab command line options. - -2017-08-01 Martin Liska - - PR gcov-profile/81561 - * gcov.c (unblock): Make unblocking safe as we need to preserve - index correspondence of blocks and block_lists. - -2017-08-01 Richard Biener - - PR tree-optimization/81181 - * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ... - (compute_antic): ... end of iteration here. - -2017-08-01 James Greenhalgh - - * common.opt (ftree-vectorize): No longer set flag_tree_vectorize. - (ftree-loop-vectorize): Set as EnabledBy ftree-vectorize. - (ftree-slp-vectorize): Likewise. - * omp-expand (expand_omp_simd): Remove flag_tree_vectorize, as it - can no longer be set independent of flag_tree_loop_vectorize. - * omp-general.c (emp_max_vf): Likewise. - * opts.c (enable_fdo_optimizations): Remove references to - flag_tree_vectorize, these are now implicit. - (common_handle_option): Remove handling for OPT_ftree_vectorize, - and leave it for the options machinery. - -2017-08-01 Martin Liska - - PR middle-end/70140 - * builtins.c (expand_builtin_memcpy_args): Remove. - (expand_builtin_memcpy): Call newly added function - expand_builtin_memory_copy_args. - (expand_builtin_memcpy_with_bounds): Likewise. - (expand_builtin_mempcpy): Remove last argument. - (expand_builtin_mempcpy_with_bounds): Likewise. - (expand_builtin_memory_copy_args): New function created from - expand_builtin_mempcpy_args with small modifications. - (expand_builtin_mempcpy_args): Remove. - (expand_builtin_stpcpy): Remove unused argument. - (expand_builtin): Likewise. - (expand_builtin_with_bounds): Likewise. - -2017-08-01 Uros Bizjak - - PR target/81641 - * config/i386/i386.c (ix86_print_operand_address_as): For -masm=intel - print "ds:" only for immediates in generic address space. - -2017-08-01 Uros Bizjak - - PR target/81639 - * config/i386/i386.c (ix86_funciton_naked): New prototype. - (ix86_function_ok_for_sibcall): Return false for naked functions. - -2017-08-01 Richard Biener - - * tree-ssa-pre.c (print_pre_expr): Handle NULL expr. - (compute_antic): Seed worklist with exit block predecessors. - * cfganal.c (dfs_find_deadend): For a cycle return the source - of the edge closing it. - -2017-08-01 Tamar Christina - - * config/aarch64/aarch64.c - (aarch64_can_const_movi_rtx_p): Move 0 check. - -2017-08-01 Bin Cheng - - * tree.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Delete. - * fold-const.c (fold_comparison, fold_binary_loc): Delete use of - above macro. - * match.pd: Ditto in address comparison pattern. - -2017-08-01 Bin Cheng - - PR tree-optimization/81627 - * tree-predcom.c (prepare_finalizers): Always rewrite into loop - closed ssa form for store-store chain. - -2017-08-01 Bin Cheng - - PR tree-optimization/81620 - * tree-predcom.c (add_ref_to_chain): Don't set has_max_use_after - for store-store chain. - -2017-08-01 Jakub Jelinek - - PR tree-optimization/81588 - * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If - ranges[i].in_p, invert comparison code ccode. For >/>=, - swap rhs1 and rhs2 and comparison code unconditionally, - for rank is BIT_IOR_EXPR. - - PR target/80846 - * optabs.def (vec_extract_optab, vec_init_optab): Change from - a direct optab to conversion optab. - * optabs.c (expand_vector_broadcast): Use convert_optab_handler - with GET_MODE_INNER as last argument instead of optab_handler. - * expmed.c (extract_bit_field_1): Likewise. Use vector from - vector extraction if possible and optab is available. - * expr.c (store_constructor): Use convert_optab_handler instead - of optab_handler. Use vector initialization from smaller - vectors if possible and optab is available. - * tree-vect-stmts.c (vectorizable_load): Likewise. - * doc/md.texi (vec_extract, vec_init): Document that the optabs - now have two modes. - * config/i386/i386.c (ix86_expand_vector_init): Handle expansion - of vec_init from half-sized vectors with the same element mode. - * config/i386/sse.md (ssehalfvecmode): Add V4TI case. - (ssehalfvecmodelower, ssescalarmodelower): New mode attributes. - (reduc_plus_scal_v8df, reduc_plus_scal_v4df, reduc_plus_scal_v2df, - reduc_plus_scal_v16sf, reduc_plus_scal_v8sf, reduc_plus_scal_v4sf, - reduc__scal_, reduc_umin_scal_v8hi): Add element mode - after mode in gen_vec_extract* calls. - (vec_extract): Renamed to ... - (vec_extract): ... this. - (vec_extract): New expander. - (rotl3, rotr3, 3, ashrv2di3): Add - element mode after mode in gen_vec_init* calls. - (VEC_INIT_HALF_MODE): New mode iterator. - (vec_init): Renamed to ... - (vec_init): ... this. - (vec_init): New expander. - * config/i386/mmx.md (vec_extractv2sf): Renamed to ... - (vec_extractv2sfsf): ... this. - (vec_initv2sf): Renamed to ... - (vec_initv2sfsf): ... this. - (vec_extractv2si): Renamed to ... - (vec_extractv2sisi): ... this. - (vec_initv2si): Renamed to ... - (vec_initv2sisi): ... this. - (vec_extractv4hi): Renamed to ... - (vec_extractv4hihi): ... this. - (vec_initv4hi): Renamed to ... - (vec_initv4hihi): ... this. - (vec_extractv8qi): Renamed to ... - (vec_extractv8qiqi): ... this. - (vec_initv8qi): Renamed to ... - (vec_initv8qiqi): ... this. - * config/rs6000/vector.md (VEC_base_l): New mode attribute. - (vec_init): Renamed to ... - (vec_init): ... this. - (vec_extract): Renamed to ... - (vec_extract): ... this. - * config/rs6000/paired.md (vec_initv2sf): Renamed to ... - (vec_initv2sfsf): ... this. - * config/rs6000/altivec.md (splitter, altivec_copysign_v4sf3, - vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi, - vec_unpacku_lo_v8hi, mulv16qi3, altivec_vreve2): Add - element mode after mode in gen_vec_init* calls. - * config/aarch64/aarch64-simd.md (vec_init): Renamed to ... - (vec_init): ... this. - (vec_extract): Renamed to ... - (vec_extract): ... this. - * config/aarch64/iterators.md (Vel): New mode attribute. - * config/s390/s390.c (s390_expand_vec_strlen, s390_expand_vec_movstr): - Add element mode after mode in gen_vec_extract* calls. - * config/s390/vector.md (non_vec_l): New mode attribute. - (vec_extract): Renamed to ... - (vec_extract): ... this. - (vec_init): Renamed to ... - (vec_init): ... this. - * config/s390/s390-builtins.def (s390_vlgvb, s390_vlgvh, s390_vlgvf, - s390_vlgvf_flt, s390_vlgvg, s390_vlgvg_dbl): Add element mode after - vec_extract mode. - * config/arm/iterators.md (V_elem_l): New mode attribute. - * config/arm/neon.md (vec_extract): Renamed to ... - (vec_extract): ... this. - (vec_extractv2di): Renamed to ... - (vec_extractv2didi): ... this. - (vec_init): Renamed to ... - (vec_init): ... this. - (reduc_plus_scal_, reduc_plus_scal_v2di, reduc_smin_scal_, - reduc_smax_scal_, reduc_umin_scal_, - reduc_umax_scal_, neon_vget_lane, neon_vget_laneu): - Add element mode after gen_vec_extract* calls. - * config/mips/mips-msa.md (vec_init): Renamed to ... - (vec_init): ... this. - (vec_extract): Renamed to ... - (vec_extract): ... this. - * config/mips/loongson.md (vec_init): Renamed to ... - (vec_init): ... this. - * config/mips/mips-ps-3d.md (vec_initv2sf): Renamed to ... - (vec_initv2sfsf): ... this. - (vec_extractv2sf): Renamed to ... - (vec_extractv2sfsf): ... this. - (reduc_plus_scal_v2sf, reduc_smin_scal_v2sf, reduc_smax_scal_v2sf): - Add element mode after gen_vec_extract* calls. - * config/mips/mips.md (unitmode): New mode iterator. - * config/spu/spu.c (spu_expand_prologue, spu_allocate_stack, - spu_builtin_extract): Add element mode after gen_vec_extract* calls. - * config/spu/spu.md (inner_l): New mode attribute. - (vec_init): Renamed to ... - (vec_init): ... this. - (vec_extract): Renamed to ... - (vec_extract): ... this. - * config/sparc/sparc.md (veltmode): New mode iterator. - (vec_init): Renamed to ... - (vec_init): ... this. - * config/ia64/vect.md (vec_initv2si): Renamed to ... - (vec_initv2sisi): ... this. - (vec_initv2sf): Renamed to ... - (vec_initv2sfsf): ... this. - (vec_extractv2sf): Renamed to ... - (vec_extractv2sfsf): ... this. - * config/powerpcspe/vector.md (VEC_base_l): New mode attribute. - (vec_init): Renamed to ... - (vec_init): ... this. - (vec_extract): Renamed to ... - (vec_extract): ... this. - * config/powerpcspe/paired.md (vec_initv2sf): Renamed to ... - (vec_initv2sfsf): ... this. - * config/powerpcspe/altivec.md (splitter, altivec_copysign_v4sf3, - vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi, - vec_unpacku_lo_v8hi, mulv16qi3): Add element mode after mode in - gen_vec_init* calls. - -2017-08-01 Richard Biener - - PR tree-optimization/81297 - * tree-vrp.c (get_single_symbol): Remove assert, instead drop - TREE_OVERFLOW from INTEGER_CSTs. - -2017-07-31 Segher Boessenkool - - * config/rs6000/rs6000.c (enum rs6000_reg_type): Delete trailing comma. - -2017-07-31 Carl Love - - * config/rs6000/rs6000-c: Add support for built-in functions - vector signed char vec_xl_be (signed long long, signed char *); - vector unsigned char vec_xl_be (signed long long, unsigned char *); - vector signed int vec_xl_be (signed long long, signed int *); - vector unsigned int vec_xl_be (signed long long, unsigned int *); - vector signed long long vec_xl_be (signed long long, signed long long *); - vector unsigned long long vec_xl_be (signed long long, unsigned long long *); - vector signed short vec_xl_be (signed long long, signed short *); - vector unsigned short vec_xl_be (signed long long, unsigned short *); - vector double vec_xl_be (signed long long, double *); - vector float vec_xl_be (signed long long, float *); - * config/rs6000/altivec.h (vec_xl_be): Add #define. - * config/rs6000/rs6000-builtin.def (XL_BE_V16QI, XL_BE_V8HI, XL_BE_V4SI) - XL_BE_V2DI, XL_BE_V4SF, XL_BE_V2DF, XL_BE): Add definitions - for the builtins. - * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Add function. - (altivec_expand_builtin): Add switch statement to call - altivec_expand_xl_be for each builtin. - (altivec_init_builtins): Add def_builtin for _builtin_vsx_le_be_v8hi, - __builtin_vsx_le_be_v4si, __builtin_vsx_le_be_v2di, - __builtin_vsx_le_be_v4sf, __builtin_vsx_le_be_v2df, - __builtin_vsx_le_be_v16qi. - * doc/extend.texi: Update the built-in documentation file for the - new built-in functions. - -2017-07-31 Uros Bizjak - - PR target/25967 - * config/i386/i386.c (ix86_allocate_stack_slots_for_args): - New function. - (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define. - -2017-07-31 Andreas Krebbel - - * config.gcc: Add z14. - * config/s390/driver-native.c (s390_host_detect_local_cpu): Add - CPU model numbers for z13s and z14. - * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Replace - arch12 with z14. - * config/s390/s390-opts.h (enum processor_type): Rename - PROCESSOR_ARCH12 to PROCESSOR_3906_Z14. - * config/s390/s390.c (processor_table): Add field for CPU name to - be passed to Binutils. - (s390_asm_output_machine_for_arch): Use the new field in - processor_table for Binutils. - (s390_expand_builtin): Replace arch12 with z14. - (s390_issue_rate): Rename PROCESSOR_ARCH12 to PROCESSOR_3906_Z14. - (s390_get_sched_attrmask): Likewise. - (s390_get_unit_mask): Likewise. - * config/s390/s390.opt: Add z14 to processor_type enum. - -2017-07-31 Martin Jambor - - PR hsa/81477 - * ipa-fnsummary.c (ipa_fn_summary_generate): Set versionable - regardless of optimization level. - -2017-07-31 Jan Hubicka - Martin Liska - - * predict.def: Remove old comment and adjust probability. - * gimplify.c (should_warn_for_implicit_fallthrough): Ignore - PREDICT statements. - -2017-07-31 Uros Bizjak - - PR target/25967 - * config/i386/i386.c (ix86_function_naked): New function. - (ix86_can_use_return_insn_p): Return false for naked functions. - (ix86_expand_prologue): Skip prologue for naked functions. - (ix86_expand_epilogue): Skip epilogue for naked functions - and emit trap instruction. - (ix86_warn_func_return): New function. - (ix86_attribute_table): Add "naked" attribute specification. - (TARGET_WARN_FUNC_RETURN): Define. - * doc/extend.texi (x86 Function Attributes) : Document it. - -2017-07-31 Martin Liska - - * gimple-pretty-print.c (dump_gimple_label): Never dump BB info. - (dump_gimple_bb_header): Always dump BB info. - (pp_cfg_jump): Do not append info about BB when dumping a jump. - -2017-07-31 Martin Liska - - PR sanitize/81530 - * convert.c (convert_to_integer_1): Guard condition with flag_sanitize_p - also with current_function_decl non-null equality. - -2017-07-31 Jakub Jelinek - - PR sanitizer/81604 - * ubsan.c (ubsan_type_descriptor): For UBSAN_PRINT_ARRAY don't - change type to the element type, instead add eltype variable and - use it where we are interested in the element type. - - PR tree-optimization/81603 - * ipa-polymorphic-call.c - (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Perform - offset arithmetic in offset_int, bail out if the resulting bit offset - doesn't fit into shwi. - -2017-07-31 Martin Liska - - * gimplify.c (mostly_copy_tree_r): Remove Java specific hunk. - (gimplify_save_expr): Fix comment. - -2017-07-30 H.J. Lu - - PR target/79793 - * config/i386/i386.c (ix86_function_arg): Update arguments for - exception handler. - (ix86_compute_frame_layout): Set the initial stack offset to - INCOMING_FRAME_SP_OFFSET. Update red-zone offset with - INCOMING_FRAME_SP_OFFSET. - (ix86_expand_epilogue): Don't pop the 'ERROR_CODE' off the - stack before exception handler returns. - * config/i386/i386.h (INCOMING_FRAME_SP_OFFSET): Add the - the 'ERROR_CODE' for exception handler. - -2017-07-30 Uros Bizjak - - * config/i386/i386.h (ASM_PRINTF_EXTENSIONS): New macro. - (ASM_OUTPUT_REG_PUSH): Rewrite with new operand modifiers. - (ASM_OUTPUT_REG_POP): Ditto. - * config/i386/i386.c (ix86_asm_output_function_label): Use fputs - instead of asm_fprintf to output pure string. - -2017-07-29 Jakub Jelinek - - * debug.h (struct gcc_debug_hooks): Add IMPLICIT argument - to imported_module_or_decl hook. - (debug_nothing_tree_tree_tree_bool): Remove. - (debug_nothing_tree_tree_tree_bool_bool): New declaration. - * debug.c (do_nothing_debug_hooks): Use - debug_nothing_tree_tree_tree_bool_bool instead of - debug_nothing_tree_tree_tree_bool. - * vmsdbgout.c (vmsdbg_debug_hooks): Likewise. - * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise. - * sdbout.c (sdb_debug_hooks): Likewise. - * dwarf2out.c (dwarf2_lineno_debug_hooks): Likewise. - (gen_namespace_die): Add DW_AT_export_symbols attribute if - langhook wants it. - (dwarf2out_imported_module_or_decl): Add IMPLICIT argument, - if true, -gdwarf-5 and decl will have DW_AT_export_symbols - attribute, don't add anything. - -2017-07-28 Trevor Saunders - - * fold-const.c (fold_build1_stat_loc): Remove _stat from name. - (fold_build2_stat_loc): Likewise. - (fold_build3_stat_loc): Likewise. - * fold-const.h (fold_build1, fold_build2, fold_build3): Adjust. - (fold_build1_loc): Remove macro. - (fold_build2_loc): Likewise. - (fold_build3_loc): Likewise. - -2017-07-28 Trevor Saunders - - * gimple.c (gimple_build_debug_bind_stat): Remove _stat from name. - (gimple_build_debug_bind_source_stat): Likewise. - * gimple.h (gimple_build_debug_bind): Remove macro. - (gimple_build_debug_bind_source): Likewise. - -2017-07-28 Trevor Saunders - - * bitmap.c (bitmap_alloc): Adjust. - (bitmap_gc_alloc): Likewise. - * bitmap.h (bitmap_initialize_stat): Remove _stat from name. - -2017-07-28 Trevor Saunders - - * bitmap.c (bitmap_obstack_alloc_stat): Rename to bitmap_alloc. - (bitmap_gc_alloc_stat): Rename to bitmap_gc_alloc. - * bitmap.h (bitmap_obstack_alloc_stat): Adjust prototype. - (bitmap_gc_alloc_stat): Likewise. - (BITMAP_ALLOC, BITMAP_GGC_ALLOC): Adjust. - -2017-07-28 Trevor Saunders - - * rtl.c (shallow_copy_rtx_stat): Remove _stat from name. - * rtl.h (shallow_copy_rtx): Remove macro. - -2017-07-28 Trevor Saunders - - * emit-rtl.c (gen_raw_REG): Adjust. - * gengenrtl.c (gendef): Likewise. - * rtl.c (rtx_alloc_stat): Remove _stat from name. - * rtl.h (rtx_alloc): Remove macro. - -2017-07-28 Trevor Saunders - - * tree.c (build_tree_list_vec_stat): Remove _stat from name. - (build_tree_list_stat): Likewise. - * tree.h (build_tree_list): Remove macro. - (build_tree_list_vec): Likewise. - -2017-07-28 Trevor Saunders - - * tree.c (make_vector_stat): Remove _stat from name. - (build_vector_stat): Likewise. - * tree.h (make_vector_stat): Remove macro. - (build_vector_stat): Likewise. - -2017-07-28 Trevor Saunders - - * tree.h (build_var_debug_value): Remove prototype. - -2017-07-28 Trevor Saunders - - * tree.c (tree_cons_stat): Remove _stat from name. - * tree.h (tree_cons): Remove macro. - -2017-07-28 Trevor Saunders - - * tree.c (build_vl_exp_stat): Remove _stat from name. - * tree.h (build_vl_exp): Remove macro. - -2017-07-28 Trevor Saunders - - * tree.c (build_decl_stat): Remove _stat from name. - * tree.h (build_decl): Remove macro. - -2017-07-28 Trevor Saunders - - * gimple.c (gimple_build_with_ops_stat): Adjust. - (gimple_alloc_stat): Remove _stat from name. - * gimple.h (gimple_alloc): Remove macro. - -2017-07-28 Trevor Saunders - - * tree.c (make_tree_vec_stat): Remove _stat from name. - (grow_tree_vec_stat): Likewise. - * tree.h (make_tree_vec_stat): Adjust prototype. - (grow_tree_vec_stat): Likewise. - (make_tree_vec): Remove macro. - (grow_tree_vec): Likewise. - -2017-07-28 Trevor Saunders - - * fold-const.c (fold_build1_stat_loc): Adjust. - (fold_build2_stat_loc): Likewise. - (fold_build3_stat_loc): Likewise. - * tree.c (build0_stat): Remove _stat from name. - (build1_stat): Likewise. - (build2_stat): Likewise. - (build3_stat): Likewise. - (build4_stat): Likewise. - (build5_stat): Likewise. - * tree.h (build1_loc): Remove macro, and rename _stat function - to this. - (build2_loc): Likewise. - (build3_loc): Likewise. - (build4_loc): Likewise. - (build5_loc): Likewise. - -2017-07-28 Trevor Saunders - - * tree.c (make_int_cst_stat): Remove _stat from name. - * tree.h (make_int_cst_stat): Adjust prototype. - (make_int_cst): Remove macro. - -2017-07-28 Trevor Saunders - - * tree.c (make_tre_binfo_stat): Remove _stat from name. - * tree.h (make_tree_binfo_stat): Adjust prototype. - (make_tree_binfo): Remove. - -2017-07-28 Trevor Saunders - - * tree.c (copy_node_stat): Rename to copy_node. - (build_distinct_type_copy): Adjust. - * tree.h (copy_node_stat): Adjust prototype. - (copy_node): Remove macro. - -2017-07-28 Trevor Saunders - - * tree.c (make_node_stat): rename to make_node. - (build_tree_list_stat): Adjust. - (build0_stat): Likewise. - (build2_stat): Likewise. - (build3_stat): Likewise. - (build4_stat): Likewise. - (build5_stat): Likewise. - (build_decl_stat): Likewise. - * tree.h (make_node_stat): Adjust prototype. - (make_node): remove macro. - -2017-07-28 Peter Bergner - - * config/rs6000/ppc-auxv.h (PPC_FEATURE2_DARN): New define. - (PPC_FEATURE2_SCV): Likewise. - * config/rs6000/rs6000.c (cpu_supports_info): Use them. - -2017-07-28 Tamar Christina - - * config/aarch64/aarch64.c - (aarch64_internal_mov_immediate): Add new special pattern. - * config/aarch64/aarch64.md (*movdi_aarch64): - Add reg/32bit const mov case. - -2017-07-28 Tamar Christina - Richard Sandiford - - * config/aarch64/aarch64.md (mov): Generalize. - (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64): - Add integer and movi cases. - (movi-split-hf-df-sf split, fp16): New. - (enabled): Added TARGET_FP_F16INST. - * config/aarch64/iterators.md (GPF_HF): New. - * config/aarch64/predicates.md (aarch64_reg_or_fp_float): New. - -2017-07-28 Tamar Christina - - * config/aarch64/aarch64.c - (aarch64_simd_container_mode): Add prototype. - (aarch64_expand_mov_immediate): Add HI support. - (aarch64_reinterpret_float_as_int, aarch64_float_const_rtx_p: New. - (aarch64_can_const_movi_rtx_p): New. - (aarch64_preferred_reload_class): - Remove restrictions of using FP registers for certain SIMD operations. - (aarch64_rtx_costs): Added new cost for CONST_DOUBLE moves. - (aarch64_valid_floating_const): Add integer move validation. - (aarch64_simd_imm_scalar_p): Remove. - (aarch64_output_scalar_simd_mov_immediate): Generalize function. - (aarch64_legitimate_constant_p): Expand list of supported cases. - * config/aarch64/aarch64-protos.h - (aarch64_float_const_rtx_p, aarch64_can_const_movi_rtx_p): New. - (aarch64_reinterpret_float_as_int): New. - (aarch64_simd_imm_scalar_p): Remove. - * config/aarch64/constraints.md (Uvi): New. - (Dd): Split into Ds and new Dd. - * config/aarch64/aarch64.md (*movsi_aarch64): - Add SIMD mov case. - (*movdi_aarch64): Add SIMD mov case. - -2017-07-28 Bin Cheng - - * tree-predcom.c: (struct chain): Handle store-store chain in which - stores for elimination only store loop invariant values. - (execute_pred_commoning_chain): Ditto. - (prepare_initializers_chain_store_elim): Ditto. - (prepare_finalizers): Ditto. - (is_inv_store_elimination_chain): New function. - (initialize_root_vars_store_elim_1): New function. - -2017-07-28 Bin Cheng - - * tree-predcom.c: Revise general description of the pass. - (enum chain_type): New enum type for store elimination. - (struct chain): New field supporting store elimination. - (struct component): Ditto. - (dump_chain): Dump store-stores chain. - (release_chain): Release resources. - (split_data_refs_to_components): Compute and create component - contains only stores for elimination. - (get_chain_last_ref_at): New function. - (make_invariant_chain): Initialization. - (make_rooted_chain): Specify chain type in parameter and record it. - (add_looparound_copies): Skip for store-stores chain. - (determine_roots_comp): Compute type of chain and pass it to - make_rooted_chain. - (initialize_root_vars_store_elim_2): New function. - (finalize_eliminated_stores): New function. - (remove_stmt): Handle store for elimination. - (execute_pred_commoning_chain): Execute predictive commoning on - store-store chains. - (determine_unroll_factor): Skip unroll for store-stores chain. - (prepare_initializers_chain_store_elim): New function. - (prepare_initializers_chain): Hanlde store-store chain. - (prepare_finalizers_chain, prepare_finalizers): New function. - (tree_predictive_commoning_loop): Return integer value indicating - if loop is unrolled or lcssa form is corrupted. - (tree_predictive_commoning): Rewrite for lcssa form if necessary. - -2017-07-28 Bin Cheng - - * tree-predcom.c (initialize_root): Delete. - (execute_pred_commoning_chain): Initialize root vars and replace - reference of non-combined chain directly, rather than call above - function. - -2017-07-28 Bin Cheng - - * tree-predcom.c (ref_at_iteration): Add parameter NITERS. Compute - memory reference to DR at (NITERS + ITERS)-th iteration of loop. - -2017-07-28 Bin Cheng - - * tree-predcom.c (struct chain): New field init_seq. - (release_chain): Release init_seq. - (prepare_initializers_chain): Record intialization stmts in above - field. - (insert_init_seqs): New function. - (tree_predictive_commoning_loop): Call insert_init_seqs. - -2017-07-28 Bin Cheng - - * tree-predcom.c (determine_roots_comp): Skip trivial components. - -2017-07-28 Richard Biener - - * match.pd: Remove superfluous :c. - * genmatch.c (simplify::id): Add member. - (lower_commutative, lower_opt_convert, lower_cond, lower_for): - Copy id. - (current_id): New global. - (dt_node::parent): Move from ... - (dt_operand::parent): ... here. Add for_id member. - (is_a_helper ::test): DT_TRUE is also a dt_operand. - (decision_tree::find_node): Relax order requirement when - merging DT_TRUE nodes to ones inbetween the current simplify - and the one we try to merge with. Add diagnostic whenever - we need to enforce pattern order by not merging. - (decision_tree::insert): Set current_id. - (decision_tree::print_node): Dump parent node and for_id. - (parser::last_id): Add member. - (parser::push_simplify): Assign unique id. - (parser::parser): Initialize last_id. - -2017-07-28 Martin Liska - - PR sanitizer/81340 - * sanopt.c (sanitize_rewrite_addressable_params): Set VALUE_EXPR after - gimple_build_debug_bind. - -2017-07-28 Richard Biener - - PR tree-optimization/81502 - * match.pd: Add pattern combining BIT_INSERT_EXPR with - BIT_FIELD_REF. - * tree-cfg.c (verify_expr): Verify types of BIT_FIELD_REF - size/pos operands. - (verify_gimple_assign_ternary): Likewise for BIT_INSERT_EXPR pos. - * gimple-fold.c (maybe_canonicalize_mem_ref_addr): Use bitsizetype - for BIT_FIELD_REF args. - * fold-const.c (make_bit_field_ref): Likewise. - * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise. - -2017-07-28 Jakub Jelinek - - PR sanitizer/80998 - * sanopt.c (pass_sanopt::execute): Handle IFN_UBSAN_PTR. - * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise. - * flag-types.h (enum sanitize_code): Add SANITIZER_POINTER_OVERFLOW. - Or it into SANITIZER_UNDEFINED. - * ubsan.c: Include gimple-fold.h and varasm.h. - (ubsan_expand_ptr_ifn): New function. - (instrument_pointer_overflow): New function. - (maybe_instrument_pointer_overflow): New function. - (instrument_object_size): Formatting fix. - (pass_ubsan::execute): Call instrument_pointer_overflow - and maybe_instrument_pointer_overflow. - * internal-fn.c (expand_UBSAN_PTR): New function. - * ubsan.h (ubsan_expand_ptr_ifn): Declare. - * sanitizer.def (__ubsan_handle_pointer_overflow, - __ubsan_handle_pointer_overflow_abort): New builtins. - * tree-ssa-tail-merge.c (merge_stmts_p): Handle IFN_UBSAN_PTR. - * internal-fn.def (UBSAN_PTR): New internal function. - * opts.c (sanitizer_opts): Add pointer-overflow. - * lto-streamer-in.c (input_function): Handle IFN_UBSAN_PTR. - * fold-const.c (build_range_check): Compute pointer range check in - integral type if pointer arithmetics would be needed. Formatting - fixes. - -2017-07-28 Martin Liska - - PR sanitizer/81460 - * sanopt.c (sanitize_rewrite_addressable_params): Do not rewrite - parameters that are of a variable-length. - -2017-07-28 Sebastian Huber - - * config.gcc (powerpc-*-rtems*): Remove rs6000/eabi.h. Add - rs6000/biarch64.h. - * config/rs6000/rtems.h (ASM_DECLARE_FUNCTION_SIZE): New macro. - (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise. - (CRT_CALL_STATIC_FUNCTION): Likewise. - (ASM_DEFAULT_SPEC): New define. - (ASM_SPEC32): Likewise. - (ASM_SPEC64): Likewise. - (ASM_SPEC_COMMON): Likewise. - (ASM_SPEC): Likewise. - (INVALID_64BIT): Likewise. - (LINK_OS_DEFAULT_SPEC): Likewise. - (LINK_OS_SPEC32): Likewise. - (LINK_OS_SPEC64): Likewise. - (POWERPC_LINUX): Likewise. - (PTRDIFF_TYPE): Likewise. - (RESTORE_FP_PREFIX): Likewise. - (RESTORE_FP_SUFFIX): Likewise. - (SAVE_FP_PREFIX): Likewise. - (SAVE_FP_SUFFIX): Likewise. - (SIZE_TYPE): Likewise. - (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise. - (TARGET_64BIT): Likewise. - (TARGET_64BIT): Likewise. - (TARGET_AIX): Likewise. - (WCHAR_TYPE_SIZE): Likewise. - (WCHAR_TYPE): Undefine. - (TARGET_OS_CPP_BUILTINS): Add 64-bit PowerPC defines. - (CPP_OS_DEFAULT_SPEC): Use previous CPP_OS_RTEMS_SPEC. - (CPP_OS_RTEMS_SPEC): Delete. - (SUBSUBTARGET_EXTRA_SPECS): Remove cpp_os_rtems. Add - asm_spec_common, asm_spec32, asm_spec64, link_os_spec32, and - link_os_spec64. - * config/rs6000/t-rtems: Add mcpu=e6500/m64 multilibs. - -2017-07-28 Jakub Jelinek - - PR tree-optimization/81578 - * tree-parloops.c (build_new_reduction): Bail out if - reduction_code isn't one of the standard OpenMP reductions. - Move the details printing after that decision. - -2017-07-27 Peter Bergner - - * config/rs6000/predicates.md (volatile_mem_operand): Remove code - related to reload_in_progress. - (splat_input_operand): Likewise. - * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx): - Delete prototype. - * config/rs6000/rs6000.c (machine_function): Remove sdmode_stack_slot - field. - (TARGET_EXPAND_TO_RTL_HOOK): Delete. - (TARGET_INSTANTIATE_DECLS): Likewise. - (legitimate_indexed_address_p): Delete reload_in_progress code. - (rs6000_debug_legitimate_address_p): Likewise. - (rs6000_eliminate_indexed_memrefs): Likewise. - (rs6000_emit_le_vsx_store): Likewise. - (rs6000_emit_move_si_sf_subreg): Likewise. - (rs6000_emit_move): Likewise. - (register_to_reg_type): Likewise. - (rs6000_pre_atomic_barrier): Likewise. - (rs6000_machopic_legitimize_pic_address): Likewise. - (rs6000_allocate_stack_temp): Likewise. - (rs6000_address_for_fpconvert): Likewise. - (rs6000_address_for_altivec): Likewise. - (rs6000_secondary_memory_needed_rtx): Delete function. - (rs6000_check_sdmode): Likewise. - (rs6000_alloc_sdmode_stack_slot): Likewise. - (rs6000_instantiate_decls): Likewise. - * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_RTX): Delete. - * config/rs6000/rs6000.md (splitter for *movsi_got_internal): - Delete reload_in_progress. - (*vec_reload_and_plus_): Likewise. - * config/rs6000/vsx.md (vsx_mul_v2di): Likewise. - (vsx_div_v2di): Likewise. - (vsx_udiv_v2di): Likewise. - -2017-07-27 Peter Bergner - - * config/rs6000/rs6000.opt (mlra): Replace with stub. - * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete OPTION_MASK_LRA. - * config/rs6000/rs6000.c (TARGET_LRA_P): Delete. - (rs6000_debug_reg_global): Delete print of LRA status. - (rs6000_option_override_internal): Delete dead LRA related code. - (rs6000_lra_p): Delete function. - * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mlra. - -2017-07-27 Sebastian Huber - - * config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*). - * config/riscv/rtems.h: New file. - -2017-07-27 Kyrylo Tkachov - Sudakshina Das - - * config/aarch64/aarch64.md - (define_split for and3nr_compare): Move - non aarch64_logical_operand to a register. - (define_split for and_3nr_compare0): Move non - register immediate operand to a register. - * config/aarch64/predicates.md (aarch64_mov_imm_operand): New. - -2017-07-27 Peter Bergner - - PR middle-end/81564 - * tree-cfg.c (group_case_labels_stmt): Handle already deleted blocks. - -2017-07-27 Richard Biener - - PR tree-optimization/81573 - PR tree-optimization/81494 - * tree-vect-loop.c (vect_create_epilog_for_reduction): Handle - multi defuse cycle case. - -2017-07-27 Richard Biener - - PR tree-optimization/81571 - * tree-vect-slp.c (vect_build_slp_tree): Properly verify reduction - PHIs. - -2017-07-27 Eric Botcazou - - * config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag - earlier and only if MASK_FPU is set. Adjust formatting. - -2017-07-27 Martin Liska - - * opt-functions.awk: Add validation of value of Init. - * optc-gen.awk: Pass new argument. - -2017-07-27 Martin Liska - - * auto-profile.c (autofdo_source_profile::update_inlined_ind_target): - Fix wrong condition. - -2017-07-27 Martin Liska - - * auto-profile.c (afdo_annotate_cfg): Assign zero counts to - BBs and edges seen by autoFDO. - -2017-07-27 Richard Biener - - PR tree-optimization/81502 - * tree-ssa.c (non_rewritable_lvalue_p): Handle BIT_INSERT_EXPR - with incompatible but same sized type. - (execute_update_addresses_taken): Likewise. - -2017-07-27 James Greenhalgh - - * tree-ssa-loop-ch.c (pass_ch::process_loop_p): Guard on - flag_tree_loop_vectorize rather than flag_tree_vectorize. - -2017-07-27 Andreas Krebbel - - PR target/81534 - * config/s390/s390.md ("*atomic_compare_and_swap_1") - ("*atomic_compare_and_swapdi_2", "*atomic_compare_and_swapsi_3"): - Change s_operand to memory_operand. - -2017-07-27 Richard Sandiford - - * config/rs6000/rs6000-protos.h (rs6000_emit_le_vsx_permute): Declare. - * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Replace with... - (rs6000_emit_le_vsx_permute): ...this. Take the destination as input. - Emit instructions rather than returning an expression. Handle TFmode - and KFmode by casting to TImode. - (rs6000_emit_le_vsx_load): Update to use rs6000_emit_le_vsx_permute. - (rs6000_emit_le_vsx_store): Likewise. - * config/rs6000/vsx.md (VSX_TI): New iterator. - (*vsx_le_permute_): Use it instead of VSX_LE_128. - (*vsx_le_undo_permute_): Likewise. - (*vsx_le_perm_load_): Use rs6000_emit_le_vsx_permute to - emit the split sequence. - (*vsx_le_perm_store_): Likewise. - -2017-07-27 Jakub Jelinek - - PR tree-optimization/81555 - PR tree-optimization/81556 - * tree-ssa-reassoc.c (rewrite_expr_tree): Add NEXT_CHANGED argument, - if true, force CHANGED for the recursive invocation. - (reassociate_bb): Remember original length of ops array, pass - len != orig_len as NEXT_CHANGED in rewrite_expr_tree call. - - * attribs.c (decl_attributes): Imply noinline, noclone and no_icf - attributes for noipa attribute. For naked attribute use - lookup_attribute first before lookup_attribute_spec. - * final.c (rest_of_handle_final): Disable IPA RA for functions with - noipa attribute. - * ipa-visibility.c (non_local_p): Fix comment typos. Return true - for functions with noipa attribute. - (cgraph_externally_visible_p): Return true for functions with noipa - attribute. - * cgraph.c (cgraph_node::get_availability): Return AVAIL_INTERPOSABLE - for functions with noipa attribute. - * doc/extend.texi: Document noipa function attribute. - * tree-ssa-structalias.c (refered_from_nonlocal_fn): Set *nonlocal_p - also for functions with noipa attribute. - (ipa_pta_execute): Set nonlocal_p also for nodes with noipa attribute. - -2017-07-26 Andrew Pinski - - * config/aarch64/aarch64.c (thunderx_vector_cost): Decrease cost of - vec_unalign_load_cost and vec_unalign_store_cost. - -2017-07-26 Michael Meissner - - * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete - -mvsx-small-integer option. - (ISA_3_0_MASKS_IEEE): Likewise. - (OTHER_VSX_VECTOR_MASKS): Likewise. - (POWERPC_MASKS): Likewise. - * config/rs6000/rs6000.opt (-mvsx-small-integer): Likewise. - * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Simplify - code, only testing for DImode being allowed in non-VSX floating - point registers. - (rs6000_init_hard_regno_mode_ok): Change TARGET_VSX_SMALL_INTEGER - to TARGET_P8_VECTOR test. Remove redundant VSX test inside of - another VSX test. - (rs6000_option_override_internal): Delete -mvsx-small-integer. - (rs6000_expand_vector_set): Change TARGET_VSX_SMALL_INTEGER to - TARGET_P8_VECTOR test. - (rs6000_secondary_reload_simple_move): Likewise. - (rs6000_preferred_reload_class): Delete TARGET_VSX_SMALL_INTEGER, - since TARGET_P9_VECTOR was already tested. - (rs6000_opt_masks): Remove -mvsx-small-integer. - * config/rs6000/vsx.md (vsx_extract_): Delete - TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was - used. - (vsx_extract__p9): Delete TARGET_VSX_SMALL_INTEGER, since a - test for TARGET_VEXTRACTUB was used, and that uses - TARGET_P9_VECTOR. - (p9 extract splitter): Likewise. - (vsx_extract__di_p9): Likewise. - (vsx_extract__store_p9): Likewise. - (vsx_extract_si): Delete TARGET_VSX_SMALL_INTEGER, since a test - for TARGET_P9_VECTOR was used. Delete code that is now dead with - the elimination of TARGET_VSX_SMALL_INTEGER. - (vsx_extract__p8): Likewise. - (vsx_ext__fl_): Likewise. - (vsx_ext__ufl_): Likewise. - (vsx_set__p9): Likewise. - (vsx_set_v4sf_p9): Likewise. - (vsx_set_v4sf_p9_zero): Likewise. - (vsx_insert_extract_v4sf_p9): Likewise. - (vsx_insert_extract_v4sf_p9_2): Likewise. - * config/rs6000/rs6000.md (sign extend splitter): Change - TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test. - (floatsi2_lfiwax_mem): Likewise. - (floatunssi2_lfiwzx_mem): Likewise. - (float2): Delete TARGET_VSX_SMALL_INTEGER, - since a test for TARGET_P9_VECTOR was used. - (float2_internal): Likewise. - (floatuns2): Likewise. - (floatuns2_internal): Likewise. - (fix_truncsi2): Change TARGET_VSX_SMALL_INTEGER to - TARGET_P8_VECTOR test. - (fix_truncsi2_stfiwx): Likewise. - (fix_truncsi2_internal): Likewise. - (fix_trunc2): Delete - TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was - used. - (fix_trunc2_internal): Likewise. - (fixuns_truncsi2): Change TARGET_VSX_SMALL_INTEGER to - TARGET_P8_VECTOR test. - (fixuns_truncsi2_stfiwx): Likewise. - (fixuns_trunc2): Delete - TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was - used. - (fixuns_trunc2_internal): Likewise. - (fctiwz__smallint): Delete TARGET_VSX_SMALL_INTEGER, - since a test for TARGET_P9_VECTOR was used. - (splitter for loading small constants): Likewise. - -2017-07-26 Andrew Pinski - - * config/aarch64/aarch64.c (thunderx_vector_cost): Fix - vec_fp_stmt_cost. - -2017-07-26 H.J. Lu - - PR target/81563 - * config/i386/i386.c (sp_valid_at): Properly check CFA offset. - (fp_valid_at): Likewise. - -2017-07-26 James Greenhalgh - - * config/aarch64/aarch64.c (cortexa57_addrcost_table): Remove. - (qdf24xx_addrcost_table): Likewise. - (cortexa57_tunings): Update to use generic_branch_cost. - (cortexa72_tunings): Likewise. - (cortexa73_tunings): Likewise. - (qdf24xx_tunings): Likewise. - -2017-07-26 James Greenhalgh - - * config/aarch64/aarch64.c (cortexa57_branch_cost): Remove. - (thunderx2t99_branch_cost): Likewise. - (cortexa35_tunings): Update to use generic_branch_cost. - (cortexa53_tunings): Likewise. - (cortexa57_tunings): Likewise. - (cortexa72_tunings): Likewise. - (cortexa73_tunings): Likewise. - (thunderx2t99_tunings): Likewise. - -2017-07-26 Sebastian Huber - - * config/sparc/sparc.c (dump_target_flag_bits): Dump MASK_FSMULD. - (sparc_option_override): Honour MASK_FSMULD. - * config/sparc/sparc.h (MASK_FEATURES): Add MASK_FSMULD. - * config/sparc/sparc.md (muldf3_extend): Use TARGET_FSMULD. - * config/sparc/sparc.opt (mfsmuld): New option. - * doc/invoke.texi (mfsmuld): Document option. - -2017-07-26 Marek Polacek - - PR middle-end/70992 - * tree.c (build2_stat): Don't set TREE_CONSTANT on divisions by zero. - -2017-07-26 Richard Biener - - * gimple-match-head.c (do_valueize): Return OP if valueize - returns NULL_TREE. - (get_def): New helper to get at the def stmt of a SSA name - if valueize allows. - * genmatch.c (dt_node::gen_kids_1): Use get_def instead of - do_valueize to get at the def stmt. - (dt_operand::gen_gimple_expr): Simplify do_valueize calls. - -2017-07-26 Wilco Dijkstra - - PR middle-end/46932 - * auto-inc-dec.c (parse_add_or_inc): Block autoinc on sfp. - -2017-07-26 Martin Liska - - PR sanitize/81186 - * function.c (expand_function_start): Make expansion of - nonlocal_goto_save_area after parm_birth_insn. - -2017-07-26 Sebastian Huber - - * config/sparc/sparc.c (sparc_option_override): Remove MASK_FPU - from all CPU target flags enable members. - -2017-07-26 Richard Biener - - * genmatch.c (dt_simplify::gen): Make iterator vars const. - (decision_tree::gen): Make 'type' const. - (write_predicate): Likewise. - -2017-07-24 Michael Meissner - - * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): - Eliminate TARGET_UPPER_REGS_{DF,DI,SF} usage. - (rs6000_option_override_internal): Likewise. - (rs6000_expand_vector_set): Likewise. - * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Delete. - (TARGET_UPPER_REGS_SF): Likewise. - (TARGET_UPPER_REGS_DI): Likewise. - (TARGET_VEXTRACTUB): Eliminate TARGET_UPPER_REGS_{DF,DI,SF}. - (TARGET_DIRECT_MOVE_64BIT): Likewise. - * config/rs6000/rs6000.md (ALTIVEC_DFORM): Likewise. - (float2_internal): Likewise. - (Splitters for DI constants in Altivec registers): Likewise. - * config/rs6000/vsx.md (vsx_set__p9): Likewise. - (vsx_set_v4sf_p9): Likewise. - (vsx_set_v4sf_p9_zero): Likewise. - (vsx_insert_extract_v4sf_p9): Likewise. - (vsx_insert_extract_v4sf_p9_2): Likewise. - -2017-07-25 Carl Love - - * doc/extend.texi: Update the built-in documentation file for the - existing built-in functions - vector signed char vec_cnttz (vector signed char); - vector unsigned char vec_cnttz (vector unsigned char); - vector signed short vec_cnttz (vector signed short); - vector unsigned short vec_cnttz (vector unsigned short); - vector signed int vec_cnttz (vector signed int); - vector unsigned int vec_cnttz (vector unsigned int); - vector signed long long vec_cnttz (vector signed long long); - vector unsigned long long vec_cnttz (vector unsigned long long); - -2017-07-25 Andrew Pinski - - * tree-ssa-uninit.c (warn_uninitialized_vars): Don't warn about memory - accesses where the use is for the first operand of a BIT_INSERT. - -2017-07-25 Jim Wilson - - PR bootstrap/81521 - * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look - for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS. - -2017-07-25 Jim Wilson - - * config/i386/gstabs.h: Delete. - * config/i386/openbsd.h, config/i386/t-openbsd: Likewise. - -2017-07-25 Uros Bizjak - - * config/i386/i386.c (ix86_decompose_address): Do not check for - register RTX when looking at index_reg or base_reg. - * config/i386/i386.h (INCOMING_RETURN_ADDR_RTX): Use stack_pointer_rtx. - -2017-07-25 Eric Botcazou - - * gimple.c (gimple_assign_set_rhs_with_ops): Do not ask gsi_replace - to update EH info here. - -2017-07-25 Alexander Monakov - - * match.pd ((X * CST1) * CST2): Simplify to X * (CST1 * CST2). - -2017-07-25 Alexander Monakov - - * match.pd ((X * CST) * Y): Reassociate to (X * Y) * CST. - -2017-07-25 Torsten Duwe - - * common.opt: Introduce -fpatchable-function-entry - command line option, and its variables function_entry_patch_area_size - and function_entry_patch_area_start. - * opts.c (common_handle_option): Add -fpatchable_function_entry_ case, - including a two-value parser. - * target.def (print_patchable_function_entry): New target hook. - * targhooks.h (default_print_patchable_function_entry): New function. - * targhooks.c (default_print_patchable_function_entry): Likewise. - * toplev.c (process_options): Switch off IPA-RA if - patchable function entries are being generated. - * varasm.c (assemble_start_function): Look at the - patchable-function-entry command line switch and current - function attributes and maybe generate NOP instructions by - calling the print_patchable_function_entry hook. - * doc/extend.texi: Document patchable_function_entry attribute. - * doc/invoke.texi: Document -fpatchable_function_entry - command line option. - * doc/tm.texi.in (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY): - New target hook. - * doc/tm.texi: Re-generate. - -2017-07-25 Jakub Jelinek - - PR target/81532 - * config/i386/constraints.md (Yd, Ye): Use ALL_SSE_REGS for - TARGET_AVX512DQ rather than TARGET_AVX512BW. - -2017-07-25 Tamar Christina - - * config/arm/parsecpu.awk (all_cores): Remove duplicates. - -2017-07-25 Richard Biener - - PR tree-optimization/81455 - * tree-ssa-loop-unswitch.c (find_loop_guard): Make sure to - not walk in cycles when looking for guards. - -2017-07-25 Richard Biener - - PR tree-optimization/81529 - * tree-vect-stmts.c (process_use): Disregard live induction PHIs - when optimizing backedge uses. - -2017-07-25 David Edelsohn - - * dwarf2asm.c (dw2_asm_output_nstring): Encode double quote - character for AIX. - * dwarf2out.c (output_macinfo): Copy debug_line_section_label - to dl_section_ref. On AIX, append an expression to subtract - the size of the section length to dl_section_ref. - -2017-07-25 Segher Boessenkool - - * configure.ac: If any of the config.* scripts fail, exit 1. - * configure: Regenerate. - -2017-07-25 Richard Biener - - PR middle-end/81546 - * tree-ssa-operands.c (verify_imm_links): Remove cap on number - of immediate uses, be more verbose on errors. - -2017-07-25 Richard Biener - - PR tree-optimization/81510 - * tree-vect-loop.c (vect_is_simple_reduction): When the - reduction stmt is not inside the loop bail out. - -2017-07-25 Richard Biener - - PR tree-optimization/81303 - * tree-vect-loop-manip.c (vect_loop_versioning): Build - profitability check against LOOP_VINFO_NITERSM1. - -2017-07-25 Alexander Monakov - - * domwalk.c (cmp_bb_postorder): Simplify. - (sort_bbs_postorder): New function. Use it... - (dom_walker::walk): ...here to optimize common cases. - -2017-07-25 Martin Liska - - PR ipa/81520 - * ipa-visibility.c (function_and_variable_visibility): Make the - redirection just on target that supports aliasing. - Fix GNU coding style. - -2017-07-25 Sebastian Huber - - PR libgcc/61152 - * config/aarch64/rtems.h: Add GCC Runtime Library Exception. - Format changes. - * config/arm/rtems.h: Likewise. - * config/bfin/rtems.h: Likewise. - * config/i386/rtemself.h: Likewise. - * config/lm32/rtems.h: Likewise. - * config/m32c/rtems.h: Likewise. - * config/m68k/rtemself.h: Likewise. - * config/microblaze/rtems.h: Likewise. - * config/mips/rtems.h: Likewise. - * config/moxie/rtems.h: Likewise. - * config/nios2/rtems.h: Likewise. - * config/powerpcspe/rtems.h: Likewise. - * config/rs6000/rtems.h: Likewise. - * config/rtems.h: Likewise. - * config/sh/rtems.h: Likewise. - * config/sh/rtemself.h: Likewise. - * config/sparc/rtemself.h: Likewise. - -2017-07-25 Georg-Johann Lay - - PR 81487 - * hsa-brig.c (brig_init): Use xasprintf instead of asprintf. - * gimple-pretty-print.c (dump_profile, dump_probability): Same. - * tree-ssa-structalias.c (alias_get_name): Same. - -2017-07-25 Bin Cheng - - PR target/81414 - * config/aarch64/cortex-a57-fma-steering.c (analyze): Skip fmul/fmac - instructions if no du chain is found. - -2017-07-25 Georg-Johann Lay - - * config/avr/avr-log.c (avr_log_vadump) ['T']: Print NULL-TREE. - -2017-07-25 Richard Biener - - PR middle-end/81505 - * fold-const.c (fold_negate_const): TREE_OVERFLOW should be - sticky. - -2017-07-24 Michael Meissner - - * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Delete - upper-regs options. - (ISA_2_7_MASKS_SERVER): Likewise. - (ISA_3_0_MASKS_IEEE): Likewise. - (OTHER_P8_VECTOR_MASKS): Likewise. - (OTHER_VSX_VECTOR_MASKS): Likewise. - (POWERPC_MASKS): Likewise. - (power7 cpu): Use ISA_2_6_MASKS_SERVER instead of using a - duplicate list of options. - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove - explicit -mupper-regs options. - * config/rs6000/rs6000.opt (-mvsx-scalar-memory): Delete - -mupper-regs* options. Delete -mvsx-scalar-memory, which was an - alias for -mupper-regs-df. - * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise. - (rs6000_init_hard_regno_mode_ok): Likewise. - (rs6000_option_override_internal): Likewise. - (rs6000_opt_masks): Likewise. - * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Define upper regs - options in terms of whether -mvsx or -mpower8-vector was used. - (TARGET_UPPER_REGS_DI): Likewise. - (TARGET_UPPER_REGS_SF): Likewise. - * doc/invoke.texi (RS/6000 and PowerPC Options): Delete the - -mupper-regs-* options. - -2017-07-24 Segher Boessenkool - - * passes.c (emergency_dump_function): Print some empty lines and a - header before the RTL dump. - -2017-07-24 Segher Boessenkool - - * cfgrtl.c (rtl_dump_bb): Don't call NEXT_INSN on NULL. - -2017-07-24 Wilco Dijkstra - - PR target/79041 - * config/aarch64/aarch64.c (aarch64_classify_symbol): - Avoid SYMBOL_SMALL_ABSOLUTE for literals with pc-relative literals. - -2017-07-24 Carl Love - - * config/rs6000/rs6000-c.c: Add support for built-in functions - vector float vec_extract_fp32_from_shorth (vector unsigned short); - vector float vec_extract_fp32_from_shortl (vector unsigned short); - * config/rs6000/altivec.h (vec_extract_fp_from_shorth, - vec_extract_fp_from_shortl): Add defines for the two builtins. - * config/rs6000/rs6000-builtin.def (VEXTRACT_FP_FROM_SHORTH, - VEXTRACT_FP_FROM_SHORTL): Add BU_P9V_OVERLOAD_1 and BU_P9V_VSX_1 - new builtins. - * config/rs6000/vsx.md vsx_xvcvhpsp): Add define_insn. - (vextract_fp_from_shorth, vextract_fp_from_shortl): Add define_expands. - * doc/extend.texi: Update the built-in documentation file for the - new built-in function. - -2017-07-24 Jakub Jelinek - - PR bootstrap/81521 - * tree.def: Remove TYPE_METHODS documentation, adjust TYPE_FIELDS - documentation. - * doc/generic.texi: Likewise. - * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look - for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS. - -2017-07-24 Jackson Woodruff - - * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge): New. - (aarch64_mls_elt_merge): Likewise. - -2017-07-23 Krister Walfridsson - - * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not - having __cxa_atexit. - -2017-07-23 Michael Collison - - * config/arm/arm.c (arm_option_override): Deprecate - use of -mstructure-size-boundary. - * config/arm/arm.opt: Deprecate -mstructure-size-boundary. - * doc/invoke.texi: Deprecate -mstructure-size-boundary. - -2017-07-23 Bill Schmidt - - PR target/80695 - * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): - Reduce cost estimate for direct moves. - -2017-07-23 Uros Bizjak - - PR target/80569 - * config/i386/i386.c (ix86_option_override_internal): Disable - BMI, BMI2 and TBM instructions for -m16. - -2017-07-21 Carl Love - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW, - ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries. - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin, - builtin_function_type): Add ALTIVEC_BUILTIN_* case statements. - * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW, - VMULOSW): New enum "unspec" values. - (altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw, - altivec_vmulosw): New patterns. - * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW, - VMULOSW): Add definitions. - -2017-07-21 Jim Wilson - - * config/aarch64/aarch64-cores.def (falkor): Add AARCH64_FL_RDMA. - (qdf24xx): Likewise. - * config/aarch64/aarch64-options-extensions.def (rdma); New. - * config/aarch64/aarch64.h (AARCH64_FL_RDMA): New. - (AARCH64_FL_V8_1): Renumber. - (AARCH64_FL_FOR_ARCH8_1): Add AARCH64_FL_RDMA. - (AARCH64_ISA_RDMA): Use AARCH64_FL_RDMA. - * config/aarch64/arm_neon.h: Use +rdma instead of arch=armv8.1-a. - * doc/invoke.texi (AArch64 Options): Mention +rmda in -march docs. Add - rdma to feature modifiers list. - -2017-07-21 Yury Gribov - - PR middle-end/56727 - * ipa-visibility (function_and_variable_visibility): Convert - recursive PLT call to direct call if appropriate. - -2017-07-21 Andrew Pinski - - * tree-ssa-sccvn.c (vn_nary_op_eq): Check BIT_INSERT_EXPR's - operand 1 to see if the types precision matches. - * fold-const.c (operand_equal_p): Likewise. - -2017-07-21 Richard Biener - - PR tree-optimization/81303 - * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Pass - in datarefs vector. Allow NULL dr0 for no peeling cost estimate. - (vect_peeling_hash_get_lowest_cost): Adjust. - (vect_enhance_data_refs_alignment): Likewise. Use - vect_get_peeling_costs_all_drs to compute the penalty for no - peeling to match up costs. - -2017-07-21 Richard Biener - - PR tree-optimization/81500 - * tree-vect-loop.c (vect_is_simple_reduction): Properly fail if - we didn't identify a reduction path. - -2017-07-21 Tom de Vries - Cesar Philippidis - - PR gcov-profile/81442 - * config/nvptx/nvptx.c (nvptx_goacc_reduction_init): Add missing edge - probabilities. - -2017-07-21 Tom de Vries - - PR lto/81430 - * config/nvptx/nvptx.c (nvptx_override_options_after_change): New - function. - (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define to - nvptx_override_options_after_change. - -2017-07-21 Ulrich Drepper - - * dwarf2out.c (output_file_names): Avoid double testing for - dwarf_version >= 5. - -2017-07-21 Georg-Johann Lay - - * doc/invoke.texi (AVR Built-in Functions): Re-layout section. - -2016-07-21 Jan Hubicka - - * cfgcleanup.c (flow_find_cross_jump): Do not crossjump across - hot/cold regions. - (try_crossjump_to_edge): Do not punt on partitioned functions. - -2016-07-21 Jan Hubicka - - * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges): - Put all BBs reachable only via paths crossing cold region to cold - region. - * cfgrtl.c (find_bbs_reachable_by_hot_paths): New function. - -2016-07-21 Richard Biener - - PR tree-optimization/81303 - * tree-vect-loop.c (vect_estimate_min_profitable_iters): Take - into account prologue and epilogue iterations when raising - min_profitable_iters to sth at least covering one vector iteration. - -2017-07-21 Tamar Christina - - * config/arm/arm.c (arm_test_cpu_arch_dat): - Check for overlap. - -2017-07-20 Nathan Sidwell - - Remove TYPE_METHODS. - * tree.h (TYPE_METHODS): Delete. - * dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS. - * dbxout.c (dbxout_type_fields): Ignore FUNCTION_DECLs. - (dbxout_type_methods): Scan TYPE_FIELDS. - (dbxout_type): Don't check TYPE_METHODS here. - * function.c (use_register_for_decl): Always ignore register for - class types when not optimizing. - * ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan. - * tree.c (free_lang_data_in_type): Stitch out member functions and - templates from TYPE_FIELDS. - (build_distinct_type_copy, verify_type_variant, - verify_type): Member fns are on TYPE_FIELDS. - * tree-dump.c (dequeue_and_dump): No TYPE_METHODS. - * tree-pretty-print.c (dump_generic_node): Likewise. - -2017-07-20 Jakub Jelinek - - PR target/80846 - * config/i386/i386.c (ix86_expand_vector_init_general): Handle - V2TImode and V4TImode. - (ix86_expand_vector_extract): Likewise. - * config/i386/sse.md (VMOVE): Enable V4TImode even for just - TARGET_AVX512F, instead of only for TARGET_AVX512BW. - (ssescalarmode): Handle V4TImode and V2TImode. - (VEC_EXTRACT_MODE): Add V4TImode and V2TImode. - (*vec_extractv2ti, *vec_extractv4ti): New insns. - (VEXTRACTI128_MODE): New mode iterator. - (splitter for *vec_extractv?ti first element): New. - (VEC_INIT_MODE): New mode iterator. - (vec_init): Consolidate 3 expanders into one using - VEC_INIT_MODE mode iterator. - -2017-07-20 Alexander Monakov - - * lra-assigns.c (pseudo_compare_func): Fix comparison step based on - non_spilled_static_chain_regno_p. - -2017-07-20 Alexander Monakov - - * gimple-ssa-store-merging.c (sort_by_bitpos): Return 0 on equal bitpos. - -2017-07-20 Jan Hubicka - - * bb-reorder.c (connect_traces): Allow copying of blocks within - single partition. - -2017-07-20 Richard Biener - - * gimple.h (gimple_phi_result): Add gphi * overload. - (gimple_phi_result_ptr): Likewise. - (gimple_phi_arg): Likewise. Adjust index assert to only - allow actual argument accesses rather than all slots available - by capacity. - (gimple_phi_arg_def): Add gphi * overload. - * tree-phinodes.c (make_phi_node): Initialize only actual - arguments. - (resize_phi_node): Clear memory not covered by old node, - do not initialize excess argument slots. - (reserve_phi_args_for_new_edge): Initialize new argument slot - completely. - -2017-07-20 Bin Cheng - - PR tree-optimization/81388 - Revert r238585: - 2016-07-21 Bin Cheng - - * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up - by removing computation of may_be_zero. - -2017-07-18 Jan Hubicka - Tom de Vries - - PR middle-end/81030 - * cfgbuild.c (find_many_sub_basic_blocks): Update REG_BR_PROB note - when gimple level profile disagrees with what RTL expander did. - -2017-07-20 Richard Biener - - PR tree-optimization/61171 - * tree-vectorizer.h (slp_instance): Add reduc_phis member. - (vect_analyze_stmt): Add slp instance parameter. - (vectorizable_reduction): Likewise. - * tree-vect-loop.c (vect_analyze_loop_operations): Adjust. - (vect_is_simple_reduction): Deal with chains not detected - as SLP reduction chain, specifically not properly associated - chains containing a mix of plus/minus. - (get_reduction_op): Remove. - (get_initial_defs_for_reduction): Simplify, pass in whether - this is a reduction chain, pass in the SLP node for the PHIs. - (vect_create_epilog_for_reduction): Get the SLP instance as - arg and adjust. - (vectorizable_reduction): Get the SLP instance as arg. - During analysis remember the SLP node with the PHIs in the - instance. Simplify getting at the vectorized reduction PHIs. - * tree-vect-slp.c (vect_slp_analyze_node_operations): Pass - through SLP instance. - (vect_slp_analyze_operations): Likewise. - * tree-vect-stms.c (vect_analyze_stmt): Likewise. - (vect_transform_stmt): Likewise. - -2017-07-20 Tom de Vries - - PR tree-optimization/81489 - * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Move - read of phi arg location to before loop that modifies phi. - -2017-07-20 Naveen H.S - - * match.pd (((m1 >/=/<= m2) * d -> (m1 >/=/<= m2) ? d : 0): - New pattern. - -2017-07-19 Jan Hubicka - - PR middle-end/81331 - * except.c (execute): Fix ordering issue. - -2018-07-19 Segher Boessenkool - - PR rtl-optimization/81423 - * combine.c (make_compound_operation_int): Don't try to optimize - the AND of a SUBREG of an LSHIFTRT if that SUBREG is paradoxical. - -2017-07-19 Segher Boessenkool - - PR rtl-optimization/81423 - * simplify-rtx.c (simplify_truncation): Handle truncating an IOR - with a constant that is -1 in the truncated to mode. - -2017-07-19 Jan Hubicka - - * predict.c (propagate_unlikely_bbs_forward): Break out from ... - (determine_unlikely_bbs): ... here. - * predict.h (propagate_unlikely_bbs_forward): Declare. - * cfgexpand.c (pass_expand::execute): Use it. - * bb-reorder.c (sanitize_hot_paths): Do not consider known to be - unlikely edges. - (find_rarely_executed_basic_blocks_and_crossing_edges): Use - propagate_unlikely_bbs_forward. - -2017-07-19 Jan Hubicka - - PR middle-end/81331 - * except.c (maybe_add_nop_after_section_switch): New function. - (execute): Use it. - -2017-07-19 Tom de Vries - - * gimple.h (gimple_phi_set_arg): Make assert more strict. - -2017-07-19 Tom de Vries - - * gimple.h (gimple_phi_arg): Make assert more strict. - -2017-07-19 Steven Munroe - - * config.gcc (powerpc*-*-*): Add mmintrin.h. - * config/rs6000/mmintrin.h: New file. - * config/rs6000/x86intrin.h [__ALTIVEC__]: Include mmintrin.h. - -2017-07-19 Jakub Jelinek - - PR tree-optimization/81346 - * match.pd: Optimize (X - 1U) <= INT_MAX-1U into (int) X > 0. - -2017-07-19 Tom de Vries - - * config/nvptx/nvptx.md (VECIM): Add V2DI. - -2017-07-19 Tom de Vries - - * config/nvptx/nvptx-modes.def: Add V2DImode. - * config/nvptx/nvptx-protos.h (nvptx_data_alignment): Declare. - * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2DImode. - (nvptx_output_mov_insn): Handle lack of mov.b128. - (nvptx_print_operand): Handle 'H' and 'L' codes. - (nvptx_vector_mode_supported): Allow V2DImode. - (nvptx_preferred_simd_mode): New function. - (nvptx_data_alignment): New function. - (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Redefine to - nvptx_preferred_simd_mode. - * config/nvptx/nvptx.h (STACK_BOUNDARY, BIGGEST_ALIGNMENT): Change from - 64 to 128 bits. - (DATA_ALIGNMENT): Define. Set to nvptx_data_alignment. - -2017-07-19 Tom de Vries - - * config/nvptx/nvptx-modes.def: New file. Add V2SImode. - * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2SImode. - (nvptx_vector_mode_supported): New function. Allow V2SImode. - (TARGET_VECTOR_MODE_SUPPORTED_P): Redefine to nvptx_vector_mode_supported. - * config/nvptx/nvptx.md (VECIM): New mode iterator. Add V2SI. - (mov_insn): New define_insn. - (define_expand "mov): New define_expand. - -2017-07-19 Tom de Vries - - * config/nvptx/nvptx.c (nvptx_print_operand): Handle v2 vector mode. - -2017-07-19 Jakub Jelinek - - PR tree-optimization/81346 - * fold-const.h (fold_div_compare, range_check_type): Declare. - * fold-const.c (range_check_type): New function. - (build_range_check): Use range_check_type. - (fold_div_compare): No longer static, rewritten into - a match.pd helper function. - (fold_comparison): Don't call fold_div_compare here. - * match.pd (X / C1 op C2): New optimization using fold_div_compare - as helper function. - -2017-07-19 Nathan Sidwell - - * tree.h (TYPE_MINVAL, TYPE_MAXVAL): Rename to ... - (TYPE_MIN_VALUE_RAW, TYPE_MAX_VALUE_RAW): ... these. - * tree.c (find_decls_types_r, verify_type): Use - TYPE_{MIN,MAX}_VALUE_RAW. - * lto-streamer-out.c (DFS::DFS_write_tree_body): Likewise. - (hash_tree): Likewise. - * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers): - Likewise. - * tree-streamer-out.c (write_ts_type_non_common_tree_pointers): - Likewise. - -2017-07-18 Tom de Vries - - PR middle-end/81464 - * omp-expand.c (expand_omp_for_static_chunk): Handle - equal-argument loop exit phi. - -2017-07-18 Uros Bizjak - - PR target/81471 - * config/i386/i386.md (rorx_immediate_operand): New mode attribute. - (*bmi2_rorx3_1): Use rorx_immediate_operand as - operand 2 predicate. - (*bmi2_rorxsi3_1_zext): Use const_0_to_31_operand as - operand 2 predicate. - (ror,rol -> rorx splitters): Use const_int_operand as - operand 2 predicate. - -2017-06-18 Richard Biener - - PR tree-optimization/81410 - * tree-vect-stmts.c (vectorizable_load): Properly adjust for - the gap in the ! slp_perm SLP case after each group. - -2017-07-18 Jan Hubicka - - PR middle-end/81463 - * cfgloopmanip.c (scale_loop_profile): Watch out for zero frequency - again. - -2017-07-18 Jan Hubicka - - PR middle-end/81462 - * predict.c (set_even_probabilities): Cleanup; do not affect - probabilities that are already known. - (combine_predictions_for_bb): Call even when count is set. - -2017-07-18 Nathan Sidwell - - * tree-parloops.c (try_transform_to_exit_first_loop_alt): Use - TYPE_MAX_VALUE. - -2017-07-18 Bin Cheng - - PR target/81408 - * tree-ssa-loop-niter.c (number_of_iterations_exit): Dump missed - optimization for loop niter analysis. - -2017-07-18 Georg-Johann Lay - - PR target/81473 - * config/avr/avr.c (avr_optimize_casesi): Don't use - INT8_MIN, INT8_MAX, UINT8_MAX, INT16_MIN, INT16_MAX, UINT16_MAX. - -2017-07-18 Robin Dapp - - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Remove - body_cost_vec from _vect_peel_extended_info. - (vect_peeling_hash_get_lowest_cost): Do not set body_cost_vec. - (vect_peeling_hash_choose_best_peeling): Remove body_cost_vec and - npeel. - -2017-07-18 Bin Cheng - - * config/arm/arm.c (emit_unlikely_jump): Remove unused var. - -2017-07-18 Richard Biener - - PR tree-optimization/80620 - PR tree-optimization/81403 - * tree-ssa-pre.c (phi_translate_1): Clear range and points-to - info when re-using a VN table entry. - -2017-07-18 Richard Biener - - PR tree-optimization/81418 - * tree-vect-loop.c (vectorizable_reduction): Properly compute - vectype_in. Verify that with lane-reducing reduction operations - we have a single def-use cycle. - -2017-07-17 Carl Love - - Revert commit r249424 2017-06-20 Carl Love - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW, - ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries. - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin, - builtin_function_type): Add ALTIVEC_BUILTIN_* case statements. - * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW, - VMULOSW): New enum "unspec" values. - (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si, - vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, - altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw, - altivec_vmulosw): New patterns. - * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW, - VMULOSW): Add definitions. - -2017-07-17 Uros Bizjak - - * config/alpha/alpha.c: Include predict.h. - -2017-07-17 Yury Gribov - - * tree-vrp.c (compare_assert_loc): Fix comparison function - to return predictable results. - -2017-07-17 Claudiu Zissulescu - - * config/arc/arc.md (adddi3): Remove support for mexpand-adddi - option. - (subdi3): Likewise. - * config/arc/arc.opt (mexpand-adddi): Deprecate it. - * doc/invoke.texi (mexpand-adddi): Update text. - -2017-07-17 Claudiu Zissulescu - - * config/arc/arc.md (clzsi2): Expand to an arc_clzsi2 instruction - that also clobbers the CC register. The old expand code is moved - to ... - (*arc_clzsi2): ... here. - (ctzsi2): Expand to an arc_ctzsi2 instruction that also clobbers - the CC register. The old expand code is moved to ... - (arc_ctzsi2): ... here. - -2017-07-17 Claudiu Zissulescu - - * config/arc/arc.opt (mindexed-loads): Use initial value - TARGET_INDEXED_LOADS_DEFAULT. - (mauto-modify-reg): Use initial value - TARGET_AUTO_MODIFY_REG_DEFAULT. - * config/arc/elf.h (TARGET_INDEXED_LOADS_DEFAULT): Define. - (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise. - * config/arc/linux.h (TARGET_INDEXED_LOADS_DEFAULT): Define. - (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise. - -2017-07-17 Martin Liska - - PR sanitizer/81302 - * opts.c (finish_options): Do not allow -fgnu-tm - w/ -fsanitize={kernel-,}address. Say sorry. - -2017-07-17 Bin Cheng - - PR target/81369 - * tree-loop-distribution.c (classify_partition): Only assert on - numer of iterations. - (merge_dep_scc_partitions): Delete prameter. Update function call. - (distribute_loop): Remove code handling loop with unknown niters. - (pass_loop_distribution::execute): Skip loop with unknown niters. - -2017-07-17 Bin Cheng - - PR target/81369 - * tree-loop-distribution.c (merge_dep_scc_partitions): Sink call to - function sort_partitions_by_post_order. - -2017-07-17 Bin Cheng - - PR tree-optimization/81374 - * tree-loop-distribution.c (pass_loop_distribution::execute): Record - the max index of basic blocks, rather than number of basic blocks. - -2017-07-17 Claudiu Zissulescu - - * config/arc/arc-protos.h (arc_legitimate_pc_offset_p): Remove - proto. - (arc_legitimate_pic_operand_p): Likewise. - * config/arc/arc.c (arc_legitimate_pic_operand_p): Remove - function. - (arc_needs_pcl_p): Likewise. - (arc_legitimate_pc_offset_p): Likewise. - (arc_legitimate_pic_addr_p): Remove LABEL_REF case, as this - function is also used in constrains.md. - (arc_legitimate_constant_p): Use arc_legitimate_pic_addr_p to - validate pic constants. Handle CONST_INT, CONST_DOUBLE, MINUS and - PLUS. Only return true/false in known cases, otherwise assert. - (arc_legitimate_address_p): Remove arc_legitimate_pic_addr_p as it - is already called in arc_legitimate_constant_p. - * config/arc/arc.h (CONSTANT_ADDRESS_P): Consider also LABEL for - pic addresses. - (LEGITIMATE_PIC_OPERAND_P): Use - arc_raw_symbolic_reference_mentioned_p function. - * config/arc/constraints.md (Cpc): Use arc_legitimate_pic_addr_p - function. - (Cal): Likewise. - (C32): Likewise. - -2017-07-17 Claudiu Zissulescu - Andrew Burgess - - * config/arc/arc-protos.h (arc_compute_function_type): Change prototype. - (arc_return_address_register): New function. - * config/arc/arc.c (arc_handle_fndecl_attribute): New function. - (arc_handle_fndecl_attribute): Add naked attribute. - (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define. - (TARGET_WARN_FUNC_RETURN): Likewise. - (arc_allocate_stack_slots_for_args): New function. - (arc_warn_func_return): Likewise. - (machine_function): Change type fn_type. - (arc_compute_function_type): Consider new naked function type, - change function return type. - (arc_must_save_register): Adapt to handle new - arc_compute_function_type's return type. - (arc_expand_prologue): Likewise. - (arc_expand_epilogue): Likewise. - (arc_return_address_regs): Delete. - (arc_return_address_register): New function. - (arc_epilogue_uses): Use above function. - * config/arc/arc.h (arc_return_address_regs): Delete prototype. - (arc_function_type): Change encoding, add naked type. - (ARC_INTERRUPT_P): Change to handle the new encoding. - (ARC_FAST_INTERRUPT_P): Likewise. - (ARC_NORMAL_P): Define. - (ARC_NAKED_P): Likewise. - (arc_compute_function_type): Delete prototype. - * config/arc/arc.md (in_ret_delay_slot): Use - arc_return_address_register function. - (simple_return): Likewise. - (p_return_i): Likewise. - -2017-07-17 Jakub Jelinek - - PR tree-optimization/81428 - * match.pd (X / X -> one): Don't optimize _Fract divisions, as 1 - can't be built for those types. - -2017-07-17 Georg-Johann Lay - - Remove stuff dead since r239246. - - * config/avr/avr-arch.h (avr_inform_devices): Remove dead proto. - * config/avr/avr-devices.c (mcu_name, comparator, avr_mcus_str) - (avr_inform_devices): Remove dead stuff. - -2017-07-17 Tamar Christina - - * config/arm/arm_neon.h: Fix softp typo. - -2017-07-17 Jakub Jelinek - - PR tree-optimization/81365 - * tree-ssa-phiprop.c (propagate_with_phi): When considering hoisting - aggregate moves onto bb predecessor edges, make sure there are no - loads that could alias the lhs in between the start of bb and the - loads from *phi. - -2017-07-17 Georg-Johann Lay - - PR 80929 - * config/avr/avr.c (avr_mul_highpart_cost): New static function. - (avr_rtx_costs_1) [TRUNCATE]: Use it to compute mul_highpart cost. - [LSHIFTRT, outer_code = TRUNCATE]: Same. - -2017-07-17 Jakub Jelinek - - PR tree-optimization/81396 - * tree-ssa-math-opts.c (struct symbolic_number): Add n_ops field. - (init_symbolic_number): Initialize it to 1. - (perform_symbolic_merge): Add n_ops from both operands into the new - n_ops. - (find_bswap_or_nop): Don't consider n->n == cmpnop computations - without base_addr as useless if they need more than one operation. - (bswap_replace): Handle !bswap case for NULL base_addr. - -2017-07-17 Tom de Vries - - PR target/81069 - * config/nvptx/nvptx.c (nvptx_single): Insert diverging branch as late - as possible. - -2017-07-17 Sebastian Huber - - * config/sparc/rtemself.h (TARGET_OS_CPP_BUILTINS): Add - conditional builtin define __FIX_LEON3FT_B2BST. - -2017-07-17 Daniel Cederman - - * config/sparc/t-rtems: Add mfix-gr712rc multilibs. Replace - MULTILIB_EXCEPTIONS with MULTILIB_REQUIRED. Match -mfix-gr712rc - with -mfix-ut700. - -2017-07-16 Eric Botcazou - - PR rtl-optimization/81424 - * optabs.c (prepare_cmp_insn): Use copy_to_reg instead of force_reg - to remove potential trapping from operands if -fnon-call-exceptions. - -2017-07-16 Jan Hubicka - - * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Use - profile_proability for scalling. - * scale_profile_for_vect_loop.c (scale_profile_for_vect_loop): Likewise. - -2017-07-16 Jan Hubicka - - * cgraph.c (cgraph_edge::redirect_call_stmt_to_caller): Cleanup. - -2017-07-16 Jan Hubicka - - * cfgloopmanip.c (scale_loop_profile): Avoid use of REG_BR_PROB_BASE - fixpoint arithmetics. - -2017-07-16 Jan Hubicka - - * tree-ssa-loop-unswitch.c (hoist_guard): Avoid use of REG_BR_PROB_BASE - fixpoint arithmetics. - -2017-07-16 Jan Hubicka - - * asan.c (create_cond_insert_point): Avoid use of REG_BR_PROB_BASE - fixpoint arithmetics. - -2017-07-16 Jan Hubicka - - * profile-count.h (profile_probability::from_reg_br_prob_note, - profile_probability::to_reg_br_prob_note): New functions. - * doc/rtl.texi (REG_BR_PROB_NOTE): Update documentation. - * reg-notes.h (REG_BR_PROB, REG_BR_PRED): Update docs. - * predict.c (probability_reliable_p): Update. - (edge_probability_reliable_p): Update. - (br_prob_note_reliable_p): Update. - (invert_br_probabilities): Update. - (add_reg_br_prob_note): New function. - (combine_predictions_for_insn): Update. - * asan.c (asan_clear_shadow): Update. - * cfgbuild.c (compute_outgoing_frequencies): Update. - * cfgrtl.c (force_nonfallthru_and_redirect): Update. - (update_br_prob_note): Update. - (rtl_verify_edges): Update. - (purge_dead_edges): Update. - (fixup_reorder_chain): Update. - * emit-rtl.c (try_split): Update. - * ifcvt.c (cond_exec_process_insns): Update. - (cond_exec_process_if_block): Update. - (dead_or_predicable): Update. - * internal-fn.c (expand_addsub_overflow): Update. - (expand_neg_overflow): Update. - (expand_mul_overflow): Update. - * loop-doloop.c (doloop_modify): Update. - * loop-unroll.c (compare_and_jump_seq): Update. - * optabs.c (emit_cmp_and_jump_insn_1): Update. - * predict.h: Update. - * reorg.c (mostly_true_jump): Update. - * rtl.h: Update. - * config/aarch64/aarch64.c (aarch64_emit_unlikely_jump): Update. - * config/alpha/alpha.c (emit_unlikely_jump): Update. - * config/arc/arc.c: (emit_unlikely_jump): Update. - * config/arm/arm.c: (emit_unlikely_jump): Update. - * config/bfin/bfin.c (cbranch_predicted_taken_p): Update. - * config/frv/frv.c (frv_print_operand_jump_hint): Update. - * config/i386/i386.c (ix86_expand_split_stack_prologue): Update. - (ix86_print_operand): Update. - (ix86_split_fp_branch): Update. - (predict_jump): Update. - * config/ia64/ia64.c (ia64_print_operand): Update. - * config/mmix/mmix.c (mmix_print_operand): Update. - * config/powerpcspe/powerpcspe.c (output_cbranch): Update. - (rs6000_expand_split_stack_prologue): Update. - * config/rs6000/rs6000.c: Update. - * config/s390/s390.c (s390_expand_vec_strlen): Update. - (s390_expand_vec_movstr): Update. - (s390_expand_cs_tdsi): Update. - (s390_expand_split_stack_prologue): Update. - * config/sh/sh.c (sh_print_operand): Update. - (expand_cbranchsi4): Update. - (expand_cbranchdi4): Update. - * config/sparc/sparc.c (output_v9branch): Update. - * config/spu/spu.c (get_branch_target): Update. - (ea_load_store_inline): Update. - * config/tilegx/tilegx.c (cbranch_predicted_p): Update. - * config/tilepro/tilepro.c: Update. - -2017-07-16 Eric Botcazou - - * gimplify.c (mostly_copy_tree_r): Revert latest change. - (gimplify_save_expr): Likewise. - -2017-07-07 Jan Hubicka - - * ipa-visibility.c (function_and_variable_visibility): Fix pasto. - -2017-07-07 Jan Hubicka - - * ipa-fnsummary.c (pass_data_ipa_fn_summary): Use - TV_IPA_FNSUMMARY. - * timevar.def (TV_IPA_FNSUMMARY): Define. - -2017-07-16 Daniel Cederman - - * config/sparc/sparc.md (divdf3_fix): Add NOP to prevent back - to back store errata sensitive sequence from being generated. - (sqrtdf2_fix): Likewise. - -2017-07-07 Jan Hubicka - - * tree-ssa-threadupdate.c (compute_path_counts, - update_joiner_offpath_counts): Use profile_probability. - -2017-07-15 Thomas Preud'homme - - Revert: - 2017-07-14 Thomas Preud'homme - - * config/arm/arm-c.c (arm_cpu_builtins): Define - __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5. - -2017-07-14 Kelvin Nilsen - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - array entries to represent __ieee128 versions of the - scalar_test_data_class, scalar_test_neg, scalar_extract_exp, - scalar_extract_sig, and scalar_insert_exp built-in functions. - (altivec_resolve_overloaded_builtin): Add special case handling - for the __builtin_scalar_insert_exp function, as represented by - the P9V_BUILTIN_VEC_VSIEDP constant. - * config/rs6000/rs6000-builtin.def (VSEEQP): Add scalar extract - exponent support for __ieee128 argument. - (VSESQP): Add scalar extract signature support for __ieee128 - argument. - (VSTDCNQP): Add scalar test negative support for __ieee128 - argument. - (VSIEQP): Add scalar insert exponent support for __int128 argument - with __ieee128 result. - (VSIEQPF): Add scalar insert exponent support for __ieee128 - argument with __ieee128 result. - (VSTDCQP): Add scalar test data class support for __ieee128 - argument. - (VSTDCNQP): Add overload support for scalar test negative with - __ieee128 argument. - (VSTDCQP): Add overload support for scalar test data class - __ieee128 argument. - * config/rs6000/vsx.md (UNSPEC_VSX_SXSIG) Replace - UNSPEC_VSX_SXSIGDP. - (UNSPEC_VSX_SIEXPQP): New constant. - (xsxexpqp): New insn for VSX scalar extract exponent quad - precision. - (xsxsigqp): New insn for VSX scalar extract significand quad - precision. - (xsiexpqpf): New insn for VSX scalar insert exponent quad - precision with floating point argument. - (xststdcqp): New expand for VSX scalar test data class quad - precision. - (xststdcnegqp): New expand for VSX scalar test negative quad - precision. - (xststdcqp): New insn to match expansions for VSX scalar test data - class quad precision and VSX scalar test negative quad precision. - * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add - special case operand checking to enforce that second operand of - VSX scalar test data class with quad precision argument is a 7-bit - unsigned literal. - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add - prototypes and descriptions of __ieee128 versions of - scalar_extract_exp, scalar_extract_sig, scalar_insert_exp, - scalar_test_data_class, and scalar_test_neg built-in functions. - -2016-07-14 Bill Schmidt - - PR tree-optimization/81162 - * gimple-ssa-strength-reduction.c (replace_mult_candidate): Don't - replace a negate with an add. - -2017-07-14 James Greenhalgh - - * doc/invoke.texi (arm/-mcpu): Document +crypto. - -2017-07-14 Thomas Preud'homme - - * config/arm/arm-c.c (arm_cpu_builtins): Define - __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5. - -2017-07-14 Thomas Preud'homme - - * config/arm/arm-cpus.in (cortex-r52): Add new entry. - (armv8-r): Set ARM Cortex-R52 as default CPU. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-tune.md: Regenerate. - * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM - Cortex-R52. - * doc/invoke.texi: Mention -mtune=cortex-r52 and availability of fp.dp - extension for -mcpu=cortex-r52. - -2017-07-14 Thomas Preud'homme - - * config/arm/arm-isa.h (isa_bit_FP_ARMv8): Delete enumerator. - (ISA_FP_ARMv8): Define as ISA_FPv5 and ISA_FP_D32. - * config/arm/arm-cpus.in (armv8-r): Define fp.sp as enabling FPv5. - (fp-armv8): Define it as FP_ARMv8 only. - config/arm/arm.h (TARGET_FPU_ARMV8): Delete. - (TARGET_VFP_FP16INST): Define using TARGET_VFP5 rather than - TARGET_FPU_ARMV8. - config/arm/arm.c (arm_rtx_costs_internal): Replace checks against - TARGET_FPU_ARMV8 by checks against TARGET_VFP5. - * config/arm/arm-builtins.c (arm_builtin_vectorized_function): Define - first ARM_CHECK_BUILTIN_MODE definition using TARGET_VFP5 rather - than TARGET_FPU_ARMV8. - * config/arm/arm-c.c (arm_cpu_builtins): Likewise for - __ARM_FEATURE_NUMERIC_MAXMIN macro definition. - * config/arm/arm.md (cmov): Condition on TARGET_VFP5 rather than - TARGET_FPU_ARMV8. - * config/arm/neon.md (neon_vrint): Likewise. - (neon_vcvt): Likewise. - (neon_): Likewise. - (3): Likewise. - * config/arm/vfp.md (lsi2): Likewise. - * config/arm/predicates.md (arm_cond_move_operator): Check against - TARGET_VFP5 rather than TARGET_FPU_ARMV8 and fix spacing. - -2017-07-14 Jackson Woodruff - - * config/aarch64/aarch64.c (aarch64_print_operand): Move comments - to top of function. - -2017-07-14 Kyrylo Tkachov - - * gimple-ssa-store-merging.c (clear_bit_region): Replace reference to - loop in comment with memset. - -2017-07-14 Martin Liska - - * cfgexpand.c (expand_gimple_basic_block): Remove dead comment. - * dwarf2out.c (is_java): Remove the function. - (output_pubname): Remove usage of the function. - (lower_bound_default): Remove usage of DW_LANG_Java. - (gen_compile_unit_die): Likewise. - * gcc.c: Remove compiler defaults for .java and .zip files. - * gimple-expr.c (remove_suffix): Change as there's no longer - extension than 4-letter one. - * gimplify.c (mostly_copy_tree_r): Remove Java-special part. - (gimplify_save_expr): Likewise. - * ipa-utils.h (polymorphic_type_binfo_p): Remove the comment - as it's possible even for other languages than Java. - * langhooks.h (struct lang_hooks): Remove Java from a comment. - * lto-opts.c (lto_write_options): Remove reference to Java. - * opts.c (strip_off_ending): Update file extension handling. - * tree-cfg.c (verify_gimple_call): Remove comment with Java. - * tree-eh.c (lower_resx): Likewise. - * tree.c (free_lang_data_in_type): Remove dead code. - (find_decls_types_r): Likewise. - (build_common_builtin_nodes): Remove Java from a comment. - (verify_type): Remove dead code. - * varasm.c (assemble_external): Remove Java from a comment. - -2017-07-14 Martin Liska - - * opts.c (finish_options): Add quotes. - (common_handle_option): Likewise. - -2017-07-14 Martin Liska - - * dbxout.c (get_lang_number): Do not handle GNU Pascal. - * dbxout.h (extern void dbxout_stab_value_internal_label_diff): - Remove N_SO_PASCAL. - * dwarf2out.c (lower_bound_default): Do not handle - DW_LANG_Pascal83. - (gen_compile_unit_die): Likewise. - * gcc.c: Remove default extension binding for GNU Pascal. - * stmt.c: Remove Pascal language from a comment. - * xcoffout.c: Likewise. - -2017-07-13 David Malcolm - - PR c/81405 - * diagnostic-show-locus.c (fixit_cmp): New function. - (layout::layout): Sort m_fixit_hints. - (column_range::column_range): Assert that the values are valid. - (struct char_span): New struct. - (correction::overwrite): New method. - (struct source_line): New struct. - (line_corrections::add_hint): Add assertions. Reimplement memcpy - calls in terms of classes source_line and char_span, and - correction::overwrite. - (selftest::test_overlapped_fixit_printing_2): New function. - (selftest::diagnostic_show_locus_c_tests): Call it. - -2017-07-13 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Return - early if there is no lhs. - -2017-07-13 Martin Liska - - * dwarf2out.c (gen_pointer_type_die): Remove dead code. - (gen_reference_type_die): Likewise. - * stor-layout.c: Remove Pascal-related comment. - -2017-07-13 Martin Liska - - * opts.c (finish_options): Add quotes to error messages. - (parse_sanitizer_options): Likewise. - -2017-07-13 Thomas Preud'homme - - * doc/invoke.texi (armv8-r): Document +fp.sp ARMv8-R extension. - -2017-07-13 Richard Earnshaw - - * config/arm/vxworks.h (TARGET_ENDIAN_DEFAULT): Define. - -2017-07-13 Maxim Ostapenko - - * asan.c (asan_emit_allocas_unpoison): Use ptr_mode for arguments - during expansion. - * builtins.c (expand_asan_emit_allocas_unpoison): Likewise. - -2017-07-12 Michael Meissner - - PR target/81193 - * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If GLIBC - provides the hardware capability bits, define the macro - __BUILTIN_CPU_SUPPORTS__. - * config/rs6000/rs6000.c (cpu_expand_builtin): Generate a warning - if GLIBC does not provide the hardware capability bits. Add a - gcc_unreachable call if the built-in cpu function is neither - __builtin_cpu_is nor __builtin_cpu_supports. - (rs6000_get_function_versions_dispatcher): Change the warning - that an old GLIBC is used which does not export the capability - bits to be an error. - * doc/extend.texi (target_clones attribute): Document the - restriction that GLIBC 2.23 or newer is needed on the PowerPC. - (PowerPC built-in functions): Document that GLIBC 2.23 or newer is - needed by __builtin_cpu_is and __builtin_cpu_supports. Document - the macros defined by GCC if the newer GLIBC is available. - -2017-07-12 Jeff Law - - * config/riscv/riscv.c: Remove unnecessary includes. Reorder - remaining includes slightly. - * config/riscv/riscv-builtins.c: Include profile-count.h. - -2017-07-12 Georg-Johann Lay - - PR target/79883 - * config/avr/avr.c (avr_set_current_function): In diagnostic - messages: Quote keywords and (parts of) identifiers. - [WITH_AVRLIBC]: Warn for functions named "ISR", "SIGNAL" or - "INTERUPT". - -2017-07-12 Carl Love - - * config/rs6000/rs6000-c.c: Add support for built-in functions - vector bool char vec_revb (vector bool char); - vector bool short vec_revb (vector short char); - vector bool int vec_revb (vector bool int); - vector bool long long vec_revb (vector bool long long); - * doc/extend.texi: Update the built-in documentation file for the - new built-in functions. - -2017-07-12 Andreas Krebbel - - * config/s390/s390.md: Remove movcc splitter. - -2017-07-12 Andreas Krebbel - - * config/s390/s390.c (s390_rtx_costs): Return proper costs for - load/store on condition. - -2017-07-12 Georg-Johann Lay - - PR target/81407 - * config/avr/avr.c (avr_encode_section_info) - [progmem && !TREE_READONLY]: Error if progmem object needs - constructing. - -2017-07-11 Michael Collison - - * config/aarch64/aarch64-simd.md (aarch64_sub_compare0): - New pattern. - -2017-07-11 Carl Love - - * config/rs6000/rs6000-c.c: Add support for builtins - vector unsigned int vec_parity_lsbb (vector signed int); - vector unsigned int vec_parity_lsbb (vector unsigned int); - vector unsigned __int128 vec_parity_lsbb (vector signed __int128); - vector unsigned __int128 vec_parity_lsbb (vector unsigned __int128); - vector unsigned long long vec_parity_lsbb (vector signed long long); - vector unsigned long long vec_parity_lsbb (vector unsigned long long); - * config/rs6000/rs6000-builtin.def (VPARITY_LSBB): Add BU_P9V_OVERLOAD1. - * config/rs6000/altivec.h (vec_parity_lsbb): Add define. - * doc/extend.texi: Update the built-in documentation file for the - new built-in functions. - -2017-07-11 David Malcolm - - * diagnostic-show-locus.c: Include "gcc-rich-location.h". - (layout::m_primary_loc): New field. - (layout::layout): Initialize new field. Move location filtering - logic from here to... - (layout::maybe_add_location_range): ...this new method. Add - support for filtering to just the lines already specified by other - locations. - (layout::will_show_line_p): New method. - (gcc_rich_location::add_location_if_nearby): New method. - (selftest::test_add_location_if_nearby): New test function. - (selftest::diagnostic_show_locus_c_tests): Call it. - * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby): - New method. - -2017-07-11 Tom de Vries - - * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG): New macro. - (bb_first_real_insn): New function. - (nvptx_single): Add extra initialization of broadcasted condition - variables. - -2017-07-11 Nathan Sidwell - - * dwarf2out.c (gen_member_die): Remove useless check for anon ctors. - -2017-07-11 Georg-Johann Lay - - * doc/extend.texi (AVR Function Attributes): Remove weblink to - Binutils doc as TEXI will mess them up. - * doc/invoke.texi (AVR Options): Same here. - -2017-07-11 Daniel Cederman - - * config/sparc/sparc.opt (mfix-ut700): New option. - (mfix-gr712rc): Likewise. - (sparc_fix_b2bst): New variable. - * doc/invoke.texi (SPARC options): Document them. - (ARM options): Fix warnings. - * config/sparc/sparc.c (sparc_do_work_around_errata): Insert NOP - instructions to prevent sequences that can trigger the store-store - errata for certain LEON3FT processors. - (pass_work_around_errata::gate): Also test sparc_fix_b2bst. - (sparc_option_override): Set sparc_fix_b2bst appropriately. - * config/sparc/sparc.md (fix_b2bst): New attribute. - (in_branch_delay): Prevent stores in delay slot if fix_b2bst. - -2017-07-10 Uros Bizjak - - PR target/81375 - * config/i386/i386.md (divsf3): Add TARGET_SSE to TARGET_SSE_MATH. - (rcpps): Ditto. - (*rsqrtsf2_sse): Ditto. - (rsqrtsf2): Ditto. - (div3): Macroize insn from divdf3 and divsf3 - using MODEF mode iterator. - -2017-07-10 Martin Sebor - - PR tree-optimization/80397 - * gimple-ssa-sprintf.c (format_integer): Use INTEGRAL_TYPE_P() - instead of testing for equality to INTEGER_TYPE. - -2017-07-10 Vineet Gupta - - * config.gcc: Remove uclibc from arc target spec. - -2017-07-10 Claudiu Zissulescu - - * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Define. - -2017-07-07 Jan Hubicka - - PR lto/80838 - * lto-wrapper.c (remove_option): New function. - (merge_and_complain): Merge PIC/PIE options more realistically. - -2017-07-10 Georg-Johann Lay - - Better ISR prologues by supporting GASes __gcc_isr pseudo insn. - - PR target/20296 - PR target/81268 - * configure.ac [target=avr]: Add GAS check for -mgcc-isr. - (HAVE_AS_AVR_MGCCISR_OPTION): If so, AC_DEFINE it. - * config.in: Regenerate. - * configure: Regenerate. - * doc/extend.texi (AVR Function Attributes) : Document it. - * doc/invoke.texi (AVR Options) <-mgas-isr-prologues>: Document it. - * config/avr/avr.opt (-mgas-isr-prologues): New option and... - (TARGET_GASISR_PROLOGUES): ...target mask. - * common/config/avr/avr-common.c - (avr_option_optimization_table) [OPT_LEVELS_1_PLUS_NOT_DEBUG]: - Set -mgas-isr-prologues. - * config/avr/avr-passes.def (avr_pass_pre_proep): Add - INSERT_PASS_BEFORE for it. - * config/avr/avr-protos.h (make_avr_pass_pre_proep): New proto. - * config/avr/avr.c (avr_option_override) - [!HAVE_AS_AVR_MGCCISR_OPTION]: Unset TARGET_GASISR_PROLOGUES. - (avr_no_gccisr_function_p, avr_hregs_split_reg): New static functions. - (avr_attribute_table) : Add new function attribute. - (avr_set_current_function) : Init machine field. - (avr_pass_data_pre_proep, avr_pass_pre_proep): New pass data - and rtl_opt_pass. - (make_avr_pass_pre_proep): New function. - (emit_push_sfr) : Add argument to function and use it - instead of TMP_REG. - (avr_expand_prologue) [machine->gasisr.maybe]: Emit gasisr insn - and set machine->gasisr.yes. - (avr_expand_epilogue) [machine->gasisr.yes]: Similar. - (avr_asm_function_end_prologue) [machine->gasisr.yes]: Add - __gcc_isr.n_pushed to .L__stack_usage. - (TARGET_ASM_FINAL_POSTSCAN_INSN): Define to... - (avr_asm_final_postscan_insn): ...this new static function. - * config/avr/avr.h (machine_function) - : New fields. - : New fields. - * config/avr/avr.md (UNSPECV_GASISR): Add unspecv enum. - (GASISR_Prologue, GASISR_Epilogue, GASISR_Done): New define_constants. - (gasisr, *gasisr): New expander and insn. - * config/avr/gen-avr-mmcu-specs.c (print_mcu) - [HAVE_AS_AVR_MGCCISR_OPTION]: Print asm_gccisr spec. - * config/avr/specs.h (ASM_SPEC) : Add sub spec. - -2017-07-10 Richard Earnshaw - - * config/arm/parsecpu.awk (gen_comm_data): Do not escape single quotes - in quoted strings. - -2017-07-10 Georg-Johann Lay - - Move jump-tables out of .text again. - - PR target/81075 - * config/avr/avr.c (ASM_OUTPUT_ADDR_VEC_ELT): Remove function. - (ASM_OUTPUT_ADDR_VEC): New function. - (avr_adjust_insn_length) [JUMP_TABLE_DATA_P]: Return 0. - (avr_final_prescan_insn) [avr_log.insn_addresses]: Dump - INSN_ADDRESSes as asm comment. - * config/avr/avr.h (JUMP_TABLES_IN_TEXT_SECTION): Adjust comment. - (ASM_OUTPUT_ADDR_VEC_ELT): Remove define. - (ASM_OUTPUT_ADDR_VEC): Define to avr_output_addr_vec. - * config/avr/avr.md (*tablejump): Adjust comment. - * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove. - * config/avr/avr-log.c (avr_log_set_avr_log) : - New detail. - * config/avr/avr-protos.h (avr_output_addr_vec_elt): Remove proto. - (avr_output_addr_vec): New proto. - (avr_log_t) : New field. - -2017-07-09 H.J. Lu - - PR target/81313 - * config/i386/i386.c (ix86_function_arg_advance): Set - outgoing_args_on_stack to true if there are outgoing arguments - on stack. - (ix86_function_arg): Likewise. - (ix86_get_drap_rtx): Use DRAP only if there are outgoing - arguments on stack and ACCUMULATE_OUTGOING_ARGS is false. - * config/i386/i386.h (machine_function): Add - outgoing_args_on_stack. - -2017-07-09 Krister Walfridsson - - * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not - supporting pthreds. - * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always enable pthreads. - -2017-07-08 Richard Sandiford - - * Makefile.in (HOOKS_H, RTL_BASE_H, FUNCTION_H, EXPR_H, REGS_H) - (REAL_H): Remove $(MACHMODE_H). - (FIXED_VALUE_H, TREE_CORE_H, CFGLOOP_H): Remove $(MACHMODE_H) and - double-int.h. - (CORETYPES_H): Add signop.h, wide-int.h, wide-int-print.h, - $(MACHMODE_H) and double-int.h. - (build/min-insn-modes.o): Depend on $(CORETYPES_H) rather than - $(MACHMODE_H). - (gengtype-state.o, gengtype.o, build/gengtype.o): Don't depend on - double-int.h. - -2017-07-07 Andrew Pinski - - * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Check - prev_set and curr_set for AARCH64_FUSE_ALU_BRANCH. - -2017-07-07 Michael Meissner - - * config/rs6000/rs6000.c (rs6000_get_function_versions_dispatcher): - Add warning if GCC was not configured to link against a GLIBC that - exports the hardware capability bits. - (make_resolver_func): Make resolver function private and not a - COMDAT function. Create the name with clone_function_name instead - of make_unique_name. - - PR target/81348 - * config/rs6000/rs6000.md (HI sign_extend splitter): Use the - correct operand in doing the split. - -2017-07-07 Carl Love - - * config/rs6000/rs6000-c: Add support for built-in function - vector unsigned short vec_pack_to_short_fp32 (vector float, - vector float). - * config/rs6000/rs6000-builtin.def (CONVERT_4F32_8I16): Add - BU_P9V_AV_2 and BU_P9V_OVERLOAD_2 definitions. - * config/rs6000/altivec.h (vec_pack_to_short_fp32): Add define. - * config/rs6000/altivec.md(UNSPEC_CONVERT_4F32_8I16): Add UNSPEC. - (convert_4f32_8i16): Add define_expand. - * doc/extend.texi: Update the built-in documentation file for the - new built-in function. - -2017-07-07 Jose E. Marchesi - - * config/sparc/m8.md: New file. - * config/sparc/sparc.md: Include m8.md. - -2017-07-07 Jose E. Marchesi - - * config/sparc/sparc.opt: New option -mvis4b. - * config/sparc/sparc.c (dump_target_flag_bits): Handle MASK_VIS4B. - (sparc_option_override): Handle VIS4B. - (enum sparc_builtins): Define - SPARC_BUILTIN_DICTUNPACK{8,16,32}, - SPARC_BUILTIN_FPCMP{LE,GT,EQ,NE}{8,16,32}SHL, - SPARC_BUILTIN_FPCMPU{LE,GT}{8,16,32}SHL, - SPARC_BUILTIN_FPCMPDE{8,16,32}SHL and - SPARC_BUILTIN_FPCMPUR{8,16,32}SHL. - (check_constant_argument): New function. - (sparc_vis_init_builtins): Define builtins - __builtin_vis_dictunpack{8,16,32}, - __builtin_vis_fpcmp{le,gt,eq,ne}{8,16,32}shl, - __builtin_vis_fpcmpu{le,gt}{8,16,32}shl, - __builtin_vis_fpcmpde{8,16,32}shl and - __builtin_vis_fpcmpur{8,16,32}shl. - (sparc_expand_builtin): Check that the constant operands to - __builtin_vis_fpcmp*shl and _builtin_vis_dictunpack* are indeed - constant and in range. - * config/sparc/sparc-c.c (sparc_target_macros): Handle - TARGET_VIS4B. - * config/sparc/sparc.h (SPARC_IMM2_P): Define. - (SPARC_IMM5_P): Likewise. - * config/sparc/sparc.md (cpu_feature): Add new feagure "vis4b". - (enabled): Handle vis4b. - (UNSPEC_DICTUNPACK): New unspec. - (UNSPEC_FPCMPSHL): Likewise. - (UNSPEC_FPUCMPSHL): Likewise. - (UNSPEC_FPCMPDESHL): Likewise. - (UNSPEC_FPCMPURSHL): Likewise. - (cpu_feature): New CPU feature `vis4b'. - (dictunpack{8,16,32}): New insns. - (FPCSMODE): New mode iterator. - (fpcscond): New code iterator. - (fpcsucond): Likewise. - (fpcmp{le,gt,eq,ne}{8,16,32}{si,di}shl): New insns. - (fpcmpu{le,gt}{8,16,32}{si,di}shl): Likewise. - (fpcmpde{8,16,32}{si,di}shl): Likewise. - (fpcmpur{8,16,32}{si,di}shl): Likewise. - * config/sparc/constraints.md: Define constraints `q' for unsigned - 2-bit integer constants and `t' for unsigned 5-bit integer - constants. - * config/sparc/predicates.md (imm5_operand_dictunpack8): New - predicate. - (imm5_operand_dictunpack16): Likewise. - (imm5_operand_dictunpack32): Likewise. - (imm2_operand): Likewise. - * doc/invoke.texi (SPARC Options): Document -mvis4b. - * doc/extend.texi (SPARC VIS Built-in Functions): Document the - ditunpack* and fpcmp*shl builtins. - -2017-07-07 Jose E. Marchesi - - * config.gcc: Handle m8 in --with-{cpu,tune} options. - * config.in: Add HAVE_AS_SPARC6 define. - * config/sparc/driver-sparc.c (cpu_names): Add entry for the SPARC - M8. - * config/sparc/sol2.h (CPP_CPU64_DEFAULT_SPEC): Define for - TARGET_CPU_m8. - (ASM_CPU32_DEFAUILT_SPEC): Likewise. - (CPP_CPU_SPEC): Handle m8. - (ASM_CPU_SPEC): Likewise. - * config/sparc/sparc-opts.h (enum processor_type): Add - PROCESSOR_M8. - * config/sparc/sparc.c (m8_costs): New struct. - (sparc_option_override): Handle TARGET_CPU_m8. - (sparc32_initialize_trampoline): Likewise. - (sparc64_initialize_trampoline): Likewise. - (sparc_issue_rate): Likewise. - (sparc_register_move_cost): Likewise. - * config/sparc/sparc.h (TARGET_CPU_m8): Define. - (CPP_CPU64_DEFAULT_SPEC): Define for M8. - (ASM_CPU64_DEFAULT_SPEC): Likewise. - (CPP_CPU_SPEC): Handle M8. - (ASM_CPU_SPEC): Likewise. - (AS_M8_FLAG): Define. - * config/sparc/sparc.md: Add m8 to the cpu attribute. - * config/sparc/sparc.opt: New option -mcpu=m8 for sparc targets. - * configure.ac (HAVE_AS_SPARC6): Check for assembler support for - M8 instructions. - * configure: Regenerate. - * doc/invoke.texi (SPARC Options): Document -mcpu=m8 and - -mtune=m8. - -2017-07-07 Jose E. Marchesi - - * config/sparc/niagara7.md: Rework the DFA scheduler to use insn - subtypes. - * config/sparc/sparc.md: Remove the `v3pipe' insn attribute. - ("*movdi_insn_sp32"): Do not set v3pipe. - ("*movsi_insn"): Likewise. - ("*movdi_insn_sp64"): Likewise. - ("*movsf_insn"): Likewise. - ("*movdf_insn_sp32"): Likewise. - ("*movdf_insn_sp64"): Likewise. - ("*zero_extendsidi2_insn_sp64"): Likewise. - ("*sign_extendsidi2_insn"): Likewise. - ("*mov_insn"): Likewise. - ("*mov_insn_sp64"): Likewise. - ("*mov_insn_sp32"): Likewise. - ("3"): Likewise. - ("3"): Likewise. - ("*not_3"): Likewise. - ("*nand_vis"): Likewise. - ("*_not1_vis"): Likewise. - ("*_not2_vis"): Likewise. - ("one_cmpl2"): Likewise. - ("faligndata_vis"): Likewise. - ("alignaddrsi_vis"): Likewise. - ("alignaddrdi_vis"): Likweise. - ("alignaddrlsi_vis"): Likewise. - ("alignaddrldi_vis"): Likewise. - ("fcmp_vis"): Likewise. - ("bmaskdi_vis"): Likewise. - ("bmasksi_vis"): Likewise. - ("bshuffle_vis"): Likewise. - ("cmask8_vis"): Likewise. - ("cmask16_vis"): Likewise. - ("cmask32_vis"): Likewise. - ("pdistn_vis"): Likewise. - ("3"): Likewise. - -2017-07-07 Jose E. Marchesi - - * config/sparc/sparc.md ("subtype"): New insn attribute. - ("*wrgsr_sp64"): Set insn subtype. - ("*rdgsr_sp64"): Likewise. - ("alignaddrsi_vis"): Likewise. - ("alignaddrdi_vis"): Likewise. - ("alignaddrlsi_vis"): Likewise. - ("alignaddrldi_vis"): Likewise. - ("3"): Likewise. - ("fexpand_vis"): Likewise. - ("fpmerge_vis"): Likewise. - ("faligndata_vis"): Likewise. - ("bshuffle_vis"): Likewise. - ("cmask8_vis"): Likewise. - ("cmask16_vis"): Likewise. - ("cmask32_vis"): Likewise. - ("fchksm16_vis"): Likewise. - ("v3"): Likewise. - ("fmean16_vis"): Likewise. - ("fp64_vis"): Likewise. - ("v8qi3"): Likewise. - ("3"): Likewise. - ("3"): Likewise. - ("3"): Likewise. - ("v8qi3"): Likewise. - ("3"): Likewise. - ("*movqi_insn"): Likewise. - ("*movhi_insn"): Likewise. - ("*movsi_insn"): Likewise. - ("movsi_pic_gotdata_op"): Likewise. - ("*movdi_insn_sp32"): Likewise. - ("*movdi_insn_sp64"): Likewise. - ("movdi_pic_gotdata_op"): Likewise. - ("*movsf_insn"): Likewise. - ("*movdf_insn_sp32"): Likewise. - ("*movdf_insn_sp64"): Likewise. - ("*zero_extendhisi2_insn"): Likewise. - ("*zero_extendqihi2_insn"): Likewise. - ("*zero_extendqisi2_insn"): Likewise. - ("*zero_extendqidi2_insn"): Likewise. - ("*zero_extendhidi2_insn"): Likewise. - ("*zero_extendsidi2_insn_sp64"): Likewise. - ("ldfsr"): Likewise. - ("prefetch_64"): Likewise. - ("prefetch_32"): Likewise. - ("tie_ld32"): Likewise. - ("tie_ld64"): Likewise. - ("*tldo_ldub_sp32"): Likewise. - ("*tldo_ldub1_sp32"): Likewise. - ("*tldo_ldub2_sp32"): Likewise. - ("*tldo_ldub_sp64"): Likewise. - ("*tldo_ldub1_sp64"): Likewise. - ("*tldo_ldub2_sp64"): Likewise. - ("*tldo_ldub3_sp64"): Likewise. - ("*tldo_lduh_sp32"): Likewise. - ("*tldo_lduh1_sp32"): Likewise. - ("*tldo_lduh_sp64"): Likewise. - ("*tldo_lduh1_sp64"): Likewise. - ("*tldo_lduh2_sp64"): Likewise. - ("*tldo_lduw_sp32"): Likewise. - ("*tldo_lduw_sp64"): Likewise. - ("*tldo_lduw1_sp64"): Likewise. - ("*tldo_ldx_sp64"): Likewise. - ("*mov_insn"): Likewise. - ("*mov_insn_sp64"): Likewise. - ("*mov_insn_sp32"): Likewise. - -2017-07-07 Jose E. Marchesi - - * config/sparc/sparc.md ("type"): New insn type viscmp. - ("fcmp_vis"): Set insn type to - viscmp. - ("fpcmp8_vis"): Likewise. - ("fucmp8_vis"): Likewise. - ("fpcmpu_vis"): Likewise. - * config/sparc/niagara7.md ("n7_vis_logical_v3pipe"): Handle - viscmp. - ("n7_vis_logical_11cycle"): Likewise. - * config/sparc/niagara4.md ("n4_vis_logical"): Likewise. - * config/sparc/niagara2.md ("niag3_vis": Likewise. - * config/sparc/niagara.md ("niag_vis"): Likewise. - * config/sparc/ultra3.md ("us3_fga"): Likewise. - * config/sparc/ultra1_2.md ("us1_fga_double"): Likewise. - -2017-07-07 Jose E. Marchesi - - * config/sparc/sparc.md: New instruction type `bmask'. - (bmaskdi_vis): Use the `bmask' type. - (bmasksi_vis): Likewise. - * config/sparc/ultra3.md (us3_array): Likewise. - * config/sparc/niagara7.md (n7_array): Likewise. - * config/sparc/niagara4.md (n4_array): Likewise. - * config/sparc/niagara2.md (niag2_vis): Likewise. - (niag3_vis): Likewise. - * config/sparc/niagara.md (niag_vis): Likewise. - -2017-07-06 Jan Hubicka - - * ipa-comdats.c: Remove optimize check from gate. - * ipa-fnsummary.c (ipa_fn_summary_generate): do not generate summary - for functions not optimized. - (ipa_fn_summary_read): Skip optimize check. - (ipa_fn_summary_write): Likewise. - * ipa-inline-analysis.c (do_estimate_growth_1): Check that caller - is optimized. - * ipa-inline.c (can_inline_edge_p): Not optimized functions are - uninlinable. - (can_inline_edge_p): Check flag_pcc_struct_return for match. - (check_callers): Give up on caller which is not optimized. - (inline_small_functions): Likewise. - (ipa_inline): Do not give up when not optimizing. - * ipa-visbility.c (function_and_variable_visibility): Do not optimize - away unoptimizes cdtors. - (whole_program_function_and_variable_visibility): Do - ipa_discover_readonly_nonaddressable_vars in LTO mode. - * ipa.c (process_references): Do not check optimize. - (symbol_table::remove_unreachable_nodes): Update optimize check. - (set_writeonly_bit): Update optimize check. - (pass_ipa_cdtor_merge::gate): Do not check optimize. - (pass_ipa_single_use::gate): Remove. - -2017-07-06 Aaron Sawdey - - * config/rs6000/rs6000.c (union_defs, union_uses, insn_is_load_p, - insn_is_store_p, insn_is_swap_p, const_load_sequence_p, v2df_reduction_p, - rtx_is_swappable_p, insn_is_swappable_p, chain_contains_only_swaps, - mark_swaps_for_removal, swap_const_vector_halves, adjust_subreg_index, - permute_load, permute_store, adjust_extract, adjust_splat, - adjust_xxpermdi, adjust_concat, adjust_vperm, handle_special_swappables, - replace_swap_with_copy, dump_swap_insn_table, - alignment_with_canonical_addr, alignment_mask, find_alignment_op, - recombine_lvx_pattern, recombine_stvx_pattern, - recombine_lvx_stvx_patterns, rs6000_analyze_swaps, - make_pass_analyze_swaps): Move all code related to p8 swap optimizations - to file rs6000-p8swap.c. - * config/rs6000/rs6000-p8swap.c: New file. - * config/rs6000/t-rs6000: Add rule to build rs6000-p8swap.o. - * config.gcc: Add rs6000-p8swap.o to extra_objs for powerpc*-*-* - and rs6000*-*-* targets. - -2017-07-06 David Malcolm - - * Makefile.in (selftest): Remove dependency on s-selftest-c++. - -2017-07-06 Jan Hubicka - - * lto-wrapper.c (merge_and_complain): Do not merge - fexceptions, fnon_call_exceptions, ftrapv, ffp_contract_, fmath_errno, - fsigned_zeros, ftrapping_math, fwrapv. - (append_compiler_options): Do not track these options. - (append_linker_options): Likewie - -2017-07-06 Jan Hubicka - - * cgraphunit.c (cgraph_node::finalize_function): When - !flag_toplevel_reorde set no_reorder flag. - (varpool_node::finalize_decl): Likewise. - (symbol_table::compile): Drop no toplevel reorder path. - -2017-07-06 Jan Hubicka - - * bb-reorder.c (better_edge_p): Do not build traces across abnormal/eh - edges; zero probability is not better than uninitialized. - -2017-07-06 Maxim Ostapenko - - * asan.h (asan_sanitize_allocas_p): Declare. - * asan.c (asan_sanitize_allocas_p): New function. - (handle_builtin_stack_restore): Bail out if !asan_sanitize_allocas_p. - (handle_builtin_alloca): Likewise. - * cfgexpand.c (expand_used_vars): Do not add allocas unpoisoning stuff - if !asan_sanitize_allocas_p. - * params.def (asan-instrument-allocas): Add new option. - * params.h (ASAN_PROTECT_ALLOCAS): Define. - * opts.c (common_handle_option): Disable allocas sanitization for - KASan by default. - -2017-07-06 Maxim Ostapenko - - * asan.c: Include gimple-fold.h. - (get_last_alloca_addr): New function. - (handle_builtin_stackrestore): Likewise. - (handle_builtin_alloca): Likewise. - (asan_emit_allocas_unpoison): Likewise. - (get_mem_refs_of_builtin_call): Add new parameter, remove const - quallifier from first paramerer. Handle BUILT_IN_ALLOCA, - BUILT_IN_ALLOCA_WITH_ALIGN and BUILT_IN_STACK_RESTORE builtins. - (instrument_builtin_call): Pass gimple iterator to - get_mem_refs_of_builtin_call. - (last_alloca_addr): New global. - * asan.h (asan_emit_allocas_unpoison): Declare. - * builtins.c (expand_asan_emit_allocas_unpoison): New function. - (expand_builtin): Handle BUILT_IN_ASAN_ALLOCAS_UNPOISON. - * cfgexpand.c (expand_used_vars): Call asan_emit_allocas_unpoison - if function calls alloca. - * gimple-fold.c (replace_call_with_value): Remove static keyword. - * gimple-fold.h (replace_call_with_value): Declare. - * internal-fn.c: Include asan.h. - * sanitizer.def (BUILT_IN_ASAN_ALLOCA_POISON, - BUILT_IN_ASAN_ALLOCAS_UNPOISON): New builtins. - -2017-07-06 David Malcolm - - * Makefile.in (SELFTEST_FLAGS): Drop "-x c", moving it to... - (C_SELFTEST_FLAGS): New. - (CPP_SELFTEST_FLAGS): New. - (SELFTEST_DEPS): New, from deps of s-selftest. - (C_SELFTEST_DEPS): New, from deps of s-selftest. - (CPP_SELFTEST_DEPS): New. - (selftest): Add dependency on s-selftest-c++. - (s-selftest): Rename to... - (s-selftest-c): ...this, moving deps to SELFTEST_DEPS - and C_SELFTEST_DEPS, and using C_SELFTEST_FLAGS rather - than SELFTEST_FLAGS. - (selftest-gdb): Rename to... - (selftest-c-gdb): ...this, using C_SELFTEST_DEPS and - C_SELFTEST_FLAGS. - (selftest-gdb): Reintroduce as an alias for selftest-c-gdb. - (selftest-valgrind): Rename to... - (selftest-c-valgrind): ...this, using C_SELFTEST_DEPS and - C_SELFTEST_FLAGS. - (selftest-valgrind): Reintroduce as an alias for - selftest-c-valgrind. - (s-selftest-c++): New. - (selftest-c++-gdb): New. - (selftest-c++-valgrind): New. - -2017-07-06 Olivier Hainque - - * gcc.c (process_command): When deciding if undefined variables - should be ignored when processing specs, accept "gcc -v" as well. - -2017-07-06 Jan Hubicka - - * auto-profile.c (afdo_set_bb_count, afdo_propagate_edge, - afdo_annotate_cfg): Set counts/probabilities as determined by afdo. - -2017-07-06 Thomas Preud'homme - - * config/arm/arm-cpus.in (armv8-r): Add new entry. - * config/arm/arm-isa.h (ISA_ARMv8r): Define macro. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R - enumerator. - * doc/invoke.texi: Mention -march=armv8-r and its extensions. - -2017-07-06 Carl Love - - * ChangeLog: Clean up from mid air collision - -2017-07-06 Carl Love - - * config/rs6000/rs6000-c.c: Add support for built-in functions - vector signed int vec_subc (vector signed int, vector signed int); - vector signed __int128 vec_subc (vector signed __int128, - vector signed __int128); - vector unsigned __int128 vec_subc (vector unsigned __int128, - vector unsigned __int128); - vector signed int vec_sube (vector signed int, vector signed int, - vector signed int); - vector unsigned int vec_sube (vector unsigned int, - vector unsigned int, - vector unsigned int); - vector signed __int128 vec_sube (vector signed __int128, - vector signed __int128, - vector signed__int128); - vector unsigned __int128 vec_sube (vector unsigned __int128, - vector unsigned __int128, - vector unsigned __int128); - vector signed int vec_subec (vector signed int, vector signed int, - vector signed int); - vector unsigned int vec_subec (vector unsigned int, - vector unsigned int, - vector unsigned int); - vector signed __int128 vec_subec (vector signed __int128, - vector signed __int128, - vector signed__int128); - vector unsigned __int128 vec_subec (vector unsigned __int128, - vector unsigned __int128, - vector unsigned __int128); - * config/rs6000/rs6000.c (ALTIVEC_BUILTIN_VEC_SUBE, - ALTIVEC_BUILTIN_VEC_SUBEC): Add ef_builtins. - * config/rs6000/rs6000-builtin.def (SUBE, SUBEC): Add - BU_ALTIVEC_OVERLOAD_X definitions. - * config/rs6000/altivec.h (vec_sube, vec_subec): Add builtin defines. - * doc/extend.texi: Update the built-in documentation file for the new - built-in functions. - -2017-07-06 David Malcolm - - PR c++/79300 - * diagnostic-show-locus.c (layout::layout): Use start and finish - spelling location for the start and finish of each range. - * genmatch.c (linemap_client_expand_location_to_spelling_point): - Add unused aspect param. - * input.c (expand_location_1): Add "aspect" param, and use it - to access the correct part of the location. - (expand_location): Pass LOCATION_ASPECT_CARET to new param of - expand_location_1. - (expand_location_to_spelling_point): Likewise. - (linemap_client_expand_location_to_spelling_point): Add "aspect" - param, and pass it to expand_location_1. - -2017-07-06 Sebastian Peryt - - * config/i386/avx512fintrin.h (_mm_mask_getexp_round_ss, - _mm_maskz_getexp_round_ss, _mm_mask_getexp_round_sd, - _mm_maskz_getexp_round_sd, _mm_mask_getmant_round_sd, - _mm_maskz_getmant_round_sd, _mm_mask_getmant_round_ss, - _mm_maskz_getmant_round_ss, _mm_mask_getexp_ss, _mm_maskz_getexp_ss, - _mm_mask_getexp_sd, _mm_maskz_getexp_sd, _mm_mask_getmant_sd, - _mm_maskz_getmant_sd, _mm_mask_getmant_ss, - _mm_maskz_getmant_ss): New intrinsics. - (__builtin_ia32_getexpss128_mask): Changed to ... - __builtin_ia32_getexpss128_round ... this. - (__builtin_ia32_getexpsd128_mask): Changed to ... - __builtin_ia32_getexpsd128_round ... this. - * config/i386/i386-builtin-types.def - ((V2DF, V2DF, V2DF, INT, V2DF, UQI, INT), - (V4SF, V4SF, V4SF, INT, V4SF, UQI, INT)): New function type aliases. - * config/i386/i386-builtin.def (__builtin_ia32_getexpsd_mask_round, - __builtin_ia32_getexpss_mask_round, __builtin_ia32_getmantsd_mask_round, - __builtin_ia32_getmantss_mask_round): New builtins. - * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_INT_V2DF_UQI_INT, - V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT): Handle new types. - (CODE_FOR_avx512f_vgetmantv2df_mask_round, - CODE_FOR_avx512f_vgetmantv4sf_mask_round): New cases. - * config/i386/sse.md - (avx512f_sgetexp): Changed to ... - avx512f_sgetexp - ... this. - (vgetexp\t{%2, %1, %0| - %0, %1, %2}): Changed to ... - vgetexp - \t{%2, %1, %0| - %0, %1, %2} ... this. - (avx512f_vgetmant): Changed to ... - avx512f_vgetmant - ... this. - (vgetmant\t{%3, %2, %1, %0| - %0, %1, %2, %3}): Changed to ... - vgetmant - \t{%3, %2, %1, %0| - %0, %1, %2 - , %3} ... this. - * config/i386/subst.md (mask_scalar_operand4, - round_saeonly_scalar_mask_operand4, round_saeonly_scalar_mask_op4, - round_saeonly_scalar_nimm_predicate): New subst attributes. - -2017-07-06 Julia Koval - - * config/i386/i386.c (ix86_erase_embedded_rounding): - Remove code for old rounding pattern. - -2017-07-06 Richard Earnshaw - - * config/arm/t-arm (GTM_H): Add arm-cpu.h. - -2017-07-06 Christophe Lyon - - * doc/sourcebuild.texi (Test Directives, Variants of - dg-require-support): Add documentation for dg-require-stack-check. - -2017-07-05 Sebastian Peryt - - * config/i386/subst.md (mask_scalar, round_scalar, - round_saeonly_scalar): New meta-templates. - (mask_scalar_name, mask_scalar_operand3, round_scalar_name, - round_scalar_mask_operand3, round_scalar_mask_op3, - round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name, - round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3, - round_saeonly_scalar_constraint, - round_saeonly_scalar_prefix): New subst attribute. - * config/i386/sse.md - (_vm3): Renamed to ... - _vm3 - ... this. - (_vm3): Renamed to ... - _vm3 - ... this. - (_vm3): Renamed to ... - _vm3 - ... this. - (v - \t{%2, %1, %0| - %0, %1, %2}): Changed to ... - v - \t{%2, %1, %0| - %0, %1, %2} ... this. - (v - \t{%2, %1, %0| - %0, %1, %2}): Changed to ... - v - \t{%2, %1, %0| - %0, %1, %2} ... this. - (v - \t{%2, %1, %0| - %0, %1, %2}): Changed to ... - v - \t{%2, %1, %0| - %0, %1, %2 - } ... this. - -2017-07-05 Richard Earnshaw - - * config/arm/arm.c (arm_fixed_condition_code_regs): New function. - (TARGET_FIXED_CONDITION_CODE_REGS): Redefine. - -2017-07-05 Richard Sandiford - Alan Hayward - David Sherwood - - * combine.c (simplify_if_then_else): Remove "enum" before - "machine_mode". - * compare-elim.c (can_eliminate_compare): Likewise. - * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type): - Likewise. - (aarch64_lookup_simd_builtin_type): Likewise. - (aarch64_simd_builtin_type): Likewise. - (aarch64_init_simd_builtin_types): Likewise. - (aarch64_simd_expand_args): Likewise. - * config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_rglist): - Likewise. - (aarch64_reverse_mask): Likewise. - (aarch64_simd_emit_reg_reg_move): Likewise. - (aarch64_gen_adjusted_ldpstp): Likewise. - (aarch64_ccmp_mode_to_code): Likewise. - (aarch64_operands_ok_for_ldpstp): Likewise. - (aarch64_operands_adjust_ok_for_ldpstp): Likewise. - * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class): - Likewise. - (aarch64_min_divisions_for_recip_mul): Likewise. - (aarch64_reassociation_width): Likewise. - (aarch64_get_condition_code_1): Likewise. - (aarch64_simd_emit_reg_reg_move): Likewise. - (aarch64_simd_attr_length_rglist): Likewise. - (aarch64_reverse_mask): Likewise. - (aarch64_operands_ok_for_ldpstp): Likewise. - (aarch64_operands_adjust_ok_for_ldpstp): Likewise. - (aarch64_gen_adjusted_ldpstp): Likewise. - * config/aarch64/cortex-a57-fma-steering.c (fma_node::rename): - Likewise. - * config/arc/arc.c (legitimate_offset_address_p): Likewise. - * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise. - (arm_lookup_simd_builtin_type): Likewise. - (arm_simd_builtin_type): Likewise. - (arm_init_simd_builtin_types): Likewise. - (arm_expand_builtin_args): Likewise. - * config/arm/arm-protos.h (arm_expand_builtin): Likewise. - * config/ft32/ft32.c (ft32_libcall_value): Likewise. - (ft32_setup_incoming_varargs): Likewise. - (ft32_function_arg): Likewise. - (ft32_function_arg_advance): Likewise. - (ft32_pass_by_reference): Likewise. - (ft32_arg_partial_bytes): Likewise. - (ft32_valid_pointer_mode): Likewise. - (ft32_addr_space_pointer_mode): Likewise. - (ft32_addr_space_legitimate_address_p): Likewise. - * config/i386/i386-protos.h (ix86_operands_ok_for_move_multiple): - Likewise. - * config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise. - (ix86_emit_outlined_ms2sysv_restore): Likewise. - (iamcu_alignment): Likewise. - (canonicalize_vector_int_perm): Likewise. - (ix86_noce_conversion_profitable_p): Likewise. - (ix86_mpx_bound_mode): Likewise. - (ix86_operands_ok_for_move_multiple): Likewise. - * config/microblaze/microblaze-protos.h - (microblaze_expand_conditional_branch_reg): Likewise. - * config/microblaze/microblaze.c - (microblaze_expand_conditional_branch_reg): Likewise. - * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok): - Likewise. - (rs6000_reassociation_width): Likewise. - (rs6000_invalid_binary_op): Likewise. - (fusion_p9_p): Likewise. - (emit_fusion_p9_load): Likewise. - (emit_fusion_p9_store): Likewise. - * config/riscv/riscv-protos.h (riscv_regno_mode_ok_for_base_p): - Likewise. - (riscv_hard_regno_mode_ok_p): Likewise. - (riscv_address_insns): Likewise. - (riscv_split_symbol): Likewise. - (riscv_legitimize_move): Likewise. - (riscv_function_value): Likewise. - (riscv_hard_regno_nregs): Likewise. - (riscv_expand_builtin): Likewise. - * config/riscv/riscv.c (riscv_build_integer_1): Likewise. - (riscv_build_integer): Likewise. - (riscv_split_integer): Likewise. - (riscv_legitimate_constant_p): Likewise. - (riscv_cannot_force_const_mem): Likewise. - (riscv_regno_mode_ok_for_base_p): Likewise. - (riscv_valid_base_register_p): Likewise. - (riscv_valid_offset_p): Likewise. - (riscv_valid_lo_sum_p): Likewise. - (riscv_classify_address): Likewise. - (riscv_legitimate_address_p): Likewise. - (riscv_address_insns): Likewise. - (riscv_load_store_insns): Likewise. - (riscv_force_binary): Likewise. - (riscv_split_symbol): Likewise. - (riscv_force_address): Likewise. - (riscv_legitimize_address): Likewise. - (riscv_move_integer): Likewise. - (riscv_legitimize_const_move): Likewise. - (riscv_legitimize_move): Likewise. - (riscv_address_cost): Likewise. - (riscv_subword): Likewise. - (riscv_output_move): Likewise. - (riscv_canonicalize_int_order_test): Likewise. - (riscv_emit_int_order_test): Likewise. - (riscv_function_arg_boundary): Likewise. - (riscv_pass_mode_in_fpr_p): Likewise. - (riscv_pass_fpr_single): Likewise. - (riscv_pass_fpr_pair): Likewise. - (riscv_get_arg_info): Likewise. - (riscv_function_arg): Likewise. - (riscv_function_arg_advance): Likewise. - (riscv_arg_partial_bytes): Likewise. - (riscv_function_value): Likewise. - (riscv_pass_by_reference): Likewise. - (riscv_setup_incoming_varargs): Likewise. - (riscv_print_operand): Likewise. - (riscv_elf_select_rtx_section): Likewise. - (riscv_save_restore_reg): Likewise. - (riscv_for_each_saved_reg): Likewise. - (riscv_register_move_cost): Likewise. - (riscv_hard_regno_mode_ok_p): Likewise. - (riscv_hard_regno_nregs): Likewise. - (riscv_class_max_nregs): Likewise. - (riscv_memory_move_cost): Likewise. - * config/rl78/rl78-protos.h (rl78_split_movsi): Likewise. - * config/rl78/rl78.c (rl78_split_movsi): Likewise. - (rl78_addr_space_address_mode): Likewise. - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Likewise. - * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise. - (rs6000_reassociation_width): Likewise. - (rs6000_invalid_binary_op): Likewise. - (fusion_p9_p): Likewise. - (emit_fusion_p9_load): Likewise. - (emit_fusion_p9_store): Likewise. - * config/visium/visium-protos.h (prepare_move_operands): Likewise. - (ok_for_simple_move_operands): Likewise. - (ok_for_simple_move_strict_operands): Likewise. - (ok_for_simple_arith_logic_operands): Likewise. - (visium_legitimize_reload_address): Likewise. - (visium_select_cc_mode): Likewise. - (output_cbranch): Likewise. - (visium_split_double_move): Likewise. - (visium_expand_copysign): Likewise. - (visium_expand_int_cstore): Likewise. - (visium_expand_fp_cstore): Likewise. - * config/visium/visium.c (visium_pass_by_reference): Likewise. - (visium_function_arg): Likewise. - (visium_function_arg_advance): Likewise. - (visium_libcall_value): Likewise. - (visium_setup_incoming_varargs): Likewise. - (visium_legitimate_constant_p): Likewise. - (visium_legitimate_address_p): Likewise. - (visium_legitimize_address): Likewise. - (visium_secondary_reload): Likewise. - (visium_register_move_cost): Likewise. - (visium_memory_move_cost): Likewise. - (prepare_move_operands): Likewise. - (ok_for_simple_move_operands): Likewise. - (ok_for_simple_move_strict_operands): Likewise. - (ok_for_simple_arith_logic_operands): Likewise. - (visium_function_value_1): Likewise. - (rtx_ok_for_offset_p): Likewise. - (visium_legitimize_reload_address): Likewise. - (visium_split_double_move): Likewise. - (visium_expand_copysign): Likewise. - (visium_expand_int_cstore): Likewise. - (visium_expand_fp_cstore): Likewise. - (visium_split_cstore): Likewise. - (visium_select_cc_mode): Likewise. - (visium_split_cbranch): Likewise. - (output_cbranch): Likewise. - (visium_print_operand_address): Likewise. - * expmed.c (flip_storage_order): Likewise. - * expmed.h (emit_cstore): Likewise. - (flip_storage_order): Likewise. - * genrecog.c (validate_pattern): Likewise. - * hsa-gen.c (gen_hsa_addr): Likewise. - * internal-fn.c (expand_arith_overflow): Likewise. - * ira-color.c (allocno_copy_cost_saving): Likewise. - * lra-assigns.c (find_hard_regno_for_1): Likewise. - * lra-constraints.c (prohibited_class_reg_set_mode_p): Likewise. - (process_invariant_for_inheritance): Likewise. - * lra-eliminations.c (move_plus_up): Likewise. - * omp-low.c (lower_oacc_reductions): Likewise. - * simplify-rtx.c (simplify_subreg): Likewise. - * target.def (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Likewise. - (TARGET_CHKP_BOUND_MODE): Likewise.. - * targhooks.c (default_chkp_bound_mode): Likewise. - (default_setup_incoming_vararg_bounds): Likewise. - * targhooks.h (default_chkp_bound_mode): Likewise. - (default_setup_incoming_vararg_bounds): Likewise. - * tree-ssa-math-opts.c (divmod_candidate_p): Likewise. - * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise. - (have_whole_vector_shift): Likewise. - * tree-vect-stmts.c (vectorizable_load): Likewise. - * doc/tm.texi: Regenerate. - -2017-07-05 Georg-Johann Lay - - Graceful degrade if Binutils PR21472 is not available. - - PR target/81072 - * configure.ac [target=avr]: WARN instead of ERROR if avrxmega3 - .rodata in flash test fails. - (HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH): Define it if test passes. - * confgure: Regenerate. - * config.in: Regenerate. - * config/avr/avr.c (avr_asm_named_section) - [HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH]: Only trigger - __do_copy_data for stuff in .rodata if flash_pm_offset = 0. - (avr_asm_init_sections): Same. - -2017-07-05 Ramana Radhakrishnan - - * config/arm/neon.md (fma4): Remove %?. - (fma4_intrinsic): Likewise. - (*fmsub4): Likewise. - (*fmsub4_intrinsic): Likewise. - -2017-07-05 Georg-Johann Lay - - PR target/81305 - * config/avr/avr.c (avr_out_movhi_mr_r_xmega) [CONSTANT_ADDRESS_P]: - Don't depend on "optimize > 0". - (out_movhi_r_mr, out_movqi_mr_r): Same. - (out_movhi_mr_r, out_movqi_r_mr): Same. - (avr_address_cost) [CONSTANT_ADDRESS_P]: Don't depend cost for - io_address_operand on "optimize > 0". - -2017-07-05 Bin Cheng - - * tree-loop-distribution.c: Add general explanantion on the pass. - (generate_loops_for_partition): Mark distributed loop. - (pg_add_dependence_edges): New parameter. Handle alias data - dependence specially and record it in the parameter if asked. - (struct pg_vdata, pg_edata, pg_edge_callback_data): New structs. - (init_partition_graph_vertices, add_partition_graph_edge): New. - (pg_skip_alias_edge, free_partition_graph_edata_cb): New. - (free_partition_graph_vdata, build_partition_graph): New. - (sort_partitions_by_post_order, merge_dep_scc_partitions): New. - (pg_collect_alias_ddrs, break_alias_scc_partitions): New. - (data_ref_segment_size, latch_dominated_by_data_ref): New. - (compute_alias_check_pairs, version_loop_by_alias_check): New. - (version_for_distribution_p, finalize_partitions): New. - (distribute_loop): Handle alias data dependence specially. Factor - out loop fusion code as functions and call these functions. - -2017-07-05 Bin Cheng - - * tree-loop-distribution.c (classify_partition): New parameter and - better handle reduction statement. - (rdg_build_partitions): Revise comment. - (distribute_loop): Compute statements in all partitions and pass it - to classify_partition. - -2017-07-05 Bin Cheng - - * tree-loop-distribution.c (enum partition_type): New. - (struct partition): New field type. - (partition_merge_into): Add parameter. Update partition type. - (data_dep_in_cycle_p, update_type_for_merge): New functions. - (build_rdg_partition_for_vertex): Compute partition type. - (rdg_build_partitions): Dump partition type. - (distribute_loop): Update calls to partition_merge_into. - -2017-07-05 Bin Cheng - - * tree-loop-distribution.c (struct ddr_hasher): New. - (ddr_hasher::hash, ::equal, get_data_dependence): New function. - (ddrs_table): New. - (classify_partition): Call get_data_dependence. - (pg_add_dependence_edges): Ditto. - (distribute_loop): Release data dependence hash table. - -2017-07-05 Bin Cheng - - * tree-loop-distribution.c (ref_base_address): Delete. - (similar_memory_accesses): Rename ... - (share_memory_accesses): ... to this. Check if partitions access - the same memory reference. - (distribute_loop): Call share_memory_accesses. - -2017-07-05 Bin Cheng - - * tree-loop-distribution.c (struct partition): New field recording - its data reference. - (partition_alloc, partition_free): Init and release data refs. - (partition_merge_into): Merge data refs. - (build_rdg_partition_for_vertex): Collect data refs for partition. - (pg_add_dependence_edges): Change parameters from vector to bitmap. - Update uses. - (distribute_loop): Remve data refs from vertice data of partition - graph. - -2017-07-05 Bin Cheng - - * tree-loop-distribution.c (params.h): Include header file. - (MAX_DATAREFS_NUM, DR_INDEX): New macro. - (datarefs_vec): New global var. - (create_rdg_vertices): Use datarefs_vec directly. - (free_rdg): Don't free data references. - (build_rdg): Update use. Don't free data references. - (distribute_loop): Compute global variable for data references. - Bail out if there are too many data references. - -2017-07-05 Bin Cheng - - * tree-loop-distribution.c (loop_nest): New global var. - (build_rdg): Use loop directly, rather than loop nest. - (pg_add_dependence_edges): Remove loop nest parameter. Use global - variable directly. - (distribute_loop): Compute global variable loop nest. Update use. - -2017-07-05 Bin Cheng - - * tree-loop-distribution.c (enum fuse_type, fuse_message): New. - (partition_merge_into): New parameter. Dump reason for fusion. - (distribute_loop): Update use of partition_merge_into. - -2017-07-05 Bin Cheng - - * tree-loop-distribution.c (bb_top_order_index): New. - (bb_top_order_index_size, bb_top_order_cmp): New. - (stmts_from_loop): Use topological order. - (pass_loop_distribution::execute): Compute and release topological - order for basic blocks. - -2017-07-05 Bin Cheng - - * tree-loop-distribution.c (pass_loop_distribution::execute): Skip - if no loops. - -2017-07-05 Bin Cheng - - * cfgloop.h (struct loop): Add comment. New field orig_loop_num. - * cfgloopmanip.c (lv_adjust_loop_entry_edge): Comment change. - * internal-fn.c (expand_LOOP_DIST_ALIAS): New function. - * internal-fn.def (LOOP_DIST_ALIAS): New. - * tree-vectorizer.c (fold_loop_vectorized_call): Rename to ... - (fold_loop_internal_call): ... this. - (vect_loop_dist_alias_call): New function. - (set_uid_loop_bbs): Call fold_loop_internal_call. - (vectorize_loops): Fold IFN_LOOP_VECTORIZED and IFN_LOOP_DIST_ALIAS - internal calls. - -2017-07-04 Uros Bizjak - - PR target/81300 - * config/i386/i386.md (setcc + movzbl/and to xor + setcc peepholes): - Require dead FLAGS_REG at the beginning of a peephole. - -2017-07-04 Uros Bizjak - - PR target/81294 - * config/i386/adxintrin.h (_subborrow_u32): Swap _X and _Y - arguments in the call to __builtin_ia32_sbb_u32. - (_subborrow_u64): Swap _X and _Y arguments in the call to - __builtin_ia32_sbb_u64. - -2017-07-04 Jakub Jelinek - - PR debug/81278 - * tree-vrp.c (compare_assert_loc): Turn into a function template - with stable template parameter. Only test if a->e is NULL, - !a->e == !b->e has been verified already. Use e == NULL or - e != NULL instead of e or ! e tests. If stable is true, don't use - iterative_hash_expr, on the other side allow a or b or both NULL - and sort the NULLs last. - (process_assert_insertions): Sort using compare_assert_loc - instead of compare_assert_loc, later sort using - compare_assert_loc before calling process_assert_insertions_for - in a loop. Use break instead of continue once seen NULL pointer. - -2017-07-04 Thomas Preud'homme - - * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM - Cortex-R7 and Cortex-R8 processors. - -2017-07-04 Jan Hubicka - - * ipa-utils.c (ipa_merge_profiles): Fix merging when dst is - uninitialized while src is not. - -2017-07-04 Richard Earnshaw - - * common/config/arm/arm-common.c: Adjust include path for - arm-cpu-cdata.h - * config/arm/t-arm (TM_H): Adjust path for arm-cpu.h. - (arm-cpu.h): Create in build directory. Adjust dependency rules. - (arm-cpu-data.h): Likewise. - (arm-cpu-cdata.h): Likewise. - * config/arm/arm-cpu.h: Delete. - * config/arm/arm-cpu-cdata.h: Delete. - * config/arm/arm-cpu-data.h: Delete. - -2017-07-04 James Greenhalgh - - * config/arm/arm-cpus.in (cortex-a55): New. - (cortex-a75): Likewise. - (cortex-a75.cortex-a55): Likewise. - * config/arm/driver-arm.c (arm_cpu_table): Add cortex-a55 and - cortex-a75. - * doc/invoke.texi (-mcpu): Document cortex-a55 and cortex-a75. - * config/arm/arm-cpu-cdata.h: Regenerate. - * config/arm/arm-cpu-data.h: Regenerate. - * config/arm/arm-cpu.h: Regenerate. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-tune.md: Regenerate. - -2017-07-04 Jan Hubicka - - * haifa-sched.c (sched_create_recovery_edges): Update profile. - -2017-07-04 Jan Hubicka - - * bb-reorder.c (better_edge_p): Fix handling of uninitialized - probability. - -2017-07-04 Richard Sandiford - - PR tree-optimization/81292 - * tree-ssa-strlen.c (handle_builtin_strlen): When setting - full_string_p, also call adjust_related_strinfos if the adjustment - is simple, otherwise invalidate related strinfos. - -2017-07-04 Martin Liska - - PR sanitizer/81040 - * sanopt.c (sanitize_rewrite_addressable_params): Mark the - newly created variable as DECL_IGNORED_P. - -2017-07-04 Martin Liska - - PR ipa/81293 - * ipa-inline.c (inline_small_functions): - Use xstrdup_for_dump. - -2017-07-04 Tom de Vries - - * graph.c (draw_cfg_edges): Save and restore EDGE_DFS_BACK. - -2017-07-03 Dominique d'Humieres - - PR target/81033 - * config/darwin.c (darwin_function_switched_text_sections): - Fix spaces. - -2017-07-03 Jan Hubicka - - * tree-vect-loop-manip.c (vect_do_peeling): Fix scaling up. - -2017-07-03 Richard Earnshaw - - * doc/invoke.texi (ARM Options): Add -mbe8 and -mbe32 to option summary. - -2017-07-03 Richard Sandiford - - * tree-vect-loop.c (vect_analyze_loop_2): Treat min_scalar_loop_bound, - min_profitable_iters, and th as inclusive lower bounds. - Fix LOOP_VINFO_PEELING_FOR_GAPS condition. - (vect_estimate_min_profitable_iters): Return inclusive lower bounds - for min_profitable_iters and min_profitable_estimate. - (vect_transform_loop): Treat th as an inclusive lower bound. - * tree-vect-loop-manip.c (vect_loop_versioning): Likewise. - -2017-07-03 Dominique d'Humieres - - PR target/81033 - * config/darwin.c (darwin_function_switched_text_sections): - Replace DECL_NAME with DECL_ASSEMBLER_NAME, split assemble_name_raw - in two pieces, and suppress the use of buf. - -2017-07-03 Nathan Sidwell - - * hash-table.h (hash_table_mod1): Fix indentation. - -2017-07-02 Jan Hubicka - - PR middle-end/81290 - * predict.c (force_edge_cold): Be more careful about propagation - backward. - * profile-count.h (profile_probability::guessed, - profile_probability::fdo, profile_count::guessed, profile_count::fdo): - New. - * tree-ssa-threadupdate.c (recompute_probabilities): Result is guessed. - -2017-07-03 James Greenhalgh - - * doc/invoke.texi (rcpc architecture extension): Document it. - -2017-07-03 Richard Biener - - PR tree-optimization/60510 - * tree-vect-loop.c (vect_create_epilog_for_reduction): Pass in - the scalar reduction PHI and use it. - (vectorizable_reduction): Properly guard the single_defuse_cycle - path for non-SLP reduction chains where we cannot use it. - Rework reduc_def/index and vector type deduction. Rework - vector operand gathering during reduction op code-gen. - * tree-vect-slp.c (vect_analyze_slp): For failed SLP reduction - chains dissolve the chain and leave it to non-SLP reduction - handling. - -2017-07-03 Richard Sandiford - - * tree-data-ref.h (dr_alignment): Declare. - * tree-data-ref.c (dr_alignment): New function. - * tree-vectorizer.h (dataref_aux): Remove base_element_aligned. - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't - set it. - * tree-vect-stmts.c (vectorizable_store): Use dr_alignment. - -2017-07-03 Richard Sandiford - - * tree-data-ref.h (innermost_loop_behavior): Add base_alignment - and base_misalignment fields. - (DR_BASE_ALIGNMENT, DR_BASE_MISALIGNMENT): New macros. - * tree-data-ref.c: Include builtins.h. - (dr_analyze_innermost): Set up the new innmost_loop_behavior fields. - * tree-vectorizer.h (STMT_VINFO_DR_BASE_ALIGNMENT): New macro. - (STMT_VINFO_DR_BASE_MISALIGNMENT): Likewise. - * tree-vect-data-refs.c: Include tree-cfg.h. - (vect_compute_data_ref_alignment): Use the new innermost_loop_behavior - fields instead of calculating an alignment here. - (vect_analyze_data_refs): Use dr_analyze_innermost. Dump the new - innermost_loop_behavior fields. - -2017-07-03 Richard Sandiford - - * tree-data-ref.h (innermost_loop_behavior): Add a step_alignment - field. - (DR_STEP_ALIGNMENT): New macro. - * tree-vectorizer.h (STMT_VINFO_DR_STEP_ALIGNMENT): Likewise. - * tree-data-ref.c (dr_analyze_innermost): Initalize step_alignment. - (create_data_ref): Print it. - * tree-vect-stmts.c (vectorizable_load): Use the step alignment - to tell whether the step preserves vector (mis)alignment. - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise. - Move the check for an integer step and generalise to all INTEGER_CST. - (vect_analyze_data_refs): Set DR_STEP_ALIGNMENT when setting DR_STEP. - Print the outer step alignment. - -2017-07-03 Richard Sandiford - - * tree-data-ref.h (innermost_loop_behavior): Replace aligned_to - with offset_alignment. - (DR_ALIGNED_TO): Delete. - (DR_OFFSET_ALIGNMENT): New macro. - * tree-vectorizer.h (STMT_VINFO_DR_ALIGNED_TO): Delete. - (STMT_VINFO_DR_OFFSET_ALIGNMENT): New macro. - * tree-data-ref.c (dr_analyze_innermost): Update after above changes. - (create_data_ref): Likewise. - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise. - (vect_analyze_data_refs): Likewise. - * tree-if-conv.c (if_convertible_loop_p_1): Use memset before - creating dummy innermost behavior. - -2017-07-03 Richard Sandiford - - * tree-data-ref.h (dr_analyze_innermost): Replace the dr argument - with a "innermost_loop_behavior *" and refeence tree. - * tree-data-ref.c (dr_analyze_innermost): Likewise. - (create_data_ref): Update call accordingly. - * tree-predcom.c (find_looparound_phi): Likewise. - -2017-07-03 Richard Sandiford - - * tree-vectorizer.h (_stmt_vec_info): Replace individual dr_* - fields with dr_wrt_vec_loop. - (STMT_VINFO_DR_BASE_ADDRESS, STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET) - (STMT_VINFO_DR_STEP, STMT_VINFO_DR_ALIGNED_TO): Update accordingly. - (STMT_VINFO_DR_WRT_VEC_LOOP): New macro. - (vect_dr_behavior): New function. - (vect_create_addr_base_for_vector_ref): Remove loop parameter. - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use - vect_dr_behavior. Use a step_preserves_misalignment_p boolean to - track whether the step preserves the misalignment. - (vect_create_addr_base_for_vector_ref): Remove loop parameter. - Use vect_dr_behavior. - (vect_setup_realignment): Update call accordingly. - (vect_create_data_ref_ptr): Likewise. Use vect_dr_behavior. - * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Update - call to vect_create_addr_base_for_vector_ref. - (vect_create_cond_for_align_checks): Likewise. - * tree-vect-patterns.c (vect_recog_bool_pattern): Copy - STMT_VINFO_DR_WRT_VEC_LOOP as a block. - (vect_recog_mask_conversion_pattern): Likewise. - * tree-vect-stmts.c (compare_step_with_zero): Use vect_dr_behavior. - (new_stmt_vec_info): Remove redundant zeroing. - -2017-07-03 Richard Earnshaw - - * common/config/arm/arm-common.c (arm_be8_option): New function. - * config/arm/arm-isa.h (isa_feature): Add new feature bit isa_bit_be8. - (ISA_ARMv6): Add isa_bit_be8. - * config/arm/arm.h (arm_be8_option): Add prototype. - (BE8_SPEC_FUNCTION): New define. - (EXTRA_SPEC_FUNCTIONS): Add BE8_SPEC_FUNCTION. - * config/arm/arm.opt (mbig-endian): Mark as Negative of mlittle-endian. - (mlittle-endian): Similarly. - (mbe8, mbe32): New options. - * config/arm/bpabi.h (BE8_LINK_SPEC): Call arm_be8_option. - * doc/invoke.texi (ARM Options): Document -mbe8 and -mbe32. - -2017-07-02 Jan Hubicka - - * tree-cfg.c (gimple_find_sub_bbs): Fix profile updating. - -2017-07-02 Jan Hubicka - - * tree-cfgcleanup.c (want_merge_blocks_p): New function. - (cleanup_tree_cfg_bb): Use it. - * profile-count.h (profile_count::of_for_merging, profile_count::merge): - New functions. - * tree-cfg.c (gimple_merge_blocks): Use profile_count::merge. - -2017-07-02 Jan Hubicka - - PR bootstrap/81285 - * loop-doloop.c (add_test): Update profile. - -2017-07-03 Martin Liska - - PR sanitize/81040 - * sanopt.c (rewrite_usage_of_param): New function. - (sanitize_rewrite_addressable_params): Likewise. - (pass_sanopt::execute): Call rewrite_usage_of_param. - -2017-07-03 Richard Biener - - * tree-vect-loop.c (vect_create_epilog_for_reduction): Revert - back to using VIEW_CONVERT_EXPR. - -2017-07-03 Martin Liska - - PR other/78366 - * doc/extend.texi: Document when a resolver function is - generated for target_clones. - -2017-07-03 Martin Liska - - * asan.c (asan_emit_stack_protection): Unpoison just red zones - and shadow memory of auto variables which are subject of - use-after-scope sanitization. - (asan_expand_mark_ifn): Add do set only when is_poison. - -2016-07-03 Richard Biener - - * tree-vect-loop.c (vect_analyze_loop_operations): Also analyze - reduction PHIs. - (vect_force_simple_reduction): Record reduction def -> phi mapping. - (vectorizable_reduction): Perform reduction PHI creation when - visiting a reduction PHI and adjust and simplify code generation - phase of the reduction op. Cache dts, use fold_binary, not fold_build2. - (vect_transform_loop): Visit reduction PHIs. - * tree-vect-slp.c (vect_get_and_check_slp_defs): Record reduction - defs into the SLP tree. - (vect_build_slp_tree): Reduction defs terminate the recursion. - * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Allow lookup - of reduction defs. - (vect_get_vec_defs_for_stmt_copy): Export. - (vect_get_vec_defs): Likewise. - * tree-vectorizer.h (struct _stmt_vec_info): Amend reduc_def - purpose. - (vect_get_vec_defs_for_stmt_copy): Declare. - (vect_get_vec_defs): Likewise. - -2017-07-03 Richard Sandiford - - * tree-data-ref.c (dr_analyze_innermost): Replace the "nest" - parameter with a "loop" parameter and use it instead of the - loop containing DR_STMT. Don't check simple_iv when doing - BB analysis. Describe the two analysis modes in the comment. - -2017-07-03 Tom de Vries - - PR tree-optimization/69468 - * tree-ssa-tail-merge.c (ignore_edge_flags): New constant. - (find_same_succ_bb): Handle ignore_edge_flags. - -2017-07-03 Tom de Vries - - PR tree-optimization/81192 - * tree-ssa-tail-merge.c (same_succ_hash): Use bb->loop_father->num in - hash. - (same_succ::equal): Don't find bbs to be equal if bb->loop_father - differs. - (find_same_succ_bb): Remove obsolete test on bb->loop_father->latch. - -2017-07-03 Tom de Vries - - PR tree-optimization/81192 - * tree-ssa-tail-merge.c (same_succ_flush_bb): Handle - BB_SAME_SUCC (bb) == NULL. - -2017-07-02 Jan Hubicka - - * cfgrtl.c (rtl_verify_edges): Enable checking of profile_probability - consistency. - -2017-07-02 Jan Hubicka - - * dumpfile.c: Include profile-count.h - * tree-cfg.c (gimple_duplicate_sese_tail): Drop UNUSED attributes; - update profile. - (insert_cond_bb): Update profile. - * tree-cfg.h (insert_cond_bb): Update prototype. - * tree-chkp-opt.c (chkp_optimize_string_function_calls): Update. - * tree-dump.c: Do not include tree-cfg. - -2017-07-02 Jan Hubicka - - * bb-reorder.c (fix_up_crossing_landing_pad): Update profile. - -2017-07-02 Jan Hubicka - - * expect.c (dw2_build_landing_pads): Update profile of the landing pad - bb. - -2017-07-02 Jan Hubicka - - * tree-complex.c (expand_complex_div_wide): update profile. - -2017-07-02 Richard Sandiford - Alan Hayward - David Sherwood - - * Makefile.in (MACHMODE_H): Remove insn-modes.h - (CORETYPES_H): New define. - (MOSTLYCLEANFILES): Add insn-modes-inline.h. - (insn-modes-inline.h, s-modes-inline-h): New rules. - (generated_files): Add insn-modes-inline.h. - (RTL_BASE_H, TREE_CORE_H): Use CORETYPES_H instead of coretypes.h. - (build/gensupport.o, build/ggc-none.o, build/print-rtl.o): Likewise. - (build/read-md.o, build/read-rtl.o, build/rtl.o): Likewise. - (build/vec.o, build/hash-table.o, build/inchash.o): Likewise. - (build/gencondmd.o, build/genattr.o, build/genattr-common.o): Likewise. - (build/genattrtab.o, build/genautomata.o, build/gencheck.o): Likewise. - (build/gencodes.o, build/genconditions.o): Likewise. - (build/genconfig.o, build/genconstants.o, build/genemit.o): Likewise. - (build/genenums.o, build/genextract.o, build/genflags.o): Likewise. - (build/gentarget-def.o, build/genmddeps.o, build/genopinit.o) - (build/genoutput.o, build/genpeep.o, build/genpreds.o): Likewise. - (build/genrecog.o, build/genmddump.o, build/genmatch.o): Likewise. - (build/gencfn-macros.o, build/gcov-iov.o): Likewise. - * coretypes.h: Include everything up to real.h for generators. - Include insn-modes.h first. Include wide-int-print.h after - wide-int.h. Include insn-modes-inline.h and then machmode.h. - * machmode.h: Don't include insn-modes.h here. - * function-tests.c: Remove includes of signop.h, machmode.h, - double-int.h and wide-int.h. - * rtl.h: Likewise. - * gcc-rich-location.c: Remove includes of machmode.h, double-int.h - and wide-int.h. - * optc-save-gen.awk: Likewise. - * gencheck.c (BITS_PER_UNIT): Delete dummy definition. - * godump.c: Remove include of wide-int-print.h. - * pretty-print.h: Likewise. - * wide-int-print.cc: Likewise. - * wide-int.cc: Likewise. - * hash-map-tests.c: Remove include of signop.h. - * hash-set-tests.c: Likewise. - * rtl-tests.c: Likewise. - * mkconfig.sh: Remove include of machmode.h. - * genmodes.c (emit_insn_modes_h): Split emission of inline functions - into... - (emit_insn_modes_inline_h): ...this new function. Emit the code - into an insn-modes-inline.h header file, adding appropriate - include guards and end comments. - (emit_insn_modes_c_header): Remove include of machmode.h. - (emit_min_insn_modes_c_header): Include coretypes.h rather than - machmode.h. - (main): Handle -i flag and call emit_insn_modes_inline_h when - it is passed. - -2017-07-02 Richard Sandiford - - * tree-ssa-strlen.c (strinfo): Rename the length field to - nonzero_chars. Add a full_string_p field. - (compare_nonzero_chars, zero_length_string_p): New functions. - (get_addr_stridx): Add an offset_out parameter. - Use compare_nonzero_chars. - (get_stridx): Update accordingly. Use compare_nonzero_chars. - (new_strinfo): Update after above changes to strinfo. - (set_endptr_and_length): Set full_string_p. - (get_string_length): Update after above changes to strinfo. - (unshare_strinfo): Update call to new_strinfo. - (maybe_invalidate): Likewise. - (get_stridx_plus_constant): Change off to unsigned HOST_WIDE_INT. - Use compare_nonzero_chars and zero_string_p. Treat nonzero_chars - as a uhwi instead of an shwi. Update after above changes to - strinfo and new_strinfo. - (zero_length_string): Assert that chainsi contains full strings. - Use zero_length_string_p. Update call to new_strinfo. - (adjust_related_strinfos): Update after above changes to strinfo. - Copy full_string_p from origsi. - (adjust_last_stmt): Use zero_length_string_p. - (handle_builtin_strlen): Update after above changes to strinfo and - new_strinfo. Install the lhs as the string length if the previous - entry didn't describe a full string. - (handle_builtin_strchr): Update after above changes to strinfo - and new_strinfo. - (handle_builtin_strcpy): Likewise. - (handle_builtin_strcat): Likewise. - (handle_builtin_malloc): Likewise. - (handle_pointer_plus): Likewise. - (handle_builtin_memcpy): Likewise. Track nonzero characters - that aren't necessarily followed by a nul terminator. - (handle_char_store): Likewise. - -2017-07-02 Richard Sandiford - - PR tree-optimization/80769 - * tree-ssa-strlen.c (strinfo): Document that "stmt" is also used - for malloc and calloc. Document the new invariant that all related - strinfos have delayed lengths or none do. - (verify_related_strinfos): Move earlier in file. - (set_endptr_and_length): New function, split out from... - (get_string_length): ...here. Also set the lengths of related - strinfos. - (zero_length_string): Assert that chainsi has known (rather than - delayed) lengths. - (adjust_related_strinfos): Likewise. - -2017-07-02 Richard Sandiford - - PR tree-optimization/81136 - * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Only - assert that two references with the same misalignment have the same - compile-time misalignment if those compile-time misalignments - are known. - -2017-07-01 Andi Kleen - - * print-tree.c (print_node): Print all attributes. - -2017-07-01 Jan Hubicka - - * cfg.c (scale_bbs_frequencies): New function. - * cfg.h (scale_bbs_frequencies): Declare it. - * cfgloopanal.c (single_likely_exit): Cleanup. - * cfgloopmanip.c (scale_loop_frequencies): Take profile_probability - as parameter. - (scale_loop_profile): Likewise. - (loop_version): Likewise. - (create_empty_loop_on_edge): Update. - * cfgloopmanip.h (scale_loop_frequencies, scale_loop_profile, - scale_loop_frequencies, scale_loop_profile, loopify, - loop_version): Update prototypes. - * modulo-sched.c (sms_schedule): Update. - * predict.c (unlikely_executed_edge_p): Also check probability. - (probably_never_executed_edge_p): Fix typo. - * tree-if-conv.c (version_loop_for_if_conversion): Update. - * tree-parloops.c (gen_parallel_loop): Update. - * tree-ssa-loop-ivcanon.c (try_peel_loop): Update. - * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update. - * tree-ssa-loop-split.c (split_loop): Update. - * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update. - * tree-vect-loop-manip.c (vect_do_peeling): Update. - (vect_loop_versioning): Update. - * tree-vect-loop.c (scale_profile_for_vect_loop): Update. - -2017-07-01 Jan Hubicka - - * trans-mem.c (split_bb_make_tm_edge): Update profile. - -2017-07-01 Jan Hubicka - - * tree-if-conv.c (combine_blocks): Use make_single_succ_edge - to keep profile consistent. - -2017-07-01 Jan Hubicka - - * cfgrtl.c (rtl_flow_call_edges_add): Update profile. - * tree-cfg.c (gimple_flow_call_edges_add): Likewise. - * profile-count.h (max_safe_multiplier): Make unsigned. - (profile_count::guessed_zero): New. - -2017-07-01 Jan Hubicka - - * bb-reorder.c (fix_up_crossing_landing_pad, - fix_crossing_conditional_branches): Use make_single_succ_edge - to keep profile consistent. - -2017-07-01 Jan Hubicka - - * tree-vect-loop.c (optimize_mask_stores): Use make_single_succ_edge - to update profile. - -2017-07-01 Jakub Jelinek - - PR sanitizer/81262 - * bb-reorder.c (fix_up_fall_thru_edges): Move variable declarations to - the right scopes, make sure cond_jump isn't preserved between multiple - iterations. Search for fallthru edge whenever there are 3+ edges and - use find_fallthru_edge for it. - -2017-06-29 Jan Hubicka - - Patch by Alexander Monakov - * sel-sched-ir.c (compute_succs_info): Handle uninitialized - probabilities consistently. - -2017-06-29 Jan Hubicka - - * pa.c (pa_expand_compare_and_swap_loop): Update call of - emit_cmp_and_jump_insns. - -2017-06-29 Jan Hubicka - - PR ipa/81261 - * tree-inline.c (expand_call_inline): Combine profile statuses. - -2017-06-30 Andrew Pinski - - * tree-if-conv.c (predicate_scalar_phi): Update new_stmt if - fold_stmt returned true. - -2017-06-30 Nathan Sidwell - - * ggc.h (empty_string): Delete. - * cfgexpand.c (expand_asm_stmt): Use plain "". - * optabs.c (expand_asm_memory_barrier): Likewise. - * stringpool.c (empty_string): Delete. - (digit_vector, digit_string): Delete. - (ggc_alloc_string): Use plain "", don't optimize single digit - strings. Use ggc_alloc_atomic. - -2017-06-30 Richard Earnshaw - - * rtlanal.c (insn_rtx_cost): If a parallel contains exactly one - comparison set and one other set, use the cost of the non-comparison - set. - -2017-06-30 Nathan Sidwell - - * ggc.h: Replace all 'static inline' with plain 'inline'. Fix - some formatting. - -2017-06-30 Peter Bergner - - * tree-cfg.c (group_case_labels_stmt): Merge scanning and compressing - loops. Remove now unneeded calls to gimple_switch_set_label() that - just set removed labels to NULL_TREE. - -2017-06-30 Aldy Hernandez - - * tree-ssanames.c (set_range_info_raw): Abstract from ... - (set_range_info): ...here. Only call set_range_info_raw if domain - is useful. - (set_nonzero_bits): Call set_range_info_raw. - * tree-ssanames.h (set_range_info_raw): New. - -2017-06-30 Jakub Jelinek - - PR target/81225 - * config/i386/sse.md (vec_extract_lo_): For V8FI, - V16FI and VI8F_256 iterators, use instead - of nonimmediate_operand and instead of m - for the input operand. For V8FI iterator, always split if input - is a MEM. For V16FI and V8SF_256 iterators, don't test if both - operands are MEM if . For VI4F_256 iterator, use - instead of register_operand and - instead of v for the input operand. Make - sure both operands aren't MEMs for if not . - -2017-06-30 Sylvestre Ledru - - * lto-wrapper.c (copy_file) Close both file descriptors before - exiting normally. - -2017-06-30 Martin Liska - - PR ipa/81214 - * multiple_target.c (create_dispatcher_calls): Make ifunc - also for function that don't have calls or are not referenced. - -2017-06-30 Richard Biener - - * tree-vect-slp.c (vect_slp_analyze_node_operations): Only - analyze the first scalar stmt. Move vector type computation - for the BB case here from ... - * tree-vect-stmts.c (vect_analyze_stmt): ... here. Guard - live operation processing in the SLP case properly. - -2017-06-30 Richard Biener - - * graph.c (draw_cfg_node_succ_edges): Fix broken dot syntax. - -2017-06-30 Martin Liska - - PR sanitizer/81021 - * tree-eh.c (lower_resx): Call BUILT_IN_ASAN_HANDLE_NO_RETURN - before BUILT_IN_UNWIND_RESUME when ASAN is used. - -2017-06-30 Yvan Roux - - * doc/invoke.texi (AArch64): Add missing options and remove redundant - ones. - -2017-06-30 Richard Biener - - PR tree-optimization/81249 - * tree-vect-loop.c (vect_create_epilog_for_reduction): Convert - condition reduction result to original scalar type. - -2017-06-30 Andreas Krebbel - - * profile-count.h (enum profile_quality): Fix typos and whitespace - issues. - -2017-06-30 Andreas Krebbel - - * config/s390/s390.c (s390_expand_setmem): Adjust to the new data - type for branch probabilities. - -2017-06-29 Julian Brown - Naveen H.S - - * config/aarch64/aarch64-fusion-pairs.def: Add ALU_BRANCH entry. - * config/aarch64/aarch64.c (AARCH64_FUSE_ALU_BRANCH): New fusion type. - (thunderx2t99_tunings): Set AARCH64_FUSE_ALU_BRANCH flag. - (aarch_macro_fusion_pair_p): Add support for AARCH64_FUSE_ALU_BRANCH. - -2017-06-29 Naveen H.S - - * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Push the - check for CC usage into AARCH64_FUSE_CMP_BRANCH. - * config/i386/i386.c (ix86_macro_fusion_pair_p): Push the check for - CC usage from generic code to here. - * sched-deps.c (sched_macro_fuse_insns): Move the condition for - CC usage into the target macros. - -2017-06-29 Maya Rashish - - * config/netbsd.h (NETBSD_LIB_SPEC): Add -lc when creating shared - objects. - -2017-06-29 Jan Hubicka - - * arm/arm-builtins.c: Include profile-count.h - * except.c (sjlj_emit_function_enter): Use - profile_probability::unlikely. - -2017-06-29 Aaron Sawdey - - * config/rs6000/rs6000.c (toc_relative_expr_p): Make tocrel_base - and tocrel_offset be pointer args rather than implicitly using - static versions. - (legitimate_constant_pool_address_p, rs6000_emit_move, - const_load_sequence_p, adjust_vperm): Add local tocrel_base and - tocrel_offset and use in toc_relative_expr_p call. - (print_operand, print_operand_address): Use static tocrel_base_oac - and tocrel_offset_oac. - (rs6000_output_addr_const_extra): Use static tocrel_base_oac and - tocrel_offset_oac. - -2017-06-29 Maya Rashish - - * config/vax/builtins.md (ffssi2_internal): Correct constraint. - -2017-06-29 Eric Botcazou - - * expr.c (expand_expr) : When testing for unaligned - objects, take into account only the alignment of 'op0' and 'mode1' if - 'op0' is a MEM. - -2017-06-29 Steve Ellcey - - * ccmp.c (ccmp_tree_comparison_p): New function. - (ccmp_candidate_p): Update to use above function. - (get_compare_parts): New function. - (expand_ccmp_next): Update to use new functions. - (expand_ccmp_expr_1): Take tree arg instead of gimple, update to use - new functions. - (expand_ccmp_expr): Pass tree instead of gimple to expand_ccmp_expr_1, - take mode as argument. - * ccmp.h (expand_ccmp_expr): Add mode as argument. - * expr.c (expand_expr_real_1): Pass mode as argument. - -2017-06-29 Segher Boessenkool - - * combine.c (combine_instructions): Print insns to dump_file, together - with their costs. - -2017-06-29 Jan Hubicka - - * asan.c (asan_emit_stack_protection): Update. - (create_cond_insert_point): Update. - * auto-profile.c (afdo_propagate_circuit): Update. - * basic-block.h (struct edge_def): Turn probability to - profile_probability. - (EDGE_FREQUENCY): Update. - * bb-reorder.c (find_traces_1_round): Update. - (better_edge_p): Update. - (sanitize_hot_paths): Update. - * cfg.c (unchecked_make_edge): Initialize probability to uninitialized. - (make_single_succ_edge): Update. - (check_bb_profile): Update. - (dump_edge_info): Update. - (update_bb_profile_for_threading): Update. - * cfganal.c (connect_infinite_loops_to_exit): Initialize new edge - probabilitycount to 0. - * cfgbuild.c (compute_outgoing_frequencies): Update. - * cfgcleanup.c (try_forward_edges): Update. - (outgoing_edges_match): Update. - (try_crossjump_to_edge): Update. - * cfgexpand.c (expand_gimple_cond): Update make_single_succ_edge. - (expand_gimple_tailcall): Update. - (construct_init_block): Use make_single_succ_edge. - (construct_exit_block): Use make_single_succ_edge. - * cfghooks.c (verify_flow_info): Update. - (redirect_edge_succ_nodup): Update. - (split_edge): Update. - (account_profile_record): Update. - * cfgloopanal.c (single_likely_exit): Update. - * cfgloopmanip.c (scale_loop_profile): Update. - (set_zero_probability): Remove. - (duplicate_loop_to_header_edge): Update. - * cfgloopmanip.h (loop_version): Update prototype. - * cfgrtl.c (try_redirect_by_replacing_jump): Update. - (force_nonfallthru_and_redirect): Update. - (update_br_prob_note): Update. - (rtl_verify_edges): Update. - (purge_dead_edges): Update. - (rtl_lv_add_condition_to_bb): Update. - * cgraph.c: (cgraph_edge::redirect_call_stmt_to_calle): Update. - * cgraphunit.c (init_lowered_empty_function): Update. - (cgraph_node::expand_thunk): Update. - * cilk-common.c: Include profile-count.h - * dojump.c (inv): Remove. - (jumpifnot): Update. - (jumpifnot_1): Update. - (do_jump_1): Update. - (do_jump): Update. - (do_jump_by_parts_greater_rtx): Update. - (do_compare_rtx_and_jump): Update. - * dojump.h (jumpifnot, jumpifnot_1, jumpif_1, jumpif, do_jump, - do_jump_1. do_compare_rtx_and_jump): Update prototype. - * dwarf2cfi.c: Include profile-count.h - * except.c (dw2_build_landing_pads): Use make_single_succ_edge. - (sjlj_emit_dispatch_table): Likewise. - * explow.c: Include profile-count.h - * expmed.c (emit_store_flag_force): Update. - (do_cmp_and_jump): Update. - * expr.c (compare_by_pieces_d::generate): Update. - (compare_by_pieces_d::finish_mode): Update. - (emit_block_move_via_loop): Update. - (store_expr_with_bounds): Update. - (store_constructor): Update. - (expand_expr_real_2): Update. - (expand_expr_real_1): Update. - * expr.h (try_casesi, try_tablejump): Update prototypes. - * gimple-pretty-print.c (dump_probability): Update. - (dump_profile): New. - (dump_gimple_label): Update. - (dump_gimple_bb_header): Update. - * graph.c (draw_cfg_node_succ_edges): Update. - * hsa-gen.c (convert_switch_statements): Update. - * ifcvt.c (cheap_bb_rtx_cost_p): Update. - (find_if_case_1): Update. - (find_if_case_2): Update. - * internal-fn.c (expand_arith_overflow_result_store): Update. - (expand_addsub_overflow): Update. - (expand_neg_overflow): Update. - (expand_mul_overflow): Update. - (expand_vector_ubsan_overflow): Update. - * ipa-cp.c (good_cloning_opportunity_p): Update. - * ipa-split.c (split_function): Use make_single_succ_edge. - * ipa-utils.c (ipa_merge_profiles): Update. - * loop-doloop.c (add_test): Update. - (doloop_modify): Update. - * loop-unroll.c (compare_and_jump_seq): Update. - (unroll_loop_runtime_iterations): Update. - * lra-constraints.c (lra_inheritance): Update. - * lto-streamer-in.c (input_cfg): Update. - * lto-streamer-out.c (output_cfg): Update. - * mcf.c (adjust_cfg_counts): Update. - * modulo-sched.c (sms_schedule): Update. - * omp-expand.c (expand_omp_for_init_counts): Update. - (extract_omp_for_update_vars): Update. - (expand_omp_ordered_sink): Update. - (expand_omp_for_ordered_loops): Update. - (expand_omp_for_generic): Update. - (expand_omp_for_static_nochunk): Update. - (expand_omp_for_static_chunk): Update. - (expand_cilk_for): Update. - (expand_omp_simd): Update. - (expand_omp_taskloop_for_outer): Update. - (expand_omp_taskloop_for_inner): Update. - * omp-simd-clone.c (simd_clone_adjust): Update. - * optabs.c (expand_doubleword_shift): Update. - (expand_abs): Update. - (emit_cmp_and_jump_insn_1): Update. - (expand_compare_and_swap_loop): Update. - * optabs.h (emit_cmp_and_jump_insns): Update prototype. - * predict.c (predictable_edge_p): Update. - (edge_probability_reliable_p): Update. - (set_even_probabilities): Update. - (combine_predictions_for_insn): Update. - (combine_predictions_for_bb): Update. - (propagate_freq): Update. - (estimate_bb_frequencies): Update. - (force_edge_cold): Update. - * profile-count.c (profile_count::dump): Add missing space into dump. - (profile_count::debug): Add newline. - (profile_count::differs_from_p): Explicitly convert to unsigned. - (profile_count::stream_in): Update. - (profile_probability::dump): New member function. - (profile_probability::debug): New member function. - (profile_probability::differs_from_p): New member function. - (profile_probability::differs_lot_from_p): New member function. - (profile_probability::stream_in): New member function. - (profile_probability::stream_out): New member function. - * profile-count.h (profile_count_quality): Rename to ... - (profile_quality): ... this one. - (profile_probability): New. - (profile_count): Update. - * profile.c (compute_branch_probabilities): Update. - * recog.c (peep2_attempt): Update. - * sched-ebb.c (schedule_ebbs): Update. - * sched-rgn.c (find_single_block_region): Update. - (compute_dom_prob_ps): Update. - (schedule_region): Update. - * sel-sched-ir.c (compute_succs_info): Update. - * stmt.c (struct case_node): Update. - (do_jump_if_equal): Update. - (get_outgoing_edge_probs): Update. - (conditional_probability): Update. - (emit_case_dispatch_table): Update. - (expand_case): Update. - (expand_sjlj_dispatch_table): Update. - (emit_case_nodes): Update. - * targhooks.c: Update. - * tracer.c (better_p): Update. - (find_best_successor): Update. - * trans-mem.c (expand_transaction): Update. - * tree-call-cdce.c: Update. - * tree-cfg.c (gimple_split_edge): Upate. - (move_sese_region_to_fn): Upate. - * tree-cfgcleanup.c (cleanup_control_expr_graph): Upate. - * tree-eh.c (lower_resx): Upate. - (cleanup_empty_eh_move_lp): Upate. - * tree-if-conv.c (version_loop_for_if_conversion): Update. - * tree-inline.c (copy_edges_for_bb): Update. - (copy_cfg_body): Update. - * tree-parloops.c (gen_parallel_loop): Update. - * tree-profile.c (gimple_gen_ic_func_profiler): Update. - (gimple_gen_time_profiler): Update. - * tree-ssa-dce.c (remove_dead_stmt): Update. - * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update. - * tree-ssa-loop-im.c (execute_sm_if_changed): Update. - * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update. - (unloop_loops): Update. - (try_peel_loop): Update. - * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update. - * tree-ssa-loop-split.c (connect_loops): Update. - (split_loop): Update. - * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update. - (hoist_guard): Update. - * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update. - * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update. - (value_replacement): Update. - * tree-ssa-reassoc.c (branch_fixup): Update. - * tree-ssa-tail-merge.c (replace_block_by): Update. - * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update. - (create_edge_and_update_destination_phis): Update. - (compute_path_counts): Update. - (recompute_probabilities): Update. - (update_joiner_offpath_counts): Update. - (freqs_to_counts_path): Update. - (duplicate_thread_path): Update. - * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update. - (struct switch_conv_info): Update. - (gen_inbound_check): Update. - * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update. - (vect_do_peeling): Update. - (vect_loop_versioning): Update. - * tree-vect-loop.c (scale_profile_for_vect_loop): Update. - (optimize_mask_stores): Update. - * ubsan.c (ubsan_expand_null_ifn): Update. - * value-prof.c (gimple_divmod_fixed_value): Update. - (gimple_divmod_fixed_value_transform): Update. - (gimple_mod_pow2): Update. - (gimple_mod_pow2_value_transform): Update. - (gimple_mod_subtract): Update. - (gimple_mod_subtract_transform): Update. - (gimple_ic): Update. - (gimple_stringop_fixed_value): Update. - (gimple_stringops_transform): Update. - * value-prof.h: Update. - -2017-06-29 Carl Love - - * config/rs6000/rs6000-c.c: Add support for built-in functions - vector signed int vec_signed (vector float); - vector signed long long vec_signed (vector double); - vector signed int vec_signed2 (vector double, vector double); - vector signed int vec_signede (vector double); - vector signed int vec_signedo (vector double); - * config/rs6000/rs6000.c (rs6000_generate_vsigned2_code): Add - instruction generator. - * config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS, - UNSPEC_VSX_VSIGNED2): Add UNSPECS. - (vsx_xvcvspsxws, vsx_xvcvdpuxds_scale, vsx_xvcvspuxws, vsigned2_v2df): - Add define_insn. - (vsignedo_v2df, vsignede_v2df, vunsigned2_v2df, vunsignedo_v2df, - vunsignede_v2df): Add define_expands. - * config/rs6000/rs6000-builtin.def (VEC_SIGNED, VEC_UNSIGNED, - VEC_SIGNED2, VEC_UNSIGNED2, VEC_SIGNEDE, VEC_UNSIGNEDE, VEC_SIGNEDO, - VEC_UNSIGNEDO): Add definitions. - * config/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS, - UNSPEC_VSX_VSIGNED2): Add UNSPECs. - (vsx_xvcvspsxws, vsx_xvcvspuxws): Add define_insn. - (vsigned2_v2df, vsigendo_v2df, vsignede_v2df, - vunsigned2_v2df, vunsignedo_v2df, vunsignede_v2df): Add define_expands. - * config/rs6000/altivec.h (vec_signed, vec_signed2, - vec_signede and vec_signedo, vec_unsigned, vec_unsigned2, - vec_unsignede, vec_unsignedo): Add builtin defines. - * config/rs6000-protos.h (rs6000_generate_vsigned2_code): Add extern - declaration. - * doc/extend.texi: Update the built-in documentation file for the - new built-in functions. - -2017-06-29 Richard Biener - - * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Do not add - reduction chains to LOOP_VINFO_REDUCTIONS. - * tree-vect-slp.c (vect_analyze_slp): Continue looking for - SLP reductions after processing reduction chains. - -2017-06-29 Nathan Sidwell - - * builtins.c (fold_builtin_FUNCTION): Use - lang_hooks.decl_printable_name. - -2017-06-29 Peter Bergner - - PR middle-end/81194 - * cfgexpand.c (expand_gimple_stmt_1): Handle switch statements - with only one label. - * stmt.c (expand_case): Assert NCASES is greater than one. - -2017-06-29 Richard Biener - - * tree-cfg.c (group_case_labels_stmt): Return whether we changed - anything. - (group_case_labels): Likewise. - (find_taken_edge): Push sanity checking on val to workers... - (find_taken_edge_cond_expr): ... here - (find_taken_edge_switch_expr): ... and here, handle cases - with just a default label. - * tree-cfg.h (group_case_labels_stmt): Adjust prototype. - (group_case_labels): Likewise. - * tree-cfgcleanup.c (execute_cleanup_cfg_post_optimizing): When - group_case_labels does anything cleanup the CFG again. - -2017-06-29 Bin Cheng - - PR tree-optimization/81196 - * tree-ssa-loop-niter.c (number_of_iterations_cond): Handle loop - exit condition comparing two IVs. - -2017-06-29 Richard Earnshaw - - * config/arm/parsecpu.awk (gen_comm_data): Add initializer for - profile to the dummy entry at the end of the list of architectures. - * config/arm/arm-cpu-cdata.h: Regenerated. - -2017-06-29 Kyrylo Tkachov - Michael Collison - - PR target/70119 - * config/aarch64/aarch64.md (*aarch64__reg_3_mask1): - New pattern. - (*aarch64_reg_3_neg_mask2): New pattern. - (*aarch64_reg_3_minus_mask): New pattern. - (*aarch64__reg_di3_mask2): New pattern. - * config/aarch64/aarch64.c (aarch64_rtx_costs): Account for cost - of shift when the shift amount is masked with constant equal to - the size of the mode. - * config/aarch64/predicates.md (subreg_lowpart_operator): New - predicate. - -2017-06-29 Martin Liska - - * config/i386/i386.opt: Change range from [1,5] to [0,5]. - -2017-06-29 Yury Gribov - - PR bootstrap/80565 - * ipa-cp.c (allocate_and_init_ipcp_value): Add initialization - code. - * ipa-inline.h - (edge_growth_cache_entry::edge_growth_cache_entry): New - function. - (reset_edge_growth_cache): Update to use constructor. - -2017-06-28 Ramana Radhakrishnan - - * config/aarch64/aarch64.h (AARCH64_EXPAND_ALIGNMENT): New. - (DATA_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT. - (LOCAL_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT. - -2017-06-28 Sebastian Peryt - - * config/i386/avx512vlintrin.h (_mm256_permutexvar_epi64) - (_mm256_permutexvar_epi32, _mm256_permutex_epi64): New intrinsics. - -2017-06-28 Szabolcs Nagy - - * config.gcc (*-linux-musl*): Add t-musl tmake_file. - (*-linux-uclibc*): Add t-uclibc tmake_file. - * config/t-musl: New. - * config/t-uclibc: New. - -2017-06-28 Richard Earnshaw - - * config/arm/parsecpu.awk (profile): Parse new keyword in an arch - context. - (gen_comm_data): Emit architectural setting of arch_prof. - * config/arm/arm-cpus.in (armv6-m, armv6s-m, armv7-a, armv7ve): Set the - profile. - (armv7-r, armv7-m, armv7e-m, armv8-a, armv8.1-a, armv8.2-a): Likewise. - (armv8-m.base, armv8-m.main): Likewise. - * arm-protos.h (arm_build_target): Add profile field. - (arch_option): Likewise. - * config/arm/arm.c (arm_configure_build_target): Copy the profile to - the active target. - * config/arm/arm.h (TARGET_ARM_ARCH_PROFILE): Use - arm_active_target.profile. - -2017-06-28 Richard Biener - - PR middle-end/81227 - * fold-const.c (negate_expr_p): Use TYPE_UNSIGNED, not - TYPE_OVERFLOW_WRAPS. - * match.pd (negate_expr_p): Likewise. - * tree-ssa-reassoc.c (optimize_range_tests_diff): Use - fold_build2, not fold_binary. - -2017-06-28 Wilco Dijkstra - - * config/aarch64/aarch64 (aarch64_expand_mov_immediate): - Convert memory address to Pmode. - (aarch64_print_operand): Assert MEM operands are always Pmode. - -2017-06-28 Wilco Dijkstra - - PR target/79665 - * config/arm/aarch-common.c (arm_no_early_alu_shift_dep): - Remove redundant if. - (aarch_forward_to_shift_is_not_shifted_reg): Remove. - * config/arm/aarch-common-protos.h - (aarch_forward_to_shift_is_not_shifted_re): Remove. - * config/arm/cortex-a53.md: Use arm_no_early_alu_shift_dep in bypass. - -2017-06-28 Michael Meissner - - PR ipa/81238 - * multiple_target.c (create_dispatcher_calls): Set the default - clone to be static, not public. - -2017-06-28 Richard Biener - - * tree-vect-loop.c (vectorizable_reduction): Move special - cond reduction IV var creation ... - (vect_create_epilog_for_reduction): ... here. Remove induction_index - parameter. Use STMT_VINFO_VECTYPE. - * tree-vect-slp.c (vect_get_constant_vectors): Properly reset - constant_p. - -2017-06-28 Martin Liska - - PR ipa/81128 - * ipa-visibility.c (non_local_p): Handle visibility. - -2017-06-28 Martin Liska - - PR driver/79659 - * common.opt: Add IntegerRange to various options. - * opt-functions.awk (integer_range_info): New function. - * optc-gen.awk: Add integer_range_info to cl_options struct. - * opts-common.c (decode_cmdline_option): Handle - CL_ERR_INT_RANGE_ARG. - (cmdline_handle_error): Likewise. - * opts.c (print_filtered_help): Show valid interval in - when --help is provided. - * opts.h (struct cl_option): Add range_min and range_max fields. - * config/i386/i386.opt: Add IntegerRange for -mbranch-cost. - -2017-06-28 Marc Glisse - - * match.pd ((X & ~Y) | (~X & Y)): Generalize to + and ^. - (x * C EQ/NE y * C): New transformation. - -2017-06-28 Christophe Lyon - - * genmultilib (combination_space): Accept '+' in option names. - -2017-06-28 Martin Liska - - PR sanitizer/81224 - * asan.c (instrument_derefs): Bail out inner references - that are hard register variables. - -2017-06-28 Jakub Jelinek - - PR target/81175 - * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use def_builtin - rather than def_builtin_pure for __builtin_ia32_gatherpf*. - -2017-06-28 Richard Biener - - * tree-vectorizer.h (vect_get_vec_defs): Remove. - (vect_get_slp_defs): Adjust. - * tree-vect-loop.c (get_initial_defs_for_reduction): Split - out from ... - * tree-vect-slp.c (vect_get_constant_vectors): ... here and - simplify. - * tree-vect-loop.c (vect_create_epilog_for_reduction): Use - get_initial_defs_for_reduction instead of vect_get_vec_defs. - (vectorizable_reduction): Adjust. - * tree-vect-slp.c (vect_get_constant_vectors): Remove reduction - handling. - (vect_get_slp_defs): Likewise. - * tree-vect-stmts.c (vect_get_vec_defs): Make static and adjust. - (vectorizable_bswap): Adjust. - (vectorizable_call): Likewise. - (vectorizable_conversion): Likewise. - (vectorizable_assignment): Likewise. - (vectorizable_shift): Likewise. - (vectorizable_operation): Likewise. - (vectorizable_store): Likewise. - (vectorizable_condition): Likewise. - (vectorizable_comparison): Likewise. - -2017-06-28 Michael Collison - - PR target/68535 - * config/arm/arm.c (gen_ldm_seq): Remove last unnecessary - set of base_reg - (arm_gen_movmemqi): Removed unused variable 'i'. - Convert 'for' loop into 'while' loop. - (arm_expand_prologue): Remove last unnecessary set of insn. - (thumb_pop): Remove unused variable 'pushed_words'. - (thumb_exit): Remove last unnecessary set of regs_to_pop. - -2017-06-28 Andreas Krebbel - - * config/s390/predicates.md: Use s390_rel_address_ok_p. - * config/s390/s390-protos.h: Add prototype of - s390_rel_address_ok_p. - * config/s390/s390.c (s390_got_symbol): New function. - (s390_rel_address_ok_p): New function. - (legitimize_pic_address): Use s390_rel_address_ok_p. - (s390_load_got): Use s390_got_symbol. - (s390_option_override): Issue error if - -mno-pic-data-is-text-relative is used without -fpic/-fPIC. - * config/s390/s390.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE): - New macro. - * config/s390/s390.opt: New option mpic-data-is-text-relative. - -2017-06-27 Andrew Pinski - - * match.pd (X >/>=/ - - * genmultilib (combination_space): Remove variable. - Validate reuse rules against regular expression for any sequence - of multilib options in any order. - -2017-06-27 Michael Collison - - * config/aarch64/aarch64-simd.md (aarch64_combine): Directly - call aarch64_split_simd_combine. - * (aarch64_combine_internal): Delete pattern. - * config/aarch64/aarch64.c (aarch64_split_simd_combine): - Allow register and subreg operands. - -2017-06-27 Jerome Lambourg - - * config/i386/vxworks.h (ASM_SPEC): Remove definition. No target - specific need, just fallback on defaults. - (ASM_OUTPUT_ALIGNED_BSS): Add #undef before #define. - -2017-06-27 Jerome Lambourg - Olivier Hainque - - * config/i386/vxworks.h (DBX_REGISTER_NUMBER): Pick distinct - map for 64bits. - (TARGET_OS_CPP_BUILTINS): builtin_define CPU to X86_64 for 64bit - targets. Pick a default if no particular attempt applied. - (STACK_CHECK_PROTECT): Double for 64bit targets, which have - larger contexts. - -2017-06-27 Jerome Lambourg - - * config.gcc (i*86-wrs-vxworks7): Handle new acceptable triplet. - (x86_64-wrs-vxworks7): Likewise. - -2017-06-27 Marek Polacek - - PR sanitizer/81223 - * ubsan.c (instrument_null): Check get_base_address's result for null. - -2017-06-27 Marc Glisse - - * match.pd ((A+-B)+(C-A), (A+B)-(A-C)): New transformations. - -2017-06-27 Marc Glisse - - * builtin-types.def (BT_FENV_T_PTR, BT_CONST_FENV_T_PTR, - BT_FEXCEPT_T_PTR, BT_CONST_FEXCEPT_T_PTR): New primitive types. - (BT_FN_INT_FENV_T_PTR, BT_FN_INT_CONST_FENV_T_PTR, - BT_FN_INT_FEXCEPT_T_PTR_INT, BT_FN_INT_CONST_FEXCEPT_T_PTR_INT): - New function types. - * builtins.def (BUILT_IN_FECLEAREXCEPT, BUILT_IN_FEGETENV, - BUILT_IN_FEGETEXCEPTFLAG, BUILT_IN_FEGETROUND, - BUILT_IN_FEHOLDEXCEPT, BUILT_IN_FERAISEEXCEPT, - BUILT_IN_FESETENV, BUILT_IN_FESETEXCEPTFLAG, - BUILT_IN_FESETROUND, BUILT_IN_FETESTEXCEPT, - BUILT_IN_FEUPDATEENV): New builtins. - * tree-core.h (TI_FENV_T_PTR_TYPE, TI_CONST_FENV_T_PTR_TYPE, - TI_FEXCEPT_T_PTR_TYPE, TI_CONST_FEXCEPT_T_PTR_TYPE): New entries. - * tree.h (fenv_t_ptr_type_node, const_fenv_t_ptr_type_node, - fexcept_t_ptr_type_node, const_fexcept_t_ptr_type_node): New - macros. - (builtin_structptr_types): Adjust size. - * tree.c (builtin_structptr_types): Add four entries. - -2017-06-27 Jerome Lambourg - Olivier Hainque - - * config/vxworks.h (VXWORKS_LIB_SPEC): Incorporate ... - (TLS_SYM): New local macro, forcing reference to __tls__ on - link command lines for VxWorks 7 RTPs, triggering initialization - of tlsLib. - (VXWORKS_HAVE_TLS): New macro. State whether the target VxWorks - OS features TLS support, true for RTPs on VxWorks 7. - * config/vxworks.c (vxworks_override_options): Setup emutls - accordingly. - -2017-06-27 Jakub Jelinek - - * predict.c (test_prediction_value_range): Use -1U instead of -1 - to avoid narrowing conversion warning. - * dumpfile.c (dump_options): Wrap all value into dump_flags_t cast - to avoid narrowing conversion warning. - * opt-functions.awk (var_ref): Return (unsigned short) -1 instead of - -1. - * optc-gen.awk (END): Expect (unsigned short) -1 instead of -1. - -2017-06-27 Jerome Lambourg - - * config/vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for - 64bit configurations. - (PTR_DIFF_TYPE): Alternative definition for TARGET_LP64. - (SIZE_TYPE): Likewise. - * config/vxworks.c (vxworks_emutls_var_fields): Use - long_unsigned_type_node instead of unsigned_type_node as the offset - field type, which is "pointer" mode in emutls.c. - -2017-06-27 Jakub Jelinek - - PR sanitizer/81209 - * ubsan.c (ubsan_encode_value): Initialize DECL_CONTEXT on var. - - PR middle-end/81207 - * gimple-fold.c (replace_call_with_call_and_fold): Handle - gimple_vuse copying separately from gimple_vdef copying. - -2017-06-27 Prathamesh Kulkarni - - * value-prof.c (free_hist): Remove call to memset and the enclosing if - condition. - -2017-06-26 Jerome Lambourg - Olivier Hainque - - * config.gcc (*-*-vxworks*): Add TARGET_VXWORKS7=1 to tm_defines - for all vxworks7 targets. - * config/vxworks.h (TARGET_VXWORKS7): If not defined, define to 0. - (VXWORKS_ADDITIONAL_CPP_SPEC): Alternative definition for VXWORKS7. - (VXWORKS_LIBS_RTP, VXWORKS_LIBS_RTP_DIR): New macros, allowing - variations for VX6/VX7 and 32/64bits later on in ... - (VXWORKS_LIB_SPEC): Leverage new macros. - (VXWORKS_OS_CPP_BUILTINS): Define _VSB_CONFIG_FILE for VXWORKS7, - as well as _ALLOW_KEYWORD_MACROS when "inline" is not a keyword. - -2017-06-26 Jerome Lambourg - - * config/vxworks.h (VXWORKS_OS_CPP_BUILTINS): builtin_define - _VX_TOOL_FAMILY and _VX_TOOL to gnu. - -2017-06-26 Carl Love - - * config/rs6000/rs6000-c.c: Add support for built-in functions - vector bool char vec_reve (vector bool char); - vector signed char vec_reve (vector signed char); - vector unsigned char vec_reve (vector unsigned char); - vector bool int vec_reve (vector bool int); - vector signed int vec_reve (vector signed int); - vector unsigned int vec_reve (vector unsigned int); - vector bool long long vec_reve (vector bool long long); - vector signed long long vec_reve (vector signed long long); - vector unsigned long long vec_reve (vector unsigned long long); - vector bool short vec_reve (vector bool short); - vector signed short vec_reve (vector signed short); - vector double vec_reve (vector double); - vector float vec_reve (vector float); - * config/rs6000/rs6000-builtin.def (VREVE_V2DI, VREVE_V4SI, - VREVE_V8HI, VREVE_V16QI, VREVE_V2DF, VREVE_V4SF, VREVE): New builtin. - * config/rs6000/altivec.md (UNSPEC_VREVEV): New UNSPEC. - (altivec_vreve): New pattern. - * config/rs6000/altivec.h (vec_reve): New define. - * doc/extend.texi (vec_rev): Update the built-in documentation file - for the new built-in functions. - -2016-06-26 Bill Schmidt - - PR tree-optimization/71815 - * gimple-ssa-strength-reduction.c (uses_consumed_by_stmt): New - function. - (find_basis_for_candidate): Call uses_consumed_by_stmt rather than - has_single_use. - (slsr_process_phi): Likewise. - (replace_uncond_cands_and_profitable_phis): Don't replace a - multiply candidate with a stride of 1 (copy or cast). - (phi_incr_cost): Call uses_consumed_by_stmt rather than - has_single_use. - (lowest_cost_path): Likewise. - (total_savings): Likewise. - -2017-06-26 Richard Biener - - PR target/81175 - * config/i386/i386.c (ix86_init_mmx_sse_builtins): - Use def_builtin_pure for all gather builtins. - -2017-06-26 Richard Biener - - PR tree-optimization/81203 - * tree-tailcall.c (find_tail_calls): Do not move stmts into - non-dominating BBs. - -2017-06-26 Marek Polacek - - PR c/80116 - * doc/invoke.texi: Document -Wmultistatement-macros. - -2017-06-26 Christophe Lyon - - * doc/sourcebuild.texi (ARM-specific attributes): Document new - arm_neon_ok_no_float_abi effective target. - -2017-06-26 Richard Biener - - PR tree-optimization/80928 - * cfghooks.c (duplicate_block): Do not copy BB_DUPLICATED flag. - (copy_bbs): Set BB_DUPLICATED flag early. - (execute_on_growing_pred): Do not execute for BB_DUPLICATED - marked blocks. - (execute_on_shrinking_pred): Likewise. - * tree-ssa.c (ssa_redirect_edge): Do not look for PHI args in - BB_DUPLICATED blocks. - * tree-ssa-phionlycoprop.c (eliminate_degenerate_phis_1): Properly - iterate over all PHIs considering removal of *gsi. - -2017-06-23 Jim Wilson - - * doc/invoke.texi (AArch64 Options, -mtune): Re-add falkor and - qdf24xx. - -2017-06-23 Aaron Sawdey - - * config/rs6000/rs6000-string.c: (expand_block_clear, - do_load_for_compare, select_block_compare_mode, - compute_current_alignment, expand_block_compare, - expand_strncmp_align_check, expand_strn_compare, - expand_block_move, rs6000_output_load_multiple) - Move functions related to string/block move/compare - to a separate file. - * config/rs6000/rs6000.c: Move above functions to rs6000-string.c. - * config/rs6000/rs6000-protos.h (rs6000_emit_dot_insn): Add prototype - for this function which is now used in two files. - * config/rs6000/t-rs6000: Add rule to compile rs6000-string.o. - * config.gcc: Add rs6000-string.o to extra_objs for - targets powerpc*-*-* and rs6000*-*-*. - -2017-06-23 Michael Meissner - - PR target/80510 - * config/rs6000/rs6000.md (ALTIVEC_DFORM): Do not allow DImode in - 32-bit, since indexed is not valid for DImode. - (mov_hardfloat32): Reorder ISA 2.07 load/stores before ISA - 3.0 d-form load/stores to be the same as mov_hardfloat64. - (define_peephole2 for Altivec d-form load): Add 32-bit support. - (define_peephole2 for Altivec d-form store): Likewise. - - PR ipa/81185 - * multiple_target.c (create_dispatcher_calls): Only create the - dispatcher call if the function is the default clone of a - versioned function. - -2017-06-23 Segher Boessenkool - - PR middle-end/80902 - * builtins.c (expand_builtin_atomic_fetch_op): If emitting code after - a call, force the call to not be a tail call. - -2017-06-23 Jeff Law - - * doc/contrib.texi: Add entry for Steven Pemberton's work on - enquire. - -2017-06-23 Will Schmidt - - * config/rs6000/rs6000.c: Add include of ssa-propagate.h for - update_call_from_tree(). (rs6000_gimple_fold_builtin): Add - handling for early expansion of vector shifts (sl,sr,sra,rl). - (builtin_function_type): Add vector shift right instructions - to the unsigned argument list. - -2017-06-23 Bernd Edlinger - - rtl-optimizatoin/79286 - * ira.c (update_equiv_regs): Revert to using may_trap_or_fault_p again. - * rtlanal.c (rtx_addr_can_trap_p_1): SYMBOL_REF_FUNCTION_P can never - trap. PIC register plus a const unspec without offset can never trap. - -2017-06-23 Marc Glisse - - * tree.h (builtin_structptr_type): New type. - (builtin_structptr_types): Declare new array. - * tree.c (builtin_structptr_types): New array. - (free_lang_data, build_common_tree_nodes): Use it. - -2017-06-23 Jonathan Wakely - - PR c++/81187 - * doc/invoke.texi (-Wnoexcept-type): Fix name of option, from - -Wnoexcept. - -2017-06-22 Matt Turner - - * config/i386/driver-i386.c (host_detect_local_cpu): Add Kaby - Lake models to skylake case. Assume skylake for unknown - models with clflushopt. - -2017-06-22 Jeff Law - - * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Handle - frame sizes that do not satisfy aarch64_uimm12_shift. - -2017-06-22 Jan Hubicka - - * profile-count.h (apply_probability, - apply_scale, probability_in): Fix checks for zero. - -2017-06-22 Rainer Orth - - * incpath.c (add_sysroot_to_chain): Allow for $SYSROOT prefix. - * doc/cppdiropts.texi (-I @var{dir}): Document it. - -2016-06-22 Richard Biener - - * tree-vect-loop.c (vect_model_reduction_cost): Handle - COND_REDUCTION and INTEGER_INDUC_COND_REDUCTION without - REDUC_MAX_EXPR support. - (vectorizable_reduction): Likewise. - (vect_create_epilog_for_reduction): Likewise. - -2017-06-22 James Greenhalgh - - * match.pd (A / (1 << B) -> A >> B): New. - * generic-match-head.c: Include optabs-tree.h. - * gimple-match-head.c: Likewise. - * optabs-tree.h (target_supports_op_p): New. - * optabs-tree.c (target_supports_op_p): New. - -2017-06-22 Rainer Orth - - * configure.ac (gcc_cv_ld_static_dynamic): Also check stderr for - $gcc_cv_ld --help output. - (gcc_cv_ld_demangle): Likewise. - (gcc_cv_ld_eh_frame_hdr): Likewise. - (gcc_cv_ld_pie): Likewise. - (gcc_cv_ld_as_needed): Likewise. Prefer native forms unless $gnu_ld. - (gcc_cv_ld_buildid): Likewise. - (gcc_cv_ld_sysroot): Likewise. - (ld_bndplt_support): Likewise. - (ld_pushpopstate_support): Likewise. - * configure: Regenerate. - * config/sol2.h [!USE_GLD] (SYSROOT_SPEC): Define. - -2017-06-21 Jakub Jelinek - - PR target/81151 - * config/i386/sse.md (round2): Renumber match_dup and - operands indexes to avoid gap between operands and match_dups. - -2017-06-21 Andrew Pinski - - * config/aarch64/aarch64-cost-tables.h (thunderx_extra_costs): - Increment Arith_shift and Arith_shift_reg by 1. - * config/aarch64/aarch64-tuning-flags.def (cheap_shift_extend): - New tuning flag. - * config/aarch64/aarch64.c (thunderx_tunings): Enable - AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND. - (aarch64_strip_extend): Add new argument and test for it. - (aarch64_cheap_mult_shift_p): New function. - (aarch64_rtx_mult_cost): Call aarch64_cheap_mult_shift_p and don't - add a cost if it is true. - Update calls to aarch64_strip_extend. - (aarch64_rtx_costs): Update calls to aarch64_strip_extend. - -2017-06-21 Andrew Pinski - - * config/aarch64/aarch64-cores.def (thunderxt88p1): Use thunderxt88 - tunings. - (thunderxt88): Likewise. - * config/aarch64/aarch64.c (thunderxt88_prefetch_tune): New variable. - (thunderx_prefetch_tune): New variable. - (thunderx2t99_prefetch_tune): Update for the correct values. - (thunderxt88_tunings): New variable. - (thunderx_tunings): Use thunderx_prefetch_tune instead of - generic_prefetch_tune. - (thunderx2t99_tunings): Use AUTOPREFETCHER_WEAK. - -2017-06-21 Kyrylo Tkachov - - * config/aarch64/atomics.md (aarch64_compare_and_swap_lse, - SHORT): Relax operand 3 to aarch64_reg_or_zero and constraint to Z. - (aarch64_compare_and_swap_lse, GPI): Likewise. - (aarch64_atomic_cas, SHORT): Likewise for operand 2. - (aarch64_atomic_cas, GPI): Likewise. - -2017-06-21 Martin Liska - - * gimplify.c (gimplify_label_expr): Insert GIMPLE_PREDICT - statements on cold and hot labels. - * predict.c (tree_estimate_probability_bb): Remove the - prediction from this place. - -2017-06-21 Martin Liska - - PR tree-optimization/79489 - * gimplify.c (maybe_add_early_return_predict_stmt): New - function. - (gimplify_return_expr): Call the function. - * predict.c (tree_estimate_probability_bb): Remove handling - of early return. - * predict.def: Update comment about early return predictor. - * gimple-predict.h (is_gimple_predict): New function. - * predict.def: Change default value of early return to 66. - * tree-tailcall.c (find_tail_calls): Skip GIMPLE_PREDICT - statements. - * passes.def: Put pass_strip_predict_hints to the beginning of - IPA passes. - -2017-06-21 Pierre-Marie de Rodat - - * dwarf2out.c (gen_decl_die): Remove the guard to skip file-scope - FUNCTION_DECL declarations. - (dwarf2out_early_global_decl): Remove the guard to skip FUNCTION_DECL - declarations. - (dwaf2out_decl): Likewise. - * godump.c (go_early_global_decl): Skip call to the real debug hook - for FUNCTION_DECL declarations. - * passes.c (rest_of_decl_compilation): Skip call to the - early_global_decl debug hook for FUNCTION_DECL declarations, unless - -fdump-go-spec is passed. - -2017-06-21 Marc Glisse - - * config/i386/i386.c (struct builtin_isa): New field pure_p. - Reorder for compactness. - (def_builtin, def_builtin2, ix86_add_new_builtins): Handle pure_p. - (def_builtin_pure, def_builtin_pure2): New functions. - (ix86_init_mmx_sse_builtins) [__builtin_ia32_stmxcsr]: Mark as pure. - -2017-06-21 Marc Glisse - - * match.pd (nop_convert): New predicate. - ((A +- CST1) +- CST2): Allow some NOP conversions. - -2017-06-21 Jakub Jelinek - - PR c++/81130 - * gimplify.c (omp_add_variable): Don't force GOVD_SEEN for types - with ctors/dtors if GOVD_SHARED is set. - -2017-06-21 Wilco Dijkstra - - * config/aarch64/aarch64.md (movti_aarch64): - Emit mov rather than orr. - (movtf_aarch64): Likewise. - * config/aarch64/aarch64-simd.md (aarch64_simd_mov): - Emit mov rather than orr. - -2017-06-21 Wilco Dijkstra - - * config/aarch64/aarch64-simd.md (aarch64_simd_dup): - Swap alternatives, make integer dup more expensive. - -2017-06-21 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): - Return true for non-tls symbols. - -2017-06-21 James Greenhalgh - - * config/aarch64/aarch64-cores.def (cortex-a55): New. - (cortex-a75): Likewise. - (cortex-a75.cortex-a55): Likewise. - * config/aarch64/aarch64-tune.md: Regenerate. - * doc/invoke.texi (-mtune): Document new values for -mtune. - -2017-06-21 Tom de Vries - - * doc/sourcebuild.texi (Add Options, Features for dg-add-options): Add - stack_size feature. - (Effective-Target Keywords, Other attributes): Suggest using - dg-add-options stack_size feature to get stack limit in stack_size - effective target documentation. - -2017-06-21 Julian Brown - Naveen H.S - - * config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi) - (aarch64_crypto_pmullv2di): Change type attribute to crypto_pmull. - * config/aarch64/thunderx2t99.md (thunderx2t99_pmull): New - reservation. - * config/arm/cortex-a53.md (cortex_a53_advsimd_type): Add crypto_pmull to - attribute type list for neon_multiply. - * config/arm/cortex-a57.md (cortex_a57_neon_type): Add crypto_pmull to - attribute type list for neon_multiply. - * config/arm/crypto.md (crypto_vmullp64): Change type to crypto_pmull. - * config/arm/exynos-m1.md (exynos_m1_neon_type): Add crypto_pmull to - attribute type list for neon_multiply. - * config/arm/types.md (crypto_pmull): Add. - * config/arm/xgene1.md (xgene1_neon_pmull): Add crypto_pmull to - attribute type list. - -2017-06-20 Andreas Tobler - - * config.gcc (armv6*-*-freebsd*): Change the target_cpu_cname to - arm1176jzf-s. - -2017-06-20 Jakub Jelinek - - * ira-costs.c (find_costs_and_classes): Initialize cost_classes later - to make sure not to dereference a NULL cost_classes_ptr pointer. - -2017-06-20 Carl Love - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW, - ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries. - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin, - builtin_function_type): Add ALTIVEC_BUILTIN_* case statements. - * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW, - VMULOSW): New enum "unspec" values. - (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si, - vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, - altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw, - altivec_vmulosw): New patterns. - * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW, - VMULOSW): Add definitions. - -2017-06-20 Julia Koval - - * config/i386/i386.c: Fix rounding expand for new pattern. - * config/i386/subst.md: Fix pattern (parallel -> unspec). - -2017-06-20 James Greenhalgh - - * config/aarch64/aarch64-option-extensions.def (rcpc): New. - * config/aarch64/aarch64.h (AARCH64_FL_RCPC): New. - -2017-06-20 James Greenhalgh - - * config/aarch64/aarch64-option-extensions.def (fp16): Fix expected - feature string. - -2017-06-20 James Greenhalgh - - * config/aarch64/aarch64-cores.def: Rearrange to sort by - architecture, then by implementer ID. - * config/aarch64/aarch64-tune.md: Regenerate. - -2017-06-20 Richard Biener - - PR middle-end/81097 - * fold-const.c (split_tree): Fold to type before negating. - -2017-06-20 David Malcolm - - * diagnostic-show-locus.c - (selftest::test_fixit_deletion_affecting_newline): New function. - (selftest::diagnostic_show_locus_c_tests): Call it. - -2017-06-20 Andreas Schwab - - PR target/80970 - * config/m68k/m68k.md (bsetdreg, bchgdreg, bclrdreg): Use "=d" - instead of "+d". - -2017-06-20 Prakhar Bahuguna - - * config/arm/arm-c.c (arm_cpu_builtins): New block to define - __ARM_FEATURE_COPROC according to support. - -2017-06-20 Jakub Jelinek - - * tree-chkp.c (chkp_get_hard_register_var_fake_base_address): - Rewritten to avoid overflow for > 32-bit pointers. - - PR sanitizer/81125 - * ubsan.h (ubsan_encode_value): Workaround buggy clang++ parser - by removing enum keyword. - (ubsan_type_descriptor): Likewise. Formatting fix. - - PR target/81121 - * config/i386/i386.md (TARGET_USE_VECTOR_CONVERTS float si->{sf,df} - splitter): Require TARGET_SSE2 in the condition. - -2017-06-20 Michael Meissner - - PR target/79799 - * config/rs6000/rs6000.c (rs6000_expand_vector_init): Add support - for doing vector set of SFmode on ISA 3.0. - * config/rs6000/vsx.md (vsx_set_v4sf_p9): Likewise. - (vsx_set_v4sf_p9_zero): Special case setting 0.0f to a V4SF - element. - (vsx_insert_extract_v4sf_p9): Add an optimization for inserting a - SFmode value into a V4SF variable that was extracted from another - V4SF variable without converting the element to double precision - and back to single precision vector format. - (vsx_insert_extract_v4sf_p9_2): Likewise. - -2017-06-19 Jakub Jelinek - - * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Multiply - in UWHI to avoid undefined overflow. - - PR sanitizer/81125 - * ubsan.h (enum ubsan_encode_value_phase): New. - (ubsan_encode_value): Change second argument to - enum ubsan_encode_value_phase with default value of - UBSAN_ENCODE_VALUE_GENERIC. - * ubsan.c (ubsan_encode_value): Change second argument to - enum ubsan_encode_value_phase PHASE from bool IN_EXPAND_P, - adjust uses, for UBSAN_ENCODE_VALUE_GENERIC use just - create_tmp_var_raw instead of create_tmp_var and use a - TARGET_EXPR. - (ubsan_expand_bounds_ifn, ubsan_build_overflow_builtin, - instrument_bool_enum_load, ubsan_instrument_float_cast): Adjust - ubsan_encode_value callers. - - PR sanitizer/81111 - * ubsan.c (ubsan_encode_value): If current_function_decl is NULL, - use create_tmp_var_raw instead of create_tmp_var, mark it addressable - just by setting TREE_ADDRESSABLE on the result and use a TARGET_EXPR. - -2017-06-19 Richard Biener - - PR middle-end/81118 - * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Clear niter - estimates if we changed anything. - -2017-06-19 Richard Biener - - PR tree-optimization/80887 - * tree-ssa-sccvn.c (mprts_hook_cnt): New global. - (vn_lookup_simplify_result): Allow only mprts_hook_cnt succesful - simplified lookups, then reset mprts_hook. - (vn_nary_build_or_lookup_1): Set mprts_hook_cnt to 9 before - simplifying. - (try_to_simplify): Likewise. - -2017-06-19 Martin Liska - - PR sanitizer/80879 - * gimplify.c (gimplify_switch_expr): - Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST. - -2017-06-19 Martin Liska - - * doc/install.texi: Document that PGO runs in 4 stages. - -2017-06-19 Martin Liska - - PR ipa/80732 - * attribs.c (make_dispatcher_decl): Do not append '.ifunc' - to dispatcher function name. - * multiple_target.c (replace_function_decl): New function. - (create_dispatcher_calls): Redirect both edges and references. - -2017-06-19 Jan Hubicka - - * profile-count.c (profile_count::dump): Dump quality. - (profile_count::differs_from_p): Update for unsigned val. - * profile-count.h (profile_count_quality): New enum. - (profile_count): Turn m_val to 62bit unsigned, add quality tracking. - -2017-06-19 Richard Biener - - * tree-ssa-loop-niter.h (estimate_numbers_of_iterations): Take - struct function as arg. - (estimate_numbers_of_iterations): Export overload with loop arg. - (free_numbers_of_iterations_estimates_loop): Use an overload of - free_numbers_of_iterations_estimates instead. - * tree-cfg.c (remove_bb): Adjust. - * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Likewise. - * tree-parloops.c (gen_parallel_loop): Likewise. - * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): - Likewise. - (tree_unroll_loops_completely): Likewise. - * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): - Use an overload instead and export. - (estimated_loop_iterations): Adjust. - (max_loop_iterations): Likewise. - (likely_max_loop_iterations): Likewise. - (estimate_numbers_of_iterations): Take struct function as arg - and adjust. - (loop_exits_before_overflow): Adjust. - (free_numbers_of_iterations_estimates_loop): Use an overload. - * tree-vect-loop.c (vect_analyze_loop_form): Adjust. - * tree-vectorizer.c (vect_free_loop_info_assumptions): Likewise. - -2017-06-19 Richard Biener - - PR ipa/81112 - * ipa-prop.c (find_constructor_constant_at_offset): Handle - RANGE_EXPR conservatively. - -2017-06-16 Carl Love - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - definitions for vec_float, vec_float2, vec_floato, - vec_floate built-ins. - * config/rs6000/vsx.md (define_c_enum "unspec"): Add RTL code - for instructions vsx_xvcvsxws vsx_xvcvuxwsp, float2, floato and - floate. - * config/rs6000/rs6000-builtin.def (FLOAT2_V2DI, FLOATE_V2DF, - FLOATE_2DI, FLOATO_V2DF, FLOATEE_V2DI, XVCVSXWSP_V4SF, - UNS_FLOATO_V2DI, UNS_FLOATE_V2DI): Add definitions. - * config/altivec.md (define_insn "p8_vmrgew_", - define_mode_attr VF_sxddp): Add V4SF type to p8_vmrgew. - * config/rs6000/altivec.h (vec_float, vec_float2, vec_floate, - vec_floato): Add builtin defines. - * doc/extend.texi (vec_float, vec_float2, vec_floate, vec_floato): - Update the built-in documentation file for the new built-in - functions. - -2017-06-16 Richard Earnshaw - - * config/arm/arm.opt (marm): Mark as the negative of of -mthumb. - (mthumb): Mark as the negative of -marm. - -2017-06-16 Richard Earnshaw - - * doc/invoke.texi (ARM Options, -mcpu): Document supported - extension options. - (ARM Options, -mtune): Document that this accepts the same - extension options as -mcpu. - (ARM Options, -mfpu): Document addition of -mfpu=auto. - -2017-06-16 Richard Earnshaw - - * doc/invoke.texi (ARM Options, -march=): Document new syntax and - permitted extensions. - -2017-06-16 Richard Earnshaw - - * config/arm/arm-cpus.in (armv7): Add extension +nofp. - (armv7-r): Add aliases vfpv3xd and vfpv3-d16. - (armv8-m.main): Add option +nodsp. - * config/arm/arm-cpu-cdata.h: Regenerated. - -2017-06-16 Richard Earnshaw - - * config/arm/t-fuchsia: New file. - * config.gcc (arm*-*-fuchsia*): Use it. - -2017-06-16 Richard Earnshaw - - * config/arm/t-symbian: Rewrite for new option infrastructure. - -2017-06-16 Richard Earnshaw - - * config/arm/t-phoenix (MULTILIB_REUSE): Clear variable. - (MULTILIB_REQUIRED): Likewise. - -2017-06-16 Richard Earnshaw - - * config/arm/t-linux-eabi (MULTILIB_EXCEPTIONS): Set to empty. - (MULTILIB_RESUE): Likewise. - (MULTILIB_MATCHES): Likewise. - (MULTLIB_REQUIRED): Likewise. - -2017-06-16 Richard Earnshaw - - * config/arm/t-rtems: Rewrite for new option framework. - -2017-06-16 Richard Earnshaw - - * config/arm/t-aprofile (v7_a_nosimd_variants, v7_a_simd_variants) - (v7ve_nosimd_variatns, v7ve_vfpv3_simd_variants) - (v7ve_vfpv4_simd_variants, v8_a_nosimd_variants, v8_a_simd_variants) - (v8_1_a_simd_variants, v8_2_a_simd_variants): Move to ... - * config/arm/t-multilib: ... here. - (MULTILIB_OPTIONS): Add armv7 and armv7+fp architectures. - (MULTILIB_MATCHES): Use armv7 libraries for armv7-r. Also use for - armv7-a and armv8*-a when A-profile libraries have not been built. - * config/arm/t-rmprofile: Rewrite. - -2017-06-16 Richard Earnshaw - - * genmultilib (multilib_reuse): Allow an explicit period to be escaped - with a backslash. Remove the backslash after substituting unescaped - periods. - * doc/fragments.texi (MULTILIB_REUSE): Document it. - -2017-06-16 Richard Earnshaw - - * config.gcc: (arm*-*-*): When building a-profile libraries, force - the driver to pass through the default setting of -mfloat-abi. - * common/config/arm/arm-common.c (arm_target_thumb_only): Return -marm - rather than NULL. - * config/arm/t-multilib (MULTILIB_REUSE): Initialize to empty. - (all_feat_combs): New rule. - (MULTILIB_OPTIONS): Use explicit ARM and Thumb directories. Rework - default libraries. - * config/arm/t-aprofile: Rewrite. - -2017-06-16 Richard Earnshaw - - * config/arm/arm.h (FPUTYPE_AUTO): Define. - * config/arm/arm.c (arm_option_override): Use FPUTYPE_AUTO if the - fpu is not specified by the user/command-line. - * config/arm/bpabi.h (FPUTYPE_DEFAULT): Delete. - * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Delete. - * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Delete. - * config/arm/vxworks.h (FPUTYPE_DEFAULT): Delete. - * common/config/arm/arm-common.c (arm_canon_arch_option): Use - FPUTYPE_AUTO insted of FPUTYPE_DEFAULT. - -2017-06-16 Richard Earnshaw - - * config/arm/elf.h (MULTILIB_DEFAULTS): Delete. - * config/arm/t-arm-elf: Rewritten. - -2017-06-16 Richard Earnshaw - - * config/arm/arm.h (TARGET_HARD_FLOAT): Also check that we - have some floating-point instructions. - (TARGET_SOFT_FLOAT): Define as inverse of TARGET_HARD_FLOAT. - (TARGET_MAYBE_HARD_FLOAT): New macro. - * config/arm/arm-builtins.c (arm_init_builtins): Use - TARGET_MAYBE_HARD_FLOAT. - * config/arm/arm.c (arm_option_override): Use TARGET_HARD_FLOAT_ABI. - -2017-06-16 Richard Earnshaw - - * common/config/arm/arm-common.c: Define INCLUDE_LIST. - (configargs.h): Include it. - (arm_print_hint_for_fpu_option): New function. - (arm_parse_fpu_option): New function. - (candidate_extension): New class. - (arm_canon_for_multilib): New function. - * config/arm/arm.h (CANON_ARCH_SPEC_FUNCTION): New macro. - (EXTRA_SPEC_FUNCTIONS): Add CANON_ARCH_SPEC_FUNCTION. - (ARCH_CANONICAL_SPECS): New macro. - (DRIVER_SELF_SPECS): Add ARCH_CANONICAL_SPECS. - -2017-06-16 Richard Earnshaw - - * config.gcc (arm*-*-*): Ensure both target_cpu_cname and with_cpu - are set after handling multilib fragments. Set target_cpu_default2 - from with_cpu. - -2017-06-16 Richard Earnshaw - - * config.gcc (arm*-*-fucshia*): Set target_cpu_cname to the real - cpu name. - (arm*-*-*): Set target_cpu_default2 to a quoted string. - * config/arm/parsecpu.awk (check_cpu): Validate any extension - options. - (check_arch): Likewise. - * config/arm/arm.c (arm_configure_build_target): Handle - TARGET_CPU_DEFAULT being a string constant. Scan any feature - options in the default. - -2017-06-16 Richard Earnshaw - - * config/arm/arm-protos.h (cpu_arch_extension): Add field to record - when an option is an alias of another. - * config/arm/parsecpu.awk (optalias): New parser token. - (gen_comm_data): Mark non-alias options as such. Emit entries - for extension aliases. - * config/arm/arm-cpus.in (armv5e): Make vfpv2 an alias. - (armv5te, armv5tej, armv6, armv6j, armv6k, armv6z): Likewise. - (armv6kz, armv6zk, armv6t2): Likewise. - (armv7): Make vfpv3-d16 an alias. - (armv7-a): Make vfpv3-d16, neon and neon-vfpv3 aliases. Sort in - canonical order. - (armv7ve): Make vfpv4-d16, neon-vfpv3 and neon-vfpv4 aliases. - Sort in canonical order. - (armv8-a): Sort in canonical order. - (armv8.1-a, armv8.2-a): Likewise. - (generic-armv7-a): Make neon and neon-vfpv3 aliases. Sort in - canonical order. - (cortex-a9): Sort in canonical order. - * config/arm/arm.c (selftests.h): Include it. - (arm_test_cpu_arch_data): New function. - (arm_run_self_tests): New function. - (TARGET_RUN_TARGET_SELFTESTS): Redefine. - (targetm): Move declaration to the end of the file. - * arm-cpu-cdata.h: Regenerated. - -2017-06-16 Richard Earnshaw - - * config/arm/arm.h (TARGET_MODE_SPECS): Add additional parameter to - call to target_mode_check describing the type of option passed. - * common/config/arm/arm-common.c (arm_arch_core_flag): Delete. - (arm_target_thumb_only): Use arm_parse_arch_option_name or - arm_parse_cpu_option_name to match parameters against list of - available targets. - * config/arm/parsecpu.awk (gen_comm_data): Don't generate - arm_arch_core_flags data structure. - * config/arm/arm-cpu_cdata.h: Regenerated. - -2017-06-16 Richard Earnshaw - - * common/config/arm/arm-common.c (arm_initialize_isa): Moved here from - config/arm/arm.c. - (arm_print_hint_for_cpu_option): Likewise. - (arm_print_hint_for_arch_option): Likewise. - (arm_parse_cpu_option_name): Likewise. - (arm_parse_arch_option_name): Likewise. - * config/arm/arm.c (arm_identify_fpu_from_isa): Use the computed number - of entries in the all_fpus list. - * config/arm/arm-protos.h (all_architectures, all_cores): Declare. - (arm_parse_cpu_option_name): Declare. - (arm_parse_arch_option_name): Declare. - (arm_parse_option_features): Declare. - (arm_intialize_isa): Declare. - * config/arm/parsecpu.awk (gen_data): Move CPU and architecture - data tables to ... - (gen_comm_data): ... here. Make definitions non-static. - * config/arm/arm-cpu-data.h: Regenerated. - * config/arm/arm-cpu-cdata.h: Regenerated. - -2017-06-16 Richard Earnshaw - - * config/arm/arm-protos.h (arm_build_target): Remove arch_core. - (cpu_arch_extension): New structure. - (cpu_arch_option, arch_option, cpu_option): New structures. - * config/arm/parsecpu.awk (gen_headers): Build an enumeration of - architecture types. - (gen_data): Generate new format data tables. - * config/arm/arm.c (cpu_tune): New structure. - (cpu_option, processors): Delete. - (arm_print_hint_for_core_or_arch): Delete. Replace with ... - (arm_print_hint_for_cpu_option): ... this and ... - (arm_print_hint_for_arch_option): ... this. - (arm_parse_arch_cpu_name): Delete. Replace with ... - (arm_parse_cpu_option_name): ... this and ... - (arm_parse_arch_option_name): ... this. - (arm_unrecognized_feature): Change type of target parameter to - cpu_arch_option. - (arm_parse_arch_cpu_features): Delete. Replace with ... - (arm_parse_option_features): ... this. - (arm_configure_build_target): Rework to use new configuration data - tables. - (arm_print_tune_info): Rework for new configuration data tables. - * config/arm/arm-cpu-data.h: Regenerated. - * config/arm/arm-cpu.h: Regenerated. - -2017-06-16 Richard Earnshaw - - * Makefile.in (OBJS): Move sbitmap.o from here ... - (OBJS-libcommon): ... to here. - -2017-06-16 Richard Earnshaw - - * config/arm/arm-isa.h (ISA_ALL_FPU_INTERNAL): Renamed from ISA_ALL_FPU. - (ISA_ALL_CRYPTO): New macro. - (ISA_ALL_SIMD): New macro - (ISA_ALL_FP): New macro. - * config/arm/arm.c (fpu_bitlist): Update initializer. - * config/arm/arm-cpus.in: Use new ISA_ALL macros to disable crypto, - simd or fp. - (arm9e): Add fpu. Add option for nofp - (arm946e-s, arm966e-s, arm968e-s, arm10e, arm1020e, arm1022e): Likewise. - (arm926ej-s, arm1026ej-s): Likewise. - (generic-armv7-a): Add fpu. Add options for simd, vfpv3, vfpv3-d16, - vfpv3-fp16, vfpv3-d16-fp16, vfpv4, vfpv4-d16, neon, neon-vfp3, - neon-fp16, neon-vfpv4, nofp and nosimd. - (cortex-a5, cortex-a7): Add fpu. Add options for nosimd and nofp. - (cortex-a8): Add fpu. Add option for nofp. - (cortex-a9): Add fpu. Add options for nosimd and nofp. - (cortex-a12, cortex-a15, cortex-a17): Add fpu. Add option for nofp. - (cortex-r4f): Add fpu. - (cortex-r5): Add fpu. Add options for nofp.dp and nofp. - (cortex-r7): Use idiv option from architecture. Add fpu. Add option - for nofp. - (cortex-r8): Likewise. - (cortex-m4): Add fpu. Add option for nofp. - (cortex-a15.cortex-a7): Add fpu. Add option for nofp. - (cortex-a17.cortex-a7): Likewise. - (cortex-a32): Add fpu. Add options for crypto and nofp. - (cortex-a35, cortex-a53): Likewise. - (cortex-a57): Add fpu. Add option for crypto. - (cortex-a72, cortex-a73): Likewise. - (exynos-m1): Likewise. - (cortex-a57.cortex-a53, cortex-a72.cortex-a53): Likewise. - (cortex-a73.cortex-a35, cortex-a73.cortex-a53): Likewise. - (cortex-m33): Add fpu. Add option for nofp. - * config/arm/arm-cpu-cdata.h: Regenerated - * config/arm/arm-cpu-data.h: Regenerated. - -2017-06-16 Richard Earnshaw - - * arm-cpus.in (armv5e): Add options fp, vfpv2 and nofp. - (armv5te, armv5tej): Likewise. - (armv6, armv6j, armv6k, armv6z, armv6kz, armv6zk, armv6t2): Likewise. - (armv7): Add options fp and vfpv3-d16. - (armv7-a): Add options fp, simd, vfpv3, vfpv3-d16, vfpv3-d16-fp16, - vfpv3-fp16, vfpv4, vfpv4-d16, neon, neon-vfpv3, neon-fp16, neon-vfpv4, - nofp and nosimd. - (armv7ve): Likewise. - (armv7-r): Add options fp, fp.sp, idiv, nofp and noidiv. - (armv7e-m): Add options fp, fpv5, fp.dp and nofp. - (armv8-a): Add nocrypto option. - (armv8.1-a, armv8.2-a): Likewise. - (armv8-m.main): add options fp, fp.dp and nofp. - -2017-06-16 Richard Earnshaw - - * config/arm/arm-cpus.in (armv8-a): Add options crc, simd crypto and - nofp. - (armv8-a+crc): Delete. - (armv8.1-a): Add options simd, crypto and nofp. - (armv8.2-a): Add options fp16, simd, crypto and nofp. - (armv8.2-a+fp16): Delete. - (armv8-m.main): Add option dsp. - (armv8-m.main+dsp): Delete. - (cortex-a8): Add fpu. Add nofp option. - (cortex-a9): Add fpu. Add nofp and nosimd options. - * config/arm/parsecpu.awk (gen_data): Generate option tables and - link to main cpu and architecture data structures. - (gen_comm_data): Only put isa attributes from the main architecture - in common tables. - (option): New statement for architecture and CPU entries. - * arm.c (struct cpu_option): New structure. - (struct processors): Add entry for options. - (arm_unrecognized_feature): New function. - (arm_parse_arch_cpu_name): Ignore any characters after the first - '+' character. - (arm_parse_arch_cpu_feature): New function. - (arm_configure_build_target): Separate out any CPU and architecture - features and parse separately. Don't error out if -mfpu=auto is - used with only an architecture string. - (arm_print_asm_arch_directives): New function. - (arm_file_start): Call it. - * config/arm/arm-cpu-cdata.h: Regenerated. - * config/arm/arm-cpu-data.h: Likewise. - * config/arm/arm-tables.opt: Likewise. - -2017-06-16 Richard Earnshaw - - * config/arm/elf.h (ASM_SPEC): Only pass -mfpu through to the - assembler when it is not -mfpu=auto. - -2017-06-16 Richard Earnshaw - - * config/arm/arm.h (BIG_LITTLE_SPEC): Delete macro. - (ASM_REWRITE_SPEC_FUNCTIONS): New macro. - (BIG_LITTLE_CPU_SPEC_FUNCTIONS): Delete macro. - (ASM_CPU_SPEC): Rewrite. - (MCPU_MTUNE_NATIVE_FUNCTIONS): New macro. - (EXTRA_SPEC_FUNCTIONS): Move outside of ifdef. Use - MCPU_MTUNE_NATIVE_FUNCTIONS and ASM_REWRITE_SPEC_FUNCTIONS. Remove - reference to BIG_LITTLE_CPU_SPEC_FUNCTIONS. - * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): Ensure - copied string is NUL-terminated. Also strip any characters prefixed - by '+'. - (arm_rewrite_selected_arch): New function. - (arm_rewrite_march): New function. - -2017-06-16 Richard Earnshaw - - * config/arm/arm.opt (x_arm_arch_string): New TargetSave option. - (x_arm_cpu_string, x_arm_tune_string): Likewise. - (march, mcpu, mtune): Convert to string-based options. - * config/arm/arm.c (arm_print_hint_for_core_or_arch): New function. - (arm_parse_arch_cpu_name): New function. - (arm_configure_build_target): Use arm_parse_arch_cpu_name to - identify selected architecture or CPU. - (arm_option_save): New function. - (TARGET_OPTION_SAVE): Redefine. - (arm_option_restore): Restore string options. - (arm_option_print): Print string options. - -2017-06-16 Martin Sebor - - PR tree-optimization/80933 - PR tree-optimization/80934 - * builtins.c (fold_builtin_3): Do not handle bcmp here. - * gimple-fold.c (gimple_fold_builtin_bcmp): New function. - (gimple_fold_builtin_bcopy, gimple_fold_builtin_bzero): Likewise. - (gimple_fold_builtin): Call them. - -2017-06-16 Jan Hubicka - - * gimple-ssa-isolate-paths.c (isolate_path): Set edge leading to path - as unlikely; update profile. - -2017-06-16 Jan Hubicka - - * predict.c (force_edge_cold): Handle declaring edges impossible - more aggresively. - -2017-06-16 Jan Hubicka - - * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update - profile. - (try_unroll_loop_completely): Fix reporting. - -2017-06-16 Jan Hubicka - - * tree-ssa-tail-merge.c (replace_block_by): Fix profile updating. - -2017-06-16 James Greenhalgh - - PR target/71778 - * config/arm/arm-builtins.c (arm_expand_builtin_args): Return TARGET - if given a non-constant argument for an intrinsic which requires a - constant. - -2017-06-16 Jan Hubicka - - * profile.c (compare_freqs): New function. - (branch_prob): Sort edge list. - (find_spanning_tree): Assume that the list is priority sorted. - -2017-06-16 Richard Biener - - PR tree-optimization/81090 - * passes.def (pass_record_bounds): Remove. - * tree-pass.h (make_pass_record_bounds): Likewise. - * tree-ssa-loop.c (pass_data_record_bounds, pass_record_bounds, - make_pass_record_bounds): Likewise. - * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Do - not free niter estimates at the beginning but at the end. - * tree-scalar-evolution.c (scev_finalize): Free niter estimates. - -2017-06-16 Richard Biener - - * tree-switch-conversion.c (emit_case_bit_tests): Adjust - initializer to workaround ICE in host GCC 4.8. - -2017-06-16 Jan Hubicka - - * ipa-inline-transform.c (update_noncloned_frequencies): Update also - counts. - (clone_inlined_nodes): Update. - -2017-06-16 Maxim Kuvyrkov - - * config/aarch64/aarch64.c (qdf24xx_prefetch_tune): Update - prefetch settings, and enable prefetching by default at -O3. - -2017-06-16 Maxim Kuvyrkov - - * config/aarch64/aarch64.c (aarch64_override_options_internal): - Set flag_prefetch_loop_arrays according to tuning data. - -2017-06-16 Maxim Kuvyrkov - - * config/aarch64/aarch64-protos.h (struct cpu_prefetch_tune): - New tune structure. - (struct tune_params): Use cpu_prefetch_tune instead of cache_line_size. - [Unrelated to main purpose of the patch] Place the pointer field last - to enable type checking errors when tune structure are wrongly merged. - * config/aarch64/aarch64.c (generic_prefetch_tune,) - (exynosm1_prefetch_tune, qdf24xx_prefetch_tune,) - (thunderx2t99_prefetch_tune): New tune constants. - (tune_params *_tunings): Update all tunings (no functional change). - (aarch64_override_options_internal): Set PARAM_SIMULTANEOUS_PREFETCHES, - PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE, and PARAM_L2_CACHE_SIZE - from tunings structures. - -2017-06-16 Jakub Jelinek - - PR sanitizer/81094 - * ubsan.c (instrument_null): Add T argument, use it instead - of computing it based on IS_LHS. - (instrument_object_size): Likewise. - (pass_ubsan::execute): Adjust instrument_null and - instrument_object_size callers to pass gimple_get_lhs or - gimple_assign_rhs1 result to it. Use instrument_null instead of - calling get_base_address and instrument_mem_ref. Handle - aggregate call arguments for object-size sanitization. - -2017-06-16 Yury Gribov - - PR tree-optimization/81089 - * tree-vrp.c (is_masked_range_test): Validate operands of - subexpression. - -2017-06-15 Martin Sebor - - PR c++/80560 - * dumpfile.c (dump_register): Avoid calling memset to initialize - a class with a default ctor. - * gcc.c (struct compiler): Remove const qualification. - * genattrtab.c (gen_insn_reserv): Replace memset with initialization. - * hash-table.h: Ditto. - * ipa-cp.c (allocate_and_init_ipcp_value): Replace memset with - assignment. - * ipa-prop.c (ipa_free_edge_args_substructures): Ditto. - * omp-low.c (lower_omp_ordered_clauses): Replace memset with - default ctor. - * params.h (struct param_info): Make struct members non-const. - * tree-switch-conversion.c (emit_case_bit_tests): Replace memset - with default initialization. - * vec.h (vec_copy_construct, vec_default_construct): New helper - functions. - (vec::copy, vec::splice, vec::reserve): Replace memcpy - with vec_copy_construct. - (vect::quick_grow_cleared): Replace memset with default ctor. - (vect::vec_safe_grow_cleared, vec_safe_grow_cleared): Same. - * doc/invoke.texi (-Wclass-memaccess): Document. - -2017-06-15 Ramana Radhakrishnan - - * emit-rtl.h (is_leaf): Update comment about local - register allocator. - -2017-06-15 Jozef Lawrynowicz - - PR target/78818 - * config/msp430/msp430.c (msp430_data_attr): Check that it's possible - for a variable to have a section before checking if the section has a - name. - Set section to.persistent if persistent attribute is set. - Warn if .persistent attribute is used on an automatic variable. - -2017-06-15 Eric Botcazou - - PR rtl-optimization/80474 - * reorg.c (update_block): Do not ignore instructions in a delay slot. - -2017-06-15 Segher Boessenkool - - * config/rs6000/rs6000.md (add3): Use reg_or_subregno instead - of REGNO. - -2017-06-14 Maciej W. Rozycki - - * config/mips/mips.md (MIPS16_T_REGNUM): Remove constant. - (casesi): Emit bounds checking as RTL. - (casesi_internal_mips16_): Remove bounds checking. - -2017-06-14 Max Filippov - - * config/xtensa/xtensa.c (xtensa_option_override): Append - MASK_CONST16 to target_flags in the absence of TARGET_L32R. - (hwloop_optimize, hwloop_fail, hwloop_pattern_reg, - xtensa_doloop_hooks): Define unconditionally. - (xtensa_reorg_loops): Only call reorg_loops in the presence of - TARGET_LOOPS. - * config/xtensa/xtensa.h (TARGET_L32R): New definition. - (TARGET_DEFAULT): Remove XCHAL_HAVE_L32R condition and account - for it in xtensa_option_override. - (HARD_FRAME_POINTER_IS_FRAME_POINTER, - HARD_FRAME_POINTER_IS_ARG_POINTER): New definitions. - -2017-06-14 Boris Kolpackov - - * doc/cppopts.texi: Document '-' special value to -MF. - -2017-06-14 Wilco Dijkstra - - * config/arm/cortex-a53.md (cortex_a53_fpalu) Adjust latency. - (cortex_a53_fconst): Likewise. - (cortex_a53_fpmul): Likewise. - (cortex_a53_f_load_64): Likewise. - (cortex_a53_f_load_many): Likewise. - (cortex_a53_advsimd_alu): Likewise. - (cortex_a53_advsimd_alu_q): Likewise. - (cortex_a53_advsimd_mul): Likewise. - (cortex_a53_advsimd_mul_q): Likewise. - (fpmac bypass): Add new bypass for fpmac-fpmac case. - Add missing fmul, r2f_cvt and fconst cases. - -2017-06-14 Richard Biener - - PR middle-end/81088 - * fold-const.c (split_tree): Drop TREE_OVERFLOW flag from - literal constants. - (fold_binary_loc): When associating do not treat pre-existing - TREE_OVERFLOW on literal constants as a reason to allow - TREE_OVERFLOW on associated literal constants. - -2017-06-14 Eric Botcazou - - * config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3. - (MASK_FEATURES): New macro. - * config/sparc/sparc.c (sparc_option_override): Remove the special - handling of -mfpu and generalize it to all MASK_FEATURES switches. - -2017-06-14 Eric Botcazou - - * simplify-rtx.c (simplify_binary_operation_1) : Do not simplify - a division of 0 if non-call exceptions are enabled. - -2017-06-14 Andrew Pinski - Naveen H.S - - PR target/71663 - * config/aarch64/aarch64.c (aarch64_expand_vector_init): - Improve vector initialization code gen for only variable case. - -2017-06-14 Eric Botcazou - - * config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry. - -2017-06-14 Richard Biener - - PR tree-optimization/81083 - * tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals - as values. - -2017-06-13 Segher Boessenkool - - * config/rs6000/rs6000.c: Update all comments that mentioned SPE. - (rs6000_expand_builtin): Remove RS6000_BTC_EVSEL. - * config/rs6000/rs6000.h (RS6000_BTC_EVSEL): Delete. - * config/rs6000/vxworks.h (VXCPU_FOR_8548): Delete. Adjust former use. - * config/rs6000/vxworksae.h (VXCPU_FOR_8548): Delete. - * config/rs6000/vxworksmils.h (VXCPU_FOR_8548): Delete. - -2017-06-13 Segher Boessenkool - - * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete VECTOR_SPE. - * config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete VECTOR_SPE. - -2017-06-13 Segher Boessenkool - - * config/rs6000/rs6000.h (FIXED_SCRATCH): Delete. - -2017-06-13 Segher Boessenkool - - * config/rs6000/t-rtems: Don't handle SPE. - -2017-06-13 Segher Boessenkool - - * config/rs6000/t-linux: Don't handle SPE. - -2017-06-13 Segher Boessenkool - - * config/rs6000/eabispe.h: Delete file. - -2017-06-13 Segher Boessenkool - - * config/rs6000/t-spe: Delete file. - -2017-06-13 Segher Boessenkool - - * config/rs6000/rs6000.c (SPE_CONST_OFFSET_OK): Delete. - (rs6000_legitimate_offset_address_p): Return false for anything in - V2SImode or V2SFmode. - -2017-06-13 Segher Boessenkool - - * config/rs6000/rs6000-modes.def: Remove all 8-byte vector modes - except V2SF and V2SI. Rearrange the vector modes, and add comments. - * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove V8QImode - and V4HImode. - (reg_offset_addressing_ok_p): Remove V4HImode and V1DImode. - (rs6000_legitimate_offset_address_p): Ditto. - (rs6000_emit_move): Ditto. - (rs6000_init_builtins): Remove V4HI_type_node. - -2017-06-13 Martin Liska - - PR sanitize/78204 - * asan.c (asan_sanitize_stack_p): Use sanitize_flags_p. - (gate_asan): Likewise. - * asan.h (asan_no_sanitize_address_p): Remove the function. - (sanitize_flags_p): New function. - * builtins.def: Fix coding style. - * common.opt: Use renamed enum value. - * convert.c (convert_to_integer_1): Use sanitize_flags_p. - * doc/extend.texi: Document no_sanitize attribute. - * flag-types.h (enum sanitize_code): Rename SANITIZE_NONDEFAULT - to SANITIZE_UNDEFINED_NONDEFAULT. - * gcc.c (sanitize_spec_function): Use the renamed enum value. - * gimple-fold.c (optimize_atomic_compare_exchange_p): - Use sanitize_flags_p. - * gimplify.c (gimplify_function_tree): Likewise. - * ipa-inline.c (sanitize_attrs_match_for_inline_p): Likewise. - * opts.c (parse_no_sanitize_attribute): New function. - (common_handle_option): Use renamed enum value. - * opts.h (parse_no_sanitize_attribute): Declare. - * tree.c (sanitize_flags_p): New function. - * tree.h: Declared here. - * tsan.c: Use sanitize_flags_p. - * ubsan.c (ubsan_expand_null_ifn): Likewise. - (instrument_mem_ref): Likewise. - (instrument_bool_enum_load): Likewise. - (do_ubsan_in_current_function): Remove the function. - (pass_ubsan::execute): Use sanitize_flags_p. - * ubsan.h: Remove do_ubsan_in_current_function - * tree-cfg.c (print_no_sanitize_attr_value): New function. - (dump_function_to_file): Use it here. - -2017-06-13 Martin Jambor - - PR tree-optimization/80803 - PR tree-optimization/81063 - * tree-sra.c (subtree_mark_written_and_enqueue): Move up in the file. - (propagate_subaccesses_across_link): Enqueue subtree whenever - necessary instead of relying on the caller. - -2017-06-13 Martin Jambor - - * tree-sra.c (add_access_to_work_queue): Only enqueue accesses - that have a first_link. - (sort_and_splice_var_accesses): Do not check first_link before - enquing. - (subtree_mark_written_and_enqueue): Likewise. - (propagate_all_subaccesses): Likewise and do not stop at first - parent with a first_link. - -2017-06-13 Martin Jambor - - * tree-sra.c (dump_access_tree_1): Fix accidental dumping to stderr - instead of f. - -2017-06-13 Yury Gribov - - * match.pd: New pattern. - -2017-06-13 Yury Gribov - - * tree-vrp.c (is_masked_range_test): New function. - (register_edge_assert_for): Determine ranges for - some bit tests. - -2017-06-13 Yury Gribov - - PR tree-optimization/67328 - * fold-const.c (maskable_range_p): New function. - (build_range_check): Generate bittests if possible. - -2017-06-13 Martin Liska - - * gimple-pretty-print.c (dump_probability): Add new argument. - (dump_edge_probability): Dump both probability and count. - (dump_gimple_label): Likewise. - (dump_gimple_bb_header): Likewise. - -2017-06-13 Georg-Johann Lay - - PR target/81072 - * config/avr/avr-devices.c: Fix indentation. - * config/avr/gen-avr-mmcu-specs.c: Dito. - -2017-06-13 Richard Biener - - * tree-vect-loop.c (vect_model_reduction_cost): Do not fail, - instead get vector type from stmt_info. - (vectorizable_reduction): Adjust. Remove dead code. - -2017-06-13 Richard Biener - - PR middle-end/81065 - * fold-const.c (extract_muldiv_1): Remove bogus distribution - case of C * (x * C2 + C3). - (fold_addr_of_array_ref_difference): Properly fold index difference. - -2017-06-12 David S. Miller - - PR target/80968 - * config/sparc/sparc.md (return expander): Emit frame blockage if - function uses alloca. - -2017-06-12 Richard Sandiford - - * combine.c (make_field_assignment): Check len rather than the mode - precision when calling force_to_mode. - -2017-06-12 Georg-Johann Lay - - Support multilibs and devices that see flash in RAM address range. - - PR target/81072 - * config/avr/avr-arch.h (avr_arch_id) : New enum. - (avr_mcu_t) : New field. - (avr_device_specific_features) : New enum. - * config/avr/avr.h (AVR_SHORT_CALLS): New define. - (AVR_HAVE_JMP_CALL): Don't set if AVR_SHORT_CALLS. - (AVR_TINY_PM_OFFSET): Remove macro. - * config/avr/avr.opt (-mshort-calls): New option. - * config/avr/gen-avr-mmcu-specs.c (print_mcu) - [*self_spec]: Add / remove -mshort-calls depending on AVR_ISA_RCALL. - * config/avr/avr-c.c (avr_cpu_cpp_builtins) - <__AVR_SHORT_CALLS__>: Built-in define if AVR_SHORT_CALLS. - <__AVR_HAVE_JMP_CALL__>: Use AVR_HAVE_JMP_CALL as condition - instead of avr_arch->have_jmp_call. - <__AVR_PM_BASE_ADDRESS__>: Built-in define if avr_arch->flash_pm_offset. - [AVR_TINY] <__AVR_TINY_PM_BASE_ADDRESS__>: Use - avr_arch->flash_pm_offset to define. - * config/avr/avr-devices.c (avr_arch_types): Add initializers for - new field flash_pm_offset. Add entry for avrxmega3. - (avr_texinfo): Add entry for avrxmega3. - * config/avr/avr-mcus.def: Add entries for: avrxmega3, - attiny212, attiny214, - attiny412, attiny414, attiny416, attiny417, - attiny814, attiny816, attiny817, - attiny1614, attiny1616, attiny1617, - attiny3214, attiny3216, attiny3217. - * config/avr/avr.c (avr_assemble_integer)[AVR_TINY]: Use - avr_arch->flash_pm_offset instead of AVR_TINY_PM_OFFSET. - (avr_print_operand_address) [AVR_TINY]: Same. - (avr_asm_init_sections) : Only patch - callback if avr_arch->flash_pm_offset = 0. - (avr_asm_named_section) : Skip setting it - for rodata if avr_arch->flash_pm_offset != 0. - (avr_encode_section_info) [AVR_TINY]: Adjust comment. - * config/avr/genmultilib.awk (dir_rcall, opt_rcall): New vars. - (opts) [AVR_ISA_RCALL]: Append opt_rcall. - (m_options): Append opt_rcall. - (m_dirnames): Append dir_rcall. - * config/avr/t-multilib: Regenerate. - - * configure.ac [target=avr]: Check whether avrxmega3 default - linker description file works as needed. - * configure: Regenerate. - * doc/avr-mmcu.texi: Regenerate. - * doc/invoke.texi (AVR Options) <-mshort-calls>: Document it. - <__AVR_ARCH__>: Document avrxmega3 and 103. - <__AVR_HAVE_JMP_CALL__>: Adjust documentation. - <__AVR_SHORT_CALLS__>: Document it. - <__AVR_PM_BASE_ADDRESS__>: Document it. - * doc/extend.texi (AVR Options) <-mshort-calls>: Document it. - (AVR Variable Attributes) : Document this is - not needed for avrxmega3. - (AVR Named Address Spaces) <__flash>: Dito. - -2017-06-12 Jan Hubicka - - * cgraph.c (cgraph_node::dump): Complain about profile insanities. - -2017-06-12 Doug Rupp - - * config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide". - Append vxworks-stdint.h to the tm_file list. - * config/vxworks-stdint.h: New file. - -2017-06-12 Martin Liska - - PR tree-optimization/81041 - * tree-profile.c (gimple_gen_ic_func_profiler): - Create an extra BB in profile-generate - (gimple_gen_time_profiler): Likewise. - -2017-06-12 Jakub Jelinek - - PR tree-optimization/81003 - * tree-ssa-reassoc.c (force_into_ssa_name): New function. - (update_range_test): Use it instead of force_gimple_operand_gsi. - -2017-06-12 Richard Biener - - PR tree-optimization/81053 - * tree-vect-loop.c (vect_is_simple_reduction): Handle PHI - with backedge value not defined in loop. Simplify def stmt - compute. - -2017-06-11 Tom de Vries - - PR target/79939 - * config/nvptx/nvptx.c (nvptx_cannot_force_const_mem): New function. - Return true. - (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to - nvptx_cannot_force_const_mem. - -2017-06-10 Jan Hubicka - - * opts.c (finish_options): Move test for flag_split_stack after - it has been initialized. - -2017-06-11 Jason Merrill - - * tree.h (id_equal): New. - * dwarf2out.c, hsa-gen.c, ipa-devirt.c, omp-expand.c, - omp-simd-clone.c, read-rtl-function.c, tree-chkp.c, tree.c: Use it - instead of strcmp of IDENTIFIER_POINTER. - -2017-06-10 Jan Hubicka - - * ipa-inline-transform.c: Include function.h, cfg.h and basic-block.h - (mark_all_inlined_calls_cdtor): Fix formating. - (inline_transform): Rescale profile before inlining. - -2017-06-10 Jan Hubicka - - * cgraph.h (cgraph_edge::clone): Update prototype. - * cgraphclones.c (cgraph_edge::clone): Update profile scaling. - (cgraph_node::create_clone): Update. - (cgraph_node::create_version_clone): Update. - * tree-inline.c (copy_bb): Update. - (expand_call_inline): Update. - -2017-06-10 Segher Boessenkool - - * config/rs6000/rs6000.c (emit_vrsave_prologue): New function, - factored out from ... - (rs6000_emit_prologue): ... here. - -2017-06-10 Segher Boessenkool - - * config/rs6000/rs6000.c (emit_split_stack_prologue): New function, - factored out from ... - (rs6000_emit_prologue): ... here. - -2017-06-10 Jan Hubicka - - * predict.c (drop_profile): Also drop individual bb/edge and cgraph - edge counts. - (handle_missing_profiles): Fix computation of tp_first_run. - (counts_to_freqs): Do not touch freqs when count is 0. - -2017-06-10 Jan Hubicka - - * cgraphbuild.c (cgraph_edge::rebuild_references): Do not touch - profile. - -2017-06-10 Tom de Vries - - * doc/sourcebuild.texi (Effective-Target Keywords, Environment - attributes): Document signal effective target. - -2017-06-10 Tom de Vries - - * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes): - Document effective target stack_size. - -2017-06-09 David Malcolm - - * diagnostic.c (diagnostic_report_diagnostic): Only add fixits - to the edit_context if they can be auto-applied. - -2017-06-9 Ian Lance Taylor - - * opts.c (finish_options): If -fsplit-stack, disable implicit - -forder-blocks-and-partition. - * doc/invoke.texi (Optimize Options): Document that when using - -fsplit-stack -forder-blocks-and-partition is not implicitly - enabled. - -2017-06-09 Jan Hubicka - - * builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST, - ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST, - ATTR_TMPURE_NORETURN_NOTHROW_LEAF_COLD_LIST): New. - * builtins.def (abort, trap, unreachable): Declare cold. - * calls.c (flags_from_decl_or_type): Lookup ECF_COLD. - * tree-core.h (ECF_COLD): New. - * tree.c (set_call_expr_flags): Handle ECF_COLD. - (build_common_builtin_nodes): Mark unreachable and abort as cold. - -2017-06-09 Jan Hubicka - - * predict.c (unlikely_executed_stmt_p): Cleanup. - -2017-06-09 Richard Biener - - * tree-ssa-loop-im.c (execute_sm): Do not force multi-threaded - model if the ref is always written to. - -2017-06-09 Tamar Christina - - * config/aarch64/aarch64.md (lrint2): New. - -2017-06-09 Tamar Christina - - * config/arm/arm.c (arm_rtx_costs_internal): Make sdiv more expensive - than udiv. - -2017-06-09 Tom de Vries - - PR target/80855 - * config/nvptx/nvptx.md (define_expand "mov"): Error out with - "target cannot support label values" when encountering LABEL_REF. - -2017-06-09 Martin Liska - - * tree-profile.c (gimple_gen_ic_profiler): Update comment. - (gimple_gen_ic_func_profiler): Emit direct comparison - of __gcov_indirect_call_callee with NULL. - (gimple_gen_time_profiler): Change probability from - PROB_VERY_UNLIKELY to PROB_UNLIKELY. - -2017-06-09 Jan Hubicka - - * profile.c (edge_gcov_counts): Turn to pointer. - (compute_branch_probabilities, compute_branch_probabilities): Update. - (branch_prob): Do not clear edge_gcov_count. - * profile.h (edge_gcov_counts): Turn to pointer. - (edge_gcov_count): Update. - -2017-06-09 Jan Hubicka - - * gimple.h (gimple_check_failed): Mark cold. - -2017-06-09 Richard Biener - - PR tree-optimization/66623 - * tree-vect-loop.c (vect_is_simple_reduction): Cleanup, - refactor check_reduction into two parts, properly computing - whether we have to check reduction validity for outer loop - vectorization. - -2017-06-09 Richard Biener - - PR tree-optimization/79483 - * graphite-scop-detection.c (order): New global. - (get_order): Compute bb to order mapping that satisfies code - generation constraints. - (cmp_pbbs): New helper. - (build_scops): Start domwalk at entry block, sort generated - pbbs. - -2017-06-09 Richard Biener - - PR middle-end/81007 - * ipa-polymorphic-call.c - (ipa_polymorphic_call_context::restrict_to_inner_class): - Skip FIELD_DECLs with error_mark_node type. - * passes.def (all_lowering_passes): Run pass_build_cgraph_edges - last again. - -2017-06-09 Martin Liska - - * predict.c (struct branch_predictor): New struct. - (test_prediction_value_range): New test. - (predict_c_tests): New function. - * selftest-run-tests.c (selftest::run_tests): Run the function. - * selftest.h: Declare new tests. - -2017-06-09 Segher Boessenkool - - PR target/80966 - * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that - gen_add3_insn did not fail. - * config/rs6000/rs6000.md (add3): If asked to add a constant to - r0, construct that number in a temporary reg and add that reg to r0. - If asked to put the result in r0 as well, fail. - -2017-06-08 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling - for early expansion of vec_eqv. - -2017-06-08 Jakub Jelinek - - PR middle-end/81005 - * ubsan.c (instrument_null): Avoid pointless code temporary. - (pass_ubsan::execute): Instrument aggregate arguments of calls. - -2017-06-08 Uros Bizjak - - PR target/81015 - Revert: - 2016-12-14 Uros Bizjak - - PR target/59874 - * config/i386/i386.md (*ctzhi2): New insn_and_split pattern. - (*clzhi2): Ditto. - -2017-06-08 Jan Hubicka - - * predict.c (unlikely_executed_edge_p): Move ahead. - (probably_never_executed_edge_p): Use it. - -2017-06-08 Alexander Ivchenko - - PR middle-end/79988 - * tree-chkp.c (chkp_gimple_call_builtin_p): Remove - gimple_call_builtin_p call. - -2017-06-08 Jan Hubicka - - * system.h (fancy_abort): Annotate by ATTRIBUTE_COLD. - * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1, - rtl_check_failed_type2, rtl_check_failed_code1, - rtl_check_failed_code2, rtl_check_failed_code_mode, - rtl_check_failed_block_symbol, cwi_check_failed_bounds, - rtvec_check_failed_bounds, rtl_check_failed_flag, - _fatal_insn_not_found, _fatal_insn): Likewise. - * tree.h (tree_contains_struct_check_failed, - tree_check_failed, tree_not_check_failed, - tree_class_check_failed, tree_range_check_failed, - tree_not_class_check_failed, tree_int_cst_elt_check_failed, - tree_vec_elt_check_failed, phi_node_elt_check_failed, - tree_operand_check_failed, omp_clause_check_failed, - omp_clause_operand_check_failed, omp_clause_range_check_failed): - Likewise. - -2017-06-08 Jan Hubicka - - * cgraph.c (cgraph_edge::maybe_hot_p): Do not check - flag_branch_probabilities. - * ipa-inline.c (edge_badness): Likewise. - * ipa-profile.c (ipa_propagate_frequency_1): Likewise. - * postreload-gcse.c (eliminate_partially_redundant_load): Likewise. - * predict.c (maybe_hot_frequency_p): Likewise. - (probably_never_executed): Likewise. - * sched-ebb.c (schedule_ebbs): Likewise. - * sched-rgn.c (find_single_block_region): Likewise. - * tracer.c (tail_duplicate): Likewise. - -2017-06-08 Jan Hubicka - - * opts.c (finish_options): x_flag_reorder_blocks_and_partition no - longer requires x_flag_profile_use. - -2017-06-08 Jan Hubicka - - * cfgrtl.c (cfg_layout_initialize): Check crtl->has_bb_partition - instead of flag_reorder_blocks_and_partition. - * dbxout.c (dbxout_function_end): Likewise. - * dwarf2out.c (gen_subprogram_die): Likewise. - * haifa-sched.c (sched_create_recovery_edges): Likewise. - * hw-doloop.c (reorg_loops): Likewise. - * varasm.c (assemble_start_function, - assemble_end_function): Likewise. - (decide_function_section): Do not check for - flag_reorder_blocks_and_partition. - -2017-06-08 Alexander Ivchenko - - * tree-chkp.c (chkp_get_hard_register_var_fake_base_address): - New function. - (chkp_get_hard_register_fake_addr_expr): Ditto. - (chkp_build_addr_expr): Add check for hard reg case. - (chkp_parse_array_and_component_ref): Ditto. - (chkp_find_bounds_1): Ditto. - (chkp_process_stmt): Don't generate bounds store for - hard reg case. - -2017-06-08 Jan Hubicka - - * predict.c (maybe_hot_bb_p): Do not check profile status. - (maybe_hot_edge_p): Likewise. - (probably_never_executed): Check for zero counts even if profile - is not read. - (unlikely_executed_edge_p): New function. - (unlikely_executed_stmt_p): New function. - (unlikely_executed_bb_p): New function. - (set_even_probabilities): Use unlikely predicates. - (combine_predictions_for_bb): Likewise. - (predict_paths_for_bb): Likewise. - (predict_paths_leading_to_edge): Likewise. - (determine_unlikely_bbs): New function. - (estimate_bb_frequencies): Use it. - (compute_function_frequency): Use zero counts even if profile is - not read. - * profile-count.h: Fix typo. - -2017-08-08 Julia Koval - - * config/i386/avx512bwintrin.h (_mm512_mask_cvtepi16_storeu_epi8, - _mm512_mask_cvtsepi16_storeu_epi8, - _mm512_mask_cvtusepi16_storeu_epi8): New intrinsics. - * config/i386/avx512vlbwintrin.h (_mm256_mask_cvtepi16_storeu_epi8, - _mm_mask_cvtsepi16_storeu_epi8, _mm256_mask_cvtsepi16_storeu_epi8, - _mm_mask_cvtusepi16_storeu_epi8, _mm256_mask_cvtusepi16_storeu_epi8, - _mm_mask_cvtepi16_storeu_epi8): New intrinsics. - * config/i386/i386-builtin-types.def (PV8Q, V8QI): New pointer type. - (VOID_FTYPE_PV32QI_V32HI_USI, VOID_FTYPE_PV8QI_V8HI_UQI, - VOID_FTYPE_PV16QI_V16HI_UHI): New function types. - * config/i386/i386-builtin.def (__builtin_ia32_pmovwb128mem_mask, - __builtin_ia32_pmovwb256mem_mask, __builtin_ia32_pmovswb128mem_mask, - __builtin_ia32_pmovswb256mem_mask, __builtin_ia32_pmovuswb128mem_mask, - __builtin_ia32_pmovuswb256mem_mask, - __builtin_ia32_pmovuswb512mem_mask, __builtin_ia32_pmovswb512mem_mask) - __builtin_ia32_pmovwb512mem_mask): New builtins. - -2017-08-08 Julia Koval - - PR target/73350,80862 - * config/i386/subst.md (round): Fix round pattern. - * config/i386/i386.c (ix86_erase_embedded_rounding): - Fix erasing rounding for the fixed pattern. - -2017-06-08 Jan Hubicka - - * cfgbuild.c (find_many_sub_basic_blocks): Fix thinko. - -2017-06-08 Martin Liska - - PR gcov-profile/80911 - * gcov.c (block_info::block_info): New constructor. - -2017-06-07 Carl Love - - * config/rs6000/rs6000-c: The return type of the following - built-in functions was implemented as int not long long. Fix sign - of return value for the unsigned version of vec_mulo and vec_mule. - vector unsigned long long vec_bperm (vector unsigned long long, - vector unsigned char) - vector signed long long vec_mule (vector signed int, - vector signed int) - vector unsigned long long vec_mule (vector unsigned int, - vector unsigned int) - vector signed long long vec_mulo (vector signed int, - vector signed int) - vector unsigned long long vec_mulo (vector unsigned int, - vector unsigned int) - * doc/extend.texi: Fix the documentation for the built-in - functions. - -2017-06-07 Carl Love - - PR target/80982 - * config/rs6000/altivec.md (double2): Fix the implementation of - for BE. - -2017-06-07 Carl Love - - * config/rs6000/altivec.md: Fix argument swizzle in vec_doublel - support, Generate doublehv for signed int/float for BE case only. - -2017-06-07 Alexander Monakov - - * doc/invoke.texi (mcx16): Rewrite. - -2017-06-07 Segher Boessenkool - - * config/rs6000/predicates.md (rs6000_nonimmediate_operand): Delete. - * config/rs6000/rs6000.md (*movsi_internal1, movsi_from_sf, - *mov_softfloat, and an anonymous splitter): Use - nonimmediate_operand instead of rs6000_nonimmediate_operand. - -2017-06-07 Segher Boessenkool - - * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE_ACC and - SPEFSCR registers. - * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto. - (enum rs6000_reg_type): Delete SPE_ACC_TYPE and SPEFSCR_REG_TYPE. - (rs6000_debug_reg_global): Adjust. - (rs6000_init_hard_regno_mode_ok): Adjust. - (rs6000_dbx_register_number): Adjust. - * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change to 115. - (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS): - Remove SPE_ACC and SPEFSCR. - (REG_ALLOC_ORDER): Ditto. - (FRAME_POINTER_REGNUM): Change to 111. - (enum reg_class): Remove the SPE_ACC and SPEFSCR registers. - (REG_CLASS_NAMES): Ditto. - (REG_CLASS_CONTENTS): Delete the SPE_ACC and SPEFSCR registers. - (REGISTER_NAMES): Ditto. - (ADDITIONAL_REG_NAMES): Ditto. - (rs6000_reg_names): Ditto. - * config/rs6000/rs6000.md: Renumber some register number - define_constants. - -2017-06-07 Segher Boessenkool - - * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE high - registers. - * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto. - * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change from 149 - to 117. - (DWARF_REG_TO_UNWIND_COLUMN): Do not define. - (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS): - Delete the SPE high registers. - (REG_ALLOC_ORDER): Ditto. - (enum reg_class): Remove SPE_HIGH_REGS. - (REG_CLASS_NAMES): Ditto. - (REG_CLASS_CONTENTS): Delete the SPE high registers. - (REGISTER_NAMES): Ditto. - (rs6000_reg_names): Ditto. - * doc/tm.texi.in: Remove SPE as example. - * doc/tm.texi: Regenerate. - -2017-06-07 Segher Boessenkool - - * config/rs6000/8540.md (ppc8540_brinc): Delete. - * config/rs6000/e500mc.md (e500mc_brinc): Delete. - * config/rs6000/e500mc64.md (e500mc64_brinc): Delete. - * config/rs6000/rs6000.md (type): Remove "brinc". - -2017-06-07 Segher Boessenkool - - * config.gcc (powerpc*-*-*): Don't add spe.h to extra_headers. - (powerpc*-linux*spe*): Use ${cpu_type} instead of rs6000. - * config/rs6000/linuxspe.h: Delete file. - * config/rs6000/rs6000.md: Don't include spe.md. - * config/rs6000/spe.h: Delete file. - * config/rs6000/spe.md: Delete file. - * config/rs6000/t-rs6000: Remove spe.md. - -2017-06-07 Segher Boessenkool - - * config/rs6000/predicates.md (reg_or_mem_operand): Reformat. - (reg_or_none500mem_operand): Delete. - * config/rs6000/rs6000.md (extendsfdf2): Use reg_or_mem_operand - instead of reg_or_none500mem_operand. - -2017-06-07 Segher Boessenkool - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete - handling of SPE flags. - * config/rs6000/rs6000.opt (-mspe, -mspe=no, -mspe=yes): Delete. - -2017-06-07 Segher Boessenkool - - * config/rs6000/rs6000-common.c (rs6000_handle_option): Remove - SPE ABI handling. - * config/rs6000/paired.md (paired_negv2sf2): Rename to negv2sf2. - (paired_absv2sf2, paired_addv2sf3, paired_subv2sf3, paired_mulv2sf3, - paired_divv2sf3): Similar. - * config/rs6000/predicates.md: Replace TARGET_SPE, TARGET_SPE_ABI, - SPE_VECTOR_MODE and SPE_HIGH_REGNO_P by 0; simplify. - * config/rs6000/rs6000-builtin.def: Delete RS6000_BUILTIN_E and - RS6000_BUILTIN_S. - Delete BU_SPE_1, BU_SPE_2, BU_SPE_3, BU_SPE_E, BU_SPE_P, and BU_SPE_X. - Rename the paired_* instruction patterns. - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Do not - define __SPE__. - * config/rs6000/rs6000-protos.h (invalid_e500_subreg): Delete. - * config/rs6000/rs6000.c: Delete RS6000_BUILTIN_E and RS6000_BUILTIN_S. - (struct rs6000_stack): Delete fields spe_gp_save_offset, spe_gp_size, - spe_padding_size, and spe_64bit_regs_used. Replace TARGET_SPE and - TARGET_SPE_ABI with 0, simplify. Replace SPE_VECTOR_MODE with - PAIRED_VECTOR_MODE. - (struct machine_function): Delete field spe_insn_chain_scanned_p. - (spe_func_has_64bit_regs_p): Delete. - (spe_expand_predicate_builtin): Delete. - (spe_expand_evsel_builtin): Delete. - (TARGET_DWARF_REGISTER_SPAN): Do not define. - (TARGET_MEMBER_TYPE_FORCES_BLK): Do not define. - (invalid_e500_subreg): Delete. - (rs6000_legitimize_address): Always force_reg op2 as well, for - paired single memory accesses. - (rs6000_member_type_forces_blk): Delete. - (rs6000_spe_function_arg): Delete. - (rs6000_expand_unop_builtin): Delete SPE handling. - (rs6000_expand_binop_builtin): Ditto. - (spe_expand_stv_builtin): Delete. - (bdesc_2arg_spe): Delete. - (spe_expand_builtin): Delete. - (spe_expand_predicate_builtin): Delete. - (spe_expand_evsel_builtin): Delete. - (rs6000_invalid_builtin): Remove RS6000_BTM_SPE handling. - (spe_init_builtins): Delete. - (spe_func_has_64bit_regs_p): Delete. - (savres_routine_name): Delete "info" parameter. Adjust callers. - (rs6000_emit_stack_reset): Ditto. - (rs6000_dwarf_register_span): Delete. - * config/rs6000/rs6000.h (TARGET_SPE_ABI, TARGET_SPE, - UNITS_PER_SPE_WORD, SPE_HIGH_REGNO_P, SPE_SIMD_REGNO_P, - SPE_VECTOR_MODE, RS6000_BTM_SPE, RS6000_BUILTIN_E, RS6000_BUILTIN_S): - Delete. - * config/rs6000/rs6000.md (FIRST_SPE_HIGH_REGNO, LAST_SPE_HIGH_REGNO): - Delete. - * config/rs6000/rs6000.opt (-mabi=spe, -mabi=no-spe): Delete. - * config/rs6000/spe.md: Delete every pattern that uses TARGET_SPE. - * config/rs6000/vector.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3, - mulv2sf3, divv2sf3): Delete expanders. - -2017-06-07 Segher Boessenkool - - config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Delete. - -2017-06-07 Segher Boessenkool - - * config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit): Delete. - * config/rs6000/rs6000.c: Ditto. - -2017-06-07 Segher Boessenkool - - * config/rs6000/predicated.md (rs6000_cbranch_operator): Delete. - * config/rs6000/rs6000.md: Replace rs6000_cbranch_operator by - comparison_operator. - -2017-06-07 Segher Boessenkool - - * config/rs6000/rs6000.c: Remove everything related to -mfloat-gprs. - * config/rs6000/rs6000.opt: Ditto. - * config/rs6000/t-rtems: Ditto. - -2017-06-07 Segher Boessenkool - - * config/rs6000/predicates.md: Replace TARGET_E500_DOUBLE and - TARGET_E500_SINGLE by 0, simplify. - * config/rs6000/rs6000.c: Ditto. - (rs6000_option_override_internal): Delete CHECK_E500_OPTIONS. - (spe_build_register_parallel): Delete. - * config/rs6000/rs6000.h: Delete TARGET_E500_SINGLE, - TARGET_E500_DOUBLE, and CHECK_E500_OPTIONS. - * config/rs6000/rs6000.md: Replace TARGET_E500_DOUBLE, - TARGET_E500_SINGLE, and by 0, simplify. - (E500_CONVERT): Delete. - * config/rs6000/spe.md: Remove many patterns and all define_constants. - -2017-06-07 Segher Boessenkool - - * config/rs6000/darwin.md: Replace TARGET_FPRS by 1 and simplify. - * config/rs6000/dfp.md: Ditto. - (negdd2, *negdd2_fpr): Merge. - (absdd2, *absdd2_fpr): Merge. - (negtd2, *negtd2_fpr): Merge. - (abstd2, *abstd2_fpr): Merge. - * config/rs6000/e500.h: Delete file. - * config/rs6000/predicates.md (rs6000_cbranch_operator): Replace - TARGET_FPRS by 1 and simplify. - * config/rs6000/rs6000-c.c: Ditto. - * config/rs6000/rs6000.c: Ditto. Also replace TARGET_SF_SPE and - TARGET_DF_SPE by 0. - * config/rs6000/rs6000.h: Ditto. Delete TARGET_SF_SPE and - TARGET_DF_SPE. - * config/rs6000/rs6000.md: Ditto. - (floatdidf2, *floatdidf2_fpr): Merge. - (move_from_CR_gt_bit): Delete. - * config/rs6000/spe.md: Replace TARGET_FPRS by 1 and simplify. - (E500_CR_IOR_COMPARE): Delete. - (All patterns that require !TARGET_FPRS): Delete. - * config/rs6000/vsx.md: Replace TARGET_FPRS by 1 and simplify. - -2017-06-07 Bin Cheng - - * passes.def (pass_iv_canon): Move before pass_loop_distribution. - -2017-06-07 Bin Cheng - - * graphds.c (add_edge): Intitialize edge's attached data. - (foll_in_subgraph, dfs_fst_edge, dfs_next_edge): New function - pointer parameter. Call pointed function on each edge during - graph traversing. Skip traversing the edge when the function - returns true. - (graphds_dfs, graphds_scc): Ditto. - (for_each_edge): New parameter. Pass the new parameter to callback - function. - * graphds.h (skip_edge_callback): New function pointer type. - (graphds_dfs, graphds_scc): New function pointer parameter. - (graphds_edge_callback, for_each_edge): New parameter. - -2017-06-07 Bin Cheng - - * tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Factor - out code checking if runtime alias check is possible to below ... - Call the new function. - * tree-data-ref.c (runtime_alias_check_p): ... to new function. - * tree-data-ref.h (runtime_alias_check_p): New decalaration. - -2017-06-07 Marek Polacek - - PR sanitizer/80932 - * fold-const.c (extract_muldiv_1) : Add - TYPE_OVERFLOW_WRAPS check. - -2017-06-07 Bin Cheng - - * tree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop - if versioning is required. - * tree-vect-loop.c (vect_analyze_loop_2): Merge niter check for loop - peeling with the check for versioning. - -2017-06-07 Bin Cheng - - * tree-vectorizer.h (vect_build_loop_niters): New parameter. - * tree-vect-loop-manip.c (vect_build_loop_niters): New parameter. - Set true to new parameter if new ssa variable is defined. - (vect_gen_vector_loop_niters): Refactor. Set range information - for the new vector loop bound variable. - (vect_do_peeling): Ditto. - -2017-06-07 Bin Cheng - - * tree-affine.c (ssa.h): Include header file. - (tree_to_aff_combination): Handle (T1)(X - CST) when inner type - has wrapping overflow behavior. - -2017-06-07 Bin Cheng - - * tree-affine.c (tree_to_aff_combination): Handle (T1)(X + X). - -2017-06-07 Bin Cheng - - (aff_combination_expand): Move (T1)(X *+- CST) simplification to ... - (tree_to_aff_combination): ... here. - -2017-06-07 Bin Cheng - - * tree-ssa-loop-ivopts.c (ivopts_estimate_reg_pressure): New - reg_pressure model function. - (ivopts_global_cost_for_size): Delete. - (determine_set_costs, iv_ca_recount_cost): Call new model function - ivopts_estimate_reg_pressure. - -2017-06-07 Tamar Christina - - * config/aarch64/aarch64.c (aarch64_rtx_costs): Make sdiv more - expensive than udiv. Remove floating point cases from mod. - -2017-06-07 Tamar Christina - - * config/arm/aarch-cost-tables.h (cortexa53_extra_cost): - Increase idiv cost. - -2017-06-07 Tamar Christina - - * config/aarch64/aarch64.md - (copysignsf3): Fix mask generation. - -2017-06-07 Jakub Jelinek - - * dumpfile.h (enum tree_dump_index): Rename TDI_generic to - TDI_gimple. - (class dump_manager): Add register_dumps method. - * dumpfile.c: Include langhooks.h. - (dump_files): Use 0 instead of 3/4/5 for TDI_{original,gimple,nested}. - (FIRST_AUTO_NUMBERED_DUMP): Decrease to 1. - (FIRST_ME_AUTO_NUMBERED_DUMP): Define. - (dump_manager::dump_register): Start with 512 entries instead of 32. - (dump_manager::register_dumps): New method. - * toplev.c (general_init): Instead of invoking register_dumps - langhook, invoke register_dumps method on the dump manager. - * gimplify.c (gimplify_function_tree): Use TDI_gimple instead of - TDI_generic. - -2017-06-07 Richard Sandiford - - * doc/md.texi: Clarify the restrictions on a define_insn condition. - Say that # requires an associated define_split to exist, and that - the define_split must be suitable for use after register allocation. - -2017-06-06 Jan Hubicka - - * cfgbuild.c (find_bb_boundaries): Initialize profile of split blocks. - (compute_outgoing_frequencies): Also initialize zero counts. - (find_many_sub_basic_blocks): Do not produce uninitialized profile - around loops; preserve more of profile when nothing changes. - -2017-06-06 Jim Wilson - - * config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs): Move to - here. - * config/arm/aarch-cost-tables.h (qdf24xx_extra_costs): From here. - * config/arm/arm-cpu-cdata.h: Regenerate. - * config/arm/arm-cpu-data.h, config/arm/arm-cpu.h: Likewise. - * config/arm/arm-tables.opt, config/arm/arm-tune.md: Likewise. - * config/arm/arm-cpus.in: Delete falkor and qdf24xx entries. - * config/arm/arm.c (arm_qdf24xx_tune): Delete. - * config/arm/bpabi.h (BE8_LINK_SPEC): Delete falkor and qdf24xx - support. - * config/arm/t-aprofile (MULTILIB_MATCHES): Delete falkor and qdf24xx - support. - * config/arm/t-rmprofile: Likewise. - * doc/invoke.texi (ARM Options): Drop falkor and qdf24xx support. - -2017-06-06 David S. Miller - - PR target/80968 - * config/sparc/sparc.c (sparc_expand_prologue): Emit frame - blockage if function uses alloca. - -2017-06-06 Maxim Kuvyrkov - - * tree-ssa-loop-prefetch.c (struct mem_ref_group, struct mem_ref): - New "uid" fields to hold pretty-print IDs of group and ref. - Memory references are now identified as : - instead of using [random] addresses. - (dump_mem_details): Simplify, no functional change. - (dump_mem_ref): Simplify and make output more concise. - Replace couple of fprintf's throughout code with calls to dump_mem_ref. - (find_or_create_group): Initialize group uid. - (record_ref): Initialize ref uid. Improve debug output. - (prune_group_by_reuse, should_issue_prefetch_p,) - (should_issue_prefetch_p, schedule_prefetches, issue_prefetch_ref,) - (mark_nontemporal_store, determine_loop_nest_reuse): - Improve debug output. - -2017-06-06 Maxim Kuvyrkov - - * dbgcnt.def (prefetch): New debug counter. - * tree-ssa-loop-prefetch.c (dbgcnt.h): New include. - (schedule_prefetches): Stop issueing prefetches if debug counter - tripped. - -2017-06-06 Tom de Vries - - * doc/sourcebuild.texi (Testsuites, C Language Testsuites, - gcc.c-torture/compile): Remove mention of NO_LABEL_VALUES in fixme. - -2017-06-06 Kyrylo Tkachov - - * config/aarch64/atomics.md (atomic_compare_and_swap expander): - Use aarch64_reg_or_zero predicate for operand 4. - (aarch64_compare_and_swap define_insn_and_split): - Use aarch64_reg_or_zero predicate for operand 3. Add 'Z' constraint. - (aarch64_store_exclusive): Likewise for operand 2. - -2017-06-06 Thomas Preud'homme - - * config/arm/arm.c (arm_compute_save_reg_mask): Rename into ... - (arm_compute_save_core_reg_mask): This. - (thumb1_compute_save_reg_mask): Rename into ... - (thumb1_compute_save_core_reg_mask): This. - (arm_compute_save_reg0_reg12_mask): Adapt comment. - (arm_compute_frame_layout): Likewise. - -2017-06-06 Richard Biener - - PR tree-optimization/80974 - * tree-ssa-sccvn.c (set_ssa_val_to): Do not change but only - keep or clear leaders SSA info. - -2017-06-06 Tom de Vries - - * config/nvptx/nvptx.c (split_mode_p): New function. - (nvptx_declare_function_name, nvptx_print_operand): Use split_mode_p. - -2017-06-06 Tom de Vries - - * config/nvptx/nvptx.c (nvptx_print_operand): Use maybe_split_mode. - -2017-06-06 Jan Hubicka - - PR bootstrap/80978 - * tree-cfg.c (execute_fixup_cfg): Fix condition on when to rescale - profile. - -2017-06-06 Jan Hubicka - - * shrink-wrap.c (handle_simple_exit): Update profile. - (try_shrink_wrapping): Upate profile. - -2017-06-06 Jan Hubicka - - * predict.c (tree_estimate_probability_bb): Add LOCAL_ONLY. - (tree_guess_outgoing_edge_probabilities): New. - * predict.h (tree_guess_outgoing_edge_probabilities): Declare. - * tree-cfg.c (gimple_find_sub_bbs): Propagate profile. - -2017-06-06 Jan Hubicka - - * ipa-split.c (split_function): Initialize return bb profile. - -2017-06-06 Jan Hubicka - - * profile.c (compute_branch_probabilities): Also initialize - EXIT_BLOCK profile. - -2017-06-06 Richard Biener - - PR tree-optimization/80928 - * tree-vect-loop.c (vect_update_vf_for_slp): Amend dumps. - (vect_analyze_loop_operations): Properly guard analysis for - pure SLP case. - (vect_transform_loop): Likewise. - (vect_analyze_loop_2): Also reset SLP type on PHIs. - (vect_model_induction_cost): Do not cost for pure SLP. - (vectorizable_induction): Pass in SLP node, implement SLP vectorization - of induction in inner loop vectorization. - * tree-vect-slp.c (vect_create_new_slp_node): Handle PHIs. - (vect_get_and_check_slp_defs): Handle vect_induction_def. - (vect_build_slp_tree): Likewise. Handle PHIs as terminating the - recursion. - (vect_analyze_slp_cost_1): Cost induction. - (vect_detect_hybrid_slp_stmts): Handle PHIs. - (vect_get_slp_vect_defs): Likewise. - * tree-vect-stmts.c (vect_analyze_stmt): Handle induction. - (vect_transform_stmt): Handle SLP reductions. - * tree-vectorizer.h (vectorizable_induction): Adjust. - -2017-06-05 Michael Meissner - - * config/rs6000/rs6000.c (make_resolver_func): Update - init_lowered_empty_function call. - -2017-06-05 Bernd Edlinger - - * doc/invoke.texi: Document the -fprofile-abs-path option. - * common.opt (fprofile-abs-path): New option. - * gcov-io.h (gcov_write_filename): Declare. - * gcov-io.c (gcov_write_filename): New function. - * coverage.c (coverage_begin_function): Use gcov_write_filename. - * profile.c (output_location): Likewise. - -2017-06-05 Jan Hubicka - - * shring-wrap.c: Revert accidental commit. - -2017-06-05 Volker Reichelt - - * doc/invoke.texi (-Wduplicated-branches): Add to warning list. - -2017-06-05 Jan Hubicka - - * cfgexpand.c (expand_gimple_tailcall): Initialize profile of - new edge. - * ipa-inline.c (want_inline_self_recursive_call_p): Watch for missing - profile in callgraph edge. - * profile-count.h (apply_probability): If THIS is 0, then result is 0 - (apply_scale): Likewise. - * tree-inline.c (copy_bb, copy_edges_for_bb, copy_cfg_body): - Also scale profile when inlining function with zero profile. - (initialize_cfun): Update exit block profile even when it is zero. - * tree-ssa-threadupdate.c (clear_counts_path): Handle correctly case - when profile is read. - -2017-06-05 Michael Meissner - - * config/rs6000/rs6000.c (toplevel): Include attribs.h. - (CLONE_*): New constants to define the processors we can generate - code for with the target_clone attribute. - (rs6000_clone_map): New array to identify which clone processors - the current program is running on. - (TARGET_COMPARE_VERSION_PRIORITY): Define to enable the - target_clone attribute. - (TARGET_GENERATE_VERSION_DISPATCHER_BODY): Likewise. - (TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): Likewise. - (TARGET_OPTION_FUNCTION_VERSIONS): Likewise. - (cpu_expand_builtin): Add support for target_clone attribute. - (rs6000_valid_attribute_p): Allow "default" attribute. - (get_decl_name): New debug function to simplify printing the - current function name in debugging statements. - (rs6000_clone_priority): New functions to support the target_clone - attribute, and be able to generate code to switch between ISA 2.05 - through ISA 3.0 (power6 through power9). - (rs6000_compare_version_priority): Likewise. - (rs6000_get_function_versions_dispatcher): Likewise. - (make_resolver_func): Likewise. - (add_condition_to_bb): Likewise. - (dispatch_function_versions): Likewise. - (rs6000_generate_version_dispatcher_body): Likewise. - (rs6000_can_inline_p): Call get_decl_name for debugging usage. - (fusion_gpr_load_p): Fix a spacing issue. - * doc/extend.texi (Common Function Attributes): Document that the - PowerPC supports the target_clone attribute. - -2017-06-05 Thomas Preud'homme - - * config/arm/arm.h: explain F symbol found in description of ARM - register allocation in its legend. - -2017-06-05 Jan Hubicka - - * config/mips/frame-header-opt.c: Include profile-count.h. - * config/riscv/riscv.c: Include profile-count.h - -2017-06-05 Jan Hubicka - - * tree-ssa-loop-im.c (execute_sm_if_changed): Add FLAG_BBS parameter; - update profile. - (sm_set_flag_if_changed): Add bbs field. - (execute_sm_if_changed_flag_set): Pass BBS. - (execute_sm): Update. - -2017-06-05 Kyrylo Tkachov - - * config/aarch64/aarch64-simd.md (aarch64_store_lane0): - New pattern. - -2017-06-05 Kyrylo Tkachov - - * config/aarch64/aarch64.md (sub3_compare1_imm): New define_insn. - (peephole2): New peephole2 to emit the above. - * config/aarch64/predicates.md (aarch64_sub_immediate): New predicate. - -2017-06-05 Kyrylo Tkachov - - * config/aarch64/aarch64.c (define_peephole2 above - *sub__): New peephole. - -2017-05-23 Jan Hubicka - - * config/i386/i386.c (make_resolver_func): Update. - * Makefile.in: Add profile-count.h and profile-count.o - * auto-profile.c (afdo_indirect_call): Update to new API. - (afdo_set_bb_count): Update. - (afdo_propagate_edge): Update. - (afdo_propagate_circuit): Update. - (afdo_calculate_branch_prob): Update. - (afdo_annotate_cfg): Update. - * basic-block.h: Include profile-count.h - (struct edge_def): Turn count to profile_count. - (struct basic_block_def): Likewie. - (REG_BR_PROB_BASE): Move to profile-count.h - (RDIV): Move to profile-count.h - * bb-reorder.c (max_entry_count): Turn to profile_count. - (find_traces): Update. - (rotate_loop):Update. - (connect_traces):Update. - (sanitize_hot_paths):Update. - * bt-load.c (migrate_btr_defs): Update. - * cfg.c (RDIV): Remove. - (init_flow): Use alloc_block. - (alloc_block): Uninitialize count. - (unchecked_make_edge): Uninitialize count. - (check_bb_profile): Update. - (dump_edge_info): Update. - (dump_bb_info): Update. - (update_bb_profile_for_threading): Update. - (scale_bbs_frequencies_int): Update. - (scale_bbs_frequencies_gcov_type): Update. - (scale_bbs_frequencies_profile_count): New. - * cfg.h (update_bb_profile_for_threading): Update. - (scale_bbs_frequencies_profile_count): Declare. - * cfgbuild.c (compute_outgoing_frequencies): Update. - (find_many_sub_basic_blocks): Update. - * cfgcleanup.c (try_forward_edges): Update. - (try_crossjump_to_edge): Update. - * cfgexpand.c (expand_gimple_tailcall): Update. - (construct_exit_block): Update. - * cfghooks.c (verify_flow_info): Update. - (dump_bb_for_graph): Update. - (split_edge): Update. - (make_forwarder_block): Update. - (duplicate_block): Update. - (account_profile_record): Update. - * cfgloop.c (find_subloop_latch_edge_by_profile): Update. - (get_estimated_loop_iterations): Update. - * cfgloopanal.c (expected_loop_iterations_unbounded): Update. - (single_likely_exit): Update. - * cfgloopmanip.c (scale_loop_profile): Update. - (loopify): Update. - (set_zero_probability): Update. - (lv_adjust_loop_entry_edge): Update. - * cfgrtl.c (force_nonfallthru_and_redirect): Update. - (purge_dead_edges): Update. - (rtl_account_profile_record): Update. - * cgraph.c (cgraph_node::create): Uninitialize count. - (symbol_table::create_edge): Uninitialize count. - (cgraph_update_edges_for_call_stmt_node): Update. - (cgraph_edge::dump_edge_flags): Update. - (cgraph_node::dump): Update. - (cgraph_edge::maybe_hot_p): Update. - * cgraph.h: Include profile-count.h - (create_clone), create_edge, create_indirect_edge): Update. - (cgraph_node): Turn count to profile_count. - (cgraph_edge0: Likewise. - (make_speculative, clone): Update. - (create_edge): Update. - (init_lowered_empty_function): Update. - * cgraphclones.c (cgraph_edge::clone): Update. - (duplicate_thunk_for_node): Update. - (cgraph_node::create_clone): Update. - * cgraphunit.c (cgraph_node::analyze): Update. - (cgraph_node::expand_thunk): Update. - * final.c (dump_basic_block_info): Update. - * gimple-streamer-in.c (input_bb): Update. - * gimple-streamer-out.c (output_bb): Update. - * graphite.c (print_global_statistics): Update. - (print_graphite_scop_statistics): Update. - * hsa-brig.c: Include basic-block.h. - * hsa-dump.c: Include basic-block.h. - * hsa-gen.c (T sum_slice): Update. - (convert_switch_statements):Update. - * hsa-regalloc.c: Include basic-block.h. - * ipa-chkp.c (chkp_produce_thunks): Update. - * ipa-cp.c (struct caller_statistics): Update. - (init_caller_stats): Update. - (gather_caller_stats): Update. - (ipcp_cloning_candidate_p): Update. - (good_cloning_opportunity_p): Update. - (get_info_about_necessary_edges): Update. - (dump_profile_updates): Update. - (update_profiling_info): Update. - (update_specialized_profile): Update. - (perhaps_add_new_callers): Update. - (decide_about_value): Update. - (ipa_cp_c_finalize): Update. - * ipa-devirt.c (struct odr_type_warn_count): Update. - (struct decl_warn_count): Update. - (struct final_warning_record): Update. - (possible_polymorphic_call_targets): Update. - (ipa_devirt): Update. - * ipa-fnsummary.c (redirect_to_unreachable): Update. - * ipa-icf.c (sem_function::merge): Update. - * ipa-inline-analysis.c (do_estimate_edge_time): Update. - * ipa-inline.c (compute_uninlined_call_time): Update. - (compute_inlined_call_time): Update. - (want_inline_small_function_p): Update. - (want_inline_self_recursive_call_p): Update. - (edge_badness): Update. - (lookup_recursive_calls): Update. - (recursive_inlining): Update. - (inline_small_functions): Update. - (dump_overall_stats): Update. - (dump_inline_stats): Update. - * ipa-profile.c (ipa_profile_generate_summary): Update. - (ipa_propagate_frequency): Update. - (ipa_profile): Update. - * ipa-prop.c (ipa_make_edge_direct_to_target): Update. - * ipa-utils.c (ipa_merge_profiles): Update. - * loop-doloop.c (doloop_modify): Update. - * loop-unroll.c (report_unroll): Update. - (unroll_loop_runtime_iterations): Update. - * lto-cgraph.c (lto_output_edge): Update. - (lto_output_node): Update. - (input_node): Update. - (input_edge): Update. - (merge_profile_summaries): Update. - * lto-streamer-in.c (input_cfg): Update. - * lto-streamer-out.c (output_cfg): Update. - * mcf.c (create_fixup_graph): Update. - (adjust_cfg_counts): Update. - (sum_edge_counts): Update. - * modulo-sched.c (sms_schedule): Update. - * postreload-gcse.c (eliminate_partially_redundant_load): Update. - * predict.c (maybe_hot_count_p): Update. - (probably_never_executed): Update. - (dump_prediction): Update. - (combine_predictions_for_bb): Update. - (propagate_freq): Update. - (handle_missing_profiles): Update. - (counts_to_freqs): Update. - (rebuild_frequencies): Update. - (force_edge_cold): Update. - * predict.h: Include profile-count.h - (maybe_hot_count_p, counts_to_freqs): UPdate. - * print-rtl-function.c: Do not include cfg.h - * print-rtl.c: Include basic-block.h - * profile-count.c: New file. - * profile-count.h: New file. - * profile.c (is_edge_inconsistent): Update. - (correct_negative_edge_counts): Update. - (is_inconsistent): Update. - (set_bb_counts): Update. - (read_profile_edge_counts): Update. - (compute_frequency_overlap): Update. - (compute_branch_probabilities): Update; Initialize and deinitialize - gcov_count tables. - (branch_prob): Update. - * profile.h (bb_gcov_counts, edge_gcov_counts): New. - (edge_gcov_count): New. - (bb_gcov_count): New. - * shrink-wrap.c (try_shrink_wrapping): Update. - * tracer.c (better_p): Update. - * trans-mem.c (expand_transaction): Update. - (ipa_tm_insert_irr_call): Update. - (ipa_tm_insert_gettmclone_call): Update. - * tree-call-cdce.c: Update. - * tree-cfg.c (gimple_duplicate_sese_region): Update. - (gimple_duplicate_sese_tail): Update. - (gimple_account_profile_record): Update. - (execute_fixup_cfg): Update. - * tree-inline.c (copy_bb): Update. - (copy_edges_for_bb): Update. - (initialize_cfun): Update. - (freqs_to_counts): Update. - (copy_cfg_body): Update. - (expand_call_inline): Update. - * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update. - * tree-ssa-loop-ivcanon.c (unloop_loops): Update. - (try_unroll_loop_completely): Update. - (try_peel_loop): Update. - * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update. - * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Update. - * tree-ssa-loop-split.c (connect_loops): Update. - * tree-ssa-loop-unswitch.c (hoist_guard): Update. - * tree-ssa-reassoc.c (branch_fixup): Update. - * tree-ssa-tail-merge.c (replace_block_by): Update. - * tree-ssa-threadupdate.c (create_block_for_threading): Update. - (compute_path_counts): Update. - (update_profile): Update. - (recompute_probabilities): Update. - (update_joiner_offpath_counts): Update. - (estimated_freqs_path): Update. - (freqs_to_counts_path): Update. - (clear_counts_path): Update. - (ssa_fix_duplicate_block_edges): Update. - (duplicate_thread_path): Update. - * tree-switch-conversion.c (case_bit_test_cmp): Update. - (struct switch_conv_info): Update. - * tree-tailcall.c (decrease_profile): Update. - * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update. - * tree-vect-loop.c (scale_profile_for_vect_loop): Update. - * value-prof.c (check_counter): Update. - (gimple_divmod_fixed_value): Update. - (gimple_mod_pow2): Update. - (gimple_mod_subtract): Update. - (gimple_ic_transform): Update. - (gimple_stringop_fixed_value): Update. - * value-prof.h (gimple_ic): Update. - -2017-06-02 Carl Love - - * config/rs6000/rs6000-c: Add support for built-in functions - vector double vec_doublee (vector signed int); - vector double vec_doublee (vector unsigned int); - vector double vec_doublee (vector float); - vector double vec_doubleh (vector signed int); - vector double vec_doubleh (vector unsigned int); - vector double vec_doubleh (vector float); - vector double vec_doublel (vector signed int); - vector double vec_doublel (vector unsigned int); - vector double vec_doublel (vector float); - vector double vec_doubleo (vector signed int); - vector double vec_doubleo (vector unsigned int); - vector double vec_doubleo (vector float);. - * config/rs6000/rs6000-builtin.def: Add definitions for DOUBLEE, - DOUBLEO, DOUBLEH, DOUBLEL, UNS_DOUBLEO, UNS_DOUBLEE, UNS_DOUBLEH, - UNS_DOUBLEL. - * config/rs6000/altivec.md: Add code generator for doublee2, - unsdoubleev4si2, doubleo2, unsdoubleov4si2, doubleh2, - unsdoublehv4si2, doublel2, unsdoublelv4si2, add mode attribute - VS_sxwsp. - * config/rs6000/altivec.h: Add define for vec_doublee, vec_doubleo, - vec_doublel, vec_doubleh. - * doc/extend.texi: Update the built-in documentation file for the - new built-in functions. - -2017-06-02 David Malcolm - - PR jit/80954 - * ipa-inline-analysis.c (free_growth_caches): Set - edge_removal_hook_holder to NULL after removing it. - -2017-06-02 Sudakshina Das - - * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_SWP for - comparision with zero. - -2017-06-02 Will Schmidt - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling - for early expansion of vec_min and vec_max builtins. - (builtin_function_type): Add min/max unsigned variants to those - identified as having unsigned arguments. - -2017-06-02 Olivier Hainque - - * config/vx-common.h (DWARF_UNWIND_INFO): Switch #define to 1. - -2017-06-02 Kyrylo Tkachov - - * config/aarch64/aarch64-simd.md (*aarch64_simd_vec_copy_lane): - Use VALL_F16 iterator rather than VALL. - -2017-06-02 Kyrylo Tkachov - - * config/aarch64/aarch64.c (aarch64_split_compare_and_swap): - Emit CBNZ inside loop when doing a strong exchange and comparing - against zero. Generate the CC flags after the loop. - -2017-06-02 David Edelsohn - - * dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE_STR): New. - (dl_section_ref): New. - (dwarf2out_finish): Copy debug_line_section_label to dl_section_ref. - On AIX, append an expression to subtract the size of the - section length to dl_section_ref. - -2017-06-02 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling - for early expansion of vector absolute builtins. - -2017-06-02 Richard Biener - - * tree-vect-slp.c (vect_detect_hybrid_slp_2): Match up - what we consider a relevant use stmt with vect_detect_hybrid_slp_stmts. - -2017-06-02 Richard Biener - - PR tree-optimization/80948 - * tree-tailcall.c (find_tail_calls): Track stmts to move in - stmt order as well. - -2017-06-02 Richard Biener - - * tree-vect-loop.c (vect_analyze_loop_operations): Not relevant - PHIs are ok. - * tree-vect-stmts.c (process_use): Do not mark backedge defs - for inductions as relevant. - -2017-06-02 Richard Biener - - * tree-vect-loop.c (get_initial_def_for_induction): Inline into ... - (vectorizable_induction): ... this. Remove dead code. - -2017-06-02 Eric Botcazou - - * builtins. (expand_builtin_alloca): Remove second parameter and - infer its value from the first parameter instead. - (expand_builtin) : Adjust call to above. - -2017-06-02 Jakub Jelinek - - PR rtl-optimization/80903 - * loop-doloop.c (add_test): Unshare sequence. - -2017-06-02 Bernd Edlinger - - * doc/invoke.texi: Document the -Wsizeof-pointer-div warning. - -2017-06-01 Bernd Edlinger - - * config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): Make - static. - (xlogue_layout::get_stack_space_used, xlogue_layout::s_instances, - xlogue_layout::get_instance, logue_layout::xlogue_layout, - sp_valid_at, fp_valid_at, choose_basereg): Formatting. - (xlogue_layout::get_stub_rtx): Make static. - (xlogue_layout::get_stub_name): Avoid const-cast, make static. - (xlogue_layout::compute_stub_managed_regs): Rename to... - (xlogue_layout::count_stub_managed_regs): ...this. - (xlogue_layout::is_stub_managed_reg): New function. - (xlogue_layout::m_stub_names): Rename to... - (xlogue_layout::s_stub_names): ...this, make static. - (xlogue_layout::STUB_INDEX_OFFSET, xlogue_layout::MIN_REGS, - xlogue_layout::MAX_REGS, xlogue_layout::MAX_EXTRA_REGS, - xlogue_layout::VARIANT_COUNT, xlogue_layout::STUB_NAME_MAX_LEN, - xlogue_layout::s_stub_names): Instantiate statics. - (stub_managed_regs): Remove. - (ix86_save_reg): Use xlogue_layout::compute_stub_managed_regs. - (disable_call_ms2sysv_xlogues): Rename to... - (warn_once_call_ms2sysv_xlogues): ...this, and warn only once. - (ix86_initial_elimination_offset, ix86_expand_call): Fix call_ms2sysv - warning logic. - (ix86_static_chain): Make sure that ix86_static_chain_on_stack can't - change after reload_completed. - (ix86_can_use_return_insn_p): Use the ix86_frame data structure - directly. - (ix86_expand_prologue): Likewise. - (ix86_expand_epilogue): Likewise. - (ix86_expand_split_stack_prologue): Likewise. - (ix86_compute_frame_layout): Remove frame parameter ... - (TARGET_COMPUTE_FRAME_LAYOUT): ... and export it as a target hook. - (ix86_finalize_stack_realign_flags): Call ix86_compute_frame_layout - only if necessary. - (ix86_init_machine_status): Don't set use_fast_prologue_epilogue_nregs. - (ix86_frame): Move from here ... - * config/i386/i386.h (ix86_frame): ... to here. - (machine_function): Remove use_fast_prologue_epilogue_nregs, cache the - complete ix86_frame data structure instead. Remove some_ld_name. - -2017-06-01 Pierre-Marie de Rodat - - * dwarf2out.c (dwarf2out_late_global_decl): Add locations for - symbols that hold a DECL_VALUE_EXPR. - -2017-06-01 Martin Jambor - - PR tree-optimization/80898 - * tree-sra.c (process_subtree_disqualification): Removed. - (disqualify_candidate): Do not acll - process_subtree_disqualification. - (subtree_mark_written_and_enqueue): New function. - (propagate_all_subaccesses): Set grp_write of LHS subtree if the - RHS has been disqualified and re-queue LHS if necessary. Apart - from that, ignore disqualified RHS. - -2017-06-01 Andreas Krebbel - - * config/s390/s390.c (s390_emit_epilogue): Disable early return - address fetch for z10 or later. - -2017-06-01 Claudiu Zissulescu - - * config/arc/arc.md (tst_movb): Add guard when splitting. - -2017-06-01 Claudiu Zissulescu - - * config/arc/arc.c (arc_can_eliminate): Test against - arc_frame_pointer_needed. - -2017-06-01 Claudiu Zissulescu - - * config/arc/arc.c (arc_expand_prologue): Emit a special barrier - to prevent store reordering. - * config/arc/arc.md (UNSPEC_ARC_STKTIE): Define. - (type): Add block type. - (stack_tie): Define special instruction to be used in - expand_prologue. - -2017-06-01 Claudiu Zissulescu - - * config/arc/arc.md (commutative_binary_comparison): Remove 'I' - constraint. It is not valid for the pattern. - (noncommutative_binary_comparison): Likewise. - -2017-06-01 Claudiu Zissulescu - - * config/arc/simdext.md (movv2hi_insn): Change predicate to avoid - scaled addresses. - -2017-06-01 Claudiu Zissulescu - - * config/arc/arc.c (arc_conditional_register_usage): Allow r30 to - be used by the reg-alloc. - -2017-06-01 Claudiu Zissulescu - - * config/arc/arc.md (mulsi3): Avoid use of hard registers before - reg-alloc when having mul64 or mul32x16 instructions. - (mulsidi3): Likewise. - (umulsidi3): Likewise. - (mulsi32x16): New pattern. - (mulsi64): Likewise. - (mulsidi64): Likewise. - (umulsidi64): Likewise. - (MUL32x16_REG): Define. - (mul64_600): Use MUL32x16_REG. - (mac64_600): Likewise. - (umul64_600): Likewise. - (umac64_600): Likewise. - -2017-06-01 Claudiu Zissulescu - - * config/arc/arc.md (mulsi3_700): Make it commutative. - -2017-06-01 Jose E. Marchesi - - * config/sparc/sparc.md (*zero_extendsidi2_insn_sp64): Set insn - type for movstouw. - (*sign_extendsidi2_insn): Likewise for movstosw. - -2017-06-01 Pierre-Marie de Rodat - - * dwarf2out.c (get_discr_value): Call the get_debug_type hook on - the type of the input discriminant value. Convert the - discriminant value of signedness vary. - -2017-06-01 Volker Reichelt - - * doc/invoke.texi (-Wcatch-value): Document new shortcut. - Add to -Wall section. - -2017-06-01 Richard Biener - - PR middle-end/66313 - * fold-const.c (fold_plusminus_mult_expr): If the factored - factor may be zero use a wrapping type for the inner operation. - * tree-tailcall.c (independent_of_stmt_p): Pass in to_move bitmap - and handle moved defs. - (process_assignment): Properly guard the unary op case. Return a - tri-state indicating that moving the stmt before the call may allow - to continue. Pass through to_move. - (find_tail_calls): Handle moving unrelated defs before - the call. - -2017-05-31 Segher Boessenkool - - PR target/80618 - * config/rs6000/vector.md (*vector_uneq): Write the nor in the - splitter result in the canonical way. - -2017-05-31 Uros Bizjak - - * config/i386/i386.md (*zero_extendsidi2): Enable alternative (?r, *Yj) - also for 32bit target. Update insn attributes. - (zero-extendsidi2 splitter): Allow all registers for operand 1. - -2017-05-31 Sebastian Peryt - - * config/i386/avx512fintrin.h (_mm_mask_max_sd) - (_mm_maskz_max_sd, _mm_mask_max_ss, _mm_maskz_max_ss) - (_mm_mask_min_sd, _mm_maskz_min_sd, _mm_mask_min_ss) - (_mm_maskz_min_ss): New intrinsics. - -2017-05-31 Martin Liska - - * tree-vect-loop.c (vect_create_epilog_for_reduction): - Change comment style to one we normally use. - (vectorizable_reduction): Likewise. - (vectorizable_induction): Likewise. - * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise. - (vectorizable_call): Likewise. - (vectorizable_simd_clone_call): Likewise. - (vectorizable_conversion): Likewise. - (vectorizable_assignment): Likewise. - (vectorizable_shift): Likewise. - (vectorizable_operation): Likewise. - (vectorizable_store): Likewise. - (vectorizable_load): Likewise. - * tree-vectorizer.h: Likewise. - -2017-05-31 Alexander Monakov - - * passes.c (emergency_dump_function): New. - * tree-pass.h (emergency_dump_function): Declare. - * plugin.c (plugins_internal_error_function): Remove. - * plugin.h (plugins_internal_error_function): Remove declaration. - * toplev.c (internal_error_function): New static function. Use it... - (general_init): ...here. - -2017-05-31 Graham Markall - - * config/arc/arc.c (arc_print_operand): Handle constant operands. - (arc_rtx_costs): Add costs for new patterns. - * config/arc/arc.md: Additional *add_n and *sub_n patterns. - * config/arc/predicates.md: Add _1_2_3_operand predicate. - -2017-05-31 Richard Sandiford - - * tree-ssa-strlen.c (get_next_strinfo): New function. - (get_stridx_plus_constant): Use it. - (zero_length_string): Likewise. - (adjust_related_strinfos): Likewise. - (adjust_last_stmt): Likewise. - -2017-05-31 Richard Biener - - PR target/80880 - * config/i386/i386.c (ix86_expand_builtin): Remove assert - for arg being an SSA name when expanding IX86_BUILTIN_BNDRET. - -2017-05-31 Richard Sandiford - - * tree-vect-data-refs.c (vect_find_same_alignment_drs): Remove - loop_vinfo argument and use of dependence distance vectors. - Check instead whether the two references differ only in their - initial value and assume that they have the same alignment if the - difference is a multiple of the vector alignment. - (vect_analyze_data_refs_alignment): Update call accordingly. - -2017-05-31 Martin Liska - - PR target/79155 - * config/i386/cpuid.h: Fix typo in a comment in cpuid.h. - -2017-05-31 Bin Cheng - - * tree-vect-loop-manip.c (create_intersect_range_checks_index) - (create_intersect_range_checks): Move from ... - * tree-data-ref.c (create_intersect_range_checks_index) - (create_intersect_range_checks): ... to here. - (create_runtime_alias_checks): New function factored from ... - * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): ... - here. Call above function. - * tree-data-ref.h (create_runtime_alias_checks): New function. - -2017-05-31 Bin Cheng - - * tree-data-ref.c (prune_runtime_alias_test_list): Relax minimal - segment length for dr_b and compute it in wide_int. - -2017-05-31 Richard Biener - - PR tree-optimization/80906 - * graphite-isl-ast-to-gimple.c (copy_loop_close_phi_nodes): Get - and pass through iv_map. - (copy_bb_and_scalar_dependences): Adjust. - (translate_pending_phi_nodes): Likewise. - (copy_loop_close_phi_args): Handle code-generating IVs instead - of ICEing. - -2017-05-30 David Malcolm - - * diagnostic-color.c (color_dict): Add "type-diff". - (parse_gcc_colors): Update comment. - * doc/invoke.texi (Diagnostic Message Formatting Options): Add - -fdiagnostics-show-template-tree and -fno-elide-type. - (GCC_COLORS): Add type-diff to example. - (type-diff=): New. - (-fdiagnostics-show-template-tree): New. - (-fno-elide-type): New. - * pretty-print.c (pp_format): Pass quote and formatters[argno] to - the pp_format_decoder callback. Call any m_format_postprocessor's - "handle" method. - (pretty_printer::pretty_printer): Initialize - m_format_postprocessor. - (pretty_printer::~pretty_printer): Delete any - m_format_postprocessor. - * pretty-print.h (printer_fn): Add bool and const char ** parameters. - (class format_postprocessor): New class. - (struct pretty_printer::format_decoder): Document the new parameters. - (struct pretty_printer::m_format_postprocessor): New field. - * tree-diagnostic.c (default_tree_printer): Update for new - bool and const char ** params. - * tree-diagnostic.h (default_tree_printer): Likewise. - -2017-05-30 Segher Boessenkool - - * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): Delete. - (lwa_operand): Delete rs6000_gen_cell_microcode test. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete - rs6000_gen_cell_microcode code. - (rs6000_final_prescan_insn): Delete. - (rs6000_opt_vars): Delete the "gen-cell-microcode" and - "warn-cell-microcode" entries. - * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Delete. - * config/rs6000/rs6000.md: Delete rs6000_gen_cell_microcode tests - throughout. Change cc_reg_not_micro_cr0_operand to - cc_reg_not_cr0_operand throughout. - (*extendhi2_noload): Delete. - * config/rs6000/rs6000.opt (mgen-cell-microcode): Replace by stub. - (mwarn-cell-microcode): Delete. - * doc/invoke.texi (RS/6000 and PowerPC Options): Delete - -mgen-cell-microcode and -mwarn-cell-microcode. - -2017-05-30 Uros Bizjak - - PR target/80833 - * config/i386/constraints.md (Yd): New constraint. - (Ye): Ditto. - * config/i386/i386.md (*movti_internal): Add (?r, Ye) - and (?Yd, r) alternatives. Update insn attributes. - * config/i386/i386.md (*movti_internal): Add (?r, *Ye) - and (?*Yd, r) alternatives. Update insn attributes. - (double-mode inter-unit splitters): Add new GR<->XMM splitters. - -2017-05-30 Pierre-Marie de Rodat - - * gimplify.c (gimplify_modify_expr): Don't create a - DECL_DEBUG_EXPR link if *FROM_P does not belong to the current - function. - -2017-05-30 Wilco Dijkstra - - * config/arm/arm-builtins.c (arm_expand_builtin): Remove const. - -2017-05-30 Richard Biener - - * tree-vectorizer.h (struct _stmt_vec_info): Add reduc_type - and reduc_def fields. - (STMT_VINFO_REDUC_TYPE): New define. - (STMT_VINFO_REDUC_DEF): Likewise. - (vect_force_simple_reduction): Adjust prototype. - * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Adjust. - (vect_is_simple_reduction): Remove check_reduction argument. - (vect_force_simple_reduction): Adjust and set - STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF. - (vectorizable_reduction): Do not re-do reduction analysis - but use STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF. - * tree-parloops.c (gather_scalar_reductions): Adjust. - -2017-05-30 Richard Biener - - PR middle-end/80901 - * cfgexpand.c (expand_gimple_cond): Match up loop fixup with - split_edge code. - -2017-05-24 Robin Dapp - - * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): - Introduce unknown_misalignment parameter and remove vf. - (vect_peeling_hash_get_lowest_cost): - Pass unknown_misalignment parameter. - (vect_enhance_data_refs_alignment): - Fix unsupportable data ref treatment. - -2017-05-30 Robin Dapp - - * tree-vect-data-refs.c (vect_get_data_access_cost): - Workaround for SLP handling. - (vect_enhance_data_refs_alignment): - Compute costs for doing no peeling at all, compare to the best - peeling costs so far and avoid peeling if cheaper. - -2017-05-30 Robin Dapp - - * tree-vect-data-refs.c (vect_peeling_hash_choose_best_peeling): - Return peeling info and set costs to zero for unlimited cost - model. - (vect_enhance_data_refs_alignment): Also inspect all datarefs - with unknown misalignment. Compute and costs for unknown - misalignment, compare them to the costs for known misalignment - and choose the cheapest for peeling. - -2017-05-30 Robin Dapp - - * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Rename. - (vect_get_peeling_costs_all_drs): Create function. - (vect_peeling_hash_get_lowest_cost): - Use vect_get_peeling_costs_all_drs. - (vect_peeling_supportable): Create function. - (vect_enhance_data_refs_alignment): Use vect_peeling_supportable. - -2017-05-30 Robin Dapp - - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Create - DR_HAS_NEGATIVE_STEP. - (vect_update_misalignment_for_peel): Define DR_MISALIGNMENT. - (vect_enhance_data_refs_alignment): Use. - (vect_duplicate_ssa_name_ptr_info): Use. - * tree-vectorizer.h (dr_misalignment): Use. - (known_alignment_for_access_p): Use. - -2017-05-30 Jozef Lawrynowicz - - PR target/78838 - * config/msp430/msp430.c (gen_prefix): Return NULL when section name is - .lowtext. - (has_section_name): New function. - -2017-05-30 Martin Liska - - PR other/80909 - * auto-profile.c (get_function_decl_from_block): Fix - parenthesis. - -2017-05-30 Richard Biener - - PR middle-end/80876 - * cfgexpand.c (expand_gimple_cond): Fixup preserving loops again. - -2017-05-30 Martin Liska - - * dumpfile.c: Use newly added macro DUMP_FILE_INFO. - * dumpfile.h (struct dump_file_info): Remove ctors. - -2017-05-30 Martin Liska - - * predict.def: Fix GNU coding style. - -2017-05-29 Max Filippov - - * config/xtensa/xtensa.c (xtensa_initial_elimination_offset): - Mark 'to' argument with ATTRIBUTE_UNUSED. - -2017-05-29 Max Filippov - - * config/xtensa/xtensa.c (xtensa_emit_call): Use - HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string. - (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld - format string. - -2017-05-29 Eric Botcazou - - * doc/install.texi (Options specification): Restore entry of - --enable-sjlj-exceptions. - -2017-05-27 Michael Eager - - Revert: - 2016-01-21 Ajit Agarwal - - See https://gcc.gnu.org/ml/gcc/2017-05/msg00221.html. - - * config/microblaze/microblaze.h - (FIXED_REGISTERS): Update in macro. - (CALL_USED_REGISTERS): Update in macro. - -2017-05-27 François-Xavier Coudett - - * doc/install.texi: Add links to macOS binary distributions. - -2017-05-27 Jakub Jelinek - - PR bootstrap/80887 - Revert: - 2017-05-25 Marc Glisse - - * match.pd ((A +- CST1) +- CST2): Allow some conversions. - -2017-05-26 Martin Liska - - * dumpfile.h (enum dump_kind): Renumber TDF_* flags to be contiguous. - -2017-05-26 Martin Liska - - * cfg.c (check_bb_profile): Do not use TDF_COMMENT and print - always leading ';; '. - (dump_bb_info): Likewise. - (brief_dump_cfg): Likewise. - * cfgrtl.c (print_rtl_with_bb): Do not use TDF_COMMENT. - * dumpfile.c: Remove usage of TDF_VERBOSE. - * dumpfile.h (enum dump_kind): Likewise. - (dump_gimple_bb_header): Do not use TDF_COMMENT. - * print-tree.c (debug_verbose): Remove. - * tree-cfg.c (gimple_dump_cfg): Do not use TDF_COMMENT. - (dump_function_to_file): Remove dumps guarded with TDF_VERBOSE. - * tree-diagnostic.c (default_tree_printer): Replace - TDF_DIAGNOSTIC with TDF_SLIM. - -2017-05-26 Bin Cheng - - * tree-vect-loop-manip.c (create_intersect_range_checks_index): Pass - in parameter loop, rather than loop_vinfo. - (create_intersect_range_checks): Ditto. - (vect_create_cond_for_alias_checks): Update call to above functions. - -2017-05-26 Bin Cheng - - PR tree-optimization/80815 - * tree-data-ref.c (prune_runtime_alias_test_list): Simplify condition - for merging runtime alias checks. Handle negative DR_STEPs. - -2017-05-26 Bin Cheng - - * tree-vect-data-refs.c (Operator==, comp_dr_with_seg_len_pair): - Move from ... - * tree-data-ref.c (Operator==, comp_dr_with_seg_len_pair): To here. - * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): Factor - out code pruning runtime alias checks. - * tree-data-ref.c (prune_runtime_alias_test_list): New function - factored out from above. - * tree-vectorizer.h (struct dr_with_seg_len, dr_with_seg_len_pair_t): - Move from ... - * tree-data-ref.h (struct dr_with_seg_len, dr_with_seg_len_pair_t): - ... to here. - (prune_runtime_alias_test_list): New decalaration. - -2017-05-26 Bin Cheng - - * tree-vect-data-refs.c (compare_tree): Rename and move ... - * tree-data-ref.c (data_ref_compare_tree): ... to here. - * tree-data-ref.h (data_ref_compare_tree): New decalaration. - * tree-vect-data-refs.c (dr_group_sort_cmp): Update uses. - (operator==, comp_dr_with_seg_len_pair): Ditto. - (vect_prune_runtime_alias_test_list): Ditto. - -2017-05-26 Martin Liska - - PR ipa/80663 - * params.def: Bound partial-inlining-entry-probability param. - -2017-05-26 Marek Polacek - - PR sanitizer/80875 - * fold-const.c (fold_binary_loc) : Check if OP1 - can be negated. - -2017-05-26 Richard Biener - - PR tree-optimization/80842 - * tree-ssa-ccp.c (set_lattice_value): Always meet with the old - value. - -2017-05-26 Richard Biener - - PR tree-optimization/80844 - * tree-vectorizer.c (adjust_simduid_builtins): Propagate results. - -2017-05-25 Sebastian Peryt - - * doc/md.texi (Machine Constraints): Update x86 family - machine constraints section to match 'config/i386/constraints.md'. - -2017-05-25 Volker Reichelt - - * doc/invoke.texi (-Wcatch-value=): Document new warning option. - -2017-05-25 Nathan Sidwell - - * doc/invoke.texi (--enable-languages): Update documentation. - -2017-05-25 Martin Liska - - * dumpfile.c: Add TDF_FOLDING. - * dumpfile.h (enum dump_kind): Likewise. - * genmatch.c (dt_simplify::gen_1): Use it. - -2017-05-25 Marc Glisse - - * match.pd (view_convert (convert@0 @1)): Handle zero-extension. - -2017-05-25 Marc Glisse - - * match.pd ((A +- CST1) +- CST2): Allow some conversions. - * tree.c (drop_tree_overflow): Handle COMPLEX_CST and VECTOR_CST. - -2017-05-25 Marc Glisse - - * fold-const.c (fold_binary_loc) [(A & C) == D]: Remove transformation. - * match.pd (X == C): Rewrite it here. - (with_possible_nonzero_bits, with_possible_nonzero_bits2, - with_certain_nonzero_bits2): New predicates. - * tree-ssanames.c (get_nonzero_bits): Handle INTEGER_CST. - -2017-05-24 Nathan Sidwell - - * lto-streamer-in.c (lto_input_data_block): Adjust T const cast to - avoid warning. - - * auto-profile.c (afdo_propagate): Adjust T const cast to avoid - warning. - -2017-05-24 Segher Boessenkool - - * config/powerpcspe: New port. Files are copied from the rs6000 - port, with "rs6000" in filenames replaced by "powerpcspe". - -2017-05-24 Wilco Dijkstra - - PR rtl-optimization/80754 - * lra-remat.c (do_remat): Add overlap checks for dst_regno. - -2017-05-24 Sheldon Lobo - - * config/sparc/sparc.md (length): Return the correct value for -mflat - sibcalls to match output_sibcall. - -2017-05-24 Segher Boessenkool - - PR bootstrap/80860 - PR bootstrap/80843 - * config/rs6000/rs6000.c (struct machine_function): Add new field - n_components. - (rs6000_get_separate_components): Init that field, use it. - (rs6000_components_for_bb): Use the field. - -2017-05-24 Thomas Preud'homme - - * config/arm/arm.c (arm_expand_prologue): Fix typo in comment. - -2017-05-24 Peter Bergner - - PR middle-end/80823 - * tree-cfg.c (group_case_labels_stmt): Delete increment of "i"; - -2017-05-24 Andreas Krebbel - - PR target/80725 - * config/s390/s390.c (s390_check_qrst_address): Check incoming - address against address_operand predicate. - * config/s390/s390.md ("*indirect_jump"): Swap alternatives. - -2017-05-24 Eric Botcazou - - * var-tracking.c (track_expr_p): Do not return 0 for tracked record - parameters passed indirectly. - -2017-05-23 Uros Bizjak - - * config/i386/i386.md (*movdi_internal): Remove SSE4 - alternative 18 (?r, *v). Update insn attributes. - (*movsi_internal): Remove SSE4 alternative 13 (?r, *v). - Update insn attributes. - (*zero_extendsidi2): Remove SSE4 alternative (?r, *x). - Update insn attributes. - * config/i386/sse.md (vec_extract_0): Remove SSE4 - alternative 1 (r, v). Remove isa attribute. - * config/i386/i386.c (dimode_scalar_chain::make_vector_copies): - Always move value through stack for !TARGET_INTER_UNIT_MOVES_TO_VEC - and !TARGET_INTER_UNIT_MOVES_TO_VEC targets. - -2017-05-23 Tom de Vries - - * doc/sourcebuild.texi (Directives, Verify compiler message): Document - dg-line directive. - -2017-05-23 Jan Hubicka - - * cgraphunit.c (symbol_table::process_new_functions): Update. - * ipa-fnsummary.c (pass_data_inline_parameters): Remove. - (inline_generate_summary): Rename to ... - (ipa_fn_summary_generate): ... this one. - (inline_read_summary): Rename to ... - (ipa_fn_summary_read): ... this one. - (inline_write_summary): Rename to ... - (ipa_fn_summary_write): ... this one. - (inline_free_summary): Rename to ... - (ipa_free_fn_summary): ... this one. - (pass_data_local_fn_summary, pass_local_fn_summary, - make_pass_local_fn_summary, pass_data_ipa_free_fn_summary, - pass_ipa_free_fn_summary, make_pass_ipa_free_fn_summary, - pass_data_ipa_fn_summary, pass_ipa_fn_summary, - make_pass_ipa_fn_summary): New. - * ipa-fnsummary.h (inline_generate_summary, inline_read_summary, - inline_write_summary, inline_free_summary): Remove. - (ipa_free_fn_summary) : New. - * ipa-inline.c (ipa_inline): Update. - (pass_ipa_inline): Do not generate summaries. - * ipa.c (pass_data_ipa_free_fn_summary, pass_ipa_free_fn_summary): - Remove. - * passes.def: Replace pass_inline_parameters by pass_local_fn_summary - and add pass_ipa_fn_summary. - * tree-pass.h (make_pass_ipa_fn_summary, make_pass_local_fn_summary): - New. - (make_pass_inline_parameters): Remove. - -2017-05-23 Thomas Schwinge - - * omp-low.c (struct omp_context): Remove "default_kind" member. - Adjust all users. - - * omp-offload.c (execute_oacc_device_lower): Remove the - parallelism dimensions function attributes for unparallelized - OpenACC kernels constructs. - -2017-05-23 Martin Liska - - * cgraph.c (cgraph_node::get_create): Use symtab_node::dump_{asm_,}name - functions. - (cgraph_edge::make_speculative): Likewise. - (cgraph_edge::resolve_speculation): Likewise. - (cgraph_edge::redirect_call_stmt_to_callee): Likewise. - (cgraph_node::dump): Likewise. - * cgraph.h: Likewise. - * cgraphunit.c (analyze_functions): Likewise. - (symbol_table::compile): Likewise. - * ipa-cp.c (print_all_lattices): Likewise. - (determine_versionability): Likewise. - (initialize_node_lattices): Likewise. - (ipcp_verify_propagated_values): Likewise. - (estimate_local_effects): Likewise. - (update_profiling_info): Likewise. - (create_specialized_node): Likewise. - (perhaps_add_new_callers): Likewise. - (decide_about_value): Likewise. - (decide_whether_version_node): Likewise. - (identify_dead_nodes): Likewise. - (ipcp_store_bits_results): Likewise. - * ipa-devirt.c (dump_targets): Likewise. - (ipa_devirt): Likewise. - * ipa-icf.c (sem_item::dump): Likewise. - (sem_function::equals): Likewise. - (sem_variable::equals): Likewise. - (sem_item_optimizer::read_section): Likewise. - (sem_item_optimizer::execute): Likewise. - (congruence_class::dump): Likewise. - * ipa-inline-analysis.c (dump_ipa_call_summary): Likewise. - (dump_inline_summary): Likewise. - (estimate_node_size_and_time): Likewise. - (inline_analyze_function): Likewise. - * ipa-inline-transform.c (inline_call): Likewise. - * ipa-inline.c (report_inline_failed_reason): Likewise. - (want_early_inline_function_p): Likewise. - (edge_badness): Likewise. - (update_edge_key): Likewise. - (inline_small_functions): Likewise. - * ipa-profile.c (ipa_profile): Likewise. - * ipa-prop.c (ipa_print_node_jump_functions): Likewise. - (ipa_make_edge_direct_to_target): Likewise. - (remove_described_reference): Likewise. - (ipa_impossible_devirt_target): Likewise. - (propagate_controlled_uses): Likewise. - (ipa_print_node_params): Likewise. - (ipcp_transform_function): Likewise. - * ipa-pure-const.c (pure_const_read_summary): Likewise. - (propagate_pure_const): Likewise. - * ipa-reference.c (generate_summary): Likewise. - (read_write_all_from_decl): Likewise. - (propagate): Likewise. - (ipa_reference_read_optimization_summary): Likewise. - * ipa-utils.c (ipa_merge_profiles): Likewise. - * ipa.c (walk_polymorphic_call_targets): Likewise. - (symbol_table::remove_unreachable_nodes): Likewise. - (ipa_single_use): Likewise. - * passes.c (execute_todo): Likewise. - * predict.c (drop_profile): Likewise. - * symtab.c (symtab_node::get_dump_name): New function. - (symtab_node::dump_name): Likewise. - (symtab_node::dump_asm_name): Likewise. - (symtab_node::dump_references): Likewise. - (symtab_node::dump_referring): Likewise. - (symtab_node::dump_base): Likewise. - (symtab_node::debug_symtab): Likewise. - * tree-sra.c (convert_callers_for_node): Likewise. - * tree-ssa-structalias.c (ipa_pta_execute): Likewise. - * value-prof.c (init_node_map): Likewise. - -2017-05-23 Martin Liska - - * cgraph.h: Move symtab_node::dump_table to symbol_table::dump - and symtab_node::debug_symtab to symbol_table::debug. - * cgraphunit.c (analyze_functions): Use the renamed function. - (symbol_table::compile): Likewise. - * ipa-cp.c (ipcp_verify_propagated_values): Likewise. - * ipa-icf.c (sem_item_optimizer::execute): Likewise. - * passes.c (execute_todo): Likewise. - * symtab.c (symbol_table::dump): New function. - * tree-ssa-structalias.c (ipa_pta_execute): Use the renamed function. - -2017-05-23 Jan Hubicka - - * ipa-fnsummary.c (estimate_node_size_and_time): Do not sanity check - that nonconst implies exec. - -2017-05-23 Jan Hubicka - - * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list, - inline_edge_removal_hook, inline_edge_duplication_hook): Remove. - (inline_edge_summary_vec): Turn into ... - (ipa_call_summaries): ... this one. - (redirect_to_unreachable, edge_set_predicate, - evaluate_properties_for_edge, inline_summary_alloc, - reset_ipa_call_summary, reset_inline_summary, - inline_summary_t::duplicate): Update. - (inline_edge_duplication_hook): Turn to ... - (ipa_call_summary_t::duplicate): ... this one. - (inline_edge_removal_hook): Turn to ... - (ipa_call_summary_t::remove): ... this one. - (dump_inline_edge_summary): Turn to ... - (dump_ipa_call_summary): ... this one. - (estimate_function_body_sizes): Update. - (inline_update_callee_summaries): Update. - (remap_edge_change_prob): Update. - (remap_edge_summaries): Update. - (inline_merge_summary): Update. - (do_estimate_edge_time): Update. - (inline_generate_summary): Update. - (inline_read_section): Update. - (inline_read_summary): Update. - (inline_free_summary): Update. - * ipa-inline.c (can_inline_edge_p): Update. - (compute_inlined_call_time): Update. - (want_inline_small_function_p): Update. - (edge_badness): Update. - (early_inliner): Update. - * ipa-inline.h (inline_edge_summary): Turn to ... - (ipa_call_summary): ... this one. - (ipa_call_summary_t): New class. - (inline_edge_summary_t, inline_edge_summary_vec): Remove. - (ipa_call_summaries): New. - (inline_edge_summary): Remove. - (estimate_edge_growth): Update. - * ipa-profile.c (ipa_propagate_frequency_1): Update. - * ipa-prop.c (ipa_make_edge_direct_to_target): Update. - * ipa-split.c (execute_split_functions): Update. - * ipa.c (symbol_table::remove_unreachable_nodes): Update. - -2017-05-23 Tom de Vries - - * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware - attributes): Document rdrand effective target. - -2017-05-23 Tom de Vries - - * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware - attributes): Sort alphabetically. - -2017-05-23 Georg-Johann Lay - - * config/avr/genmultilib.awk: Use gsub instead of gensub. - -2017-05-22 Michael Meissner - - PR target/80718 - * config/rs6000/vsx.md (vsx_splat_, VSX_D iterator): Split - V2DF/V2DI splat into two separate patterns, one that handles - registers, and the other that only handles memory. Drop support - for splatting from a GPR on ISA 2.07 and then splitting the - splat into direct move and splat. - (vsx_splat__reg): Likewise. - (vsx_splat__mem): Likewise. - -2017-05-22 Segher Boessenkool - - * cfgcleanup.c (bb_is_just_return): Allow CLOBBERs. - -2017-05-22 Jakub Jelinek - - PR middle-end/80809 - * omp-low.c (finish_taskreg_remap): New function. - (finish_taskreg_scan): If unit size of ctx->record_type - is non-constant, unshare the size expression and replace - decls in it with possible outer var refs. - - PR middle-end/80809 - * gimplify.c (omp_add_variable): For GOVD_DEBUG_PRIVATE use - GOVD_SHARED rather than GOVD_PRIVATE with it. - (gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Expect - GOVD_SHARED rather than GOVD_PRIVATE with GOVD_DEBUG_PRIVATE. - - PR middle-end/80853 - * omp-low.c (lower_reduction_clauses): Pass OMP_CLAUSE_PRIVATE - as last argument to build_outer_var_ref for pointer bases of array - section reductions. - -2017-05-19 Martin Sebor - - * print-tree.c (print_node): Print DECL_READ_P flag. - -2017-05-22 Jan Hubicka - - * Makefile.in: Add ipa-fnsummary.o and ipa-fnsummary.h - * auto-profile.c: Replace ipa-inline.h by ipa-fnsummary.h - * cgraph.c: Likewise. - * cgraphunit.c: Likewise. - * gengtype.c: Likewise. - * ipa-cp.c: Likewise. - * ipa-devirt.c: Likewise. - * ipa-icf.c: Likewise. - * ipa-predicate.c: Likewise. - * ipa-profile.c: Likewise. - * ipa-prop.c: Likewise. - * ipa-split.c: Likewise. - * ipa.c: Likewise. - * ipa-inline-analysis.c (inline_summaries, ipa_call_summaries, - edge_predicate_pool, dump_inline_hints, - inline_summary::account_size_time, redirect_to_unreachable, - edge_set_predicate, set_hint_predicate, - evaluate_conditions_for_known_args, evaluate_properties_for_edge, - inline_summary_alloc, ipa_call_summary::reset, inline_summary::reset, - inline_summary_t::remove, remap_hint_predicate_after_duplication, - inline_summary_t::duplicate, ipa_call_summary_t::duplicate, - ipa_call_summary_t::remove, initialize_growth_caches, - free_growth_caches, dump_ipa_call_summary, dump_inline_summary, - debug_inline_summary, dump_inline_summaries, initialize_inline_failed, - mark_modified, unmodified_parm_1, unmodified_parm, - unmodified_parm_or_parm_agg_item, eliminated_by_inlining_prob, - set_cond_stmt_execution_predicate, set_switch_stmt_execution_predicate, - compute_bb_predicates, will_be_nonconstant_expr_predicate, - will_be_nonconstant_predicate, record_modified_bb_info, - get_minimal_bb, record_modified, param_change_prob, - phi_result_unknown_predicate, predicate_for_phi_result, - array_index_predicate, clobber_only_eh_bb_p, fp_expression_p, - estimate_function_body_sizes, compute_inline_parameters, - compute_inline_parameters_for_curren, pass_data_inline_parameters, - estimate_node_size_and_time, estimate_ipcp_clone_size_and_time, - inline_update_callee_summaries, remap_edge_change_prob, - remap_edge_summaries, remap_hint_predicate, inline_merge_summary, - inline_update_overall_summary, inline_indirect_intraprocedural_analysis, - inline_analyze_function, inline_summary_t::insert, - inline_generate_summary, read_ipa_call_summary, inline_read_section, - inline_read_summary, write_ipa_call_summary, inline_write_summary, - inline_free_summary): Move to ipa-fnsummary.h - (predicate_t): Remove. - * ipa-fnsummary.c: New file. - * ipa-inline.h: Do not include sreal.h and ipa-predicate.h - (enum inline_hints_vals, inline_hints, agg_position_info, - INLINE_SIZE_SCALE, size_time_entry, inline_summary, inline_summary_t, - inline_summaries, ipa_call_summary, ipa_call_summary_t, - ipa_call_summaries, debug_inline_summary, dump_inline_summaries, - dump_inline_summary, dump_inline_hints, inline_generate_summary, - inline_read_summary, inline_write_summary, inline_free_summary, - inline_analyze_function, initialize_inline_failed, - inline_merge_summary, inline_update_overall_summary, - compute_inline_parameters): Move to ipa-fnsummary.h - * ipa-fnsummary.h: New file. - * ipa-inline-transform.h: Include ipa-inline.h. - * ipa-inline.c: LIkewise. - -2017-05-22 Jan Hubicka - - * ipa-inline.c (edge_badness): Use inlined_time instead of - inline_summaries->get. - -2017-05-22 Jan Hubicka - - * ipa-inline.c (edge_badness): Use estimate_size_after_inlining. - -2017-05-22 Nathan Sidwell - - * doc/invoke.texi (fdump-translation-unit): Delete documentation. - (fdump-lang): Document 'raw' option. - * dumpfile.h (TDI_tu): Delete. - * dumpfile.c (dump_files): Remove translation-unit. - (FIRST_AUTO_NUMBERED_DUMP): Decrement. - -2017-05-22 Georg-Johann Lay - - * config/avr/t-avr (AWK) [t-multilib]: Remove "-v FORMAT=Makefile" - command option from $(AWK) call. - * config/avr/genmultilib.awk: Simplify and rewrite so that it - generates MULTILIB_REQUIRED instead of MULTILIB_EXCEPTIONS. - [FORMAT]: Remove handling of variable. - * config/avr/t-multilib: Regenerate. - -2017-05-22 Jan Hubicka - - * ipa-inline-analysis.c (inline_summary::reset): Do not reset - self_time. - (dump_inline_summary): Do not print self_time. - (estimate_function_body_sizes): Do not set self_time. - (compute_inline_parameters): Likewise. - (inline_read_section, inline_write_summary): Do not stream self_time. - * ipa-inline.h (inline_summary): Drop self_time. - -2017-05-22 Jan Hubicka - - * ipa-inline-analysis.c (account_size_time): Rename to ... - (inline_summary::account_size_time): ... this one. - (reset_ipa_call_summary): Turn to ... - (ipa_call_summary::reset): ... this one. - (reset_inline_summary): Turn to ... - (inline_summary::reset): ... this one. - (inline_summary_t::remove): Update. - (inline_summary_t::duplicate): Update. - (ipa_call_summary_t::remove): Update. - (dump_inline_summary): Update. - (estimate_function_body_sizes): Update. - (compute_inline_parameters): Update. - (estimate_node_size_and_time): Update. - (inline_merge_summary): Update. - (inline_update_overall_summary): Update. - (inline_read_section): Update. - (inline_write_summary): Update. - * ipa-inline.h (inline_summary): Rename entry to size_time_table; - add account_size_time and reset member functions. - (ipa_call_summary): Add reset function. - * ipa-predicate.h (predicate::operator &): Constify. - -2017-05-22 Richard Biener - - * df-scan.c (df_insn_refs_verify): Speedup when not verifying. - -2017-05-19 Jason Merrill - - * tree.c (make_tree_vec_stat, grow_tree_vec_stat): Use size_t. - -2017-05-19 Marek Polacek - - PR sanitizer/80800 - * fold-const.c (extract_muldiv_1) : Add - TYPE_OVERFLOW_WRAPS checks. - -2017-05-19 Thomas Schwinge - - * tree-core.h (enum omp_clause_default_kind): Add - "OMP_CLAUSE_DEFAULT_PRESENT". - * tree-pretty-print.c (dump_omp_clause): Handle it. - * gimplify.c (enum gimplify_omp_var_data): Add - "GOVD_MAP_FORCE_PRESENT". - (gimplify_adjust_omp_clauses_1): Map it to - "GOMP_MAP_FORCE_PRESENT". - (oacc_default_clause): Handle "OMP_CLAUSE_DEFAULT_PRESENT". - - * gimplify.c (oacc_default_clause): Clarify. - -2017-05-19 Nathan Sidwell - - LANG_HOOK_REGISTER_DUMPS - * toplev.c (general_init): Call register dump lang hook. - * doc/invoke.texi: Document -fdump-lang option family. - * dumpfile.c (dump_files): Remove class dump here. - (FIRST_AUTO_NUMBERED_DUMP): Adjust. - * dumpfile.h (tree_dump_index): Remove TDI_class. - * langhooks-def.h (lhd_register_dumps): Declare. - (LANG_HOOKS_REGISTER_DUMPS): Define. - (LANG_HOOKS_INITIALIZER): Add it. - * langhooks.c (lhd_register_dumps): Define. - * langhooks.h (struct lang_hooks): Add register_dumps. - -2017-05-19 Nathan Sidwell - - * context.h (context::set_passes): New. - * context.c (context::context): Do not create pass manager. - * toplev.c (general_init): Create pass manager here. - -2017-05-19 Segher Boessenkool - - * config/rs6000/rs6000.md (splitter to load of -1 and mask): Don't - use this splitter if two add or or instructions would also work for - the constant we want to generate. - -2017-05-19 Richard Biener - - PR build/80821 - * genmatch.c (dt_node::gen_kids_1): Add missing scope around - predicate evaluation. - -2017-05-19 Jan Hubicka - - * ipa-inline.h (ipa_call_summary): Turn sizes into signed; - add ctor. - * ipa-inline.c (want_inline_small_function_p): Do not cast to - unsigned. - -2017-05-19 Jan Hubicka - - * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list, - inline_edge_removal_hook, inline_edge_duplication_hook): Remove. - (inline_edge_summary_vec): Turn into ... - (ipa_call_summaries): ... this one. - (redirect_to_unreachable, edge_set_predicate, - evaluate_properties_for_edge, inline_summary_alloc, - reset_ipa_call_summary, reset_inline_summary, - inline_summary_t::duplicate): Update. - (inline_edge_duplication_hook): Turn to ... - (ipa_call_summary_t::duplicate): ... this one. - (inline_edge_removal_hook): Turn to ... - (ipa_call_summary_t::remove): ... this one. - (dump_inline_edge_summary): Turn to ... - (dump_ipa_call_summary): ... this one. - (estimate_function_body_sizes): Update. - (inline_update_callee_summaries): Update. - (remap_edge_change_prob): Update. - (remap_edge_summaries): Update. - (inline_merge_summary): Update. - (do_estimate_edge_time): Update. - (inline_generate_summary): Update. - (inline_read_section): Update. - (inline_read_summary): Update. - (inline_free_summary): Update. - * ipa-inline.c (can_inline_edge_p): Update. - (compute_inlined_call_time): Update. - (want_inline_small_function_p): Update. - (edge_badness): Update. - (early_inliner): Update. - * ipa-inline.h (inline_edge_summary): Turn to ... - (ipa_call_summary): ... this one. - (ipa_call_summary_t): New class. - (inline_edge_summary_t, inline_edge_summary_vec): Remove. - (ipa_call_summaries): New. - (inline_edge_summary): Remove. - (estimate_edge_growth): Update. - * ipa-profile.c (ipa_propagate_frequency_1): Update. - * ipa-prop.c (ipa_make_edge_direct_to_target): Update. - * ipa-split.c (execute_split_functions): Update. - * ipa.c (symbol_table::remove_unreachable_nodes): Update. - -2017-05-19 Richard Biener - - PR middle-end/80764 - * cfgexpand.c (expand_gimple_cond): Fix loop fixup. - -2017-05-18 Segher Boessenkool - - * config/rs6000/rs6000.c (struct machine_function): Add field - fpr_is_wrapped_separately. - (rs6000_get_separate_components): Use 64 components. Handle the - new FPR components. - (rs6000_components_for_bb): Handle the FPR components. - (rs6000_emit_prologue_components): Handle the FPR components. - (rs6000_emit_epilogue_components): Handle the FPR components. - (rs6000_set_handled_components): Handle the FPR components. - (rs6000_emit_prologue): Don't output prologue code for those FPRs - that are already separately shrink-wrapped. - (rs6000_emit_epilogue): Don't output epilogue code for those FPRs - that are already separately shrink-wrapped. - -2017-05-18 Michael Meissner - - PR target/80510 - * config/rs6000/predicates.md (simple_offsettable_mem_operand): - New predicate. - - * config/rs6000/rs6000.md (ALTIVEC_DFORM): New iterator. - (define_peephole2 for Altivec d-form load): Add peepholes to catch - cases where the register allocator uses a move and an offsettable - memory operation to/from a FPR register on ISA 2.06/2.07. - (define_peephole2 for Altivec d-form store): Likewise. - -2017-05-18 Uros Bizjak - - PR target/80799 - * config/i386/mmx.md (*mov_internal): Enable - alternatives 11, 12, 13 and 14 also for 32bit targets. - Remove alternatives 15, 16, 17 and 18. - * config/i386/sse.md (vec_concatv2di): Change - alternative (!x, *y) to (x, ?!*Yn). - -2017-05-18 Paolo Carlini - - * dumpfile.h (enum dump_kind): Remove stray comma. - -2017-05-18 Jan Hubicka - - * Makefile.in: Add ipa-predicate.o and ipa-predicate.h - * ipa-inline-analysis.c (NUM_CONDITIONS): turn into - predicate::num_conditions - (IS_NOT_CONSTANT): turn into predicate::is_not_constant. - (CHANGED): turn into predicate::changed. - (agg_position_info): Move to ipa-predicate.h - (add_condition, predicate::add_clause, predicate::operator &=, - predicate::or_with, predicate::evaluate, predicate::probability, - dump_condition, dump_clause, predicate::dump, - predicate::remap_after_duplication, predicate::remap_after_inlining, - predicate::stream_in, predicate::stream_out): Move to ipa-predicate.c - (evaluate_conditions_for_known_args): Update. - (set_cond_stmt_execution_predicate): Update. - * ipa-inline.h: Include ipa-predicate.h - (condition, inline_param_summary, conditions, agg_position_info, - predicate): Move to ipa-predicate.h - * ipa-predicate.c: New file. - * ipa-predicate.h: New file. - -2017-05-18 Wilco Dijkstra - - * final.c (leaf_function_p): Check we are not in a sequence. - -2017-05-18 Martin Liska - - * cfgrtl.c (rtl_verify_edges): Remove usage of TDF_RTL. - * dumpfile.c (dump_register): Use new enum dump_kind. - (get_dump_file_name): Likewise. - (dump_enable_all): Likewise. - (dump_switch_p_1): Likewise. - (enable_rtl_dump_file): Remove usage of TDF_RTL. - * dumpfile.h (enum dump_kind): New enum type. - (struct dump_file_info): Create constructor and - format fields and comments. - * passes.c (pass_manager::register_one_dump_file): - Use num dump_kind. - * statistics.c (statistics_early_init): Likewise. - * tree-ssa-loop-prefetch.c (dump_mem_details): Replace - TDF_TREE with TDF_SLIM. - (gather_memory_references_ref): Likewise. - -2017-05-18 Martin Liska - - * vec.h (struct vnull): Use it. - -2017-05-18 Jan Hubicka - - * ipa-inline-analysis.c (predicate_conditions): Move to ipa-inline.h - (true_predicate, false_predicate, true_predicate_p, - false_predicate_p): Remove. - (single_cond_predicate, not_inlined_predicate): Turn to member function - in ipa-inline.h - (add_condition): Update. - (add_clause): Turn to... - (predicate::add_clause): ... this one; update; allow passing NULL - as parameter. - (and_predicates): Turn to ... - (predicate::operator &=): ... this one. - (predicates_equal_p): Move to predicate::operator == in ipa-inline.h - (or_predicates): Turn to ... - (predicate::or_with): ... this one. - (evaluate_predicate): Turn to ... - (predicate::evaluate): ... this one. - (predicate_probability): Turn to ... - (predicate::probability): ... this one. - (dump_condition): Update. - (dump_predicate): Turn to ... - (predicate::dump): ... this one. - (account_size_time): Update. - (edge_set_predicate): Update. - (set_hint_predicate): UPdate. - (evaluate_conditions_for_known_args): Update. - (evaluate_properties_for_edge): Update. - (remap_predicate_after_duplication): Turn to... - (predicate::remap_after_duplication): ... this one. - (remap_hint_predicate_after_duplication): Update. - (inline_summary_t::duplicate): UPdate. - (dump_inline_edge_summary): Update. - (dump_inline_summary): Update. - (set_cond_stmt_execution_predicate): Update. - (set_switch_stmt_execution_predicate): Update. - (compute_bb_predicates): Update. - (will_be_nonconstant_expr_predicate): Update. - (will_be_nonconstant_predicate): Update. - (phi_result_unknown_predicate): Update. - (predicate_for_phi_result): Update. - (array_index_predicate): Update. - (estimate_function_body_sizes): Update. - (estimate_node_size_and_time): Update. - (estimate_ipcp_clone_size_and_time): Update. - (remap_predicate): Rename to ... - (predicate::remap_after_inlining): ... this one. - (remap_hint_predicate): Update. - (inline_merge_summary): Update. - (inline_update_overall_summary): Update. - (estimate_size_after_inlining): Update. - (read_predicate): Rename to ... - (predicate::stream_in): ... this one. - (read_inline_edge_summary): Update. - (write_predicate): Rename to ... - (predicate::stream_out): ... this one. - (write_inline_edge_summary): Update. - * ipa-inline.h (MAX_CLAUSES): Turn to predicate::max_clauses. - (clause_t): Turn to uint32_t - (predicate): Turn to class; implement constructor and operators - ==, !=, & - (size_time_entry): Update. - (inline_summary): Update. - (inline_edge_summary): Update. - -2017-05-18 Marc Glisse - - * fold-const.c (fold_binary_loc): Move transformation... - * match.pd (C - X CMP X): ... here. - -2017-05-18 Sheldon Lobo - - * config/sparc/sparc.c (sparc_option_override): Set function - alignment for -mcpu=niagara7 to 64 to match the I$ line. - * config/sparc/sparc.h (BRANCH_COST): Set the SPARC M7 branch - latency to 1. - * config/sparc/sparc.h (BRANCH_COST): Set the SPARC T4 branch - latency to 2. - * config/sparc/sol2.h: Fix a ASM_CPU32_DEFAULT_SPEC typo. - -2017-05-18 Marek Polacek - - PR sanitizer/80797 - * ubsan.c (instrument_null): Unwrap ADDR_EXPRs. - (pass_ubsan::execute): Call gimple_assign_single_p instead of - gimple_assign_load_p. - -2017-05-17 Segher Boessenkool - - PR middle-end/80692 - * real.c (do_compare): Give decimal_do_compare preference over - comparing just the signs. - -2017-05-17 Uros Bizjak - - * doc/md.texi (Canonicalization of Instructions): Describe the - canonical form of instructions that inherently set a condition - code register. - -2017-05-17 Peter Bergner - - PR middle-end/80775 - * tree-cfg.c: Move deletion of unreachable case statements to after - the merging of consecutive case labels. - -2017-05-17 Thomas Preud'homme - - * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Refer - readers to __gnu_cmse_nonsecure_call libcall for saving, clearing and - restoring of callee-saved registers. - -2017-05-17 Eric Botcazou - - * compare-elim.c (equivalent_reg_at_start): Adjust outdated comment. - * config/visium/visium.c (single_set_and_flags): Likewise. - * config/visium/visium.md (Substitutions): Likewise. - -2017-05-17 Martin Liska - - * cfg.c: Introduce dump_flags_t type and - use it instead of int type. - * cfg.h: Likewise. - * cfghooks.c: Likewise. - * cfghooks.h (struct cfg_hooks): Likewise. - * cfgrtl.c: Likewise. - * cfgrtl.h: Likewise. - * cgraph.c (cgraph_node::get_body): Likewise. - * coretypes.h: Likewise. - * domwalk.c: Likewise. - * domwalk.h: Likewise. - * dumpfile.c (struct dump_option_value_info): Likewise. - (dump_enable_all): Likewise. - (dump_switch_p_1): Likewise. - (opt_info_switch_p): Likewise. - * dumpfile.h (enum tree_dump_index): Likewise. - (struct dump_file_info): Likewise. - * genemit.c: Likewise. - * generic-match-head.c: Likewise. - * gengtype.c (open_base_files): Likewise. - * gimple-pretty-print.c: Likewise. - * gimple-pretty-print.h: Likewise. - * graph.c (print_graph_cfg): Likewise. - * graphite-scop-detection.c (dot_all_sese): Likewise. - * ipa-devirt.c (build_type_inheritance_graph): Likewise. - * loop-unroll.c (report_unroll): Likewise. - * passes.c (pass_manager::register_one_dump_file): Likewise. - * print-tree.c: Likewise. - * statistics.c: Likewise. - * tree-cfg.c: Likewise. - * tree-cfg.h: Likewise. - * tree-dfa.c: Likewise. - * tree-dfa.h: Likewise. - * tree-dump.c (dump_function): Likewise. - * tree-dump.h (struct dump_info): Likewise. - * tree-pretty-print.c: Likewise. - * tree-pretty-print.h: Likewise. - * tree-ssa-live.c: Likewise. - * tree-ssa-live.h: Likewise. - * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise. - * tree-vect-loop.c: Likewise. - * tree-vect-slp.c: Likewise. - -2017-05-16 James Greenhalgh - Bill Schmidt - - PR tree-optimization/80457 - * tree-vect-stmts.c (vect_model_simple_cost): Model the cost - of all arguments to a statement as scalar_to_vec operations. - (vectorizable_call): Adjust call to vect_model_simple_cost for - new parameter. - (vectorizable_conversion): Likewise. - (vectorizable_assignment): Likewise. - (vectorizable_shift): Likewise. - (vectorizable_operation): Likewise. - (vectorizable_comparison): Likewise. - (vect_is_simple_cond): Record the def types for operands. - (vectorizable_condition): Likewise, call vect_model_simple_cost. - * tree-vectorizer.h (vect_model_simple_cost): Add new parameter - for statement argument count. - -2017-05-16 Carl Love - - * config/rs6000/rs6000-c: Add support for built-in functions - vector unsigned long long vec_bperm (vector unsigned long long, - vector unsigned char) - vector signed long long vec_mule (vector signed int, - vector signed int) - vector unsigned long long vec_mule (vector unsigned int, - vector unsigned int) - vector signed long long vec_mulo (vector signed int, - vector signed int) - vector unsigned long long vec_mulo (vector unsigned int, - vector unsigned int) - vector signed char vec_sldw (vector signed char, - vector signed char, - const int) - vector unsigned char vec_sldw (vector unsigned char, - vector unsigned char, - const int) - vector signed short vec_sldw (vector signed short, - vector signed short, - const int) - vector unsigned short vec_sldw (vector unsigned short, - vector unsigned short, - const int) - vector signed int vec_sldw (vector signed int, - vector signed int, - const int) - vector unsigned int vec_sldw (vector unsigned int, - vector unsigned int, - const int) - vector signed long long vec_sldw (vector signed long long, - vector signed long long, - const int) - vector unsigned long long vec_sldw (vector unsigned long long, - vector unsigned long long, - const int) - * config/rs6000/rs6000-c: Add support for built-in functions - * config/rs6000/rs6000-builtin.def: Add definition for SLDW. - * config/rs6000/altivec.h: Add defintion for vec_sldw. - * doc/extend.texi: Update the built-in documentation for the - new built-in functions. - -2017-05-16 Marek Polacek - - PR sanitizer/80536 - PR sanitizer/80386 - * tree.c (save_expr): Don't fold the expression. - -2017-05-16 Uros Bizjak - - * config/i386/i386.md (*movsi_internal): Split (?rm,*y) alternative - to (?r,*Yn) and (?m,*y) alternatives, and (?*y,rm) to (?*Ym,r) - and (?*y,m). Update insn attributes. - -2017-05-16 Martin Liska - - * cgraph.c (cgraph_edge::resolve_speculation): Add default value for - flags argument of print_gimple_stmt, print_gimple_expr, - print_generic_stmt and print_generic_expr. - * cgraphclones.c (symbol_table::materialize_all_clones): Likewise. - * coretypes.h: Likewise. - * except.c (dump_eh_tree): Likewise. - * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise. - * gimple-pretty-print.h: Likewise. - * gimple-ssa-backprop.c (dump_usage_prefix): Likewise. - (backprop::push_to_worklist): Likewise. - (backprop::pop_from_worklist): Likewise. - (backprop::process_use): Likewise. - (backprop::intersect_uses): Likewise. - (note_replacement): Likewise. - * gimple-ssa-store-merging.c - (pass_store_merging::terminate_all_aliasing_chains): Likewise. - (imm_store_chain_info::coalesce_immediate_stores): Likewise. - (pass_store_merging::execute): Likewise. - * gimple-ssa-strength-reduction.c (dump_candidate): Likewise. - (ssa_base_cand_dump_callback): Likewise. - (dump_incr_vec): Likewise. - (replace_refs): Likewise. - (replace_mult_candidate): Likewise. - (create_add_on_incoming_edge): Likewise. - (create_phi_basis): Likewise. - (insert_initializers): Likewise. - (all_phi_incrs_profitable): Likewise. - (introduce_cast_before_cand): Likewise. - (replace_one_candidate): Likewise. - * gimplify.c (gimplify_expr): Likewise. - * graphite-isl-ast-to-gimple.c (is_valid_rename): Likewise. - (set_rename): Likewise. - (rename_uses): Likewise. - (copy_loop_phi_nodes): Likewise. - (add_close_phis_to_merge_points): Likewise. - (copy_loop_close_phi_args): Likewise. - (copy_cond_phi_args): Likewise. - (graphite_copy_stmts_from_block): Likewise. - (translate_pending_phi_nodes): Likewise. - * graphite-poly.c (print_pdr): Likewise. - (dump_gbb_cases): Likewise. - (dump_gbb_conditions): Likewise. - (print_scop_params): Likewise. - * graphite-scop-detection.c (build_cross_bb_scalars_def): Likewise. - (build_cross_bb_scalars_use): Likewise. - (gather_bbs::before_dom_children): Likewise. - * hsa-dump.c (dump_hsa_immed): Likewise. - * ipa-cp.c (print_ipcp_constant_value): Likewise. - (get_replacement_map): Likewise. - * ipa-inline-analysis.c (dump_condition): Likewise. - (estimate_function_body_sizes): Likewise. - * ipa-polymorphic-call.c (check_stmt_for_type_change): Likewise. - (ipa_polymorphic_call_context::get_dynamic_type): Likewise. - * ipa-prop.c (ipa_dump_param): Likewise. - (ipa_print_node_jump_functions_for_edge): Likewise. - (ipa_modify_call_arguments): Likewise. - (ipa_modify_expr): Likewise. - (ipa_dump_param_adjustments): Likewise. - (ipa_dump_agg_replacement_values): Likewise. - (ipcp_modif_dom_walker::before_dom_children): Likewise. - * ipa-pure-const.c (check_stmt): Likewise. - (pass_nothrow::execute): Likewise. - * ipa-split.c (execute_split_functions): Likewise. - * omp-offload.c (dump_oacc_loop_part): Likewise. - (dump_oacc_loop): Likewise. - * trans-mem.c (tm_log_emit): Likewise. - (tm_memopt_accumulate_memops): Likewise. - (dump_tm_memopt_set): Likewise. - (dump_tm_memopt_transform): Likewise. - * tree-cfg.c (gimple_verify_flow_info): Likewise. - (print_loop): Likewise. - * tree-chkp-opt.c (chkp_print_addr): Likewise. - (chkp_gather_checks_info): Likewise. - (chkp_get_check_result): Likewise. - (chkp_remove_check_if_pass): Likewise. - (chkp_use_outer_bounds_if_possible): Likewise. - (chkp_reduce_bounds_lifetime): Likewise. - * tree-chkp.c (chkp_register_addr_bounds): Likewise. - (chkp_mark_completed_bounds): Likewise. - (chkp_register_incomplete_bounds): Likewise. - (chkp_mark_invalid_bounds): Likewise. - (chkp_maybe_copy_and_register_bounds): Likewise. - (chkp_build_returned_bound): Likewise. - (chkp_get_bound_for_parm): Likewise. - (chkp_build_bndldx): Likewise. - (chkp_get_bounds_by_definition): Likewise. - (chkp_generate_extern_var_bounds): Likewise. - (chkp_get_bounds_for_decl_addr): Likewise. - * tree-chrec.c (chrec_apply): Likewise. - * tree-data-ref.c (dump_data_reference): Likewise. - (dump_subscript): Likewise. - (dump_data_dependence_relation): Likewise. - (analyze_overlapping_iterations): Likewise. - * tree-inline.c (expand_call_inline): Likewise. - (tree_function_versioning): Likewise. - * tree-into-ssa.c (dump_defs_stack): Likewise. - (dump_currdefs): Likewise. - (dump_names_replaced_by): Likewise. - (dump_update_ssa): Likewise. - (update_ssa): Likewise. - * tree-object-size.c (pass_object_sizes::execute): Likewise. - * tree-parloops.c (build_new_reduction): Likewise. - (try_create_reduction_list): Likewise. - (ref_conflicts_with_region): Likewise. - (oacc_entry_exit_ok_1): Likewise. - (oacc_entry_exit_single_gang): Likewise. - * tree-pretty-print.h: Likewise. - * tree-scalar-evolution.c (set_scalar_evolution): Likewise. - (get_scalar_evolution): Likewise. - (add_to_evolution): Likewise. - (get_loop_exit_condition): Likewise. - (analyze_evolution_in_loop): Likewise. - (analyze_initial_condition): Likewise. - (analyze_scalar_evolution): Likewise. - (instantiate_scev): Likewise. - (number_of_latch_executions): Likewise. - (gather_chrec_stats): Likewise. - (final_value_replacement_loop): Likewise. - (scev_const_prop): Likewise. - * tree-sra.c (dump_access): Likewise. - (disqualify_candidate): Likewise. - (create_access): Likewise. - (reject): Likewise. - (maybe_add_sra_candidate): Likewise. - (create_access_replacement): Likewise. - (analyze_access_subtree): Likewise. - (analyze_all_variable_accesses): Likewise. - (sra_modify_assign): Likewise. - (initialize_constant_pool_replacements): Likewise. - (find_param_candidates): Likewise. - (decide_one_param_reduction): Likewise. - (replace_removed_params_ssa_names): Likewise. - * tree-ssa-ccp.c (ccp_fold_stmt): Likewise. - * tree-ssa-copy.c (dump_copy_of): Likewise. - (copy_prop_visit_cond_stmt): Likewise. - * tree-ssa-dce.c (mark_operand_necessary): Likewise. - * tree-ssa-dom.c (pass_dominator::execute): Likewise. - (record_equivalences_from_stmt): Likewise. - * tree-ssa-dse.c (compute_trims): Likewise. - (delete_dead_call): Likewise. - (delete_dead_assignment): Likewise. - * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Likewise. - (forward_propagate_into_cond): Likewise. - (pass_forwprop::execute): Likewise. - * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise. - * tree-ssa-loop-im.c (invariantness_dom_walker::before_dom_children): - Likewise. - (move_computations_worker): Likewise. - (execute_sm): Likewise. - * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Likewise. - (remove_exits_and_undefined_stmts): Likewise. - (remove_redundant_iv_tests): Likewise. - * tree-ssa-loop-ivopts.c (dump_use): Likewise. - (adjust_iv_update_pos): Likewise. - * tree-ssa-math-opts.c (bswap_replace): Likewise. - * tree-ssa-phiopt.c (factor_out_conditional_conversion): Likewise. - (value_replacement): Likewise. - * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise. - * tree-ssa-pre.c (print_pre_expr): Likewise. - (get_representative_for): Likewise. - (create_expression_by_pieces): Likewise. - (insert_into_preds_of_block): Likewise. - (eliminate_insert): Likewise. - (eliminate_dom_walker::before_dom_children): Likewise. - (eliminate): Likewise. - (remove_dead_inserted_code): Likewise. - * tree-ssa-propagate.c (substitute_and_fold): Likewise. - * tree-ssa-reassoc.c (get_rank): Likewise. - (eliminate_duplicate_pair): Likewise. - (eliminate_plus_minus_pair): Likewise. - (eliminate_not_pairs): Likewise. - (undistribute_ops_list): Likewise. - (eliminate_redundant_comparison): Likewise. - (update_range_test): Likewise. - (optimize_range_tests_var_bound): Likewise. - (optimize_vec_cond_expr): Likewise. - (rewrite_expr_tree): Likewise. - (rewrite_expr_tree_parallel): Likewise. - (linearize_expr): Likewise. - (break_up_subtract): Likewise. - (linearize_expr_tree): Likewise. - (attempt_builtin_powi): Likewise. - (attempt_builtin_copysign): Likewise. - (transform_stmt_to_copy): Likewise. - (transform_stmt_to_multiply): Likewise. - (dump_ops_vector): Likewise. - * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Likewise. - (print_scc): Likewise. - (set_ssa_val_to): Likewise. - (visit_reference_op_store): Likewise. - (visit_use): Likewise. - (sccvn_dom_walker::before_dom_children): Likewise. - (run_scc_vn): Likewise. - * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): - Likewise. - (expr_hash_elt::print): Likewise. - (const_and_copies::pop_to_marker): Likewise. - (const_and_copies::record_const_or_copy_raw): Likewise. - * tree-ssa-structalias.c (compute_dependence_clique): Likewise. - * tree-ssa-uninit.c (collect_phi_def_edges): Likewise. - (dump_predicates): Likewise. - (find_uninit_use): Likewise. - (warn_uninitialized_phi): Likewise. - (pass_late_warn_uninitialized::execute): Likewise. - * tree-ssa.c (verify_vssa): Likewise. - (verify_ssa): Likewise. - (maybe_optimize_var): Likewise. - * tree-vrp.c (dump_value_range): Likewise. - (dump_all_value_ranges): Likewise. - (dump_asserts_for): Likewise. - (register_edge_assert_for_2): Likewise. - (vrp_visit_cond_stmt): Likewise. - (vrp_visit_switch_stmt): Likewise. - (vrp_visit_stmt): Likewise. - (vrp_visit_phi_node): Likewise. - (simplify_cond_using_ranges_1): Likewise. - (fold_predicate_in): Likewise. - (evrp_dom_walker::before_dom_children): Likewise. - (evrp_dom_walker::push_value_range): Likewise. - (evrp_dom_walker::pop_value_range): Likewise. - (execute_early_vrp): Likewise. - -2017-05-16 Richard Biener - - * dwarf2out.c (loc_list_from_tree_1): Do not create - DW_OP_GNU_variable_value for DECL_IGNORED_P decls. - -2017-05-16 Richard Biener - - * dwarf2out.c (resolve_variable_value_in_expr): Lookup DIE - just generated. - (note_variable_value_in_expr): If we resolved the decl ref - do not push to the stack. - -2017-05-16 Matthew Wahab - - * config/arm/arm_neon.h (vadd_f16): Use standard arithmetic - operations in fast-math mode. - (vaddq_f16): Likewise. - (vmul_f16): Likewise. - (vmulq_f16): Likewise. - (vsub_f16): Likewise. - (vsubq_f16): Likewise. - * config/arm/neon.md (add3): New. - (sub3): New. - (fma:3): New. Also remove outdated comment. - (mul3): New. - -2017-05-16 Martin Liska - - PR ipa/79849. - PR ipa/79850. - * ipa-devirt.c (warn_types_mismatch): Fix typo. - (odr_types_equivalent_p): Likewise. - -2017-05-15 Sylvestre Ledru - - * plugin.c (try_init_one_plugin): Fix ressource leaks (CID 726637). - -2017-05-15 Uros Bizjak - - PR target/80425 - * config/i386.i386.md (*zero_extendsidi2): Do not penalize - non-interunit SSE move alternatives with '?'. - (zero-extendsidi peephole2): New peephole to skip intermediate - general register in SSE zero-extend sequence. - -2017-05-15 Jeff Law - - * reorg.c (relax_delay_slots): Create a new variable to hold - the temporary target rather than clobbering TARGET_LABEL. - - * config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Add - missing argument to extract_bit_field call. - * config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Likewise. - -2017-05-15 Martin Liska - - PR driver/31468 - * gcc.c (process_command): Do not allow empty argument of -o option. - -2017-05-15 Renlin Li - - * config/aarch64/aarch64-protos.h (aarch64_expand_call): Declare. - * config/aarch64/aarch64.c (aarch64_expand_call): Define. - * config/aarch64/constraints.md (Usf): Add long call check. - * config/aarch64/aarch64.md (call): Use aarch64_expand_call. - (call_value): Likewise. - (sibcall): Likewise. - (sibcall_value): Likewise. - (call_insn): New. - (call_value_insn): New. - (sibcall_insn): Update rtx pattern. - (sibcall_value_insn): Likewise. - (call_internal): Remove. - (call_value_internal): Likewise. - (sibcall_internal): Likewise. - (sibcall_value_internal): Likewise. - (call_reg): Likewise. - (call_symbol): Likewise. - (call_value_reg): Likewise. - (call_value_symbol): Likewise. - -2017-05-14 Krister Walfridsson - - PR target/80600 - * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always add -lgcc. - -2017-05-14 Uros Bizjak - - * config/i386.i386.c (ix86_cc_modes_compatible): CCNOmode is - compatible with CCGOCmode and with CCZmode. - -2017-05-14 Martin Sebor - - PR middle-end/77671 - * gimple-fold.c (gimple_fold_builtin_sprintf): Make extern. - (gimple_fold_builtin_snprintf): Same. - * gimple-fold.h (gimple_fold_builtin_sprintf): Declare. - (gimple_fold_builtin_snprintf): Same. - * gimple-ssa-sprintf.c (get_format_string): Correct the detection - of character types. - (is_call_safe): New function. - (try_substitute_return_value): Call it. - (try_simplify_call): New function. - (pass_sprintf_length::handle_gimple_call): Call it. - -2017-05-14 Martin Sebor - - PR middle-end/80669 - * builtins.c (expand_builtin_stpncpy): Simplify. - -2017-05-14 Daniel Santos - - * config/i386/i386.opt: Add option -mcall-ms2sysv-xlogues. - * config/i386/i386.h - (x86_64_ms_sysv_extra_clobbered_registers): Change type to unsigned. - (NUM_X86_64_MS_CLOBBERED_REGS): New macro. - (struct machine_function): Add new members call_ms2sysv, - call_ms2sysv_pad_in, call_ms2sysv_pad_out and call_ms2sysv_extra_regs. - (struct machine_frame_state): New fields sp_realigned and - sp_realigned_offset. - * config/i386/i386.c - (enum xlogue_stub): New enum. - (enum xlogue_stub_sets): New enum. - (class xlogue_layout): New class. - (struct ix86_frame): New fields stack_realign_allocate_offset, - stack_realign_offset and outlined_save_offset. Modify comments to - detail stack layout when using out-of-line stubs. - (ix86_target_string): Add -mcall-ms2sysv-xlogues option. - (ix86_option_override_internal): Add sorry() for TARGET_SEH and - -mcall-ms2sysv-xlogues. - (stub_managed_regs): New static variable. - (ix86_save_reg): Add new parameter ignore_outlined to optionally omit - registers managed by out-of-line stub. - (disable_call_ms2sysv_xlogues): New function. - (ix86_compute_frame_layout): Modify re-alignment calculations, disable - m->call_ms2sysv when appropriate and compute frame layout for - out-of-line stubs. - (sp_valid_at, fp_valid_at): New inline functions. - (choose_basereg): New function. - (choose_baseaddr): Add align parameter, use choose_basereg and modify - all callers. - (ix86_emit_save_reg_using_mov, ix86_emit_restore_sse_regs_using_mov): - Use align parameter of choose_baseaddr to generated aligned SSE movs - when possible. - (pro_epilogue_adjust_stack): Modify to track - machine_frame_state::sp_realigned. - (ix86_nsaved_regs): Modify to accommodate changes to ix86_save_reg. - (ix86_nsaved_sseregs): Likewise. - (ix86_emit_save_regs): Likewise. - (ix86_emit_save_regs_using_mov): Likewise. - (ix86_emit_save_sse_regs_using_mov): Likewise. - (get_scratch_register_on_entry): Likewise. - (gen_frame_set): New function. - (gen_frame_load): Likewise. - (gen_frame_store): Likewise. - (emit_outlined_ms2sysv_save): Likewise. - (emit_outlined_ms2sysv_restore): Likewise. - (ix86_expand_prologue): Modify stack re-alignment code and call - emit_outlined_ms2sysv_save when appropriate. - (ix86_emit_leave): Clear machine_frame_state::sp_realigned. Add - parameter rtx_insn *insn, which allows the function to be used to only - generate the notes. - (ix86_expand_epilogue): Modify validity checks of frame and stack - pointers, and call emit_outlined_ms2sysv_restore when appropriate. - (ix86_expand_call): Modify to enable m->call_ms2sysv when appropriate. - * config/i386/predicates.md - (save_multiple): New predicate. - (restore_multiple): Likewise. - * config/i386/sse.md - (save_multiple): New pattern. - (save_multiple_realign): Likewise. - (restore_multiple): Likewise. - (restore_multiple_and_return): Likewise. - (restore_multiple_leave_return): Likewise. - * Makefile.in: Export HOSTCXX and HOSTCXXFLAGS to site.exp - -2017-05-14 Julia Koval - - * config/i386/i386-builtin-types.def (VOID_FTYPE_INT_INT64): New type. - * config/i386/i386-builtin.def (__builtin_ia32_xgetbv) - (__builtin_ia32_xsetbv): New builtins. - * config/i386/i386.c (ix86_expand_special_args_builtin): - Process new types. - (ix86_expand_builtin): Special expand for new intrinsics. - * config/i386/i386.md (UNSPECV_XGETBV, UNSPECV_XSETBV): New. - (xsetbv, xsetbv_rex64, xgetbv, xgetbv_rex64): New insn patterns. - * config/i386/xsaveintrin.h (_xsetbv, _getbv): New intrinsics. - -2017-05-13 Trevor Saunders - - * cfganal.c (inverted_post_order_compute): Change argument type - to vec *. - * cfganal.h (inverted_post_order_compute): Adjust prototype. - * df-core.c (rest_of_handle_df_initialize): Adjust. - (rest_of_handle_df_finish): Likewise. - (df_analyze_1): Likewise. - (df_analyze): Likewise. - (loop_inverted_post_order_compute): Change argument to be a vec *. - (df_analyze_loop): Adjust. - (df_get_n_blocks): Likewise. - (df_get_postorder): Likewise. - * df.h (struct df_d): Change field to be a vec. - * lcm.c (compute_laterin): Adjust. - (compute_available): Likewise. - * lra-lives.c (lra_create_live_ranges_1): Likewise. - * tree-ssa-dce.c (remove_dead_stmt): Likewise. - * tree-ssa-pre.c (compute_antic): Likewise. - -2017-05-13 Trevor Saunders - - * cfganal.c (connect_infinite_loops_to_exit): Adjust. - (depth_first_search::depth_first_search): Change structure init - function to this constructor. - (depth_first_search::add_bb): Rename function to this member. - (depth_first_search::execute): Likewise. - (flow_dfs_compute_reverse_finish): Adjust. - -2017-05-13 Trevor Saunders - - * ddg.c (find_nodes_on_paths): Use auto_sbitmap. - (longest_simple_path): Likewise. - * shrink-wrap.c (spread_components): Likewise. - (disqualify_problematic_components): Likewise. - (emit_common_heads_for_components): Likewise. - (emit_common_tails_for_components): Likewise. - (insert_prologue_epilogue_for_components): Likewise. - -2017-05-13 Trevor Saunders - - * tree-ssa-dse.c (dse_dom_walker): Make m_live_byes a - auto_sbitmap. - -2017-05-13 Trevor Saunders - - * df-core.c (df_set_blocks): Start using auto_bitmap. - (df_compact_blocks): Likewise. - * df-problems.c (df_rd_confluence_n): Likewise. - * df-scan.c (df_insn_rescan_all): Likewise. - (df_process_deferred_rescans): Likewise. - (df_update_entry_block_defs): Likewise. - (df_update_exit_block_uses): Likewise. - (df_entry_block_bitmap_verify): Likewise. - (df_exit_block_bitmap_verify): Likewise. - (df_scan_verify): Likewise. - * lra-constraints.c (lra_constraints): Likewise. - (undo_optional_reloads): Likewise. - (lra_undo_inheritance): Likewise. - * lra-remat.c (calculate_gen_cands): Likewise. - (do_remat): Likewise. - * lra-spills.c (assign_spill_hard_regs): Likewise. - (spill_pseudos): Likewise. - * tree-ssa-pre.c (bitmap_set_and): Likewise. - (bitmap_set_subtract_values): Likewise. - -2017-05-13 Trevor Saunders - - * haifa-sched.c (estimate_shadow_tick): Replace manual bitmap - management with auto_bitmap. - (fix_inter_tick): Likewise. - (fix_recovery_deps): Likewise. - * ira.c (add_store_equivs): Likewise. - (find_moveable_pseudos): Likewise. - (split_live_ranges_for_shrink_wrap): Likewise. - * print-rtl.c (rtx_reuse_manager::rtx_reuse_manager): Likewise. - (rtx_reuse_manager::seen_def_p): Likewise. - (rtx_reuse_manager::set_seen_def): Likewise. - * print-rtl.h (class rtx_reuse_manager): Likewise. - -2017-05-13 Trevor Saunders - - * bt-load.c (combine_btr_defs): Use auto_bitmap to manage bitmap - lifetime. - (migrate_btr_def): Likewise. - * cfgloop.c (get_loop_body_in_bfs_order): Likewise. - * df-core.c (loop_post_order_compute): Likewise. - (loop_inverted_post_order_compute): Likewise. - * hsa-common.h: Likewise. - * hsa-gen.c (hsa_bb::~hsa_bb): Likewise. - * init-regs.c (initialize_uninitialized_regs): Likewise. - * ipa-inline.c (resolve_noninline_speculation): Likewise. - (inline_small_functions): Likewise. - * ipa-reference.c (ipa_reference_write_optimization_summary): Likewise. - * ira.c (combine_and_move_insns): Likewise. - (build_insn_chain): Likewise. - * loop-invariant.c (find_invariants): Likewise. - * lower-subreg.c (propagate_pseudo_copies): Likewise. - * predict.c (tree_predict_by_opcode): Likewise. - (predict_paths_leading_to): Likewise. - (predict_paths_leading_to_edge): Likewise. - (estimate_loops_at_level): Likewise. - (estimate_loops): Likewise. - * shrink-wrap.c (try_shrink_wrapping): Likewise. - (spread_components): Likewise. - * tree-cfg.c (remove_edge_and_dominated_blocks): Likewise. - * tree-loop-distribution.c (rdg_build_partitions): Likewise. - * tree-predcom.c (tree_predictive_commoning_loop): Likewise. - * tree-ssa-coalesce.c (coalesce_ssa_name): Likewise. - * tree-ssa-phionlycprop.c (pass_phi_only_cprop::execute): Likewise. - * tree-ssa-pre.c (remove_dead_inserted_code): Likewise. - * tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise. - * tree-ssa-threadupdate.c (compute_path_counts): Likewise. - (mark_threaded_blocks): Likewise. - (thread_through_all_blocks): Likewise. - * tree-ssa.c (verify_ssa): Likewise. - (execute_update_addresses_taken): Likewise. - * tree-ssanames.c (verify_ssaname_freelists): Likewise. - -2017-05-13 Trevor Saunders - - * cfganal.c (mark_dfs_back_edges): Replace manual stack with - auto_vec. - (post_order_compute): Likewise. - (inverted_post_order_compute): Likewise. - (pre_and_rev_post_order_compute_fn): Likewise. - -2017-05-13 Trevor Saunders - - * genrecog.c (int_set::int_set): Explicitly construct our - auto_vec base class. - * vec.h (auto_vec::auto_vec): New constructor. - -2017-05-13 Trevor Saunders - - * bitmap.h (class auto_bitmap): New constructor taking - bitmap_obstack * argument. - -2017-05-13 Trevor Saunders - - * bitmap.h (class auto_bitmap): Change type of m_bits to - bitmap_head, and adjust ctor / dtor and member operators. - -2017-05-13 Uros Bizjak - - * compare-elim.c (equivalent_reg_at_start): Return NULL_RTX - when returned register mode doesn't match original mode. - -2017-05-12 Jeff Law - Jakub Jelinek - - * config/mn10300/mn10300.c (mn10300_match_ccmode): Fix where - we look for cc setter after the compare-elim changes. - * config/mn10300/mn10300.md (addsi3_flags): Fix order of patterns - within the vector to match what compare-elim now expects. - (subsi3_flags, andsi3_flags, iorsi3_flags): Likewise. - (xorsi3_flags, one_cmplsi2_flags): Likewise. - - * config/rx/rx.c (rx_match_ccmode): Fix where we look cc setter - after the compare-elim changes. - * config/rx/rx.md (abssi2_flags): Fix order of patterns within - the vector to match what compare-elim now expects. - (addsi3_flags, adc_flags, addsi3_flags peepholes): Likewise. - (andsi3_flags, negsi2_flags, one_cmplsi2_flags): Likewise. - (iorsi3_flags, rotlsi3_flags, rotrsi3_flags): Likewise. - (ashrsi3_flags, lshrsi3_flags, ashlsi3_flags): Likewise. - (ssaddsi3, subsi3_flags, sbb_flags, xorsi3_flags): Likewise. - - * config/visium/visium.c (single_set_and_flags): Fix where - we look for cc setter after the compare-elim changes. - * config/visium/visium.md (flags_subst_logic): Fix order of patterns - with the vector to match what compare-elim now expects. - (flags_subst_arith, add3_insn_set_carry): Likewise. - (add3_insn_set_overflow, addsi3_insn_set_carry): Likewise. - (addsi3_insn_set_overflow, sub3_insn_set_carry): Likewise. - (sub3_insn_set_overflow, subsi3_insn_set_carry): Likewise. - (subsi3_insn_set_overflow, negsi2_insn_set_carry): Likewise. - (neg2_insn_set_overflow): Likewise. - -2017-05-12 Jim Wilson - - PR middle-end/79794 - * expmed.c (extract_bit_field_1): Add alt_rtl argument. Before - maybe_expand_insn call, set ops[0].target. If still set after call, - set alt_rtl. Add extra arg to recursive calls. - (extract_bit_field): Add alt_rtl argument. Pass to - extract_bit_field. - * expmed.h (extract_bit_field): Fix prototype. - * expr.c (emit_group_load_1, copy_blkmode_from_reg) - (copy_blkmode_to_reg, read_complex_part, store_field): Pass extra NULL - to extract_bit_field_calls. - (expand_expr_real_1): Pass alt_rtl to expand_expr_real instead of 0. - Pass alt_rtl to extract_bit_field calls. - * calls.c (store_unaligned_arguments_into_psuedos) - load_register_parameters): Pass extra NULL to extract_bit_field calls. - * optabs.c (maybe_legitimize_operand): Clear op->target when call - gen_reg_rtx. - * optabs.h (struct expand_operand): Add target bitfield. - -2017-05-12 Uros Bizjak - - * compare-elim.c (try_eliminate_compare): Canonicalize - operation with embedded compare to - [(set (reg:CCM) (compare:CCM (operation) (immediate))) - (set (reg) (operation)]. - - * config/i386/i386.c (TARGET_FLAGS_REGNUM): New define. - -2017-05-12 Uros Bizjak - - PR target/80723 - * config/i386/i386.c (ix86_rtx_cost) [case PLUS]: Ignore the - cost of adding a carry flag for ADC instruction. - [case MINUS]: Ignore the cost of subtracting a carry flag - for SBB instruction. - -2017-05-12 Steven Munroe - - * config.gcc (powerpc*-*-*): Add bmi2intrin.h, bmiintrin.h, - and x86intrin.h - * config/rs6000/bmiintrin.h: New file. - * config/rs6000/bmi2intrin.h: New file. - * config/rs6000/x86intrin.h: New file. - -2017-05-12 Jeff Law - - * tree-vrp.c (vrp_dom_walker::before_dom_children): Push unwinding - markers. - -2017-05-12 Peter Bergner - - PR middle-end/80707 - * tree-cfg.c: Remove cfg edges of unreachable case statements. - -2017-05-12 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for - early expansion of vector divide builtins. - (builtin_function_type): Add VSX_BUILTIN_UDIV_V2DI to the list of - builtins identified as having unsigned arguments. - -2017-05-12 Will Schmidt - - * config/rs6000/rs6000.c (gimple-fold.h): New #include. - (rs6000_gimple_fold_builtin): Add handling for early GIMPLE - expansion of vector logical operations (and, andc, or, xor, - nor, orc, nand). - -2017-05-12 Will Schmidt - - * gimple-fold.c (create_tmp_reg_or_ssa_name): Remove static declaration. - * gimple-fold.h (create_tmp_reg_or_ssa_name): New prototype. - -2017-05-12 Will Schmidt - - * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for - early GIMPLE expansion of vector multiplies. - -2017-05-12 Prakhar Bahuguna - - * config/arm/arm.md (movsi): Add TARGET_32BIT in addition to the - TARGET_HAVE_MOVT conditional. - (movt splitter): Likewise. - -2017-05-12 Richard Biener - - * tree-ssa-sccvn.h (has_VN_INFO): Declare. - * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): - Fold all stmts not inplace. - -2017-05-12 Richard Biener - - PR tree-optimization/80713 - * tree-ssa-pre.c (remove_dead_inserted_code): Clear - inserted_exprs bit for not removed stmts. - -2017-05-12 Thomas Schwinge - - PR middle-end/69921 - * tree-parloops.c (create_parallel_loop): Set "oacc kernels - parallelized" attribute for parallelized OpenACC kernels. - * omp-offload.c (execute_oacc_device_lower): Use it. - - * omp-expand.c (expand_omp_target) : - Set "oacc kernels" attribute. - * omp-general.c (oacc_set_fn_attrib): Remove is_kernel formal - parameter. Adjust all users. - (oacc_fn_attrib_kernels_p): Remove function. - * omp-offload.c (execute_oacc_device_lower): Look for "oacc - kernels" attribute instead of calling oacc_fn_attrib_kernels_p. - * tree-ssa-loop.c (gate_oacc_kernels): Likewise. - * tree-parloops.c (create_parallel_loop): If oacc_kernels_p, - assert "oacc kernels" attribute is set. - -2017-05-11 Carl Love - - * config/rs6000/rs6000-c: Add support for built-in functions - vector unsigned char vec_popcnt (vector signed char) - vector unsigned char vec_popcnt (vector unsigned char) - vector unsigned short vec_popcnt (vector signed short) - vector unsigned short vec_popcnt (vector unsigned short) - vector unsigned int vec_popcnt (vector signed int) - vector unsigned int vec_popcnt (vector unsigned int) - vector unsigned long long vec_popcnt (vector signed long long) - vector unsigned long long vec_popcnt (vector unsigned long long) - vector signed long long vec_slo (vector signed long long, - vector signed char) - vector signed long long vec_slo (vector signed long long, - vector unsigned char) - vector unsigned long long vec_slo (vector unsigned long long, - vector signed char) - vector unsigned long long vec_slo (vector unsigned long long, - vector unsigned char) - * config/rs6000/rs6000-builtin.def: Add definitions for VPOPCNTUB, - VPOPCNTUH, VPOPCNTUW, and VPOPCNTUD overloads. - * config/rs6000/altivec.h: Add define for vec_popcnt, vec_popcntb, - vec_popcnth, vec_popcntw and vec_popcntd built-in functions. - * doc/extend.texi: Update the built-in documentation file for the - new built-in functions. - -2017-05-11 Michael Meissner - - * attribs.h (sorted_attr_string): Move machine independent - functions for target clone support from the i386 port to common - code. Rename ix86_function_versions to common_function_versions. - Rename make_name to make_unique_name. - (common_function_versions): Likewise. - (make_unique_name): Likewise. - (make_dispatcher_decl): Likewise. - (is_function_default_version): Likewise. - * attribs.c (attr_strcmp): Likewise. - (sorted_attr_string): Likewise. - (common_function_versions): Likewise. - (make_unique_name): Likewise. - (make_dispatcher_decl): Likewise. - (is_function_default_version): Likewise. - * config/i386/i386.c (attr_strcmp): Likewise. - (sorted_attr_string): Likewise. - (ix86_function_versions): Likewise. - (make_name): Likewise. - (make_dispatcher_decl): Likewise. - (is_function_default_version): Likewise. - (TARGET_OPTION_FUNCTION_VERSIONS): Update target function hook. - -2017-05-11 Bill Schmidt - - PR target/80695 - * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): - Account for direct move costs for vec_construct of integer - vectors. - -2017-05-11 Uros Bizjak - - PR target/80706 - * config/i386/sync.md (UNSPEC_LDX_ATOMIC): New unspec. - (UNSPEC_STX_ATOMIC): Ditto. - (loaddi_via_sse): New insn. - (storedi_via_sse): Ditto. - (atomic_loaddi_fpu): Emit loaddi_via_sse and storedi_via_sse. - Update corresponding peephole2 patterns. - (atomic_storedi_fpu): Ditto. - -2017-05-11 Julia Koval - - * config/i386/avx512fintrin.h (_mm_mask_rsqrt14_sd) - (_mm_maskz_rsqrt14_sd, _mm_mask_rsqrt14_ss, _mm_maskz_rsqrt14_ss): - New intrinsics. - * config/i386/i386-builtin.def (__builtin_ia32_rsqrt14sd_mask) - (__builtin_ia32_rsqrt14ss_mask): New builtins. - * config/i386/sse.md (rsqrt14__mask): New pattern. - -2017-05-11 Nathan Sidwell - - * graphite-poly.c: Include dumpfile.h. - - * dumpfle.h (dump_function): Declare here ... - * tree-dump.h (dump_function): ... not here. - * dumpfile.c: #include tree-cfg.h. - (dump_function): Move here from ... - * tree-dump.c (dump_function): ... here. - * gimplify.c: #include splay-tree.h, not tree-dump.h. - * graphite-poly.c: Don't include tree-dump.h. - * cgraphclones.c: Include dumpfile.h not tree-dump.h. - * print-tree.c: Likewise. - * stor-layout.c: Likewise. - * tree-nested.c: Likewise. - - * dumpfile.c (dump_start): Use TDF_FLAGS. - (dump_enable_all): Fix TDF_KIND check thinko. - -2017-05-11 Kelvin Nilsen - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - array entries to represent two legal parameterizations of the - overloaded __builtin_cmpb function, as represented by the - P6_OV_BUILTIN_CMPB constant. - (altivec_resolve_overloaded_builtin): Add special case handling - for the __builtin_cmpb function, as represented by the - P6_OV_BUILTIN_CMPB constant. - * config/rs6000/rs6000-builtin.def (BU_P6_2): New macro. - (BU_P6_64BIT_2): New macro. - (BU_P6_OVERLOAD_2): New macro - (CMPB_32): Add 32-bit compare-bytes support for 32-bit only targets. - (CMPB): Add 64-bit compare-bytes support for 32-bit and 64-bit targets. - (CMPB): Add overload support to represent both 32-bit and 64-bit - compare-bytes function. - * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add - support for TARGET_CMPB. - * config/rs6000/rs6000.h: Add support for RS6000_BTM_CMPB. - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add - documentation of the __builtin_cmpb overloaded built-in function. - -2017-05-11 Richard Biener - - PR tree-optimization/80705 - * tree-vect-data-refs.c (vect_analyze_data_refs): DECL_NONALIASED - bases are not vectorizable. - -2017-05-11 Bin Cheng - - * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger - when counting register pressure. - -2017-05-11 Bin Cheng - - * tree-ssa-loop-ivopts.c (compare_cost_pair): New. - (iv_ca_more_deps): Renamed to ... - (iv_ca_compare_deps): ... this. - (iv_ca_extend): Extend iv_ca if NEW_CP is cheaper than OLD_CP. - -2017-05-11 Bin Cheng - - * tree-ssa-loop-ivopts.c (find_interesting_uses): Move inv vars dump - to ... - (determine_group_iv_costs): ... here. - (find_inv_vars_cb): Record inv var if it's not recorded before. - -2017-05-11 Bin Cheng - - * tree-ssa-loop-ivopts.c (allow_ip_end_pos_p): Refine comments. - (get_shiftadd_cost): Ditto. - -2017-05-11 Bin Cheng - - * tree-ssa-address.c: Include header file. - (move_hint_to_base): Return TRUE if BASE_HINT is moved to memory - address. - (add_to_parts): Refactor. - (addr_to_parts): New parameter. Update use of move_hint_to_base. - (create_mem_ref): Update use of addr_to_parts. Re-associate addr - in new order. - -2017-05-11 Bin Cheng - - PR tree-optimization/53090 - * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New enum value - COMP_IV_EXPR_2. - (extract_cond_operands): Detect condition with IV on both sides - and return COMP_IV_EXPR_2. - (find_interesting_uses_cond): Add iv_use for both IVs in condition. - (rewrite_use_compare): Simplify by removing call to function - extract_cond_operands. - -2017-05-11 Bin Cheng - - * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New. - (extract_cond_operands): Detect condition comparing against non- - invariant bound and return appropriate enum value. - (find_interesting_uses_cond): Update use of extract_cond_operands. - Handle its return value accordingly. - (determine_group_iv_cost_cond, rewrite_use_compare): Ditto. - -2017-05-11 Bin Cheng - - * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Re-associate - nonlinear iv_use computation in loop invariant sensitive way. - -2017-05-11 Bin Cheng - - * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): New. - (find_iv_candidates): Call relate_compare_use_with_all_cands. - -2017-05-11 Bin Cheng - - * tree-ssa-loop-ivopts.c (struct iv_cand): New field inv_exprs. - (dump_cand): Support iv_cand.inv_exprs. - (add_candidate_1): Record invariant exprs in iv_cand.inv_exprs - for candidates. - (iv_ca_set_no_cp, iv_ca_set_cp, free_loop_data): Support - iv_cand.inv_exprs. - -2017-05-11 Bin Cheng - - * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Move - from ... - * tree-ssa-address.c (multiplier_allowed_in_address_p): ... to here - as local function. Include necessary header files. - * tree-ssa-loop-ivopts.h (multiplier_allowed_in_address_p): Delete. - -2017-05-11 Bin Cheng - - * tree-ssa-loop-ivopts.c (autoinc_possible_for_pair): Simplify. - -2017-05-11 Bin Cheng - - * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Handle more - operators: TRUNC_DIV_EXPR, BIT_AND_EXPR, BIT_IOR_EXPR, LSHIFT_EXPR, - RSHIFT_EXPR and BIT_NOT_EXPR. - -2017-05-11 Bin Cheng - - * tree-ssa-loop-ivopts.c (get_loop_invariant_expr): Simplify. - (adjust_setup_cost): New parameter supporting round up adjustment. - (struct address_cost_data): Delete. - (force_expr_to_var_cost): Don't bound cost with spill_cost. - (split_address_cost, ptr_difference_cost): Delete. - (difference_cost, compare_aff_trees, record_inv_expr): Delete. - (struct ainc_cost_data): New struct. - (get_address_cost_ainc): New function. - (get_address_cost, get_computation_cost): Reimplement. - (determine_group_iv_cost_address): Record inv_expr for all uses of - a group. - (determine_group_iv_cost_cond): Call get_loop_invariant_expr. - (iv_ca_has_deps): Reimplemented to ... - (iv_ca_more_deps): ... this. Check if NEW_CP introduces more deps - than OLD_CP. - (iv_ca_extend): Call iv_ca_more_deps. - -2017-05-11 Bin Cheng - - * tree-ssa-address.c (struct mem_address): Move to header file. - (valid_mem_ref_p, move_fixed_address_to_symbol): Make it global. - * tree-ssa-address.h (struct mem_address): Move from C file. - (valid_mem_ref_p, move_fixed_address_to_symbol): Declare. - -2017-05-11 Bin Cheng - - * tree-affine.h (aff_combination_type): New interface. - (aff_combination_zero_p): Remove static. - (aff_combination_const_p): New interface. - (aff_combination_singleton_var_p): New interfaces. - -2017-05-11 Richard Biener - - * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): - Skip unreachable blocks and destinations. - (eliminate): Move stmt removal and fixup ... - (fini_eliminate): ... here. Skip inserted exprs. - (pass_pre::execute): Move fini_pre after fini_eliminate. - * tree-ssa-tailmerge.c: Include tree-cfgcleanup.h. - (tail_merge_optimize): Run cleanup_tree_cfg if requested by - PRE to get rid of dead code that has invalid SSA form and - split critical edges again. - -2017-05-11 Bin Cheng - - * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes. - -2017-05-11 Richard Biener - - * passes.c (execute_function_todo): Verify loops if they are - said to be up-to-date. - * cfgexpand.c (pass_expand::execute): Discard loops for -dx. - * trans-mem.c (pass_tm_edges::execute): Mark loops for fixup. - -2017-05-10 John David Anglin - - PR target/80090 - * config/pa/pa.c (pa_assemble_integer): When outputting a SYMBOL_REF, - handle calling assemble_external ourself. - - PR target/79027 - * config/pa/pa.c (pa_cannot_change_mode_class): Reject changes to/from - modes with zero size. Enhance comment. - -2017-05-10 Bill Schmidt - - * config/rs6000/rs6000.c (altivec_init_builtins): Define POWER8 - built-ins for vec_xl and vec_xst with short and char pointer - arguments. - -2017-05-10 Sebastian Peryt - - * config/i386/avx512fintrin.h (_mm_mask_max_round_sd) - (_mm_maskz_max_round_sd, _mm_mask_max_round_ss) - (_mm_maskz_max_round_ss, _mm_mask_min_round_sd) - (_mm_maskz_min_round_sd, _mm_mask_min_round_ss) - (_mm_maskz_min_round_ss): New intrinsics. - * config/i386/i386-builtin-types.def (V2DF, V2DF, V2DF, V2DF, UQI, INT) - (V4SF, V4SF, V4SF, V4SF, UQI, INT): New function type aliases. - * config/i386/i386-builtin.def (__builtin_ia32_maxsd_mask_round) - (__builtin_ia32_maxss_mask_round, __builtin_ia32_minsd_mask_round) - (__builtin_ia32_minss_mask_round): New builtins. - * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT) - (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types. - * config/i386/sse.md (_vm3): - Rename to ... - (_vm3): ... this. - (v\t{%2, %1, %0|%0, %1, %2}): - Change to ... - (v\t{%2, %1, %0|%0, %1, %2}): - ... this. - -2017-05-10 Sebastian Peryt - - * config/i386/avx512fintrin.h (_mm_mask_mul_round_sd) - (_mm_maskz_mul_round_sd, _mm_mask_mul_round_ss) - (_mm_maskz_mul_round_ss, _mm_mask_div_round_sd) - (_mm_maskz_div_round_sd, _mm_mask_div_round_ss) - (_mm_maskz_div_round_ss, _mm_mask_mul_sd, _mm_maskz_mul_sd) - (_mm_mask_mul_ss, _mm_maskz_mul_ss, _mm_mask_div_sd) - (_mm_maskz_div_sd, _mm_mask_div_ss, _mm_maskz_div_ss): New intrinsics. - * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT) - (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases. - * config/i386/i386-builtin.def (__builtin_ia32_divsd_mask_round) - (__builtin_ia32_divss_mask_round, __builtin_ia32_mulsd_mask_round) - (__builtin_ia32_mulss_mask_round): New builtins. - * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT) - (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types. - * config/i386/sse.md (_vm3): - Rename to ... - (_vm3): ... this. - (v\t{%2, %1, %0|%0, %1, %2}): - Change to ... - (v\t{%2, %1, %0|%0, %1, %2}): - ... this. - -2017-05-10 Julia Koval - - * config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d) - (_mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d) - (_mm256_setr_m128i): New intrinsics. - -2017-05-10 Julia Koval - - * config/i386/avx512fintrin.h (_mm_mask_rcp14_sd) - (_mm_maskz_rcp14_sd, _mm_mask_rcp14_ss) - (_mm_maskz_rcp14_ss): New intrinsics. - * config/i386/i386-builtin.def (__builtin_ia32_rcp14sd_mask) - (__builtin_ia32_rcp14ss_mask): New builtins. - * config/i386/sse.md (srcp14_mask): New pattern. - -2017-05-10 Peter Bergner - - PR tree-optimization/51513 - * tree-cfg.c (gimple_seq_unreachable_p): New function. - (assert_unreachable_fallthru_edge_p): Use it. - (group_case_labels_stmt): Likewise. - * tree-cfg.h: Prototype it. - * stmt.c: Include cfghooks.h and tree-cfg.h. - (emit_case_dispatch_table) : New local variable. - Use it to fill dispatch table gaps. - Test for default_label before updating probabilities. - (expand_case) : Remove unneeded initialization. - Test for unreachable default case statement and remove its edge. - Set default_label accordingly. - * tree-ssa-ccp.c (optimize_unreachable): Update comment. - -2017-05-10 Carl Love - - * config/rs6000/rs6000-c: Add support for built-in functions - vector signed char vec_neg (vector signed char) - vector signed short int vec_neg (vector short int) - vector signed int vec_neg (vector signed int) - vector signed long long vec_neg (vector signed long long) - vector float vec_neg (vector float) - vector double vec_neg (vector double) - * config/rs6000/rs6000-builtin.def: Add definitions for NEG function - overload. - * config/rs6000/altivec.h: Add define for vec_neg - * doc/extend.texi: Update the built-in documentation for the - new built-in functions. - -2017-05-10 Prathamesh Kulkarni - - PR tree-optimization/77644 - * match.pd (sqrt(x) cmp sqrt(y) -> x cmp y): New pattern. - -2017-05-10 Nathan Sidwell - - * dumpfile.h (TDI_lang_all): New. - (TDF_KIND): New. Renumber others - (TDF_LANG, TDF_TREE, TDF_RTL, TDF_IPA): Enumerate value, rather - than bits. - * dumpfile.c (dump_files): Mark language dumps as TDF_LANG. add - lang-all. - (get_dump_file_name): Adjust suffix generation. - (dump_enable_all): Use TDF_KIND. - * doc/invoke.texi (-fdump-lang-all): Document. - - * dumpfile.h: Tabify. - -2017-05-10 Wilco Dijkstra - - PR target/80671 - * config/aarch64/cortex-a57-fma-steering.c (merge_forest): - Move member access before delete. - -2017-05-10 Alexandre Oliva - - * tree-inline.c (expand_call_inline): Split block at stmt - before the call. - -2017-05-09 Michael Meissner - - PR target/68163 - * config/rs6000/rs6000.md (f32_lr): Delete mode attributes that - are now unused after splitting mov{sf,sd}_hardfloat. - (f32_lr2): Likewise. - (f32_lm): Likewise. - (f32_lm2): Likewise. - (f32_li): Likewise. - (f32_li2): Likewise. - (f32_lv): Likewise. - (f32_sr): Likewise. - (f32_sr2): Likewise. - (f32_sm): Likewise. - (f32_sm2): Likewise. - (f32_si): Likewise. - (f32_si2): Likewise. - (f32_sv): Likewise. - (f32_dm): Likewise. - (f32_vsx): Likewise. - (f32_av): Likewise. - (mov_hardfloat): Split into separate movsf and movsd pieces. - For movsf, order stores so the VSX stores occur before the GPR - store which encourages the register allocator to use a traditional - FPR instead of a GPR. For movsd, order the stores so that the GPR - store comes before the VSX stores to allow the power6 to work. - This is due to the power6 not having a 32-bit integer store - instruction from a FPR. - (movsf_hardfloat): Likewise. - (movsd_hardfloat): Likewise. - -2017-05-09 Martin Sebor - - PR translation/80280 - * config/sol2-c.c (cmn_err_flag_specs): Initialize new data member - added in r247778. - - PR translation/80280 - * config/i386/msformat-c.c (ms_printf_flag_specs): Initialize new - data member added in r247778. - (ms_scanf_flag_specs, ms_strftime_flag_specs): Same. - -2017-05-09 Nathan Sidwell - - * tree.h (tree_fits_shwi_p, tree_fits_uhwi_p): Unconditionally pure. - - * ipa-devirt.c (default_hash_traits): Skip struct-scope - typedefs. - -2017-05-09 Marek Polacek - - * doc/invoke.texi: Fix typo. - -2017-05-09 Richard Biener - - * tree-vrp.c (vrp_val_is_max): Adjust comment. - (vrp_val_is_min): Likewise. - (set_value_range_to_value): Likewise. - (set_value_range_to_nonnegative): Likewise. - (gimple_assign_nonzero_p): Likewise. - (gimple_stmt_nonzero_p): Likewise. - (vrp_int_const_binop): Likewise. Remove unreachable case. - (adjust_range_with_scev): Adjust comments. - (compare_range_with_value): Likewise. - (extract_range_from_phi_node): Likewise. - (test_for_singularity): Likewise. - -2017-05-09 Richard Biener - - * tree-vrp.c (get_single_symbol): Add assert that we don't - get overflowed constants as invariant part. - (compare_values_warnv): Add comment before the TREE_NO_WARNING - checks. Use wi::cmp instead of recursing for integer constants. - (compare_values): Just ignore whether we assumed undefined - overflow instead of failing the compare. - (extract_range_for_var_from_comparison_expr): Add comment before the - TREE_NO_WARNING sets. - (test_for_singularity): Likewise. - (extract_range_from_comparison): Do not disable optimization - when we assumed undefined overflow. - (extract_range_basic): Remove init of unused var. - -2017-05-09 Richard Biener - - * tree-vrp.c (vrp_int_const_binop): Use wide-ints and simplify. - (extract_range_from_multiplicative_op_1): Adjust. - (extract_range_from_binary_expr_1): Use int_const_binop. - -2017-05-08 Kelvin Nilsen - - PR target/80101 - * config/rs6000/power6.md: Replace store_data_bypass_p calls with - rs6000_store_data_bypass_p in seven define_bypass directives and - in several comments. - * config/rs6000/rs6000-protos.h: Add prototype for - rs6000_store_data_bypass_p function. - * config/rs6000/rs6000.c (rs6000_store_data_bypass_p): New - function implements slightly different (rs6000-specific) semantics - than store_data_bypass_p, returning false rather than aborting - with assertion error when arguments do not satisfy the - requirements of store data bypass. - (rs6000_adjust_cost): Replace six calls of store_data_bypass_p with - rs6000_store_data_bypass_p. - -2017-05-08 Max Filippov - - * config/xtensa/xtensa-protos.h - (xtensa_initial_elimination_offset): New declaration. - * config/xtensa/xtensa.c (xtensa_initial_elimination_offset): - New function. Move its body from the INITIAL_ELIMINATION_OFFSET - macro definition, add case for FRAME_POINTER_REGNUM when - FRAME_GROWS_DOWNWARD. - * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): New macro definition. - (INITIAL_ELIMINATION_OFFSET): Replace body with call to - xtensa_initial_elimination_offset. - -2017-05-08 Nathan Sidwell - - * doc/invoke.texi: Alphabetize -fdump options. - -2017-05-08 Martin Sebor - - PR translation/80280 - * config/sol2-c.c (solaris_pragma_align): Correct quoting. - -2017-05-08 Bernd Edlinger - - * target.def (compute_frame_layout): New optional target hook. - * doc/tm.texi.in (TARGET_COMPUTE_FRAME_LAYOUT): Add hook. - * doc/tm.texi (TARGET_COMPUTE_FRAME_LAYOUT): Add documentation. - * lra-eliminations.c (update_reg_eliminate): Call compute_frame_layout - target hook. - * reload1.c (verify_initial_elim_offsets): Likewise. - * config/arm/arm.c (TARGET_COMPUTE_FRAME_LAYOUT): Define. - (use_simple_return_p): Call arm_compute_frame_layout if needed. - (arm_get_frame_offsets): Split up into this ... - (arm_compute_frame_layout): ... and this function. - -2017-05-08 Richard Sandiford - - * config/aarch64/constraints.md (Usa): New constraint. - * config/aarch64/aarch64.md (*movsi_aarch64, *movdi_aarch64): Use it. - -2017-05-08 Thomas Preud'homme - - * config.gcc (arm*-*-*): Set TM_MULTILIB_CONFIG from - with_multilib_list after it has been checked. - -2017-05-08 Richard Biener - - * tree-ssa-pre.c (bitmap_set_and): Avoid bitmap copy. - (bitmap_set_subtract_values): Likewise. - -2017-05-08 Richard Biener - - * tree-vrp.c (gimple_assign_nonzero_warnv_p): Rename to ... - (gimple_assign_nonzero): ... this and remove strict_overflow_p - argument. - (gimple_stmt_nonzero_warnv_p): Rename to ... - (gimple_stmt_nonzero_p): ... this and remove strict_overflow_p - argument. - (vrp_stmt_computes_nonzero): Remove strict_overflow_p argument. - (extract_range_basic): Adjust, do not disable propagation on - strict overflow sensitive simplification. - (vrp_visit_cond_stmt): Likewise. - -2017-05-05 Jan Hubicka - - * ipa-inline-analysis.c (estimate_function_body_sizes): Recompute - body size unconditionally. - -2017-05-07 Jeff Law - - Revert: - 2017-05-06 Jeff Law - PR tree-optimization/78496 - * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging - code. - - PR tree-optimization/78496 - * tree-vrp.c (simplify_assert_expr_using_ranges): New function. - (simplify_stmt_using_ranges): Call it. - (vrp_dom_walker::before_dom_children): Extract equivalences - from an ASSERT_EXPR with an equality comparison against a - constant. - -2017-05-06 Jeff Law - - PR tree-optimization/78496 - * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging - code. - - PR tree-optimization/78496 - * tree-vrp.c (simplify_assert_expr_using_ranges): New function. - (simplify_stmt_using_ranges): Call it. - (vrp_dom_walker::before_dom_children): Extract equivalences - from an ASSERT_EXPR with an equality comparison against a - constant. - -2017-05-06 Richard Sandiford - - * lra-constraints.c (lra_copy_reg_equiv): New function. - (split_reg): Use it to copy equivalence information from the - original register to the spill register. - -2017-05-06 Richard Sandiford - - PR rtl-optimization/75964 - * simplify-rtx.c (simplify_const_relational_operation): Remove - invalid handling of comparisons of integer ABS. - -2017-05-06 Uros Bizjak - - * config/i386/i386.c (ext_80387_constant_init): Do not explicitly - initialize to zero. - (init_regs): Remove declaration. - (function_arg_advance_32): Initialize error_p as boolean variable. - -2017-05-05 Nathan Sidwell - - * store-motion.c (remove_reachable_equiv_notes): Reformat long - lines. Use for (;;). - -2017-05-05 Bill Schmidt - - * config/rs6000/rs6000.c (rs6000_vect_nonmem): New static var. - (rs6000_init_cost): Initialize rs6000_vect_nonmem. - (rs6000_add_stmt_cost): Update rs6000_vect_nonmem. - (rs6000_finish_cost): Avoid vectorizing simple copy loops with - VF=2 that require versioning. - -2017-05-05 David Malcolm - - * diagnostic.h (CARET_LINE_MARGIN): Convert from macro to const - int. - -2017-05-05 David Malcolm - - * diagnostic.h (diagnostic_override_option_index): Convert from - macro to inline function. - -2017-05-05 David Malcolm - - * diagnostic.c (last_module_changed_p): New function. - (set_last_module): New function. - (diagnostic_report_current_module): Convert macro usage to - the above functions. - * diagnostic.h (diagnostic_context::last_module): Strengthen - from const line_map * to const line_map_ordinary *. - (diagnostic_last_module_changed): Delete macro. - (diagnostic_set_last_module): Delete macro. - -2017-05-05 David Malcolm - - * diagnostic.c (diagnostic_impl): Replace report_diagnostic - with diagnostic_report_diagnostic. - (diagnostic_n_impl_richloc): Likewise. - * diagnostic.h (report_diagnostic): Delete macro. - * rtl-error.c (diagnostic_for_asm): Replace report_diagnostic - with diagnostic_report_diagnostic. - * substring-locations.c (format_warning_va): Likewise. - -2017-05-05 David Malcolm - - * diagnostic.c (diagnostic_report_diagnostic): Eliminate - save/restor of format_spec. Move option-printing code to... - (print_option_information): ...this new function, and - reimplement by simply printing to the pretty_printer, - rather than appending to the format string. - -2017-05-05 David Malcolm - - * diagnostic.c (diagnostic_report_diagnostic): Split out pragma - handling logic into... - (update_effective_level_from_pragmas): ...this new function. - -2017-05-04 Andrew Waterman - - * config/riscv/riscv.opt (mstrict-align): New option. - * config/riscv/riscv.h (STRICT_ALIGNMENT): Use it. Update comment. - (SLOW_UNALIGNED_ACCESS): Define. - (riscv_slow_unaligned_access): Declare. - * config/riscv/riscv.c (riscv_tune_info): Add slow_unaligned_access - field. - (riscv_slow_unaligned_access): New variable. - (rocket_tune_info): Set slow_unaligned_access to true. - (optimize_size_tune_info): Set slow_unaligned_access to false. - (riscv_cpu_info_table): Add entry for optimize_size_tune_info. - (riscv_valid_lo_sum_p): Use TARGET_STRICT_ALIGN. - (riscv_option_override): Set riscv_slow_unaligned_access. - * doc/invoke.texi: Add -mstrict-align to RISC-V. - -2017-05-04 Kito Cheng - - * config/riscv/riscv.md: Unify indentation. - -2017-05-05 Michael Meissner - - PR target/79038 - PR target/79202 - PR target/79203 - * config/rs6000/rs6000.md (u code attribute): Add FIX and - UNSIGNED_FIX. - (extendsi2): Add support for doing sign extension via - VUPKHSW and XXPERMDI if the value is in Altivec registers and we - don't have ISA 3.0 instructions. - (extendsi2 splitter): Likewise. - (fix_truncsi2): If we are at ISA 2.07 (VSX small integer), - generate the normal insns since SImode can now go in vector - registers. Disallow the special UNSPECs needed for previous - machines to hide SImode being used. Add new insns - fctiw{,w}__smallint if SImode can go in vector registers. - (fix_truncsi2_stfiwx): Likewise. - (fix_truncsi2_internal): Likewise. - (fixuns_truncsi2): Likewise. - (fixuns_truncsi2_stfiwx): Likewise. - (fctiwz__smallint): Likewise. - (fctiwz__mem): New combiner pattern to prevent conversion - of floating point to 32-bit integer from doing a direct move to - the GPR registers to do a store. - (fctiwz_): Break long line. - -2017-05-05 Bin Cheng - - * Makefile.in (GTFILES): Add tree-ssa-loop-ivopts.c. - * tree-ssa-loop-ivopts.c (compute_max_addr_offset): Delete. - (addr_list, addr_offset_valid_p): New. - (split_address_groups): Check offset validity with above function. - (gt-tree-ssa-loop-ivopts.h): Include header file. - -2017-05-05 Nathan Sidwell - - * config.gcc (arm*-*-*): Add missing 'fi'. - -2017-05-05 Steve Ellcey - - * doc/invoke.texi (-fopt-info): Explicitly say order of options - included in -fopt-info does not matter. - * doc/optinfo.texi (-fopt-info): Fix description of default - behavour. Explicitly say order of options included in -fopt-info - does not matter. - -2017-05-05 Thomas Preud'homme - - * config.gcc: Allow combinations of aprofile and rmprofile values for - --with-multilib-list. - * config/arm/t-multilib: New file. - * config/arm/t-aprofile: Remove initialization of MULTILIB_* - variables. Remove setting of ISA and floating-point ABI in - MULTILIB_OPTIONS and MULTILIB_DIRNAMES. Set architecture and FPU in - MULTI_ARCH_OPTS_A and MULTI_ARCH_DIRS_A rather than MULTILIB_OPTIONS - and MULTILIB_DIRNAMES respectively. Add comment to introduce all - matches. Add architecture matches for marvel-pj4 and generic-armv7-a - CPU options. - * config/arm/t-rmprofile: Likewise except for the matches changes. - * doc/install.texi (--with-multilib-list): Document the combination of - aprofile and rmprofile values and warn about pitfalls in doing that. - -2017-05-05 Wilco Dijkstra - - * config/aarch64/aarch64.md (movsi_aarch64): Remove '*' from r=w. - (movdi_aarch64): Likewise. - -2017-05-05 Jakub Jelinek - - PR tree-optimization/80632 - * tree-switch-conversion.c (struct switch_conv_info): Add target_vop - field. - (build_arrays): Initialize it for virtual phis. - (fix_phi_nodes): Use it for virtual phis. - - PR tree-optimization/80558 - * tree-vrp.c (extract_range_from_binary_expr_1): Optimize - [x, y] op z into [x op, y op z] for op & or | if conditions - are met. - -2017-05-05 Andre Vieira - Prakhar Bahuguna - - PR target/71607 - * config/arm/arm.md (use_literal_pool): Remove. - (64-bit immediate split): No longer takes cost into consideration - if arm_disable_literal_pool is enabled. - * config/arm/arm.c (arm_tls_referenced_p): Add diagnostic if TLS is - used when arm_disable_literal_pool is enabled. - (arm_max_const_double_inline_cost): Remove use of - arm_disable_literal_pool. - (push_minipool_fix): Add assert. - (arm_reorg): Add return if arm_disable_literal_pool is enabled. - * config/arm/vfp.md (no_literal_pool_df_immediate): New. - (no_literal_pool_sf_immediate): New. - -2017-05-05 Prathamesh Kulkarni - - PR tree-optimization/80613 - * tree-ssa-dce.c (propagate_necessity): Remove cases for - BUILT_IN_STRDUP and BUILT_IN_STRNDUP. - -2017-05-05 Richard Biener - - * tree-ssa-pre.c (get_or_alloc_expr_for): Simplify. - -2017-05-05 Georg-Johann Lay - - * config/avr/avr.md [flag_strict_overflow]: Remove any occurence - of this flag from insn conditions due to removal from r247495. - -2017-05-05 Wilco Dijkstra - - * config/arm/aarch-common.c (arm_early_load_addr_dep_ptr): - New function. - (arm_early_store_addr_dep_ptr): Likewise. - * config/arm/aarch-common-protos.h - (arm_early_load_addr_dep_ptr): Add prototype. - (arm_early_store_addr_dep_ptr): Likewise. - * config/arm/cortex-a53.md: Add new bypasses. - -2017-05-05 Jakub Jelinek - - * tree.c (next_type_uid): Change type to unsigned. - (type_hash_canon): Decrement back next_type_uid if - freeing a type node with the highest TYPE_UID. For INTEGER_TYPEs - also ggc_free TYPE_MIN_VALUE, TYPE_MAX_VALUE and TYPE_CACHED_VALUES - if possible. - -2017-05-04 Martin Sebor - - * builtins.c: Fix a trivial typo in a comment. - - PR middle-end/79234 - * builtins.c (check_sizes): Adjust to handle reading past the end. - Avoid printing excessive upper bound of ranges. Use %E to print - tree nodes instead of converting them to %wu. - (expand_builtin_memchr): New function. - (compute_dest_size): Rename... - (compute_objsize): ...to this. - (expand_builtin_memcpy): Adjust. - (expand_builtin_mempcpy): Adjust. - (expand_builtin_strcat): Adjust. - (expand_builtin_strcpy): Adjust. - (check_strncat_sizes): Adjust. - (expand_builtin_strncat): Adjust. - (expand_builtin_strncpy): Adjust and simplify. - (expand_builtin_memset): Adjust. - (expand_builtin_bzero): Adjust. - (expand_builtin_memcmp): Adjust. - (expand_builtin): Handle memcmp. - (maybe_emit_chk_warning): Check strncat just once. - -2017-05-04 Martin Sebor - - PR preprocessor/79214 - PR middle-end/79222 - PR middle-end/79223 - * builtins.c (check_sizes): Add inlining context and issue - warnings even when -Wno-system-headers is set. - (check_strncat_sizes): Same. - (expand_builtin_strncat): Same. - (expand_builtin_memmove): New function. - (expand_builtin_stpncpy): Same. - (expand_builtin): Handle memmove and stpncpy. - -2017-05-04 Bin Cheng - - * tree-ssa-loop-ivopts.c (struct cost_pair): Remove field inv_expr - which is not used any more. - -2017-05-04 Wilco Dijkstra - - * config/aarch64/aarch64.c (generic_tunings): Update prefetch model. - -2017-05-04 Wilco Dijkstra - - * config/aarch64/aarch64.c (cortexa35_tunings): Set jump alignment to 4. - (cortexa53_tunings): Likewise. - (cortexa57_tunings): Likewise. - (cortexa72_tunings): Likewise. - (cortexa73_tunings): Likewise. - -2017-05-04 Wilco Dijkstra - - * config/aarch64/aarch64.c (generic_tunings): Set jump alignment to 4. - Set loop alignment to 8. - -2017-05-04 Martin Sebor - - PR translation/80280 - * builtins.c (expand_builtin_object_size): Add missing quoting to - %D and like directives. - * hsa-gen.c (hsa_type_for_scalar_tree_type): Same. - (hsa_type_for_tree_type): Same. - (verify_function_arguments): Same. - * symtab.c (symbol_table::change_decl_assembler_name): Same. - * varasm.c (get_section): Same. - (mark_weak): Same. - -2017-05-04 Martin Sebor - - PR translation/80280 - * config/i386/i386.c (ix86_function_versions): Quote a %D directive. - -2017-05-04 Wilco Dijkstra - - * config/aarch64/aarch64.c (generic_addrcost_table): - Change HI/TI mode setting. - -2017-05-04 Martin Jambor - - PR tree-optimization/80622 - * tree-sra.c (comes_initialized_p): New function. - (build_accesses_from_assign): Only set write lazily when - comes_initialized_p is false. - (analyze_access_subtree): Use comes_initialized_p. - (propagate_subaccesses_across_link): Assert !comes_initialized_p - instead of testing for PARM_DECL. - -2017-05-04 Kyrylo Tkachov - - * config/aarch64/aarch64.md (prefetch); Adjust predicate and - constraint on operand 0 to allow more general addressing modes. - Adjust output template. - * config/aarch64/aarch64.c (aarch64_address_valid_for_prefetch_p): - New function. - * config/aarch64/aarch64-protos.h - (aarch64_address_valid_for_prefetch_p): Declare prototype. - * config/aarch64/constraints.md (Dp): New address constraint. - * config/aarch64/predicates.md (aarch64_prefetch_operand): New - predicate. - -2017-05-04 Jan Hubicka - - * ipa-cp.c (perform_estimation_of_a_value): Drop base_time parameter; - update use of estimate_ipcp_clone_size_and_time. - (estimate_local_effects): Update use of - estimate_ipcp_clone_size_and_time and perform_estimation_of_a_value. - * ipa-inline.h (estimate_ipcp_clone_size_and_time): Update prototype. - * ipa-inline-analysis.c (estimate_ipcp_clone_size_and_time): - Return nonspecialized time. - -2017-05-04 Richard Biener - - * tree-ssa-alias.c (get_continuation_for_phi): Improve looking - for the last VUSE which def dominates the PHI. Directly call - maybe_skip_until. - (get_continuation_for_phi_1): Remove. - -2017-05-04 Richard Sandiford - - * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Add commentary - to explain the use of truncating division. Cap the number of - iterations to the maximum given by nb_iterations_upper_bound, - if defined. - -2017-05-04 Thomas Preud'homme - - * configure.ac (--enable-mingw-wildcard): Add new configurable feature. - * configure: Regenerate. - * config.in: Regenerate. - * config/i386/driver-mingw32.c: new file. - * config/i386/x-mingw32: Add rule to build driver-mingw32.o. - * config.host: Link driver-mingw32.o on MinGW host. - * doc/install.texi: Document new --enable-mingw-wildcard configure - option. - -2017-05-04 Marek Polacek - - PR tree-optimization/80612 - * calls.c (get_size_range): Check for INTEGRAL_TYPE_P. - -2017-05-04 Prakhar Bahuguna - Andre Simoes Dias Vieira - - * config/arm/arm.md (movsi): Change TARGET_32BIT to TARGET_HAVE_MOVT. - (movt splitter): Likewise. - * config/arm/arm.c (arm_option_check_internal): Change arm_arch_thumb2 - to TARGET_HAVE_MOVT, and merge with -mslow-flash-data check. - (const_ok_for_arm): Change else to else if (TARGET_THUMB2) and add else - block for Thumb-1 with MOVT. - (thumb2_legitimate_address_p): Move code block ... - (can_avoid_literal_pool_for_label_p): ... into this new function. - (thumb1_legitimate_address_p): Add check for TARGET_HAVE_MOVT and - literal pool. - (thumb_legitimate_constant_p): Add conditional on TARGET_HAVE_MOVT - * doc/invoke.texi (-mpure-code): Change "ARMv7-M targets" for - "M-profile targets with the MOVT instruction". - -2017-05-04 Prakhar Bahuguna - - * config/arm/arm-builtins.c (arm_init_builtins): Rename - __builtin_arm_ldfscr to __builtin_arm_get_fpscr, and rename - __builtin_arm_stfscr to __builtin_arm_set_fpscr. - -2017-05-04 Martin Liska - - * tree-vrp.c (simplify_cond_using_ranges_2): Remove unused - variable cond_code. - -2017-05-04 Richard Biener - - * tree.c (array_at_struct_end_p): Handle arrays at struct - end with flexarrays more conservatively. Refactor and treat - arrays of arrays or aggregates more strict. Fix - VIEW_CONVERT_EXPR handling. Remove allow_compref argument. - * tree.c (array_at_struct_end_p): Adjust prototype. - * emit-rtl.c (set_mem_attributes_minus_bitpos): Adjust. - * gimple-fold.c (get_range_strlen): Likewise. - * tree-chkp.c (chkp_may_narrow_to_field): Likewise. - -2017-05-04 Richard Biener - - PR tree-optimization/31130 - * tree-vrp.c (needs_overflow_infinity): Remove as always returning - false. - (supports_overflow_infinity): Likewise. - (is_negative_overflow_infinity): Likewise. - (is_positive_overflow_infinity): Likewise. - (is_overflow_infinity): Likewise. - (stmt_overflow_infinity): Likewise. - (overflow_infinity_range_p): Likewise. - (usable_range_p): Remove as always returning true. - (make_overflow_infinity): Remove. - (negative_overflow_infinity): Likewise. - (positive_overflow_infinity): Likewise. - (avoid_overflow_infinity): Likewise. - (set_value_range): Adjust accordingly. - (set_value_range_to_nonnegative): Likewise, remove now unused - overflow_infinity arg. - (vrp_operand_equal_p): Adjust. - (update_value_range): Likewise. - (range_int_cst_singleton_p): Likewise. - (operand_less_p): Likewise. - (compare_values_warnv): Likewise. - (extract_range_for_var_from_comparison_expr): Likewise. - (vrp_int_const_binop): Likewise. - (zero_nonzero_bits_from_vr): Likewise. - (extract_range_from_multiplicative_op_1): Likewise. - (extract_range_from_binary_expr_1): Likewise. - (extract_range_from_unary_expr): Likewise. - (extract_range_from_comparison): Likewise. - (extract_range_basic): Likewise. - (adjust_range_with_scev): Likewise. - (compare_ranges): Likewise. - (compare_range_with_value): Likewise. - (dump_value_range): Likewise. - (test_for_singularity): Likewise, remove strict_overflow_p parameter - never used. - (simplify_cond_using_ranges): Adjust. - -2017-05-04 Pekka Jääskeläinen - - * brig-builtins.def: Added a builtin for class_f64. - * builtin-types.def: Added a builtin type needed by class_f64. - -2017-05-03 Jason Merrill - - * timevar.def: Add TV_CONSTEXPR. - -2017-05-03 David Malcolm - - * common.opt (fdiagnostics-parseable-fixits): Fix typo. - -2017-05-03 Martin Jambor - - * ipa-prop.c (ipa_update_after_lto_read): Removed. - * ipa-prop.h (ipa_update_after_lto_read): Remove declaration. - * ipa-cp.c (ipcp_propagate_stage): Do not call - ipa_update_after_lto_read. - * ipa-inline.c (ipa_inline): Likewise. - -2017-05-03 Martin Jambor - - * ipa-prop.h (ipa_edge_args): Make a class. Mark with for_user GTY - tag. Added a default constructor and a destructor. - (ipa_edge_args_sum_t): New class; - (ipa_edge_args_sum): Declare. - (ipa_edge_args_vector): Remove declaration. - (IPA_EDGE_REF): Use ipa_edge_args_sum. - (ipa_free_edge_args_substructures): Remove declaration. - (ipa_check_create_edge_args): Use ipa_edge_args_sum. - (ipa_edge_args_info_available_for_edge_p): Likewise. - * ipa-prop.c (ipa_edge_args_vector): Removed. - (edge_removal_hook_holder): Likewise. - (edge_duplication_hook_holder): Likewise. - (ipa_edge_args_sum): New variable. - (ipa_propagate_indirect_call_infos): Test ipa_edge_args_sum instead of - ipa_edge_args_vector. - (ipa_free_edge_args_substructures): Likewise. - (ipa_free_all_edge_args): Free ipa_edge_args_sum instead of - ipa_edge_args_vector. - (ipa_edge_removal_hook): Turned into method - ipa_edge_args_sum_t::remove. - (ipa_edge_duplication_hook): Turned into method - ipa_edge_args_sum_t::duplicate. - (ipa_register_cgraph_hooks): Create ipa_edge_args_sum instead of - registering edge hooks. - (ipa_unregister_cgraph_hooks): Do not unregister edge hooks. - * ipa-inline-analysis.c (estimate_function_body_sizes): Test - ipa_edge_args_sum instead of ipa_edge_args_vector. - * ipa-profile.c (ipa_profile): Likewise. - -2017-05-03 Martin Jambor - - * symbol-summary.h (function_summary): New method exists. - (function_summary::symtab_removal): Deallocate through release. - (call_summary): New class. - (gt_ggc_mx): New overload. - (gt_pch_nx): Likewise. - (gt_pch_nx): Likewise. - -2017-05-03 Jeff Law - - PR tree-optimization/78496 - * tree-vrp.c (simplify_cond_using_ranges_1): Renamed - from simplify_cond_using_ranges. Split off code to walk - backwards through casts into ... - (simplify_cond_using_ranges_2): New function. - (simplify_stmt_using_ranges): Call simplify_cond_using_ranges_1. - (execute_vrp): After identifying jump threads, call - simplify_cond_using_ranges_2. - -2017-05-03 Jan Hubicka - - PR bootstrap/80609 - * ipa-inline.h (inline_summary): Add ctor. - (create_ggc): Do not use ggc_cleared_alloc. - -2017-05-03 Jeff Downs - Rainer Orth - - * gcc.c (handle_braces): Support escaping in switch matching - text. - * doc/invoke.texi (Spec Files): Document it. - Remove superfluous @code markup in items. - -2017-05-03 David Malcolm - - * diagnostic-show-locus.c (struct column_range): New struct. - (get_affected_columns): New function. - (get_printed_columns): New function. - (struct correction): New struct. - (correction::ensure_capacity): New function. - (correction::ensure_terminated): New function. - (struct line_corrections): New struct. - (line_corrections::~line_corrections): New dtor. - (line_corrections::add_hint): New function. - (layout::print_trailing_fixits): Reimplement in terms of the new - classes. - (selftest::test_overlapped_fixit_printing): New function. - (selftest::diagnostic_show_locus_c_tests): Call it. - -2017-05-03 Nathan Sidwell - - Canonicalize canonical type hashing - * tree.h (type_hash_canon_hash): Declare. - * tree.c (type_hash_list, attribute_hash_list): Move into - type_hash_canon_hash. - (build_type_attribute_qual_variant): Break out hash code calc into - type_hash_canon_hash. - (type_hash_canon_hash): New. Generic type hash computation. - (build_range_type_1, build_array_type_1, build_function_type, - build_method_type_directly, build_offset_type, build_complex_type, - make_vector_type): Call it. - -2017-05-03 Richard Biener - - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): - When all DRs have unknown misaligned do not always peel - when there is a store but apply the same costing model as if - there were only loads. - -2017-05-03 Richard Biener - - Revert - PR tree-optimization/80492 - * tree-ssa-alias.c (decl_refs_may_alias_p): Handle - compare_base_decls returning dont-know properly. - -2017-05-03 Thomas Preud'homme - - * config/arm/iterators.md (CCSI): New mode iterator. - (arch): New mode attribute. - * config/arm/sync.md (atomic_compare_and_swap_1): Rename into ... - (atomic_compare_and_swap_1): This and ... - (atomic_compare_and_swap_1): This. Use CCSI - code iterator for success result mode. - * config/arm/arm.c (arm_expand_compare_and_swap): Adapt code to use - the corresponding new insn generators. - -2017-05-03 Bin Cheng - - Revert r247509 - 2017-05-02 Bin Cheng - * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes. - -2017-05-03 Richard Sandiford - - * tree-data-ref.h (SUB_CONFLICTS_IN_A): Wrap SUB argument in brackets. - (SUB_CONFLICTS_IN_B, SUB_LAST_CONFLICT, SUB_DISTANCE): Likewise. - (DDR_A): Wrap DDR argument in brackets. - (DDR_B, DDR_AFFINE_P, DDR_ARE_DEPENDENT, DDR_SUBSCRIPTS): Likewise. - (DDR_LOOP_NEST, DDR_INNER_LOOP, DDR_SELF_REFERENCE): Likewise. - (DDR_REVERSED_P): Likewise. - -2017-05-03 Jakub Jelinek - - PR tree-optimization/79472 - * tree-switch-conversion.c (struct switch_conv_info): Add - contiguous_range and default_case_nonstandard fields. - (collect_switch_conv_info): Compute contiguous_range and - default_case_nonstandard fields, don't clear final_bb if - contiguous_range and only the default case doesn't have the required - structure. - (check_all_empty_except_final): Set default_case_nonstandard instead - of failing if contiguous_range and the default case doesn't have empty - block. - (check_final_bb): Add SWTCH argument, don't fail if contiguous_range - and only the default case doesn't have the required constants. Skip - virtual phis. - (gather_default_values): Skip virtual phis. Allow non-NULL CASE_LOW - if default_case_nonstandard. - (build_constructors): Build constant 1 just once. Assert that default - values aren't inserted in between cases if contiguous_range. Skip - virtual phis. - (build_arrays): Skip virtual phis. - (prune_bbs): Add DEFAULT_BB argument, don't remove that bb. - (fix_phi_nodes): Don't add e2f phi arg if default_case_nonstandard. - Handle virtual phis. - (gen_inbound_check): Handle default_case_nonstandard case. - (process_switch): Adjust check_final_bb caller. Call - gather_default_values with the first non-default case instead of - default case if default_case_nonstandard. - -2017-05-02 Nathan Sidwell - - * ggc-page.c (move_ptes_to_front): Replace unsigned >0 with i-- - check. Fix formatting. - -2017-05-02 Jan Hubicka - - * ipa-inline-analysis.c (estimate_node_size_and_time): Allow roundoff - errors when comparing specialized and unspecialized times. - -2017-05-02 David Malcolm - - * diagnostic-show-locus.c - (layout::should_print_annotation_line_p): Make private. - (layout::print_annotation_line): Make private. - (layout::annotation_line_showed_range_p): Make private. - (layout::show_ruler): Make private. - (layout::print_source_line): Make private. Pass in line and - line_width, rather than calling location_get_source_line. Drop - returned value. - (layout::print_leading_fixits): New method. - (layout::print_any_fixits): Rename to... - (layout::print_trailing_fixits): ...this, and make private. - Don't print newline fixits. - (diagnostic_show_locus): Move logic for printing one row into... - (layout::print_line): ...this new function. Move the - location_get_source_line call and error-handling from - print_source_line to here. Call print_leading_fixits, and rename - print_any_fixits to print_trailing_fixits. - (selftest::test_fixit_insert_containing_newline): Update now that - newlines are partially supported. - (selftest::test_fixit_insert_containing_newline_2): New test. - (selftest::test_fixit_replace_containing_newline): Update comments. - (selftest::diagnostic_show_locus_c_tests): Call the new test. - * edit-context.c (class added_line): New class. - (class edited_line): Describe newline handling in comment. - (edited_line::actually_edited_p): New method. - (edited_line::print_content): Delete redundant decl. - (edited_line::m_predecessors): New field. - (edited_file::print_content): Call edited_line::print_content. - (edited_file::print_diff): Update to support newlines. - (edited_file::print_diff_hunk): Likewise. - (edited_file::print_run_of_changed_lines): New function. - (edited_file::print_diff_line): Convert to... - (print_diff_line): ...this. - (edited_file::get_effective_line_count): New function. - (edited_line::edited_line): Initialize new field m_predecessors. - (edited_line::~edited_line): Clean up m_predecessors. - (edited_line::apply_fixit): Handle newlines. - (edited_line::get_effective_line_count): New function. - (edited_line::print_content): New function. - (edited_line::print_diff_lines): New function. - (selftest::test_applying_fixits_insert_containing_newline): New - test. - (selftest::test_applying_fixits_replace_containing_newline): New - test. - (selftest::insert_line): New function. - (selftest::test_applying_fixits_multiple_lines): Add example of - inserting a line. - (selftest::edit_context_c_tests): Call the new tests. - -2017-05-02 Bin Cheng - - * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Delete - parameter cand. Update dump information. - (get_computation_cost): Update uses. - -2017-05-02 Bin Cheng - - * tree-ssa-loop-ivopts.c (get_computation_aff_1): New. - (get_computation_aff): Reorder parameters. Use get_computation_aff_1. - (get_computation_at, rewrite_use_address): Update use of - get_computation_aff. - -2017-05-02 Bin Cheng - - * tree-ssa-loop-ivopts.c (get_computation_at): Reorder parameters. - (get_computation): Delete. - (get_computation_cost): Implement like get_computation_cost_at. - Use get_computation_at. - (get_computation_cost_at): Delete. - (rewrite_use_nonlinear_expr): Use get_computation_at. - (rewrite_use_compare, remove_unused_ivs): Ditto. - -2017-05-02 Bin Cheng - - * tree-ssa-loop-ivopts.c (rewrite_use_address): Simple refactor. - -2017-05-02 Bin Cheng - - * tree-ssa-loop-ivopts.c (struct iv_ca): Rename n_regs to n_invs. - (ivopts_global_cost_for_size): Rename parameter and update uses. - (iv_ca_recount_cost): Update uses. - (iv_ca_set_remove_invs, iv_ca_set_no_cp): Record invariants and - candidates seperately in n_invs and n_cands. - (iv_ca_set_add_invs, iv_ca_set_cp, iv_ca_new): Ditto. - -2017-05-02 Bin Cheng - - * tree-ssa-loop-ivopts.c (struct walk_tree_data): New. - (find_inv_vars_cb): New. - (find_depends): Renamed to ... - (find_inv_vars): ... this. - (add_candidate_1, force_var_cost): Call find_inv_vars. - (split_address_cost, determine_group_iv_cost_cond): Ditto. - -2017-05-02 Bin Cheng - - * tree-ssa-loop-ivopts.c (struct cost_pair): Rename depends_on to - inv_vars. Add inv_exprs. - (struct iv_cand): Rename depends_on to inv_vars. - (struct ivopts_data): Rename max_inv_id/n_invariant_uses to - max_inv_var_id/n_inv_var_uses. Move max_inv_expr_id around. - Refactor field used_inv_exprs from has_map to array n_inv_expr_uses. - (dump_cand): Dump inv_vars. - (tree_ssa_iv_optimize_init): Support inv_vars and inv_exprs. - (record_invariant, find_depends, add_candidate_1): Ditto. - (set_group_iv_cost, force_var_cost): Ditto. - (split_address_cost, ptr_difference_cost, difference_cost): Ditto. - (get_computation_cost_at, get_computation_cost): Ditto. - (determine_group_iv_cost_generic): Ditto. - (determine_group_iv_cost_address): Ditto. - (determine_group_iv_cost_cond, autoinc_possible_for_pair): Ditto. - (determine_group_iv_costs): Ditto. - (iv_ca_recount_cost): Update call to ivopts_global_cost_for_size. - (iv_ca_set_remove_invariants): Renamed to ... - (iv_ca_set_remove_invs): ... this. Support inv_vars and inv_exprs. - (iv_ca_set_no_cp): Use iv_ca_set_remove_invs. - (iv_ca_set_add_invariants): Renamed to ... - (iv_ca_set_add_invs): ... this. Support inv_vars and inv_exprs. - (iv_ca_set_cp): Use iv_ca_set_add_invs. - (iv_ca_has_deps): Support inv_vars and inv_exprs. - (iv_ca_new, iv_ca_free, iv_ca_dump, free_loop_data): Ditto. - (create_new_ivs): Remove useless dump. - -2017-05-02 Bin Cheng - - * tree-ssa-loop-ivopts.c (get_computation_cost_at): Remove pseudo - iv_cand code. - (determine_group_iv_cost_cond, determine_iv_cost): Ditto. - (iv_ca_set_no_cp, create_new_iv): Ditto. - -2017-05-02 Bin Cheng - - * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes. - -2017-05-02 Xi Ruoyao - - * tree.h (EXPR_CILK_SPAWN): Use macro TREE_CHECK2 instead of - function tree_check2. - -2017-05-02 Martin Liska - - * doc/gcov.texi: Add missing preposition. - * gcov.c (function_info::function_info): Properly fill up - all member variables. - -2017-05-02 Tamar Christina - - * expr.c (expand_expr_real_2): Re-cost if previous costs are the same. - -2017-05-02 Tamar Christina - - * simplify-rtx.c (simplify_binary_operation_1): Add LSHIFTRT case. - -2017-05-02 Martin Liska - - PR lto/77954. - * lto-streamer-in.c (lto_read_tree_1): Remove - LTO_STREAMER_DEBUG. - * lto-streamer.c (struct tree_hash_entry): Likewise. - (struct tree_entry_hasher): Likewise. - (tree_entry_hasher::hash): Likewise. - (tree_entry_hasher::equal): Likewise. - (lto_streamer_init): Likewise. - (lto_orig_address_map): Likewise. - (lto_orig_address_get): Likewise. - (lto_orig_address_remove): Likewise. - * lto-streamer.h: Likewise. - * tree-streamer-in.c (streamer_alloc_tree): Likewise. - * tree-streamer-out.c (streamer_write_tree_header): Likewise. - -2017-05-02 Sebastian Peryt - - * config/i386/avx512fintrin.h (_mm_mask_add_round_sd) - (_mm_maskz_add_round_sd, _mm_mask_add_round_ss) - (mm_maskz_add_round_ss, _mm_mask_sub_round_sd) - (mm_maskz_sub_round_sd, _mm_mask_sub_round_ss) - (mm_maskz_sub_round_ss, _mm_mask_add_sd) - (mm_maskz_add_sd, _mm_mask_add_ss, _mm_maskz_add_ss) - (mm_mask_sub_sd, _mm_maskz_sub_sd, _mm_mask_sub_ss) - (mm_maskz_sub_ss): New intrinsics. - * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT) - (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases. - * config/i386/i386-builtin.def (__builtin_ia32_addsd_mask_round) - (__builtin_ia32_addss_mask_round, __builtin_ia32_subsd_mask_round) - (__builtin_ia32_subss_mask_round): New builtins. - * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT) - (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types. - * config/i386/sse.md (_vm3): - Renamed to ... - (_vm3): ... this. - (v\t{%2, %1, %0|%0, %1, %2}): - Changed to ... - (v\t{%2, %1, %0|%0, %1, %2}): - ... this. - -2017-05-02 Martin Jambor - - PR tree-optimization/78687 - * tree-sra.c (access): New field parent. - (process_subtree_disqualification): New function. - (disqualify_candidate): Call it. - (build_accesses_from_assign): Reset write flag if creating an - assighnment link. - (build_access_subtree): Fill in parent field and also prpagate - down grp_write flag. - (create_artificial_child_access): New parameter set_grp_write, set - grp_write to its value. - (propagate_subaccesses_across_link): Also propagate grp_write flag - values. - (propagate_all_subaccesses): Push the closest parent back to work - queue if add_access_to_work_queue returned true. - -2017-05-02 Richard Biener - - * common.opt (fstrict-overflow): Alias negative to fwrapv. - * doc/invoke.texi (fstrict-overflow): Remove all traces of - -fstrict-overflow documentation. - * tree.h (TYPE_OVERFLOW_UNDEFINED): Do not test flag_strict_overflow. - (POINTER_TYPE_OVERFLOW_UNDEFINED): Test !flag_wrapv instead of - flag_strict_overflow. - * ipa-inline.c (can_inline_edge_p): Do not test flag_strict_overflow. - * lto-opts.c (lto_write_options): Do not stream it. - * lto-wrapper.c (merge_and_complain): Do not handle it. - * opts.c (default_options_table): Do not set -fstrict-overflow. - (finish_options): Likewise do not clear it when sanitizing. - * simplify-rtx.c (simplify_const_relational_operation): Do not - test flag_strict_overflow. - -2017-05-02 Uros Bizjak - - * config/alpha/alpha.md (*add3_ieee): Merge to add3 - using enabled attribute. - (*sub3_ieee): Merge to sub3 using enabled attribute. - (*mul3_ieee): Merge to mul3 using enabled attribute. - (*div3_ieee): Merge to div3 using enabled attribute. - (*sqrt2_ieee): Merge to sqrt2 using enabled attribute. - (*fix_truncdfdi_ieee): Merge to *fix_truncdfdi2 using enabled attribute. - (*fix_truncsfdi_ieee): Merge to *fix_truncsfdi2 using enabled attribute. - (*floatdisf_ieee): Merge to floatdisf2 using enabled attribute. - (*floatdidf_ieee): Merge to floatdidf2 using enabled attribute. - (*truncdfsf2_ieee): Merge to truncdfsf2 using enabled attribute. - (*cmpdf_ieee): Merge to *cmpdf_internal using enabled attribute. - -2017-05-02 Uros Bizjak - - * config/i386/i386.c (ix86_code_end): Use {FIRST,LAST}_INT_REG. - -2017-05-02 Richard Biener - - PR tree-optimization/80591 - Revert - 2017-04-10 Richard Biener - - * tree-ssa-structalias.c (find_func_aliases): Properly handle - asm inputs. - -2017-05-02 Richard Biener - - PR tree-optimization/80549 - * tree-cfgcleanup.c (mfb_keep_latches): New helper. - (cleanup_tree_cfg_noloop): Create forwarders to known loop - headers if they do not have a preheader. - -2017-05-02 Martin Liska - - PR other/80589 - * common.opt: Fix typo. - * doc/invoke.texi: Likewise. - -2017-05-01 Jan Beulich - - * config/i386/sse.md (xop_vpermil23): Do not allow operand - swapping, add (x,x,m,x,n) alternative. - -2017-05-01 Nathan Sidwell - - * calls.c (combine_pending_stack_adjustment_and_call): Remove - unnecessary unadjusted_alignment check. - -2017-05-01 Xi Ruoyao - - PR c++/80038 - * cilk_common.c (expand_builtin_cilk_detach): Move pedigree - operations here. - * gimplify.c (gimplify_cilk_detach): New function. - (gimplify_call_expr, gimplify_modify_expr): Call it as needed. - * tree-core.h: Document EXPR_CILK_SPAWN. - * tree.h (EXPR_CILK_SPAWN): Define. - -2017-05-01 David Malcolm - - * diagnostic-show-locus.c (layout::get_expanded_location): Rewrite - to use new fixit_hint representation, using the "replace" logic. - (get_line_span_for_fixit_hint): Likewise. - (layout::print_any_fixits): Likewise. - (selftest::test_one_liner_many_fixits): Rename to... - (selftest::test_one_liner_many_fixits_1): ...this, and update - comment and expected output to reflect that the multiple fix-it - hints are now consolidated into one insertion. - (selftest::test_one_liner_many_fixits_2): New test. - (selftest::test_diagnostic_show_locus_one_liner): Update for - above. - (selftest::test_fixit_consolidation): Update for fix-it API - change. - * diagnostic.c (print_parseable_fixits): Likewise. - * edit-context.c (edited_line::m_line_events): Convert from - auto_vec to auto_vec . - (class line_event): Convert from abstract base class to a concrete - class, taking over the role of replace_event. - (class insert_event): Delete. - (class replace_event): Rename to class line_event. Convert to - half-open range. - (edit_context::add_fixits): Reimplement. - (edit_context::apply_insert): Delete. - (edit_context::apply_replace): Rename to... - (edit_context::apply_fixit): ...this. Convert to half-open range. - (edited_file::apply_insert): Delete. - (edited_file::apply_replace): Rename to... - (edited_file::apply_fixit): ...this. - (edited_line::~edited_line): Drop deletion of events. - (edited_line::apply_insert): Delete. - (edited_line::apply_replace): Rename to... - (edited_line::apply_fixit): ...this. Convert to half-open range. - Update for change to type of m_line_events. - * edit-context.h (edit_context::apply_insert): Delete. - (edit_context::apply_replace): Rename to... - (edit_context::apply_fixit): ...this. - -2017-05-01 Martin Sebor - - * gimple-ssa-sprintf.c (format_integer): Set knownrange when it's - known. - -2017-05-01 Uros Bizjak - - PR target/68491 - * config/i386/cpuid.h (__get_cpuid): Always return 0 when - __get_cpuid_max returns 0. - (__get_cpuid_count): Ditto. - -2017-05-01 Eric Botcazou - - * tree.c (substitute_in_expr) : Also inline a call if the - replacement expression is another instance of one of its arguments. - -2017-05-01 Jakub Jelinek - - PR target/79430 - * rtlanal.c (reg_set_p): If reg is a stack_pointer_rtx, also - check for stack push/pop autoinc. - * config/i386/i386.c (ix86_agi_dependent): Return false - if the only reason why modified_in_p returned true is that - addr is SP based and set_insn is a push or pop. - -2017-04-29 Jan Hubicka - - * ipa-inline.c (compute_inlined_call_time): Remove now unnecesary - overflow check. - -2017-04-29 Jan Hubicka - - PR ipa/79224 - * ipa-inline-analysis.c (dump_predicate): Add optional parameter NL. - (account_size_time): Use two predicates - exec_pred and - nonconst_pred_ptr. - (evaluate_conditions_for_known_args): Compute both clause and - nonspec_clause. - (evaluate_properties_for_edge): Evaulate both clause and nonspec_clause. - (inline_summary_t::duplicate): Update. - (estimate_function_body_sizes): Caluculate exec and nonconst predicates - separately. - (compute_inline_parameters): Likewise. - (estimate_edge_size_and_time): Update caluclation of time. - (estimate_node_size_and_time): Compute both time and nonspecialized - time. - (estimate_ipcp_clone_size_and_time): Update. - (inline_merge_summary): Update. - (do_estimate_edge_time): Update. - (do_estimate_edge_size): Update. - (do_estimate_edge_hints): Update. - (inline_read_section, inline_write_summary): Stream both new predicates. - * ipa-inline.c (compute_uninlined_call_time): Take uninlined_call_time - as argument. - (compute_inlined_call_time): Cleanup. - (big_speedup_p): Update. - (edge_badness): Update. - * ipa-inline.h (INLINE_TIME_SCALE): Remove. - (size_time_entry): Replace predicate by exec_predicate and - nonconst_predicate. - (edge_growth_cache_entry): Cache both time nad nonspecialized time. - (estimate_edge_time): Return also nonspec_time. - (reset_edge_growth_cache): Update. - -2017-04-29 Jakub Jelinek - - PR rtl-optimization/80491 - * ifcvt.c (noce_process_if_block): When looking for x setter - with missing else_bb, don't check only the insn right before - cond_earliest, but look for the last insn that x is modified in - within the same bb. - - PR rtl-optimization/80491 - * alias.c (memory_modified_in_insn_p): Return true for CALL_INSNs. - -2017-04-29 Marc Glisse - - PR tree-optimization/80487 - * tree-ssa-alias.c (stmt_kills_ref_p): Handle stpncpy and strncpy. - -2017-04-29 Prathamesh Kulkarni - - PR tree-optimization/79697 - * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Check if callee - is BUILT_IN_STRDUP, BUILT_IN_STRNDUP, BUILT_IN_REALLOC. - (propagate_necessity): Check if def_callee is BUILT_IN_STRDUP or - BUILT_IN_STRNDUP. - * gimple-fold.c (gimple_fold_builtin_realloc): New function. - (gimple_fold_builtin): Call gimple_fold_builtin_realloc. - -2017-04-28 Martin Sebor - - PR tree-optimization/80523 - * gimple-ssa-sprintf.c (target_to_host_charmap): New global variable. - (init_target_to_host_charmap, target_to_host, target_strtol10): New - functions. - (maybe_warn, format_directive, parse_directive): Use new functions. - (pass_sprintf_length::execute): Call init_target_to_host_charmap. - -2017-04-28 Marc Glisse - - * match.pd (X+Z OP Y+Z, X-Z OP Y-Z, Z-X OP Z-Y): New transformations. - -2017-04-28 Bernd Edlinger - - * configure.ac (SYSTEM_HEADER_DIR, BUILD_SYSTEM_HEADER_DIR, - target_header_dir): Set correctly. - * configure: Regenerated. - * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe. - (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR - instead of SYSTEM_HEADER_DIR. - -2017-04-28 Jan Hubicka - - * ipa-cp.c (perform_estimation_of_a_value): Turn time to sreal. - (estimate_local_effects): Likewise. - * ipa-inline.c (compute_inlined_call_time, want_inline_small_function_p, - edge_badness, inline_small_functions, dump_overall_stats): LIkewise. - * ipa-inline.h (edge_growth_cache_entry, estimate_time_after_inlining, - estimate_ipcp_clone_size_and_time, do_estimate_edge_time, - do_estimate_edge_time, estimate_edge_time): Likewise. - * ipa-inline-analysis.c (estimate_node_size_and_time, - estimate_ipcp_clone_size_and_time, do_estimate_edge_time): Likewise. - (estimate_time_after_inlining): Remove. - -2017-04-28 Martin Liska - - * doc/gcov.texi: Enhance documentation of gcov. - -2017-04-28 Martin Liska - - * doc/gcov.texi: Sort options in alphabetic order. - * doc/gcov-dump.texi: Likewise. - * doc/gcov-tool.texi: Likewise. - * gcov.c (print_usage): Likewise. - * gcov-dump.c (print_usage): Likewise. - * gcov-tool.c (print_merge_usage_message): Likewise. - (print_rewrite_usage_message): Likewise. - (print_overlap_usage_message): Likewise. - -2017-04-28 Martin Liska - - PR gcov-profile/53915 - * gcov.c (format_gcov): Print 'NAN %' when top > bottom. - -2017-04-28 Martin Liska - - PR gcov-profile/79891 - * gcov.c (add_line_counts): Assign BBs to lines just if the BB - is marked by compiler as living on a line. - (get_cycles_count): Remove usage of the union. - (output_intermediate_file): Likewise. - (find_source): Fix GNU coding style. - (accumulate_line_counts): Remove old non-all block mode. - (output_lines): Remove usage of the union. - * profile.c (output_location): Include all BBs, even if - belonging to a same line (and file) as a previous BB. - -2017-04-28 Martin Liska - - * gcov.c (process_args): Handle new argument 'w'. - (read_graph_file): Assign ID to BBs. - (output_branch_count): Display BB # if verbose flag is set. - (output_lines): Likewise for arcs. - (print_usage): Add '--verbose' option help. - * doc/gcov.texi: Document --verbose (-w) option. - -2017-04-28 Martin Liska - - * gcov.c (struct block_location_info): New struct. - (process_file): Fill up the new structure. - (read_graph_file): Replace usage of encoding by the newly added - struct. - (add_line_counts): Likewise. - (accumulate_line_counts): Remove usage of the union. - (function_info::function_info): New function. - (function_info::~function_info): Likewise. - (process_file): Call delete instead of release_function. - (release_function): Release the function. - (release_structures): Call delete instead of release_function. - (solve_flow_graph): Replace usage of num_blocks. - (find_exception_blocks): Likewise. - (output_lines): Fix GNU coding style. - -2017-04-28 Martin Liska - - PR driver/56469 - * coverage.c (coverage_remove_note_file): New function. - * coverage.h: Declare the function. - * toplev.c (finalize): Clean if an error has been seen. - -2017-04-28 Martin Liska - - PR gcov-profile/80031 - * gcov-dump.c (tag_blocks): Just print number of basic blocks. - * gcov-io.h (GCOV_TAG_BLOCKS_NUM): Remove unused macro. - * gcov.c (read_graph_file): Read just number of blocks. - * profile.c (branch_prob): Do not stream 0 flags per a basic - block. - -2017-04-28 Martin Liska - - * gcov-dump.c (tag_*): Add new argument to declarations. - (dump_gcov_file): Likewise. - (tag_blocks): Add and use new argument depth. - (tag_arcs): Likewise. - (tag_lines): Likewise. - (tag_counters): Likewise. - (tag_summary): Likewise. - (dump_working_sets): Use depth to do a proper indentation. - -2017-04-28 Jakub Jelinek - - PR bootstrap/80531 - * cgraph.h (symtab_node::debug_symtab): No longer inline. - * symtab.c (symtab_node::debug_symtab): Move definition here. - -2017-04-28 Richard Biener - - * lto-streamer.h (LTO_major_version): Bump to 7. - -2017-04-28 Richard Biener - - * tree-vrp.c (assert_info): New struct. - (add_assert_info): New helper. - (register_edge_assert_for_2): Refactor to add asserts to a vector - of assert_info. - (register_edge_assert_for_1): Likewise. - (register_edge_assert_for): Likewise. - (finish_register_edge_assert_for): New helper actually registering - asserts where live on edge. - (find_conditional_asserts): Adjust. - (find_switch_asserts): Likewise. - (evrp_dom_walker::try_find_new_range): Generalize. - (evrp_dom_walker::before_dom_children): Use register_edge_assert_for. - -2017-04-27 Marek Polacek - - PR sanitizer/80349 - * fold-const.c (fold_binary_loc) : Convert - arg10 and arg11 to itype. - -2017-04-27 Jonathan Wakely - - * doc/extend.texi (Object Size Checking): Improve grammar. - -2017-04-27 Richard Earnshaw - - PR target/80530 - * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Ensure - that the logic for permitting reciprocal estimates matches that - in use_rsqrt_p. - -2017-04-27 Jakub Jelinek - - PR c++/80534 - * tree.c (type_cache_hasher::equal): Only compare - TYPE_TYPELESS_STORAGE flag on non-aggregate element types. - (build_array_type_1): Only hash TYPE_TYPELESS_STORAGE flag on - non-aggregate element types. - * tree.h (TYPE_TYPELESS_STORAGE): Fix comment typo, add more details - about the flag on ARRAY_TYPEs in the comment, formatting fix. - -2017-04-27 Richard Biener - - PR middle-end/80533 - * emit-rtl.c (set_mem_attributes_minus_bitpos): When - stripping ARRAY_REFs from MEM_EXPR make sure we're not - keeping a reference to a trailing array. - -2017-04-27 Richard Biener - - PR middle-end/80539 - * tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not - being in loop-closed SSA form conservatively. - (chrec_fold_multiply_poly_poly): Likewise. - -2017-04-27 Tamar Christina - - PR middle-end/79665 - * expr.c (expand_expr_real_2): Move TRUNC_MOD_EXPR, FLOOR_MOD_EXPR, - CEIL_MOD_EXPR, ROUND_MOD_EXPR cases. - -2017-04-27 Jakub Jelinek - - PR target/77728 - * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): Remove. - (aarch64_function_arg_alignment): Return unsigned int again, but still - ignore TYPE_FIELDS chain decls other than FIELD_DECLs. - (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller. - Don't emit -Wpsabi note. - (aarch64_function_arg_boundary): Likewise. - (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment - caller. - -2017-04-26 Nathan Sidwell - - * tree.h (crc32_unsigned_n): Declare. - (crc32_unsigned, crc32_unsigned): Make inline. - * tree.c (crc32_unsigned_bits): Replace with ... - (crc32_unsigned_n): ... this. - (crc32_unsigned, crc32_byte): Remove. - (crc32_string): Remove unnecessary braces. - -2017-04-25 Jan Hubicka - - * ipa-cp.c (estimate_local_effects): Convert sreal to int. - * ipa-inline-analysis.c (MAX_TIME): Remove. - (account_size_time): Use sreal for time. - (dump_inline_summary): Update. - (estimate_function_body_sizes): Update. - (estimate_edge_size_and_time): Update. - (estimate_calls_size_and_time): Update. - (estimate_node_size_and_time): Update. - (inline_merge_summary): Update. - (inline_update_overall_summary): Update. - (estimate_time_after_inlining): Update. - (inline_read_section): Update. - (inline_write_summary): Update. - * ipa-inline.c (compute_uninlined_call_time): Update. - (compute_inlined_call_time): Update. - (recursive_inlining): Update. - (inline_small_functions): Update. - (dump_overall_stats): Update. - * ipa-inline.h: Include sreal.h. - (size_time_entry): Turn time to sreal. - (inline_summary): Turn self_time nad time to sreal. - -2017-04-25 Jan Hubicka - - * sreal.c: Include backend.h, tree.h, gimple.h, cgraph.h and - data-streamer.h - (sreal::stream_out, sreal::stream_in): New. - * sreal.h (sreal::stream_out, sreal::stream_in): Declare. - -2017-04-25 Jakub Jelinek - - * Makefile.in (s-options): Invoke opt-gather.awk with LC_ALL=C in the - environment. - -2017-04-25 Uros Bizjak - - PR target/70799 - * config/i386/i386.c (dimode_scalar_to_vector_candidate_p): - Handle ASHIFTRT. - (dimode_scalar_chain::compute_convert_gain): Ditto. - (dimode_scalar_chain::make_vector_copies): Ditto. - (dimode_scalar_chain::convert_reg): Ditto. - (dimode_scalar_chain::convert_insn): Ditto. - * config/i386/sse.md (VI24_AVX512BW_1): Remove mode iterator. - (VI248_AVX512BW_1): New mode iterator. - (ashr3): Merge insn pattern with - ashrv2di3 insn using VI248_AVX512BW_1 - mode iterator. - -2017-04-25 Martin Sebor - - PR tree-optimization/80497 - * gimple-ssa-sprintf.c (get_int_range): Avoid assuming all integer - constants are representable in HOST_WIDE_INT. - (parse_directive): Ditto. - -2017-04-25 Martin Sebor - - PR bootstrap/80486 - * dominance.c (dom_info::m_n_basic_blocks): Change type to unsigned. - (new_zero_array): Adjust signature. - (dom_info::dom_init): Used unsigned rather that size_t. - (dom_info::dom_info): Same. - -2017-04-25 Ramana Radhakrishnan - Jakub Jelinek - - PR target/77728 - * config/arm/arm.c: Include gimple.h. - (aapcs_layout_arg): Emit -Wpsabi note if arm_needs_doubleword_align - returns negative, increment ncrn only if it returned positive. - (arm_needs_doubleword_align): Return int instead of bool, - ignore DECL_ALIGN of non-FIELD_DECL TYPE_FIELDS chain - members, but if there is any such non-FIELD_DECL - > PARM_BOUNDARY aligned decl, return -1 instead of false. - (arm_function_arg): Emit -Wpsabi note if arm_needs_doubleword_align - returns negative, increment nregs only if it returned positive. - (arm_setup_incoming_varargs): Likewise. - (arm_function_arg_boundary): Emit -Wpsabi note if - arm_needs_doubleword_align returns negative, return - DOUBLEWORD_ALIGNMENT only if it returned positive. - -2017-04-25 Marek Polacek - - PR sanitizer/80349 - * fold-const.c (fold_binary_loc) : Convert arg0's - first argument to type. - -2017-04-25 Bill Seurer - - PR target/80482 - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Change - type checks to test for compatibility instead of equality. - -2017-04-25 Ramana Radhakrishnan - Jakub Jelinek - - PR target/77728 - * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): New - type. - (aarch64_function_arg_alignment): Return aarch64_fn_arg_alignment - struct. Ignore DECL_ALIGN of decls other than FIELD_DECL for - the alignment computation, but return their maximum in warn_alignment. - (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller. - Emit a -Wpsabi note if warn_alignment is 16 bytes, but alignment - is smaller. - (aarch64_function_arg_boundary): Likewise. Simplify using MIN/MAX. - (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment - caller. - -2017-04-25 Claudiu Zissulescu - - * config/arc/simdext.md (dmpyh): Fix typo. - -2017-04-25 Richard Biener - - PR tree-optimization/80492 - * alias.c (compare_base_decls): Handle registers with asm - specification conservatively. - * tree-ssa-alias.c (decl_refs_may_alias_p): Handle - compare_base_decls returning dont-know properly. - -2017-04-25 Claudiu Zissulescu - - * config/arc/arc.c (LEGITIMATE_OFFSET_ADDRESS_P): Delete macro. - (legitimate_offset_address_p): New function. - (arc_legitimate_address_p): Use above function. - -2017-04-25 Claudiu Zissulescu - - * config/arc/arc.c (arc_output_mi_thunk): Emit PIC calls. - -2017-04-25 Claudiu Zissulescu - - * config/arc/arc.c (arc_conditional_register_usage): Use ACCL, - ACCH registers whenever they are available. - -2017-04-25 Claudiu Zissulescu - - * config/arc/arc.c (arc_conditional_register_usage): Make D0, D1 - double regs fix when not used. - -2017-04-25 Claudiu Zissulescu - - * config/arc/arc.h (REGNO_OK_FOR_BASE_P): Consider also extension - core registers. - (REG_OK_FOR_INDEX_P_NONSTRICT): Likewise. - (REG_OK_FOR_BASE_P_NONSTRICT): Likewise. - -2017-04-25 Claudiu Zissulescu - - * config/arc/arc.c (arc_output_addsi): Check for h-register class - when emitting short ADD instructions. - -2017-04-25 Claudiu Zissulescu - - * config/arc/arc.md (cmpsi_cc_insn_mixed): Use 'h' register - constraint. - (cmpsi_cc_c_insn): Likewise. - (cbranchsi4_scratch): Compute proper instruction length using - compact_hreg_operand. - * config/arc/predicates.md (compact_hreg_operand): New predicate. - -2017-04-25 Richard Biener - - PR middle-end/80509 - * passes.c (pass_manager::pass_manager): Initialize - m_name_to_pass_map. - -2017-04-25 Richard Biener - - PR tree-optimization/79201 - * tree-ssa-sink.c (statement_sink_location): Handle calls. - -2017-04-25 Andreas Krebbel - - PR target/80464 - * config/s390/vector.md: Split MEM->GPR vector moves for - non-s_operand addresses. - -2017-04-25 Andreas Krebbel - - PR target/79895 - * config/s390/predicates.md (reload_const_wide_int_operand): New - predicate. - * config/s390/s390.md ("movti"): Remove d/P alternative. - ("movti_bigconst"): New pattern definition. - -2017-04-25 Dominik Vogt - - PR target/80080 - * s390-protos.h (s390_expand_cs_hqi): Removed. - (s390_expand_cs, s390_expand_atomic_exchange_tdsi): New prototypes. - * config/s390/s390.c (s390_emit_compare_and_swap): Handle all integer - modes as well as CCZ1mode and CCZmode. - (s390_expand_atomic_exchange_tdsi, s390_expand_atomic): Adapt to new - signature of s390_emit_compare_and_swap. - (s390_expand_cs_hqi): Likewise, make static. - (s390_expand_cs_tdsi): Generate an explicit compare before trying - compare-and-swap, in some cases. - (s390_expand_cs): Wrapper function. - (s390_expand_atomic_exchange_tdsi): New backend specific expander for - atomic_exchange. - (s390_match_ccmode_set): Allow CCZmode <-> CCZ1 mode. - * config/s390/s390.md ("atomic_compare_and_swap"): Merge the - patterns for small and large integers. Forbid symref memory operands. - Move expander to s390.c. Require cc register. - ("atomic_compare_and_swap_internal") - ("*atomic_compare_and_swap_1") - ("*atomic_compare_and_swapdi_2") - ("*atomic_compare_and_swapsi_3"): Use s_operand to forbid - symref memory operands. Remove CC mode and call s390_match_ccmode - instead. - ("atomic_exchange"): Allow and implement all integer modes. - -2017-04-25 Dominik Vogt - - * config/s390/s390.md (define_peephole2): New peephole to help - combining the load-and-test pattern with volatile memory. - -2017-04-25 Dominik Vogt - - * config/s390/s390.md ("cstorecc4"): Use load-on-condition and deal - with CCZmode for TARGET_Z196. - -2017-04-25 Jakub Jelinek - - PR rtl-optimization/80501 - * combine.c (make_compound_operation_int): Set subreg_code to SET - even for AND with mask of the sign bit of mode. - - PR rtl-optimization/80500 - * loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on - sum's initial value. - -2017-04-25 Julian Brown - Naveen H.S - - * config/aarch64/thunderx2t99.md (thunderx2t99_crc): New Reservation. - -2017-04-25 Marc Glisse - - * fold-const.c (tree_single_nonzero_warnv_p): Handle SSA_NAME. - -2017-04-25 Julian Brown - Naveen H.S - - * config/aarch64/thunderx2t99.md (thunderx2t99_aes): New Reservation. - (thunderx2t99_sha): New Reservation. - -2017-04-25 Julian Brown - Naveen H.S - - * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set): Fix - type for 1-element load. - -2017-04-24 Marc Glisse - - * match.pd (X/[ex]C CMP Y/[ex]C): New transformation. - -2017-04-24 Martin Jambor - - PR tree-optimization/80293 - * tree-sra.c (scalarizable_type_p): New parameter const_decl, make - char arrays not totally scalarizable if it is false. - (analyze_all_variable_accesses): Pass correct value in the new - parameter. Add a statistics counter. - -2017-04-24 Jan Hubicka - - PR middle-end/79931 - * ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE. - -2017-04-24 Richard Biener - - PR tree-optimization/80494 - * tree-scalar-evolution.c (analyze_scalar_evolution_1): Bail - out for complex types. - -2017-04-24 Richard Biener - - * tree-ssa-sccvn.h (run_scc_vn): Adjust prototype. - * tree-ssa-sccvn.c (print_scc): Print SCC size. - (extract_and_process_scc_for_name): Never fail but drop SCC to varying. - (DFS): Adjust and never fail. - (sccvn_dom_walker::fail): Remove. - (sccvn_dom_walker::before_dom_children): Adjust. - (run_scc_vn): Likewise and never fail. - * tree-ssa-pre.c (pass_pre::execute): Adjust. - (pass_fre::execute): Likewise. - -2017-04-24 Richard Biener - - PR tree-optimization/79725 - * tree-ssa-sink.c (statement_sink_location): Return whether - failure reason was zero uses. Move that check later. - (sink_code_in_bb): Deal with zero uses by removing the stmt - if possible. - -2017-04-24 Richard Biener - - PR c++/2972 - * tree-ssa-uninit.c (warn_uninitialized_vars): Handle some - pointer-based references. - -2017-04-24 Richard Biener - - PR bootstrap/79814 - * pass_manager.h (pass_manager::operator new): Remove. - (pass_manager::operator delete): Likewise. - * passes.c (pass_manager::operator new): Remove. - (pass_manager::operator delete): Likewise. - (pass_manager::pass_manager): Zero individual pass members. - -2017-04-23 Uros Bizjak - - PR target/70799 - * config/i386/i386.c (dimode_scalar_to_vector_candidate_p) - : Also consider variable shifts. - Check "XEXP (src, 1)" operand here. - : - Check "XEXP (src, 1)" operand here. - (dimode_scalar_chain::make_vector_copies): Detect count register - of a shift instruction. Zero extend count register from QImode - to DImode to satisfy vector shift pattern count operand predicate. - Substitute vector shift count operand with a DImode copy. - (dimode_scalar_chain::convert_reg): Ditto, zero-extend from - vector register. - -2017-04-21 Uros Bizjak - - * config/i386/i386.md (*extzvqi_mem_rex64): Move above *extzv. - Remove UNSPEC_NOREX_MEM tag. Update corresponding peephole2 pattern. - (*insvqi_1_mem_rex64): Move above insv_1. Remove - UNSPEC_NOREX_MEM tag. Update corresponding peephole2 pattern. - (UNSPEC_NOREX_MEM): Remove definition. - -2017-04-21 Richard Biener - - PR tree-optimization/79547 - * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): - Handle strlen, strcmp, strncmp, strcasecmp, strncasecmp, memcmp, - bcmp, strspn, strcspn, __builtin_object_size and __builtin_constant_p - without any constraints. - -2017-04-21 Richard Biener - - PR tree-optimization/78847 - * fold-const.c (split_tree): Handle POINTER_PLUS_EXPR. - -2017-04-21 Richard Biener - - * tree.h (build_qualified_type): Annotate with CXX_MEM_STAT_INFO. - (build_distinct_type_copy): Likewise. - (build_variant_type_copy): Likewise. - * tree.c (build_qualified_type): Pass down mem-stat info. - (build_distinct_type_copy): Likewise. - (build_variant_type_copy): Likewise. - -2017-04-21 Richard Biener - - PR tree-optimization/80237 - * tree-ssa-pre.c (find_leader_in_sets): Add third set argument, - defaulted to NULL. - (phi_translate_1): Also allow a leader in AVAIL_OUT of pred - for a simplified result. - -2016-04-21 Richard Biener - - * tree-ssa-loop-ivcanon.c (constant_after_peeling): Do not require - sth as strict as a simple_iv but a chrec without symbols and an - operand defined in the loop we are peeling (and not some subloop). - (propagate_constants_for_unrolling): Propagate all constants. - -2017-04-20 Uros Bizjak - - PR target/79804 - * config/i386/i386.c (print_reg): Remove assert for disalowed - regno values, call output_operand_lossage instead. - -2017-04-20 Uros Bizjak - - PR target/78090 - * config/i386/constraints.md (Yc): New register constraint. - * config/i386/i386.md (*float2_mixed): - Use Yc constraint for alternative 2 of operand 0. Remove - preferred_for_speed attribute. - -2017-04-20 Alexander Monakov - - * omp-low.c (lower_lastprivate_clauses): Correct handling of linear and - lastprivate clauses in SIMT case. - -2017-04-20 Volker Reichelt - - * doc/invoke.texi (-Wextra-semi): Document new warning option. - -2017-04-20 Richard Biener - - PR tree-optimization/57796 - * tree-vect-stmts.c (vect_model_store_cost): Cost scatters - as N scalar stores. - (vect_model_load_cost): Cost gathers as N scalar loads. - -2017-04-20 Richard Biener - - * ggc-page.c (ggc_allocated_p): Rename to ... - (safe_lookup_page_table_entry): ... this and return the lookup - result. - (gt_ggc_m_S): Use safe_lookup_page_table_entry. - -2017-04-20 Richard Biener - - PR tree-optimization/80453 - * tree-ssa-sccvn.h (struct vn_phi_s): Add cclhs and ccrhs members. - * tree-ssa-sccvn.c (cond_stmts_equal_p): Use recorded lhs and rhs - from the conditions. - (vn_phi_eq): Pass them down. - (vn_phi_lookup): Record them. - (vn_phi_insert): Likewise. - -2017-04-20 Matthew Fortune - - * config/mips/mips.c (mips_expand_vec_perm_const): Re-fix - uninitialized variable warning to avoid buffer overrun. - -2017-04-20 Alexander Monakov - - PR other/71250 - * doc/invoke.texi (-Wmissing-field-initializers): Mention that warning - is suppressed for '{ 0 }' in C. - -2017-04-20 Jakub Jelinek - - * BASE-VER: Set to 8.0.0. - -2017-04-20 Thomas Preud'homme - - * config/arm/arm.c (arm_elf_asm_cdtor): Create non-default - priority .init_array and .fini_array section with SECTION_NOTYPE - flag. - -2017-04-20 Jakub Jelinek - - PR middle-end/80423 - * tree.h (build_array_type): Add typeless_storage default argument. - * tree.c (type_cache_hasher::equal): Also compare - TYPE_TYPELESS_STORAGE flag for ARRAY_TYPEs. - (build_array_type): Add typeless_storage argument, set - TYPE_TYPELESS_STORAGE to it, if shared also hash it, and pass to - recursive call. - (build_nonshared_array_type): Adjust build_array_type_1 caller. - (build_array_type): Likewise. Add typeless_storage argument. - -2017-04-19 Eric Botcazou - Jakub Jelinek - - PR tree-optimization/80426 - * tree-vrp.c (extract_range_from_binary_expr_1): For an additive - operation on symbolic operands, also compute the overflow for the - invariant part when the operation degenerates into a negation. - -2017-04-19 Jakub Jelinek - - PR debug/80461 - * dwarf2out.c (modified_type_die, gen_type_die_with_usage): - Check for t with zero TYPE_QUALS_NO_ADDR_SPACE. - - PR debug/80436 - * tree-ssa-loop-manip.c (find_uses_to_rename_def): Ignore debug uses. - -2017-04-19 Georg-Johann Lay - - PR target/80462 - * config/avr/avr.c (tree.h): Include it. - (cgraph.h): Include it. - (avr_encode_section_info): Don't warn for uninitialized progmem - variable if it's just an alias. - -2017-04-19 Richard Biener - - PR ipa/65972 - * auto-profile.c (afdo_vpt_for_early_inline): Update SSA - when needed by AutoPGO. - -2017-04-19 Paulo J. Matos - - PR lto/50345 - * doc/lto.texi: Remove an extra 'that'. - -2017-04-19 Segher Boessenkool - - PR rtl-optimization/80429 - * ira.c (split_live_ranges_for_shrink_wrap): Don't split regs that - are only used in debug insns. - -2017-04-19 Eric Botcazou - Vladimir Makarov - - * config/sparc/predicates.md (input_operand): Add comment. Return - true for any memory operand when LRA is in progress. - * config/sparc/sparc.c (sparc_expand_move): Minor formatting fix. - -2017-04-18 Jeff Law - - PR target/74563 - * mips.md ({return,simple_return}_internal): Do not overwrite - operands[0]. - -2017-04-18 Jakub Jelinek - - PR tree-optimization/80443 - * tree-vrp.c (intersect_ranges): For signed 1-bit precision type, - instead of adding 1, subtract -1 and similarly instead of subtracting - 1 add -1. - -2017-04-18 Richard Sandiford - - PR rtl-optimization/80357 - * haifa-sched.c (tmp_bitmap): New variable. - (model_recompute): Handle duplicate use records. - (alloc_global_sched_pressure_data): Initialize tmp_bitmap. - (free_global_sched_pressure_data): Free it. - -2017-04-18 Bernd Edlinger - - Revert: - 2017-02-20 Bernd Edlinger - * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe. - (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR - instead of SYSTEM_HEADER_DIR. - -2017-04-18 Jeff Law - - PR middle-end/80422 - * cfgcleanup.c (try_crossjump_to_edge): Verify SRC1 and SRC2 have - predecessors after walking up the insn chain. - -2017-04-18 Jakub Jelinek - - PR debug/80263 - * dwarf2out.c (modified_type_die): Try harder not to emit internal - sizetype type into debug info. - -2017-04-18 Michael Meissner - - PR target/80099 - * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Eliminate - unneeded test for TARGET_UPPER_REGS_SF. - * config/rs6000/vsx.md (vsx_extract_v4sf_var): Likewise. - -2017-04-18 Jakub Jelinek - - PR sanitizer/80444 - * sancov.c (sancov_pass): Use gsi_start_nondebug_after_labels_bb - instead of gsi_after_labels. - -2017-04-18 Jeff Law - - * regcprop.c (maybe_mode_change): Avoid creating copies of the - stack pointer. - - Revert: - 2017-04-13 Jeff Law - * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear - in operands[1] if it is a MEM and TARGET_MIPS16 is active. - -2017-04-18 Georg-Johann Lay - - PR target/79453 - * config/avr/avr.c (intl.h): Include it. - (avr_pgm_check_var_decl) [reason]: Wrap diagnostic snippets into _(). - -2017-04-18 Martin Liska - - PR gcov-profile/78783 - * gcov-tool.c (gcov_output_files): Validate that destination - file is either removed by the tool or by a user. - -2017-04-14 Andrew Burgess - Guy Benyei - - * config/arc/arc.c (arc_reorg): Move loop_end_id into a more local - block, and do not negate it, the stored id is already negative. - -2017-04-14 Andrew Burgess - - * config/arc/arc.md (doloop_begin_i): Use @pcl assembler syntax. - -2017-04-14 Michael Meissner - - PR target/80098 - * config/rs6000/rs6000-cpus.def (OTHER_P9_VECTOR_MASKS): Define - masks of options that should be turned off if the VSX vector - options are turned off. - (OTHER_P8_VECTOR_MASKS): Likewise. - (OTHER_VSX_VECTOR_MASKS): Likewise. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Call - rs6000_disable_incompatible_switches to validate no type switches - like -mvsx. - (rs6000_incompatible_switch): New function to disallow turning on - other vector options if -mno-vsx, -mno-power8-vector, or - -mno-power9-vector are specified. - -2017-04-14 Claudiu Zissulescu - - * config/arc/arc.h (CRT_CALL_STATIC_FUNCTION): Use long calls. - -2017-04-14 Claudiu Zissulescu - - * config/arc/arc-protos.h (arc_decl_pretend_args): Remove. - * config/arc/arc.c (arc_decl_pretend_args): Likewise. - * config/arc/arc.h (CFA_FRAME_BASE_OFFSET): Likewise. - (ARG_POINTER_CFA_OFFSET): Likewise. - -2017-04-14 Claudiu Zissulescu - - * config/arc/arc.c (arc_mode_dependent_address_p): Relax - conditions to take advantage of various optimizations. - -2017-04-13 Jeff Law - - * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear - in operands[1] if it is a MEM and TARGET_MIPS16 is active. - (zero_extendsidi2_dext): Likewise. - -2017-04-13 Jakub Jelinek - - PR sanitizer/80403 - * fold-const.c (fold_ternary_loc): Revert - use op0 instead of fold_convert_loc (loc, type, arg0) part of - 2017-04-12 change. - -2017-04-13 Vladimir Makarov - - PR rtl-optimization/80343 - * lra-remat.c (update_scratch_ops): Assign original hard reg to - new scratch pseudo. - -2017-04-13 Denis Khalikov - - PR sanitizer/80414 - * ubsan.c (ubsan_expand_bounds_ifn): Pass original index - to ubsan_encode_value. - -2017-04-13 Jeff Law - - * reload1.c (eliminate_regs_1): Call gen_rtx_raw_SUBREG for SUBREGs - appearing in DEBUG_INSNs. - -2017-04-13 Martin Liska - - PR gcov-profile/80413 - * gcov-io.c (gcov_write_string): Copy to buffer just when - allocated size is greater than zero. - -2017-04-13 Jakub Jelinek - - PR debug/80321 - * dwarf2out.c (decls_for_scope): Ignore declarations of - current_function_decl in BLOCK_NONLOCALIZED_VARS. - -2017-04-12 Jan Hubicka - - PR lto/69953 - * ipa-visibility.c (non_local_p): Fix typos. - (localize_node): When localizing symbol in same comdat group, - dissolve the group only when we know external symbols are going - to be privatized. - (function_and_variable_visibility): Do not localize DECL_EXTERNAL. - -2017-04-12 Jakub Jelinek - - PR tree-optimization/79390 - * optabs.c (emit_conditional_move): If the preferred op2/op3 operand - order does not result in usable sequence, retry with reversed operand - order. - - PR sanitizer/80403 - PR sanitizer/80404 - PR sanitizer/80405 - * fold-const.c (fold_ternary_loc): Use op1 instead of arg1 as argument - to fold_build2_loc. Convert TREE_OPERAND (tem, 0) to type. Use - op0 instead of fold_convert_loc (loc, type, arg0). - -2017-04-12 Jeff Law - - * genattrtab.c (write_eligible_delay): Verify DELAY_INSN still - has a delay slot in the generated code. - - * config/cris/cris.md (cris_preferred_reload_class): Return - GENNONACR_REGS rather than GENERAL_REGS. - -2017-04-12 Jakub Jelinek - - PR c/80163 - * expr.c : For EXPAND_INITIALIZER determine SIGN_EXTEND - vs. ZERO_EXTEND based on signedness of treeop0's type rather than - signedness of the result type. - -2017-04-12 Richard Biener - Jeff Law - - PR tree-optimization/80359 - * tree-ssa-dse.c (maybe_trim_partially_dead_store): Do not - trim stores to TARGET_MEM_REFs. - -2017-04-12 Richard Biener - - PR tree-optimization/79390 - * gimple-ssa-split-paths.c (is_feasible_trace): Restrict - threading case even more. - -2017-04-12 Segher Boessenkool - - PR target/80382 - * config/rs6000/sync.md (atomic_load, atomic_store - Bernd Edlinger - - PR middle-end/79671 - * alias.c (component_uses_parent_alias_set_from): Handle - TYPE_TYPELESS_STORAGE. - (get_alias_set): Likewise. - * tree-core.h (tree_type_common): Add typeless_storage flag. - * tree.h (TYPE_TYPELESS_STORAGE): New macro. - * stor-layout.c (place_union_field): Set TYPE_TYPELESS_STORAGE - for types containing members with TYPE_TYPELESS_STORAGE. - (place_field): Likewise. - (layout_type): Likewise for ARRAY_TYPE. - * lto-streamer-out.c (hash_tree): Hash TYPE_TYPELESS_STORAGE. - * tree-streamer-in.c (unpack_ts_type_common_value_fields): Stream - TYPE_TYPELESS_STORAGE. - * tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise. - -2017-04-12 Jakub Jelinek - - PR sanitizer/80349 - * fold-const.c (fold_binary_loc) : Convert arg0's - first argument to type. - -2017-04-11 Bill Schmidt - - PR target/80376 - PR target/80315 - * config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Return - CONST0_RTX (mode) rather than const0_rtx where appropriate. - (rs6000_expand_binop_builtin): Likewise. - (rs6000_expand_ternop_builtin): Likewise; also add missing - vsx_xxpermdi_* variants; also fix typo (arg1 => arg2) for - vshasigma built-ins. - * doc/extend.texi: Document that vec_xxpermdi's third argument - must be a constant. - -2017-04-11 Uros Bizjak - - * config/i386/i386.c (dimode_scalar_chain::compute_convert_gain): - Use shift_const cost parameter when calculating gain of STV shifts. - -2017-04-11 Vladimir Makarov - - PR rtl-optimization/70478 - * lra-constraints.c (process_alt_operands): Check memory for - disfavoring memory insn operand. - -2017-04-11 Jakub Jelinek - - PR middle-end/80100 - * simplify-rtx.c (simplify_binary_operation_1) : Perform - left shift in unsigned HOST_WIDE_INT type. - - PR rtl-optimization/80385 - * simplify-rtx.c (simplify_unary_operation_1): Don't transform - (not (neg X)) into (plus X -1) for complex or non-integral modes. - - PR libgomp/80394 - * omp-low.c (scan_omp_task): Don't optimize away empty tasks - if they have any depend clauses. - -2017-04-11 Martin Liska - - PR ipa/80212 - * cgraph.c (cgraph_node::dump): Dump calls_comdat_local. - * ipa-split.c (split_function): Create a local comdat symbol - if caller is in a comdat group. - -2017-04-11 Martin Liska - - PR ipa/80212 - * ipa-cp.c (determine_versionability): Handle calls_comdat_local - flags. - -2017-04-11 Martin Sebor - - PR middle-end/80364 - * gimple-ssa-sprintf.c (get_int_range): Remove second argument and - always use the int type. Use INTEGRAL_TYPE_P() rather than testing - for INTEGER_TYPE. - (directive::set_width, directive::set_precision, format_character): - Adjust. - (parse_directive): Use INTEGRAL_TYPE_P() rather than testing for - INTEGER_TYPE. - -2017-04-11 Richard Earnshaw - - PR target/80389 - * config/arm/arm.c (arm_configure_build_target): When -mcpu and -arch - conflict, set target->arch_name instead of target->cpu_name. - -2017-04-11 Richard Biener - - PR tree-optimization/80374 - * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Use - build_zero_cst, remove fold_convertible_p check again. - -2017-04-11 Martin Liska - - PR sanitizer/70878 - * ubsan.c (instrument_object_size): Do not instrument register - variables. - -2017-04-11 Jakub Jelinek - - PR target/80381 - * config/i386/i386-builtin-types.def - (V16HI_FTYPE_V16HI_INT_V16HI_UHI_COUNT, - V16HI_FTYPE_V16HI_V8HI_V16HI_UHI_COUNT, - V16SI_FTYPE_V16SI_INT_V16SI_UHI_COUNT, - V16SI_FTYPE_V16SI_V4SI_V16SI_UHI_COUNT, - V2DI_FTYPE_V2DI_INT_V2DI_UQI_COUNT, - V2DI_FTYPE_V2DI_V2DI_V2DI_UQI_COUNT, - V32HI_FTYPE_V32HI_INT_V32HI_USI_COUNT, - V32HI_FTYPE_V32HI_V8HI_V32HI_USI_COUNT, - V4DI_FTYPE_V4DI_INT_V4DI_UQI_COUNT, - V4DI_FTYPE_V4DI_V2DI_V4DI_UQI_COUNT, - V4SI_FTYPE_V4SI_INT_V4SI_UQI_COUNT, - V4SI_FTYPE_V4SI_V4SI_V4SI_UQI_COUNT, - V8DI_FTYPE_V8DI_INT_V8DI_UQI_COUNT, - V8DI_FTYPE_V8DI_V2DI_V8DI_UQI_COUNT, - V8HI_FTYPE_V8HI_INT_V8HI_UQI_COUNT, - V8HI_FTYPE_V8HI_V8HI_V8HI_UQI_COUNT, - V8SI_FTYPE_V8SI_INT_V8SI_UQI_COUNT, - V8SI_FTYPE_V8SI_V4SI_V8SI_UQI_COUNT): New function type aliases. - * config/i386/i386-builtin.def (__builtin_ia32_pslld512_mask, - __builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask, - __builtin_ia32_psllqi512_mask, __builtin_ia32_psrad512_mask, - __builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask, - __builtin_ia32_psraqi512_mask, __builtin_ia32_psrld512_mask, - __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask, - __builtin_ia32_psrlqi512_mask, __builtin_ia32_psllwi128_mask, - __builtin_ia32_pslldi128_mask, __builtin_ia32_psllqi128_mask, - __builtin_ia32_psllw128_mask, __builtin_ia32_pslld128_mask, - __builtin_ia32_psllq128_mask, __builtin_ia32_psllwi256_mask, - __builtin_ia32_psllw256_mask, __builtin_ia32_pslldi256_mask, - __builtin_ia32_pslld256_mask, __builtin_ia32_psllqi256_mask, - __builtin_ia32_psllq256_mask, __builtin_ia32_psradi128_mask, - __builtin_ia32_psrad128_mask, __builtin_ia32_psradi256_mask, - __builtin_ia32_psrad256_mask, __builtin_ia32_psraqi128_mask, - __builtin_ia32_psraq128_mask, __builtin_ia32_psraqi256_mask, - __builtin_ia32_psraq256_mask, __builtin_ia32_psrldi128_mask, - __builtin_ia32_psrld128_mask, __builtin_ia32_psrldi256_mask, - __builtin_ia32_psrld256_mask, __builtin_ia32_psrlqi128_mask, - __builtin_ia32_psrlq128_mask, __builtin_ia32_psrlqi256_mask, - __builtin_ia32_psrlq256_mask, __builtin_ia32_psrawi256_mask, - __builtin_ia32_psraw256_mask, __builtin_ia32_psrawi128_mask, - __builtin_ia32_psraw128_mask, __builtin_ia32_psrlwi256_mask, - __builtin_ia32_psrlw256_mask, __builtin_ia32_psrlwi128_mask, - __builtin_ia32_psrlw128_mask, __builtin_ia32_psllwi512_mask, - __builtin_ia32_psllw512_mask, __builtin_ia32_psrawi512_mask, - __builtin_ia32_psraw512_mask, __builtin_ia32_psrlwi512_mask, - __builtin_ia32_psrlw512_mask): Use _COUNT suffixed function type - aliases. - * config/i386/i386.c (ix86_expand_args_builtin): Rename last_arg_count - flag to second_arg_count, handle 4 argument function type _COUNT - aliases, handle second_arg_count on second argument rather than last. - -2017-04-10 Jeff Law - - PR tree-optimization/80374 - * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Do not try to - record anything if we can not convert integer_zero_node to the - desired type. - -2017-04-10 Kelvin Nilsen - - PR target/80108 - * config/rs6000/rs6000.c (rs6000_option_override_internal): - Enhance special handling given to the TARGET_P9_MINMAX option in - relation to certain other options. - -2017-04-10 Bin Cheng - - PR tree-optimization/80153 - * tree-ssa-loop-ivopts.c (add_iv_candidate_for_use): Check and - remove POINTER_PLUS_EXPR's base part directly, rather than through - aff_tree. - -2017-04-10 Richard Biener - Bin Cheng - - PR tree-optimization/80153 - * tree-affine.c (aff_combination_to_tree): Get base pointer from - the first element of pointer type aff_tree. Build result expr in - aff_tree's type. - (add_elt_to_tree): Convert to type unconditionally. Remove other - fold_convert calls. - * tree-ssa-loop-ivopts.c (alloc_iv): Pass in consistent types. - (rewrite_use_nonlinear_expr): Check invariant using iv information. - -2017-04-10 Richard Biener - - * tree-ssa-structalias.c (find_func_aliases): Properly handle - asm inputs. - -2017-04-10 Vladimir Makarov - - PR rtl-optimization/70478 - * lra-constraints.c (curr_small_class_check): New. - (update_and_check_small_class_inputs): New. - (process_alt_operands): Update curr_small_class_check. Disfavor - alternative insn memory operands. Check available regs for small - class operands. - -2017-03-31 Matthew Fortune - - PR target/80057 - * config/mips/mips.opt (-mvirt): Update description. - * doc/invoke.texi (-mvirt): Likewise. - -2017-04-10 Richard Biener - - PR middle-end/80362 - * fold-const.c (fold_binary_loc): Look at unstripped ops when - looking for NEGATE_EXPR in -A / -B to A / B folding. - -2017-04-10 Martin Liska - - PR gcov-profile/80224 - * gcov.c (print_usage): Fix usage string. - (get_gcov_intermediate_filename): Remove. - (output_gcov_file): Use both for normal and intermediate format. - (generate_results): Do not initialize special file for - intermediate format. - -2017-04-10 Richard Biener - - PR tree-optimization/80304 - * tree-ssa-loop-im.c (ref_indep_loop_p_1): Also recurse - for safelen. - -2017-04-10 Nathan Sidwell - - PR target/79905 - * config/rs6000/rs6000.c (rs6000_vector_type): New. - (rs6000_init_builtins): Use it. - -2016-04-10 Kyrylo Tkachov - - * config/arm/arm.md (): Add mode to SET source. - (): Likewise. - -2017-04-10 Richard Biener - - PR middle-end/80344 - * gimplify.c (is_gimple_mem_rhs_or_call): Allow CLOBBERs. - -2017-04-10 Jakub Jelinek - - PR target/80324 - * config/i386/avx512fintrin.h (_mm512_reduce_add_epi32, - _mm512_reduce_mul_epi32, _mm512_reduce_and_epi32, - _mm512_reduce_or_epi32, _mm512_mask_reduce_add_epi32, - _mm512_mask_reduce_mul_epi32, _mm512_mask_reduce_and_epi32, - _mm512_mask_reduce_or_epi32, _mm512_reduce_min_epi32, - _mm512_reduce_max_epi32, _mm512_reduce_min_epu32, - _mm512_reduce_max_epu32, _mm512_mask_reduce_min_epi32, - _mm512_mask_reduce_max_epi32, _mm512_mask_reduce_min_epu32, - _mm512_mask_reduce_max_epu32, _mm512_reduce_add_ps, - _mm512_reduce_mul_ps, _mm512_mask_reduce_add_ps, - _mm512_mask_reduce_mul_ps, _mm512_reduce_min_ps, _mm512_reduce_max_ps, - _mm512_mask_reduce_min_ps, _mm512_mask_reduce_max_ps, - _mm512_reduce_add_epi64, _mm512_reduce_mul_epi64, - _mm512_reduce_and_epi64, _mm512_reduce_or_epi64, - _mm512_mask_reduce_add_epi64, _mm512_mask_reduce_mul_epi64, - _mm512_mask_reduce_and_epi64, _mm512_mask_reduce_or_epi64, - _mm512_reduce_min_epi64, _mm512_reduce_max_epi64, - _mm512_mask_reduce_min_epi64, _mm512_mask_reduce_max_epi64, - _mm512_reduce_min_epu64, _mm512_reduce_max_epu64, - _mm512_mask_reduce_min_epu64, _mm512_mask_reduce_max_epu64, - _mm512_reduce_add_pd, _mm512_reduce_mul_pd, _mm512_mask_reduce_add_pd, - _mm512_mask_reduce_mul_pd, _mm512_reduce_min_pd, _mm512_reduce_max_pd, - _mm512_mask_reduce_min_pd, _mm512_mask_reduce_max_pd): New intrinsics. - -2017-04-08 Vladimir Makarov - - PR rtl-optimization/70478 - * lra-constraints.c: Reverse the last patch. - -2017-04-08 Andreas Tobler - - * config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME. - Add comment for WCHAR_T. - -2017-04-08 Martin Liska - - Revert: - 2017-04-07 Martin Liska - - PR ipa/80212 - * ipa-split.c (split_function): Add function part to a same comdat - group. - -2017-04-08 Aaron Sawdey - - PR target/80358 - * config/rs6000/rs6000.c (expand_block_compare): Fix boundary check. - -2017-04-07 Pat Haugen - - * rs6000/rs6000.c (vec_load_pendulum): Rename... - (vec_pairing): ...to this. - (power9_sched_reorder2): Rewrite code for pairing vector/vecload insns. - (rs6000_sched_init): Adjust for name change. - (struct rs6000_sched_context): Likewise. - (rs6000_init_sched_context): Likewise. - (rs6000_set_sched_context): Likewise. - -2017-04-07 Jakub Jelinek - - PR target/80322 - PR target/80323 - PR target/80325 - PR target/80326 - * config/i386/avxintrin.h (_mm256_cvtsd_f64, _mm256_cvtss_f32): New - intrinsics. - * config/i386/avx512fintrin.h (_mm512_int2mask, _mm512_mask2int, - _mm512_abs_ps, _mm512_mask_abs_ps, _mm512_abs_pd, _mm512_mask_abs_pd, - _mm512_cvtsd_f64, _mm512_cvtss_f32): Likewise. - -2017-04-07 Andreas Tobler - - * config/aarch64/aarch64-freebsd.h: Define WCHAR_TYPE. - -2017-04-07 Vladimir Makarov - - PR rtl-optimization/70703 - * ira-color.c (update_conflict_hard_regno_costs): Use - int64_t instead of HOST_WIDE_INT. - -2017-04-07 Vladimir Makarov - - PR rtl-optimization/70478 - * lra-constraints.c (process_alt_operands): Disfavor alternative - insn memory operands. - -2017-04-07 Jeff Law - - * config/iq2000/iq2000.c (final_prescan_insn): Do not separate a - CALL and NOTE_INSN_CALL_ARG_LOCATION. - -2017-04-07 Martin Liska - - PR target/79889 - * config/aarch64/aarch64.c (aarch64_process_target_attr): - Show error message instead of an ICE. - -2017-04-07 Martin Liska - - PR ipa/80212 - * ipa-split.c (split_function): Add function part to a same comdat - group. - -2017-04-07 Richard Biener - - PR middle-end/80341 - * tree.c (get_unwidened): Also handle ! for_type case for - INTEGER_CSTs. - * convert.c (do_narrow): Split out from ... - (convert_to_integer_1): ... here. Do not pass final truncation - type to get_unwidened for TRUNC_DIV_EXPR. - -2017-04-07 Richard Biener - - * tree-affine.c (wide_int_ext_for_comb): Take type rather - than aff_tree. - (aff_combination_const): Adjust. - (aff_combination_scale): Likewise. - (aff_combination_add_elt): Likewise. - (aff_combination_add_cst): Likewise. - (aff_combination_convert): Likewise. - (add_elt_to_tree): Likewise. Remove unused argument. - (aff_combination_to_tree): Adjust calls to add_elt_to_tree. - -2017-04-07 Sebastian Huber - - * config/arm/arm.h (ARM_DEFAULT_SHORT_ENUMS): Provide default - definition. - * config/arm/arm.c (arm_default_short_enums): Use - ARM_DEFAULT_SHORT_ENUMS. - * config/arm/rtems.h (ARM_DEFAULT_SHORT_ENUMS): Define. - -2017-04-06 Jakub Jelinek - - PR debug/80234 - * dwarf2out.c (gen_member_die): Handle C++17 inline static data - members with redundant out-of-class redeclaration. - -2017-04-06 Uros Bizjak - - PR target/80286 - * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): New pattern. - * config/i386/i386.md (*zero_extendsidi2): - Add (?*x,*x) and (?*v,*v) alternatives. - -2017-04-06 Uros Bizjak - - PR target/79733 - * config/i386/i386.c (ix86_expand_builtin) - : Determine insn operand - mode from insn data. Convert operands to insn operand mode. - Copy operands that don't satisfy insn predicate to a register. - -2017-04-06 Sam Thursfield - - * config/rs6000/x-aix: Increase memory limit for genautomata on AIX. - Update comments. - -2017-04-06 Richard Biener - - PR tree-optimization/80334 - * tree-ssa-loop-ivopts.c (rewrite_use_address): Properly - preserve alignment of accesses. - -2017-04-06 Richard Biener - - PR tree-optimization/80262 - * tree-sra.c (build_ref_for_offset): Preserve address-space - information. - * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): - Drop useless address-space information on MEM_REF offsets. - -2017-04-05 Andreas Schwab - - * builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): Fix type. - -2017-04-05 Vladimir Makarov - - PR rtl-optimization/70703 - * ira-color.c (update_conflict_hard_regno_costs): Use - HOST_WIDE_INT instead of long. - -2017-04-05 Uros Bizjak - - PR target/80298 - * config/i386/mmintrin.h: Add -msse target option when __SSE__ is - not defined for x86_64 target. Add -mmmx target option when __SSE2__ - is not defined. - * config/i386/mm3dnow.h: Add -msse target when __SSE__ is not defined - for x86_64 target. Handle -m3dnowa option. - -2017-04-05 Vladimir Makarov - - PR rtl-optimization/70703 - * ira-color.c (update_costs_from_allocno): Use the smallest mode. - (update_conflict_hard_regno_costs): Use long instead of unsigned - arithmetic for cost calculation. - -2017-04-05 Jakub Jelinek - Bernd Edlinger - - PR sanitizer/80308 - * asan.c (asan_store_shadow_bytes): Fix location of last_chunk_value - for big endian. - -2017-04-05 Eric Botcazou - - PR target/78002 - * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Replace - ptr_mode with Pmode throughout. - * config/aarch64/aarch64.md (probe_stack_range_ - - PR target/79890 - * config/s390/s390.c (s390_register_info_gprtofpr): Return if - call_eh_return is true. - -2017-04-05 Andreas Krebbel - - * config/s390/s390-c.c (s390_resolve_overloaded_builtin): - Initialize last_match_fntype_index. - -2017-04-05 Jakub Jelinek - - PR target/80310 - * tree-nvr.c: Include internal-fn.h. - (pass_return_slot::execute): Ignore internal calls without - direct optab. - -2017-04-04 Jakub Jelinek - Richard Biener - - PR c++/80297 - * genmatch.c (capture::gen_transform): For GENERIC unshare_expr - captures used multiple times, except for the last use. - * generic-match-head.c: Include gimplify.h. - -2017-04-04 Jakub Jelinek - - PR tree-optimization/79390 - * target.h (struct noce_if_info): Declare. - * targhooks.h (default_noce_conversion_profitable_p): Declare. - * target.def (noce_conversion_profitable_p): New target hook. - * ifcvt.h (struct noce_if_info): New type, moved from ... - * ifcvt.c (struct noce_if_info): ... here. - (noce_conversion_profitable_p): Renamed to ... - (default_noce_conversion_profitable_p): ... this. No longer - static nor inline. - (noce_try_store_flag_constants, noce_try_addcc, - noce_try_store_flag_mask, noce_try_cmove, noce_try_cmove_arith, - noce_convert_multiple_sets): Use targetm.noce_conversion_profitable_p - instead of noce_conversion_profitable_p. - * config/i386/i386.c: Include ifcvt.h. - (ix86_option_override_internal): Don't override - PARAM_MAX_RTL_IF_CONVERSION_INSNS default. - (ix86_noce_conversion_profitable_p): New function. - (TARGET_NOCE_CONVERSION_PROFITABLE_P): Redefine. - * config/i386/x86-tune.def (X86_TUNE_ONE_IF_CONV_INSN): Adjust comment. - * doc/tm.texi.in (TARGET_NOCE_CONVERSION_PROFITABLE_P): Add. - * doc/tm.texi: Regenerated. - -2017-04-04 Bill Schmidt - - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Grammar - correction. - -2017-04-04 Thomas Preud'homme - - PR target/80307 - * config/arm/arm.c (thumb1_rtx_costs): Give a cost of 32 - instructions for small multiply cores. - -2017-04-04 Jeff Law - - * config/mips/mips.c (mips_multi_add): Zero initialize the newly - added member. - (mips_expand_vec_perm_const): Initialize elements in orig_perm - that are not set by the loop over the elements. - -2017-04-04 Jakub Jelinek - - PR target/80286 - * config/i386/i386.c (ix86_expand_args_builtin): If op has scalar - int mode, convert_modes it to mode as unsigned, otherwise use - lowpart_subreg to mode rather than SImode. - * config/i386/sse.md (ashr3, - ashr3, ashr3, 3): - Use DImode instead of SImode for the shift count operand. - * config/i386/mmx.md (mmx_ashr3, mmx_3): - Likewise. - -2017-04-04 Richard Biener - - PR middle-end/80281 - * match.pd (A + (-B) -> A - B): Make sure to preserve unsigned - arithmetic done for the negate or the plus. Simplify. - (A - (-B) -> A + B): Likewise. - * fold-const.c (split_tree): Make sure to not negate pointers. - -2017-04-04 Segher Boessenkool - - PR rtl-optimization/60818 - * simplify-rtx.c (simplify_binary_operation_1): Do not replace - a compare of comparisons with the thing compared if this results - in a different machine mode. - -2017-04-03 Jonathan Wakely - - * alias.c (base_alias_check): Fix typo in comment. - * cgraph.h (class ipa_polymorphic_call_context): Likewise. - * cgraphunit.c (symbol_table::compile): Likewise. - * collect2.c (maybe_run_lto_and_relink): Likewise. - * config/arm/arm.c (arm_thumb1_mi_thunk): Likewise. - * config/avr/avr-arch.h (avr_arch_info_t): Likewise. - * config/avr/avr.c (avr_map_op_t): Likewise. - * config/cr16/cr16.h (DATA_ALIGNMENT): Likewise. - * config/epiphany/epiphany.c (TARGET_ARG_PARTIAL_BYTES): Likewise. - * config/epiphany/epiphany.md (movcc): Likewise. - * config/i386/i386.c (legitimize_pe_coff_extern_decl): Likewise. - * config/m68k/m68k.c (struct _sched_ib, m68k_sched_variable_issue): - Likewise. - * config/mips/mips.c (mips_save_restore_reg): Likewise. - * config/rx/rx.c (rx_is_restricted_memory_address): Likewise. - * config/s390/s390.c (Z10_EARLYLOAD_DISTANCE): Likewise. - * config/sh/sh.c (sh_rtx_costs): Likewise. - * fold-const.c (fold_truth_andor): Likewise. - * genautomata.c (collapse_flag): Likewise. - * gengtype.h (struct type::u::s): Likewise. - * gensupport.c (has_subst_attribute, add_mnemonic_string): Likewise. - * input.c (FORMAT_AMOUNT): Likewise. - * ipa-cp.c (class ipcp_lattice, agg_replacements_to_vector) - (known_aggs_to_agg_replacement_list): Likewise. - * ipa-inline-analysis.c: Likewise. - * ipa-inline.h (estimate_edge_time, estimate_edge_hints): Likewise. - * ipa-polymorphic-call.c - (ipa_polymorphic_call_context::restrict_to_inner_class): Likewise. - * loop-unroll.c (analyze_insn_to_expand_var): Likewise. - * lra.c (lra_optional_reload_pseudos, lra_subreg_reload_pseudos): - Likewise. - * modulo-sched.c (apply_reg_moves): Likewise. - * omp-expand.c (build_omp_regions_1): Likewise. - * trans-mem.c (struct tm_wrapper_hasher): Likewise. - * tree-ssa-loop-ivopts.c (may_eliminate_iv): Likewise. - * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Likewise. - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise. - * value-prof.c: Likewise. - * var-tracking.c (val_reset): Likewise. - -2017-04-03 Richard Biener - - PR tree-optimization/80275 - * fold-const.c (split_address_to_core_and_offset): Handle - POINTER_PLUS_EXPR. - -2017-04-03 Eric Botcazou - - * tree-nested.c (get_descriptor_type): Make sure that the alignment of - descriptors is at least equal to that of functions. - -2017-04-02 Uros Bizjak - - * config/i386/sse.md (movdi_to_sse): Add missing DONE. - -2017-04-02 Uros Bizjak - - PR target/80250 - * config/i386/sse.md (mov): Remove insn pattern. - (mov): New expander. - (*mov_internal): New insn and split pattern. - -2017-03-31 Segher Boessenkool - - PR rtl-optimization/79405 - * fwprop.c (propagations_left): New variable. - (forward_propagate_into): Decrement it. - (fwprop_init): Initialize it. - (fw_prop): If the variable has reached zero, stop propagating. - (fwprop_addr): Ditto. - -2017-03-31 Jakub Jelinek - - PR debug/79255 - * dwarf2out.c (decls_for_scope): If BLOCK_NONLOCALIZED_VAR is - a FUNCTION_DECL, pass it as decl instead of origin to - process_scope_var. - -2017-03-31 Alexander Monakov - - * config/nvptx/nvptx.c (nvptx_output_softstack_switch): Correct format - string. - -2017-03-31 Pat Haugen - - PR target/80107 - * config/rs6000/rs6000.md (extendhi2): Add test for - TARGET_VSX_SMALL_INTEGER. - -2017-03-31 Bill Schmidt - - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add - reference to the OpenPOWER 64-Bit ELF V2 ABI Specification. - -2017-03-31 Matthew Fortune - - * config/mips/mips-msa.md (msa_vec_extract_): Update - extraction from odd-numbered MSA register. - -2017-03-31 Jakub Jelinek - - PR middle-end/80173 - * expmed.c (store_bit_field_1): Don't attempt to create - a word subreg out of hard registers wider than word if they - have HARD_REGNO_NREGS of 1 for their mode. - - PR middle-end/80163 - * varasm.c (initializer_constant_valid_p_1): Disallow sign-extending - conversions to integer types wider than word and pointer. - - PR debug/80025 - * cselib.h (rtx_equal_for_cselib_1): Add depth argument. - (rtx_equal_for_cselib_p): Pass 0 to it. - * cselib.c (cselib_hasher::equal): Likewise. - (rtx_equal_for_cselib_1): Add depth argument. If depth - is 128, don't look up VALUE locs and punt. Increment - depth in recursive calls when walking VALUE locs. - -2017-03-31 Bernd Edlinger - - * gcov.c (md5sum_to_hex): Fix output of MD5 hex bytes. - (make_gcov_file_name): Use the canonical path name for generating - the MD5 value. - (read_line): Fix handling of files with ascii null bytes. - -2017-03-30 Matthew Fortune - - * config/mips/mips.c (mips_expand_vector_init): Create a const_vector - to initialise a vector register instead - of using a const_int. - -2017-03-30 Jakub Jelinek - - PR translation/80189 - * gimplify.c (omp_default_clause): Use %qs instead of %s in - diagnostic messages. - -2017-03-30 Peter Bergner - - PR target/80246 - * config/rs6000/dfp.md (dfp_dxex_): Update mode of operand 0. - (dfp_diex_): Update mode of operand 1. - * doc/extend.texi (dxex, dxexq): Document change to return type. - (diex, diexq): Document change to argument type. - -2017-03-30 Martin Jambor - - PR ipa/77333 - * cgraph.h (cgraph_build_function_type_skip_args): Declare. - * cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that - it reflects the signature changes performed at the callee side. - * cgraphclones.c (build_function_type_skip_args): Make public, renamed - to cgraph_build_function_type_skip_args. - (build_function_decl_skip_args): Adjust call to the above function. - -2017-03-30 Jakub Jelinek - - PR target/80206 - * config/i386/sse.md - (_vextract_mask): Use - register as dest whenever it is a MEM not rtx_equal_p to the - corresponding dup operand, and when forcing into reg move the - reg into the memory afterwards. - (_vextract_mask): - Likewise. Use instead of - for the force_reg mode. - (avx512vl_vextractf128): Use register as dest either - always when a MEM, or when it is a MEM not rtx_equal_p to the - corresponding dup operand, or even not when it is a CONST_VECTOR - depending on the mode and lo vs. hi. - (avx512dq_vextract64x2_1_maskm): Remove extraneous - parens. - (avx512f_vextract32x4_1_maskm): Likewise. - (avx512dq_vextract64x2_1): - Likewise. Require that operands[2] is even. - (avx512f_vextract32x4_1): - Remove extraneous parens. Require that operands[2] is a multiple - of 4. - (vec_extract_lo_): Don't bother testing if - operands[0] is a MEM if , the predicates/constraints - disallow memory then. - -2017-03-30 Richard Biener - - PR tree-optimization/77498 - * tree-ssa-pre.c (phi_translate_1): Do not allow simplifications - to non-constants over backedges. - -2017-03-29 Segher Boessenkool - - PR rtl-optimization/80233 - * combine.c (combine_instructions): Only take NONDEBUG_INSN_P insns - as last_combined_insn. Do not test for BARRIER_P separately. - -2017-03-29 Andreas Schwab - - PR ada/80146 - * calls.c (prepare_call_address): Convert funexp to Pmode before - copying to temp reg. - -2017-03-29 Bill Schmidt - - PR tree-optimization/80158 - * gimple-ssa-strength-reduction.c (replace_mult_candidate): - Handle possible future case of more than one alternate - interpretation. - (replace_rhs_if_not_dup): Likewise. - (replace_one_candidate): Likewise. - -2017-03-28 Vladimir Makarov - - PR rtl-optimization/80193 - * ira.c (ira): Do not check allocation for LRA. - -2017-03-28 Alexander Monakov - - * config/nvptx/nvptx-protos.h (nvptx_output_simt_enter): Declare. - (nvptx_output_simt_exit): Declare. - * config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Use - cfun->machine->unisimt_location. Handle NULL unisimt_predicate. - (init_softstack_frame): Move initialization of crtl->is_leaf to... - (nvptx_declare_function_name): ...here. Emit declaration of local - memory space buffer for omp_simt_enter insn. - (nvptx_output_unisimt_switch): New. - (nvptx_output_softstack_switch): New. - (nvptx_output_simt_enter): New. - (nvptx_output_simt_exit): New. - * config/nvptx/nvptx.h (struct machine_function): New fields - has_simtreg, unisimt_location, simt_stack_size, simt_stack_align. - * config/nvptx/nvptx.md (UNSPECV_SIMT_ENTER): New unspec. - (UNSPECV_SIMT_EXIT): Ditto. - (omp_simt_enter_insn): New insn. - (omp_simt_enter): New expansion. - (omp_simt_exit): New insn. - * config/nvptx/nvptx.opt (msoft-stack-reserve-local): New option. - - * internal-fn.c (expand_GOMP_SIMT_ENTER): New. - (expand_GOMP_SIMT_ENTER_ALLOC): New. - (expand_GOMP_SIMT_EXIT): New. - * internal-fn.def (GOMP_SIMT_ENTER): New internal function. - (GOMP_SIMT_ENTER_ALLOC): Ditto. - (GOMP_SIMT_EXIT): Ditto. - * target-insns.def (omp_simt_enter): New insn. - (omp_simt_exit): Ditto. - * omp-low.c (struct omplow_simd_context): New fields simt_eargs, - simt_dlist. - (lower_rec_simd_input_clauses): Implement SIMT privatization. - (lower_rec_input_clauses): Likewise. - (lower_lastprivate_clauses): Handle SIMT privatization. - - * omp-offload.c: Include langhooks.h, tree-nested.h, stor-layout.h. - (ompdevlow_adjust_simt_enter): New. - (find_simtpriv_var_op): New. - (execute_omp_device_lower): Handle IFN_GOMP_SIMT_ENTER, - IFN_GOMP_SIMT_ENTER_ALLOC, IFN_GOMP_SIMT_EXIT. - - * tree-inline.h (struct copy_body_data): New field dst_simt_vars. - * tree-inline.c (expand_call_inline): Handle SIMT privatization. - (copy_decl_for_dup_finish): Ditto. - - * tree-ssa.c (execute_update_addresses_taken): Handle GOMP_SIMT_ENTER. - -2017-03-28 Uros Bizjak - - PR target/53383 - * config/i386/i386.c (ix86_option_override_internal): Always - allow -mpreferred-stack-boundary=3 for 64-bit targets. - -2017-03-28 Bin Cheng - - * tree-vect-loop.c (optimize_mask_stores): Add bb to the right loop. - -2017-03-28 Bin Cheng - - * tree-vect-loop-manip.c (slpeel_add_loop_guard): New param and - mark new edge's irreducible flag accordign to it. - (vect_do_peeling): Check loop preheader edge's irreducible flag - and pass it to function slpeel_add_loop_guard. - -2017-03-28 Richard Sandiford - - PR tree-optimization/80218 - * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds): - Update block frequencies and counts. - -2017-03-28 Richard Biener - - PR tree-optimization/78644 - * tree-ssa-ccp.c (evaluate_stmt): When we may not use the value - of a simplification result we may not use it at all. - -2017-03-28 Richard Biener - - PR ipa/80205 - * tree-inline.c (copy_phis_for_bb): Do not create PHI node - without arguments, generate default definition of a SSA name. - -2017-03-28 Richard Biener - - PR middle-end/80222 - * gimple-fold.c (gimple_fold_indirect_ref): Do not touch - TYPE_REF_CAN_ALIAS_ALL references. - * fold-const.c (fold_indirect_ref_1): Likewise. - -2017-03-28 Martin Liska - - PR ipa/80104 - * cgraphunit.c (cgraph_node::expand_thunk): Mark argument of a - thunk call as DECL_GIMPLE_REG_P when vector or complex type. - -2017-03-28 Claudiu Zissulescu - Thomas Petazzoni - - * config/arc/arc.h (CPP_SPEC): Add subtarget_cpp_spec. - (EXTRA_SPECS): Define. - (SUBTARGET_EXTRA_SPECS): Likewise. - (SUBTARGET_CPP_SPEC): Likewise. - * config/arc/elf.h (EXTRA_SPECS): Renamed to - SUBTARGET_EXTRA_SPECS. - * config/arc/linux.h (SUBTARGET_CPP_SPEC): Define. - -2017-03-28 Claudiu Zissulescu - - * config/arc/simdext.md (vst64_insn): Update pattern. - (vld32wh_insn): Likewise. - (vld32wl_insn): Likewise. - (vld64_insn): Likewise. - (vld32_insn): Likewise. - -2017-03-28 Marek Polacek - - PR sanitizer/80067 - * fold-const.c (fold_comparison): Use protected_set_expr_location - instead of SET_EXPR_LOCATION. - -2017-03-28 Markus Trippelsdorf - - * tree.c (add_expr): Avoid name lookup warning. - -2017-03-27 Jeff Law - - PR tree-optimization/80216 - * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Fix typo in - function name. Limit recursion depth. - (record_temporary_equivalences): Corresponding changes. - -2017-03-27 Jonathan Wakely - - * doc/invoke.texi (-Wno-narrowing): Reorder so default behavior is - covered first. - -2017-03-27 Jakub Jelinek - - PR target/80102 - * reg-notes.def (REG_CFA_NOTE): Define. Use it for CFA related - notes. - * cfgcleanup.c (reg_note_cfa_p): New array. - (insns_have_identical_cfa_notes): New function. - (old_insns_match_p): Don't cross-jump in between /f - and non-/f instructions. If both i1 and i2 are frame related, - verify all CFA notes, their order and content. - -2017-03-27 Michael Meissner - - PR target/78543 - * config/rs6000/rs6000.md (bswaphi2_extenddi): Combine bswap - HImode and SImode with zero extend to DImode to one insn. - (bswap2_extenddi): Likewise. - (bswapsi2_extenddi): Likewise. - (bswaphi2_extendsi): Likewise. - (bswaphi2): Combine bswap HImode and SImode into one insn. - Separate memory insns from swapping register. - (bswapsi2): Likewise. - (bswap2): Likewise. - (bswaphi2_internal): Delete, no longer used. - (bswapsi2_internal): Likewise. - (bswap2_load): Split bswap HImode/SImode into separate load, - store, and gpr<-gpr swap insns. - (bswap2_store): Likewise. - (bswaphi2_reg): Register only splitter, combine with the splitter. - (bswaphi2 splitter): Likewise. - (bswapsi2_reg): Likewise. - (bswapsi2 splitter): Likewise. - (bswapdi2): If we have the LDBRX and STDBRX instructions, split - the insns into load, store, and register/register insns. - (bswapdi2_ldbrx): Likewise. - (bswapdi2_load): Likewise. - (bswapdi2_store): Likewise. - (bswapdi2_reg): Likewise. - -2017-03-27 Gunther Nikl - - * system.h (HAVE_DESIGNATED_INITIALIZERS): Fix non C++ case. - (HAVE_DESIGNATED_UNION_INITIALIZERS): Likewise. - -2017-03-27 Kelvin Nilsen - - PR target/80103 - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Edit and - add comments. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Add - special handling for target option conflicts between dform - options (-mpower9-dform, -mpower9-dform-vector, - -mpower9-dform-scalar) and -mno-direct-move. - -2017-03-27 Richard Biener - - PR tree-optimization/80181 - * tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED. - -2017-03-27 Claudiu Zissulescu - - * config/arc/predicates.md (move_double_src_operand): Replace the - call to move_double_src_operand with a call to address_operand. - -2017-03-27 Claudiu Zissulescu - - * config/arc/elf.h (ARGET_ARC_TP_REGNO_DEFAULT): Define. - * config/arc/linux.h (ARGET_ARC_TP_REGNO_DEFAULT): Likewise. - * config/arc/arc.opt (mtp-regno): Use ARGET_ARC_TP_REGNO_DEFAULT. - -2017-03-27 Claudiu Zissulescu - - * config/arc/predicates.md (long_immediate_loadstore_operand): - Consider scaled addresses cases. - -2017-03-27 Claudiu Zissulescu - - * config/arc/arc.c (arc_epilogue_uses): BLINK should be also - restored when in interrupt. - * config/arc/arc.md (simple_return): ARCv2 rtie instruction - doesn't have delay slot. - -2017-03-27 Richard Biener - - PR ipa/79776 - * tree-ssa-structalias.c (associate_varinfo_to_alias): Skip - inlined thunk clones. - -2017-03-27 Jakub Jelinek - - PR sanitizer/80168 - * asan.c (instrument_derefs): Copy over last operand from - original COMPONENT_REF to the new COMPONENT_REF with - DECL_BIT_FIELD_REPRESENTATIVE. - * ubsan.c (instrument_object_size): Likewise. - -2017-03-27 Richard Biener - - PR tree-optimization/80170 - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Make - sure DR/SCEV didnt fold in constants we do not see when looking - at the reference base alignment. - -2017-03-27 Richard Biener - - PR middle-end/80171 - * gimple-fold.c (fold_ctor_reference): Properly guard against - NULL return value from canonicalize_constructor_val. - -2017-03-25 Uros Bizjak - - PR target/80180 - * config/i386/i386.c (ix86_expand_builtin) - : Do not expand arg0 between - flags reg setting and flags reg using instructions. - : Ditto. Use non-flags reg - clobbering instructions to zero extend op2. - -2017-03-25 Gerald Pfeifer - - * doc/install.texi (Configuration) <--with-aix-soname>: - Update link to AIX ld. - -2017-03-25 Bernd Schmidt - - PR rtl-optimization/80160 - PR rtl-optimization/80159 - * lra-assigns.c (must_not_spill_p): Tighten new test to also take - reg_alternate_class into account. - -2017-03-24 Vladimir Makarov - - PR target/80148 - * lra-assigns.c (assign_by_spills): Add spilled non-reload pseudos - to consider in curr_insn_transform. - -2017-03-24 Jakub Jelinek - - * genrecog.c (validate_pattern): Add VEC_SELECT validation. - * genmodes.c (emit_min_insn_modes_c): Call emit_mode_nunits - and emit_mode_inner. - -2017-03-24 Andreas Krebbel - - * config/s390/s390-builtins.def: Add VXE builtins. Add a flags - argument to the overloaded builtin variants. Use the new flag to - deprecate certain builtin variants. - * config/s390/s390-builtin-types.def: Add new builtin types. - * config/s390/s390-builtins.h: Support new flags field for - overloaded builtins. - * config/s390/s390-c.c (OB_DEF_VAR): New flags field. - (s390_macro_to_expand): Enable vector float data type. - (s390_cpu_cpp_builtins_internal): Indicate support of the new - builtins by incrementing the __VEC__ version number. - (s390_expand_overloaded_builtin): Support expansion of vec_xl and - vec_xst. - (s390_resolve_overloaded_builtin): Emit error messages depending - on the builtin flags. - * config/s390/s390.c (s390_expand_builtin): Support additional - flags argument. Change error message to match the messages - emitted in s390-c.c. - * config/s390/s390.md: New UNSPEC_* constants. - (op_type): Add new instruction types. - * config/s390/vecintrin.h: Add new builtins and test data class - constants. - * config/s390/vx-builtins.md (V_HW_32_64): Add V4SF. - (V_HW_4, VEC_HW, VECF_HW): New mode iterators. - (VEC_INEXACT, VEC_NOINEXACT): New constants. - ("vec_splats", "vec_insert", "vec_promote") - ("vec_insert_and_zero", "vec_mergeh") - ("vec_mergel"): V_HW -> VEC_HW. - - ("vlrlrv16qi", "vstrlrv16qi", "vbpermv16qi", "vec_msumv2di") - ("vmslg", "*vftci_cconly", "vftci_intcconly") - ("*vftci", "vftci_intcc", "vec_double_s64") - ("vec_double_u64", "vfmin", "vfmax"): New definition. - - ("and_av2df3", "and_cv2df3", "vec_andc_av2df3") - ("vec_andc_cv2df3", "xor_av2df3", "xor_cv2df3", "vec_nor_av2df3") - ("vec_nor_cv2df3", "ior_av2df3", "ior_cv2df3", "vec_nabs") - ("*vftcidb", "*vftcidb_cconly", "vftcidb"): Remove definition. - - ("vec_all_v2df", "vec_any_v2df") - ("vec_scatter_elementv4si_DI", "vec_cmpv2df") - ("vec_di_to_df_s64", "vec_di_to_df_u64", "vec_df_to_di_u64") - ("vfidb", "*vldeb", "*vledb", "*vec_cmpv2df_cconly") - ("vec_cmpeqv2df_cc", "vec_cmpeqv2df_cc", "vec_cmphv2df_cc") - ("vec_cmphev2df_cc", "*vec_cmpeqv2df_cc") - ("*vec_cmphv2df_cc", "*vec_cmphev2df_cc"): Enable new modes as ... - - ("vec_all_", "vec_any_") - ("vec_scatter_element_DI") - ("vec_cmp", "vcdgb", "vcdlgb", "vclgdb") - ("vec_fpint", "vflls") - ("vflrd", "*vec_cmp_cconly", "vec_cmpeq_cc") - ("vec_cmpeq_cc", "vec_cmph_cc", "vec_cmphe_cc") - ("*vec_cmpeq_cc", "*vec_cmph_cc") - ("*vec_cmphe_cc"): ... these. - - ("vec_ctd_s64", "vec_ctsl", "vec_ctul", "vec_st2f"): Use rounding - mode constant instead of magic value. - -2017-03-24 Andreas Krebbel - - * config/s390/s390.c (s390_expand_vec_compare): Support other - vector floating point modes than just V2DF. - (s390_expand_vcond): Likewise. - (s390_hard_regno_mode_ok): Allow SFmode values in VRs. - (s390_cannot_change_mode_class): Prevent mode changes between TF - and V1TF in vector registers. - * config/s390/s390.md (DF, SF): New mode attributes. - ("*cmp_ccs", "add3", "sub3", "mul3") - ("fma4", "fms4", "div3", "*neg2"): Add - SFmode support for VRs. - * config/s390/vector.md (V_HW, V_HW2, VT_HW, ti*, nonvec): Add new - vector fp modes. - (VFT, VF_HW): New mode iterators. - (vw, sdx): New mode attributes. - ("addv2df3", "subv2df3", "mulv2df3", "divv2df3", "sqrtv2df2") - ("fmav2df4","fmsv2df4", "negv2df2", "absv2df2", "*negabsv2df2") - ("smaxv2df3", "sminv2df3", "*vec_cmpv2df_nocc") - ("vec_cmpuneqv2df", "vec_cmpltgtv2df", "vec_orderedv2df") - ("vec_unorderedv2df"): Adjust the v2df only patterns to support - also the new vector floating point modes. Renaming to ... - - ("add3", "sub3", "mul3", "div3") - ("sqrt2", "fma4", "fms4", "neg2") - ("abs2", "negabs2", "smax3") - ("smin3", "*vec_cmp_nocc") - ("vec_cmpuneq", "vec_cmpltgt", "vec_ordered") - ("vec_unordered"): ... these. - - ("neg_fma4", "neg_fms4", "*smax3_vxe") - ("*smin3_vxe", "*sminv2df3_vx", "*vec_extendv4sf") - ("*vec_extendv2df"): New insn definitions. - -2017-03-24 Andreas Krebbel - - * config/s390/s390.md ("*adddi3_sign", "*subdi3_sign", "mulditi3") - ("mulditi3_2", "*muldi3_sign"): New patterns. - ("muldi3", "*muldi3", "mulsi3", "*mulsi3"): Add an expander and - rename the pattern definition. - -2017-03-24 Andreas Krebbel - - * config/s390/s390.md ("indirect_jump"): Turn insn definition into - expander. - ("*indirect_jump", "*indirect2_jump"): New pattern definitions. - -2017-03-24 Andreas Krebbel - - * config/s390/s390.c (s390_expand_vec_init): Use vllezl - instruction if possible. - * config/s390/vector.md (vec_halfnumelts): New mode - attribute. - ("*vec_vllezlf"): New pattern. - -2017-03-24 Andreas Krebbel - - * config/s390/vector.md ("popcountv16qi2", "popcountv8hi2") - ("popcountv4si2", "popcountv2di2"): Rename to ... - ("popcount2", "popcountv8hi2_vx", "popcountv4si2_vx") - ("popcountv2di2_vx"): ... these and add !TARGET_VXE to the - condition. - ("popcount2_vxe"): New pattern. - -2017-03-24 Andreas Krebbel - - * common/config/s390/s390-common.c (processor_flags_table): Add - arch12. - * config.gcc: Add arch12. - * config/s390/driver-native.c (s390_host_detect_local_cpu): - Default to arch12 for unknown CPU model numbers. - * config/s390/s390-builtins.def: Add B_VXE builtin flag. - * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Adjust - PROCESSOR_max sanity check. - * config/s390/s390-opts.h (enum processor_type): Add - PROCESSOR_ARCH12. - * config/s390/s390.c (processor_table): Add arch12. - (s390_expand_builtin): Add check for B_VXE flag. - (s390_issue_rate): Add PROCESSOR_ARCH12. - (s390_get_sched_attrmask): Likewise. - (s390_get_unit_mask): Likewise. - (s390_sched_score): Enable z13 scheduling for arch12. - (s390_sched_reorder): Likewise. - (s390_sched_variable_issue): Likewise. - * config/s390/s390.h (enum processor_flags): Add PF_ARCH12 and - PF_VXE. - (s390_tune_attr): Use z13 scheduling also for arch12. - (TARGET_CPU_ARCH12, TARGET_CPU_ARCH12_P, TARGET_CPU_VXE) - (TARGET_CPU_VXE_P, TARGET_ARCH12, TARGET_ARCH12_P, TARGET_VXE) - (TARGET_VXE_P): New macros. - * config/s390/s390.md: Add arch12 to cpu attribute. Add arch12 - and vxe to cpu_facility. Add arch12 and vxe to enabled attribute. - * config/s390/s390.opt: Add arch12 as processor_type. - -2017-03-24 Andreas Krebbel - - * config/s390/s390.md - ("fixuns_truncdddi2", "fixuns_trunctddi2") - ("fixuns_trunc2"): Merge into ... - ("fixuns_trunc2"): New expander. - - ("fixuns_trunc2", "fixuns_truncsi2"): - Rename expanders to ... - - ("fixuns_trunc2_emu") - ("fixuns_truncdddi2_emu"): ... these. - - ("fixuns_truncsi2_emu"): New expander. - - ("*fixuns_truncdfdi2_z13"): Rename to ... - ("*fixuns_truncdfdi2_vx"): ... this. - -2017-03-24 Andreas Krebbel - - * config/s390/2964.md: Remove the single element vector compare - instructions which are no longer used. - * config/s390/s390.c (s390_select_ccmode): Remove handling of - vector CCmodes. - (s390_canonicalize_comparison): Remove handling of DFmode - compares. - (s390_expand_vec_compare_scalar): Remove function. - (s390_emit_compare): Don't call s390_expand_vec_compare_scalar. - * config/s390/s390.md ("*vec_cmpdf_cconly"): Remove - pattern. - ("*cmp_ccs"): Add wfcdb instruction. - -2017-03-24 Andreas Krebbel - - * config/s390/s390.md ("mov_64dfp" DD_DF): Use vleig for loading a - FP zero. - ("*mov_64" DD_DF): Remove the vector instructions. These - will anyway by matched by mov_64dfp. - -2017-03-24 Andreas Krebbel - - * config/s390/s390.md ("mov" SD_SF): Change vleg/vsteg to - vlef/vstef. Add missing operand to vleif. - -2017-03-24 Andreas Krebbel - - * config/s390/s390.c (s390_expand_vec_init): Enable vector load - pair for all vector types with 64 bit elements. - * config/s390/vx-builtins.md (V_HW_64): Move mode iterator to ... - * config/s390/vector.md (V_HW_64): ... here. - (V_128_NOSINGLE): New mode iterator. - ("vec_init"): Use V_128 as mode iterator. - ("*vec_splat"): Use V_128_NOSINGLE mode iterator. - ("*vec_tf_to_v1tf", "*vec_ti_to_v1ti"): New pattern definitions. - ("*vec_load_pairv2di"): Change to ... - ("*vec_load_pair"): ... this one. - -2017-03-24 Andreas Krebbel - - * config/s390/constraints.md: Add comments. - (jKK): Reject element sizes > 8 bytes. - * config/s390/s390.c (s390_split_ok_p): Enable splitting also for - s_operands. - * config/s390/s390.md: Add the s_operand checks formerly in - s390_split_ok_p to various splitters where they are still - required. - * config/s390/vector.md ("mov" V_128): Add GPR alternatives - for 128 bit vectors. Plus two splitters. - -2017-03-24 Andreas Krebbel - - * config/s390/s390.md: Rename the cpu facilty vec to vx throughout - the file. - -2017-03-24 Andreas Krebbel - - PR target/79893 - * config/s390/s390-c.c (s390_adjust_builtin_arglist): Issue an - error if the boundary argument is not constant. - -2017-03-24 Jakub Jelinek - - PR rtl-optimization/80112 - * loop-doloop.c (doloop_condition_get): Don't check condition - if cmp isn't SET with IF_THEN_ELSE src. - -2017-03-24 Bill Schmidt - - PR tree-optimization/80158 - * gimple-ssa-strength-reduction.c (replace_mult_candidate): When - replacing a candidate statement, also replace it for the - candidate's alternate interpretation. - (replace_rhs_if_not_dup): Likewise. - (replace_one_candidate): Likewise. - -2017-03-24 Richard Biener - - PR tree-optimization/80167 - * graphite-isl-ast-to-gimple.c - (translate_isl_ast_to_gimple::is_valid_rename): Handle default-defs - properly. - (translate_isl_ast_to_gimple::get_rename): Likewise. - -2017-03-23 Kelvin Nilsen - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Change - handling of certain combinations of target options, including the - combinations -mpower8-vector vs. -mno-vsx, -mpower9-vector vs. - -mno-power8-vector, and -mpower9_dform vs. -mno-power9-vector. - -2017-03-23 Kyrylo Tkachov - - PR target/71436 - * config/arm/arm.md (*load_multiple): Add reload_completed to - matching condition. - -2017-03-23 Bill Schmidt - Richard Biener - - PR tree-optimization/79908 - PR tree-optimization/80136 - * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has - been cast away, gimplify_and_add suffices. - -2017-03-23 Markus Trippelsdorf - - * tree-vrp.c (identify_jump_threads): Delete avail_exprs. - -2017-03-23 Richard Biener - - PR tree-optimization/80032 - * gimplify.c (gimple_push_cleanup): Forced unconditional - cleanups still have to go to the conditional_cleanups - sequence. - -2017-03-22 Jakub Jelinek - - PR tree-optimization/80072 - * tree-ssa-reassoc.c (struct operand_entry): Change id field type - to unsigned int. - (next_operand_entry_id): Change type to unsigned int. - (sort_by_operand_rank): Make sure to return the right return value - even if unsigned fields are bigger than INT_MAX. - (struct oecount): Change cnt and id type to unsigned int. - (oecount_hasher::equal): Formatting fix. - (oecount_cmp): Make sure to return the right return value - even if unsigned fields are bigger than INT_MAX. - (undistribute_ops_list): Change next_oecount_id type to unsigned int. - - PR c++/80129 - * gimplify.c (gimplify_modify_expr_rhs) : Clear - TREE_READONLY on result if writing it more than once. - - PR sanitizer/80110 - * doc/invoke.texi (-fsanitize=thread): Document that with - -fnon-call-exceptions atomics are not able to throw - exceptions. - - PR sanitizer/80110 - * tsan.c: Include tree-eh.h. - (instrument_builtin_call): Call maybe_clean_eh_stmt or - maybe_clean_or_replace_eh_stmt where needed. - (instrument_memory_accesses): Add cfg_changed argument. - Call gimple_purge_dead_eh_edges on each block and set *cfg_changed - if it returned true. - (tsan_pass): Adjust caller. Return TODO_cleanup_cfg if cfg_changed. - - PR rtl-optimization/63191 - * config/i386/i386.c (ix86_delegitimize_address): Turn into small - wrapper function, moved the whole old content into ... - (ix86_delegitimize_address_1): ... this. New inline function. - (ix86_find_base_term): Use ix86_delegitimize_address_1 with - true as last argument instead of ix86_delegitimize_address. - -2017-03-22 Wilco Dijkstra - - * config/aarch64/aarch64.c (generic_branch_cost): Copy - cortexa57_branch_cost. - -2017-03-22 Wilco Dijkstra - - * config/aarch64/aarch64.c (generic_tunings): Add AES fusion. - -2017-03-21 Aaron Sawdey - - PR target/80123 - * doc/md.texi (Constraints): Document wA constraint. - * config/rs6000/constraints.md (wA): New. - * config/rs6000/rs6000.c (rs6000_debug_reg_global): Add wA reg_class. - (rs6000_init_hard_regno_mode_ok): Init wA constraint. - * config/rs6000/rs6000.h (RS6000_CONSTRAINT_wA): New. - * config/rs6000/vsx.md (vsx_splat_): Use wA constraint. - -2017-03-22 Cesar Philippidis - - PR c++/80029 - * gimplify.c (is_oacc_declared): New function. - (oacc_default_clause): Use it to set default flags for acc declared - variables inside parallel regions. - (gimplify_scan_omp_clauses): Strip firstprivate pointers for acc - declared variables. - (gimplify_oacc_declare): Gimplify the declare clauses. Add the - declare attribute to any decl as necessary. - -2017-03-22 Thomas Preud'homme - - PR target/80082 - * config/arm/arm-isa.h (isa_bit_lpae): New feature bit. - (ISA_ARMv7ve): Add isa_bit_lpae to the definition. - * config/arm/arm-protos.h (arm_arch7ve): Rename into ... - (arm_arch_lpae): This. - * config/arm/arm.c (arm_arch7ve): Rename into ... - (arm_arch_lpae): This. Define it in term of isa_bit_lpae. - * config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of - arm_arch_lpae. - -2017-03-22 Martin Liska - - PR target/79906 - * config/rs6000/rs6000.c (rs6000_inner_target_options): Show - error message instead of an ICE. - -2017-03-21 Bill Schmidt - - * doc/extend.texi (6.11 Additional Floating Types): Revise. - -2017-03-21 Kelvin Nilsen - - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add - comments. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Add - comments. - -2017-03-21 Martin Sebor - - * doc/extend.texi: Use "cannot" instead of "can't." - * doc/hostconfig.texi: Same. - * doc/install.texi: Same. - * doc/invoke.texi: Same. - * doc/loop.texi: Same. - * doc/md.texi: Same. - * doc/objc.texi: Same. - * doc/rtl.texi: Same. - * doc/tm.texi: Same. - * doc/tm.texi.in: Same. - * doc/trouble.texi: Same. - -2017-03-21 Alexandre Oliva - - PR debug/63238 - * dwarf2out.c (struct checksum_attributes): Add at_alignment. - (collect_checksum_attributes): Set it. - (die_checksum_ordered): Use it. - -2017-03-21 Bill Schmidt - - PR tree-optimization/79908 - * tree-stdarg.c (expand_ifn_va_arg_1): Revert the following - change: For a VA_ARG whose LHS has been cast away, use - force_gimple_operand to construct the side effects. - -2017-03-21 David Malcolm - - PR translation/80001 - * omp-offload.c (oacc_loop_fixed_partitions): Make diagnostics - more amenable to translation. - (oacc_loop_auto_partitions): Likewise. - -2017-03-21 Marek Polacek - Martin Sebor - - PR tree-optimization/80109 - * gimple-ssa-warn-alloca.c (alloca_call_type): Only call get_range_info - on INTEGRAL_TYPE_P. - -2017-03-21 Jakub Jelinek - Segher Boessenkool - - PR target/80125 - * combine.c (can_combine_p): Revert the 2017-03-20 change, only - check reg_used_between_p between insn and one of succ or succ2 - depending on if succ is artificial insn not inserted into insn - stream. - -2017-03-21 Martin Liska - - PR gcov-profile/80081 - * Makefile.in: Add gcov-dump and fix installation of gcov-tool. - * doc/gcc.texi: Include gcov-dump stuff. - * doc/gcov-dump.texi: New file. - -2017-03-21 Toma Tabacu - - PR rtl-optimization/79150 - * config/mips/mips.c (mips_block_move_loop): Emit a NOP after the - conditional jump, if the jump is the last insn of the loop. - -2017-03-21 Bill Schmidt - Richard Biener - - PR tree-optimization/79908 - * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has - been cast away, use force_gimple_operand to construct the side - effects. - -2017-03-21 Martin Liska - - PR libfortran/79956 - * simplify-rtx.c (simplify_immed_subreg): Initialize a variable - to NULL. - -2017-03-21 Brad Spengler - - PR plugins/80094 - * plugin.c (htab_hash_plugin): New function. - (add_new_plugin): Use it and adjust. - (parse_plugin_arg_opt): Adjust. - (init_one_plugin): Likewise. - -2017-03-21 Richard Biener - - PR tree-optimization/80032 - * gimplify.c (gimple_push_cleanup): Add force_uncond parameter, - if set force the cleanup to happen unconditionally. - (gimplify_target_expr): Push inserted clobbers with force_uncond - to avoid them being removed by control-dependent DCE. - -2017-03-21 Richard Biener - - PR tree-optimization/80122 - * tree-inline.c (copy_bb): Do not expans va-arg packs or - va_arg_pack_len when the inlined call stmt requires pack - expansion itself. - * tree-inline.h (struct copy_body_data): Make call_stmt a gcall *. - -2017-03-21 Jakub Jelinek - - PR sanitizer/78158 - * tsan.c (instrument_builtin_call): If the memory model argument - is not a constant, assume it is valid. - - PR c/67338 - * fold-const.c (round_up_loc): Negate divisor in unsigned type to - avoid UB. - -2017-03-20 Segher Boessenkool - - PR rtl-optimization/79910 - * combine.c (can_combine_p): Do not allow combining an I0 or I1 - if its dest is used by an insn before I2 (other than the combined - insns themselves, which are properly handled already). - -2017-03-20 Segher Boessenkool - - Revert: - 2017-03-17 Bernd Schmidt - - * combine.c (record_used_regs): New static function. - (try_combine): Handle situations where there is an additional - instruction between I2 and I3 which needs to have a LOG_LINK - updated. - - Revert: - 2017-03-17 Jim Wilson - - * combine.c (try_combine): Delete redundant i1 test. Call - prev_nonnote_nondebug_insn instead of prev_nonnote_insn. - -2017-03-20 Aaron Sawdey - - PR target/80083 - * config/rs6000/rs6000.md (*movsi_internal1): Fix constraints for - alternatives 13/14. - -2017-03-20 Bill Schmidt - - PR tree-optimization/80054 - * gimple-ssa-strength-reduction.c (all_phi_incrs_profitable): Fail - the optimization if a PHI or any of its arguments is not dominated - by the candidate's basis. Use gphi* rather than gimple* as - appropriate. - (replace_profitable_candidates): Clean up a gimple* variable that - should be a gphi* variable. - -2017-03-20 Martin Sebor - - PR c++/52477 - * doc/extend.texi (attribute constructor): Document present limitation. - -2017-03-20 Kelvin Nilsen - - PR target/79963 - * config/rs6000/altivec.h (vec_all_ne): Under __cplusplus__ and - __POWER9_VECTOR__ #ifdef control, change template definition to - use Power9-specific built-in function. - (vec_any_eq): Likewise. - * config/rs6000/vector.md (vector_ae_v2di_p): Change the flag used - to control outcomes from this test. - (vector_ae_p): For VEC_F modes, likewise. - -2017-03-20 Ian Lance Taylor - - * config/i386/i386.c (ix86_function_regparm): Save an extra - register for -fsplit-stack with DECL_STATIC_CHAIN. - -2017-03-17 Palmer Dabbelt - - PR target/79912 - * config/riscv/riscv.c (riscv_preferred_reload_class): Remove. - (TARGET_PREFERRED_RELOAD_CLASS): Likewise. - -2017-03-17 Palmer Dabbelt - - * config/riscv/riscv.c (riscv_print_operand): Use "fence - iorw,ow". - * config/riscv/sync.mc (mem_thread_fence_1): Use "fence - iorw,iorw". - -2017-03-20 Marek Polacek - - PR sanitizer/80063 - * asan.c (DEF_SANITIZER_BUILTIN): Use do { } while (0). - -2017-03-20 Richard Biener - - PR tree-optimization/80113 - * graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Do not - allocate extra SSA name for PHI def. - (add_close_phis_to_outer_loops): Likewise. - (add_close_phis_to_merge_points): Likewise. - (copy_loop_close_phi_args): Likewise. - (copy_cond_phi_nodes): Likewise. - -2017-03-20 Martin Liska - - PR middle-end/79753 - * tree-chkp.c (chkp_build_returned_bound): Do not build - returned bounds for a LHS that's not a BOUNDED_P type. - -2017-03-20 Martin Liska - - PR target/79769 - PR target/79770 - * tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST, - COMPLEX_CST and VECTOR_CST. - -2017-03-20 Andreas Krebbel - - PR target/78857 - * config/s390/s390.md ("cmp_ccs_0"): Add a clobber of the - target operand. A new splitter adds the clobber statement in case - the target operand is dead anyway. - -2017-03-19 Gerald Pfeifer - - * doc/install.texi (Specific) : No longer refer - to age-old versions of binutils and glibc. - -2017-03-18 Segher Boessenkool - - * doc/contrib.texi (Contributors): Remove duplicate entry for myself. - -2017-03-18 Gerald Pfeifer - - * doc/contrib.texi (Contributors): Add Segher Boessenkool. - -2017-03-18 Gerald Pfeifer - - * doc/install.texi (Specific) : Remove old - requirement for binutils 2.13. - -2017-03-17 Jim Wilson - - * combine.c (try_combine): Delete redundant i1 test. Call - prev_nonnote_nondebug_insn instead of prev_nonnote_insn. - -2017-03-17 Palmer Dabbelt : Add riscv32-*-elf, - riscv32-*-linux, riscv64-*-elf, riscv64-*-linux to the table of - contents. - : Re-arrange section - : Add a note about requiring binutils 2.28. - : Likewise. - : Likewise - : Likewise. - -2017-03-17 Richard Earnshaw - - PR target/80052 - * aarch64.opt(verbose-cost-dump): Fix typo. - -2017-03-17 Pat Haugen - - PR target/79951 - * config/rs6000/rs6000.md (copysign3_fcpsgn): Test - for VECTOR_UNIT_VSX_P (mode) too. - -2017-03-17 Bernd Schmidt - - * reload.c (find_reloads): When reloading a nonoffsettable address, - use RELOAD_OTHER for it and its address reloads. - - PR rtl-optimization/79910 - * combine.c (record_used_regs): New static function. - (try_combine): Handle situations where there is an additional - instruction between I2 and I3 which needs to have a LOG_LINK - updated. - -2017-03-17 Jeff Law - - PR tree-optimization/71437 - * tree-vrp.c (simplify_stmt_for_jump_threading): Lookup the - conditional in the hash table first. - (vrp_dom_walker::before_dom_children): Extract condition from - ASSERT_EXPR. Record condition, its inverion and any implied - conditions as well. - -2017-03-17 Marek Polacek - Markus Trippelsdorf - - PR tree-optimization/80079 - * gimple-ssa-store-merging.c (class pass_store_merging): Initialize - m_stores_head. - -2017-03-17 Richard Biener - - PR middle-end/80075 - * tree-eh.c (stmt_could_throw_1_p): Only handle gimple assigns. - Properly verify the LHS before the RHS possibly claims to be - handled. - (stmt_could_throw_p): Hande gimple conds fully here. Clobbers - do not throw. - -2017-03-17 Martin Jambor - - * doc/invoke.texi (Option Options): Include -fipa-vrp in the list. - (List of -O2 options): Likewise. - (-fipa-bit-cp): Replace "ipa" with "interprocedural." - (-fipa-vrp) New. - -2017-03-17 Tom de Vries - - * gcov-dump.c (print_usage): Print bug_report_url. - -2017-03-17 Richard Biener - - PR middle-end/80050 - * genmatch.c (parser::next): Remove pointless check for CPP_EOF. - (parser::peek): Likewise. - -2017-03-17 Richard Biener - - PR tree-optimization/80048 - * sese.c (free_sese_info): Properly release rename_map and - copied_bb_map elements. - -2017-03-16 Alexandre Oliva - - * gimple-ssa-store-merging.c (struct imm_store_chain_info): - Add linked-list forward and backlinks. Insert on - construction, remove on destruction. - (class pass_store_merging): Add m_stores_head field. - (pass_store_merging::terminate_and_process_all_chains): - Iterate over m_stores_head list. - (pass_store_merging::terminate_all_aliasing_chains): - Likewise. - (pass_store_merging::execute): Check for debug stmts first. - Push new chains onto the m_stores_head stack. - -2017-03-16 Michael Meissner - - PR target/71294 - * config/rs6000/vsx.md (vsx_splat_, VSX_D iterator): Allow a - SPLAT operation on ISA 2.07 64-bit systems that have direct move, - but no MTVSRDD support, by doing MTVSRD and XXPERMDI. - -2017-03-16 Jeff Law - - PR tree-optimization/71437 - * tree-ssa-dom.c (dom_opt_dom_walker): Remove thread_across_edge - member function. Implementation moved into after_dom_children - member function and into the threader's thread_outgoing_edges - function. - (dom_opt_dom_walker::after_dom_children): Simplify by moving - some code into new thread_outgoing_edges. - * tree-ssa-threadedge.c (thread_across_edge): Make static and simplify - definition. Simplify marker handling (do it here). Assume we always - have the available expression and the const/copies tables. - (thread_outgoing_edges): New function extracted from tree-ssa-dom.c - and tree-vrp.c - * tree-ssa-threadedge.h (thread_outgoing_edges): Declare. - * tree-vrp.c (equiv_stack): No longer file scoped. - (vrp_dom_walker): New class. - (vrp_dom_walker::before_dom_children): New member function. - (vrp_dom_walker::after_dom_children): Likewise. - (identify_jump_threads): Setup domwalker. Use it rather than - walking edges in a random order by hand. Simplify setup/finalization. - (finalize_jump_threads): Remove. - (vrp_finalize): Do not call identify_jump_threads here. - (execute_vrp): Do it here instead and call thread_through_all_blocks - here too. - - PR tree-optimization/71437 - * tree-ssa-dom.c (pfn_simplify): Add basic_block argument. All - callers changed. - (simplify_stmt_for_jump_threading): Add basic_block argument. All - callers changed. - (lhs_of_dominating_assert): Moved from here into tree-vrp.c. - (dom_opt_dom_walker::thread_across_edge): Remove - handle_dominating_asserts argument. All callers changed. - (record_temporary_equivalences_from_stmts_at_dest): Corresponding - changes. Remove calls to lhs_of_dominating_assert. Other - uses of handle_dominating_asserts turn into unconditional code - (simplify_control_stmt_condition_1): Likewise. - (simplify_control_stmt_condition): Likewise. - (thread_through_normal_block, thread_across_edge): Likewise. - * tree-ssa-threadedge.h (thread_across_edge): Corresponding changes. - * tree-vrp.c (lhs_of_dominating_assert): Move here. Return original - object if it is not an SSA_NAME. - (simplify_stmt_for_jump_threading): Call lhs_of_dominating_assert - before calling into the VRP specific simplifiers. - (identify_jump_threads): Remove handle_dominating_asserts - argument. - -2017-03-16 Jakub Jelinek - - PR fortran/79886 - * tree-diagnostic.c (default_tree_printer): No longer static. - * tree-diagnostic.h (default_tree_printer): New prototype. - -2017-03-16 Tamar Christina - - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov) - Change ins into fmov. - -2017-03-16 Kyrylo Tkachov - - * config/aarch64/iterators.md (h_con): Return "x" for V4HF and V8HF. - * config/aarch64/aarch64-simd.md (*aarch64_fma4_elt_from_dup): - Use h_con constraint for operand 1. - (*aarch64_fnma4_elt_from_dup): Likewise. - (*aarch64_mulx_elt_from_dup): Likewise for operand 2. - -2017-03-15 Jeff Law - - PR tree-optimization/71437 - * tree-ssa-dom.c (derive_equivalences_from_bit_ior): New function. - (record_temporary_equivalences): Use it. - - PR tree-optimization/71437 - * tree-ssa-dom.c (struct cond_equivalence): Moved from here into - tree-ssa-scopedtables. - (lookup_avail_expr, build_and_record_new_cond): Likewise. - (record_conditions, record_cond, vuse_eq): Likewise. - (record_edge_info): Adjust to API tweak of record_conditions. - (simplify_stmt_for_jump_threading): Similarly for lookup_avail_expr. - (record_temporary_equivalences, optimize_stmt): Likewise. - (eliminate_redundant_computations): Likewise. - (record_equivalences_from_stmt): Likewise. - * tree-ssa-scopedtables.c: Include options.h and params.h. - (vuse_eq): New function, moved from tree-ssa-dom.c - (build_and_record_new_cond): Likewise. - (record_conditions): Likewise. Accept vector of conditions rather - than edge_equivalence structure for first argument. - for the first argument. - (avail_exprs_stack::lookup_avail_expr): New member function, moved - from tree-ssa-dom.c. - (avail_exprs_stack::record_cond): Likewise. - * tree-ssa-scopedtables.h (struct cond_equivalence): Moved here - from tree-ssa-dom.c. - (avail_exprs_stack): Add new member functions lookup_avail_expr - and record_cond. - (record_conditions): Declare. - -2017-03-15 Vladimir Makarov - - PR target/80017 - * lra-constraints.c (process_alt_operands): Increase reject for - reloading an input/output operand. - -2017-03-15 Michael Meissner - - PR target/79038 - * config/rs6000/rs6000.md (float2): Define - insns to convert from signed/unsigned char/short to IEEE 128-bit - floating point. - (floatuns2): Likewise. - -2017-03-15 Uros Bizjak - - PR target/80019 - * config/i386/i386.c (ix86_vector_duplicate_value): Create - subreg of inner mode for values already in registers. - -2017-03-15 Bernd Schmidt - - * config/c6x/c6x.c (hwloop_optimize): Handle case where the old - iteration reg is used after the loop. - -2017-03-14 Martin Sebor - - PR tree-optimization/79800 - * gimple-ssa-sprintf.c (format_floating: Add argument. Handle - precision in negative-positive range. - (format_floating): Call non-const overload with adjusted precision. - -2017-03-14 Michael Meissner - - PR target/79947 - * config/rs6000/rs6000.h (TARGET_FRSQRTES): Add check for - -mpowerpc-gfxopt. - -2017-03-14 Martin Sebor - - PR middle-end/80020 - * builtin-attrs.def (ATTR_ALLOC_SIZE_2_NOTHROW_LIST): New macro. - * builtins.def (aligned_alloc): Use it. - - PR c/79936 - * Makefile.in (GTFILES): Add calls.c. - * calls.c: Include "gt-calls.h". - -2017-03-14 Bernd Schmidt - - PR rtl-optimization/79728 - * regs.h (struct target_regs): New field - x_contains_allocatable_regs_of_mode. - (contains_allocatable_regs_of_mode): New macro. - * reginfo.c (init_reg_sets_1): Initialize it, and change - contains_reg_of_mode so it includes global regs as well. - * reload.c (push_reload): Use contains_allocatable_regs_of_mode - rather than contains_regs_of_mode. - -2017-03-14 Martin Liska - - * doc/invoke.texi: Document options that can't be combined with - -fcheck-pointer-bounds. - -2017-03-14 Martin Liska - - PR middle-end/79831 - * doc/invoke.texi (-Wchkp): Document the option. - -2017-03-14 Martin Liska - - * Makefile.in: Install gcov-dump. - -2017-03-14 Martin Liska - - * multiple_target.c (expand_target_clones): Bail out for - an invalid attribute. - -2017-03-14 Richard Biener - - * alias.c (struct alias_set_entry): Pack properly. - * cfgloop.h (struct loop): Likewise. - * cse.c (struct set): Likewise. - * ipa-utils.c (struct searchc_env): Likewise. - * loop-invariant.c (struct invariant): Likewise. - * lra-remat.c (struct cand): Likewise. - * recog.c (struct change_t): Likewise. - * rtl.h (struct address_info): Likewise. - * symbol-summary.h (function_summary): Likewise. - * tree-loop-distribution.c (struct partition): Likewise. - * tree-object-size.c (struct object_size_info): Likewise. - * tree-ssa-loop-ivopts.c (struct cost_pair): Likewise. - * tree-ssa-threadupdate.c (struct ssa_local_info_t): Likewise. - * tree-vect-data-refs.c (struct _vect_peel_info): Likewise. - * tree-vect-slp.c (struct _slp_oprnd_info): Likewise. - * tree-vect-stmts.c (struct simd_call_arg_info): Likewise. - * tree-vectorizer.h (struct _loop_vec_info): Likewise. - (struct _stmt_vec_info): Likewise. - -2017-03-14 Martin Liska - - PR target/79892 - * multiple_target.c (create_dispatcher_calls): Check that - a target can create a function dispatcher. - -2017-03-14 Martin Liska - - PR lto/66295 - * multiple_target.c (expand_target_clones): Drop local.local - flag for default implementation. - -2017-03-14 Richard Biener - - PR tree-optimization/80030 - * tree-vect-stmts.c (vectorizable_store): Plug memleak. - -2017-03-13 Kito Cheng - - * config/riscv/riscv.c (riscv_emit_float_compare>: Use - gcc_fallthrough() instead of __attribute__((fallthrough)); - -2017-03-13 Gerald Pfeifer - - * doc/gcc.texi: Remove "up" link to (DIR). - * doc/gccint.texi: Ditto. - -2017-03-13 Gerald Pfeifer - - * doc/install.texi (Specific) : Remove reference to - binutils 2.13. - -2017-03-13 Jeff Law - - * config/riscv/riscv.c (riscv_emit_float_compare): Use fallthru - attribute rather than comments. - - * config/pdp11/pdp11.md (movmemhi): Adjust operand numbers to - match_scratch operand is highest. - -2017-03-13 Martin Liska - - PR middle-end/78339 - * ipa-pure-const.c (warn_function_noreturn): If the declarations - is a CHKP clone, use original declaration. - -2017-03-13 Claudiu Zissulescu - - * config/arc/arc.c (arc_init): Use multiplier whenever we have it. - (arc_conditional_register_usage): Use a different allocation order - when optimizing for size. - * common/config/arc/arc-common.c (arc_option_optimization_table): - Section anchors default on when optimizing for size. - -2017-03-13 Claudiu Zissulescu - - * config/arc/arc.md (*tst_bitfield_tst): Fix pattern. - -2017-03-13 Claudiu Zissulescu - - * config/arc/arc.c (arc_output_addsi): Emit code density adds. - * config/arc/arc.md (cpu_facility): Add cd variant. - (*movqi_insn): Add code density variant. - (*movhi_insn): Likewise. - (*movqi_insn): Likewise. - (*addsi3_mixed): Likewise. - (subsi3_insn): Likewise. - -2017-03-13 Claudiu Zissulescu - - * config/arc/arc.md (movsi_cond_exec): Update constraint. - -2017-03-13 Claudiu Zissulescu - - * config/arc/arc.c (arc_legitimize_pic_address): Handle PIC - expressions with MINUS and UNARY ops. - -2017-03-13 Kyrylo Tkachov - - PR target/79911 - * config/arm/neon.md (vec_sel_widen_ssum_lo3): - Rename to... - (vec_sel_widen_ssum_lo3): ... This. Avoid mismatch - between vec_select and vector argument. - (vec_sel_widen_ssum_hi3): Rename to... - (vec_sel_widen_ssum_hi3): ... This. Likewise. - (vec_sel_widen_usum_lo3): Rename to... - (vec_sel_widen_usum_lo3): ... This. - (vec_sel_widen_usum_hi3): Rename to... - (vec_sel_widen_usum_hi3): ... This. - -2017-03-13 Richard Biener - - PR other/79991 - * params.def (vect-max-peeling-for-alignment): Fix typo. - -2017-03-12 Gerald Pfeifer - - * doc/install.texi (Specific) : Remove description of - issue that only occurred with binutils below 2.18. - -2017-03-12 Gerald Pfeifer - - * doc/install.texi (Specific) : No longer - refer to binutils 2.11/2.12 minimum. - -2017-03-12 Gerald Pfeifer - - * doc/install.texi (Specific) : Remove link to - ftp.kernel.org and simplify binutils requirement. - -2017-03-11 Gerald Pfeifer - - * doc/invoke.texi (Warning Options): Fix spelling of link-time - optimization. - (Optimize Options): Ditto. Also remove redundancy. - -2017-03-10 David Malcolm - - PR translation/79848 - * ipa-devirt.c (warn_types_mismatch): Simplify uses of "%<%s%>" to - "%qs". - * ipa-pure-const.c (suggest_attribute): Likewise. Convert _ - to G_ to avoid double translation. - -2017-03-10 David Malcolm - - PR translation/79923 - * auto-profile.c (get_combined_location): Convert leading - character of diagnostics to lower case and remove trailing period. - (read_profile): Likewise for various diagnostics. - * config/arm/arm.c (arm_option_override): Remove trailing period - from various diagnostics. - * config/msp430/msp430.c (msp430_expand_delay_cycles): Likewise. - (msp430_expand_delay_cycles): Likewise. - -2017-03-10 David Malcolm - - PR target/79925 - * config/aarch64/aarch64.c (aarch64_validate_mcpu): Quote the - full command-line argument, rather than just "str". - (aarch64_validate_march): Likewise. - (aarch64_validate_mtune): Likewise. - -2017-03-10 Bernd Schmidt - - PR rtl-optimization/78911 - * lra-assigns.c (must_not_spill_p): New function. - (spill_for): Use it. - -2017-03-10 Jakub Jelinek - - PR tree-optimization/79981 - * tree-vrp.c (extract_range_basic): Handle IMAGPART_EXPR of - ATOMIC_COMPARE_EXCHANGE ifn result. - (stmt_interesting_for_vrp, vrp_visit_stmt): Handle - IFN_ATOMIC_COMPARE_EXCHANGE. - -2017-03-10 David Malcolm - - PR driver/79875 - * opts.c (parse_sanitizer_options): Add missing question mark to - "did you mean" message. - -2017-03-10 Bill Schmidt - - * config/rs6000/rs6000-builtin.def (VMULEUB_UNS): Remove orphaned - built-in. - (VMULEUH_UNS): Likewise. - (VMULOUB_UNS): Likewise. - (VMULOUH_UNS): Likewise. - * config/rs6000/rs6000.c (builtin_function_type): Remove - references to ALTIVEC_BUILTIN_VMUL[EO]U[BH]_UNS. - -2017-03-10 David Malcolm - - PR bootstrap/79952 - * read-rtl-function.c (function_reader::read_rtx_operand): Update - x with result of extra_parsing_for_operand_code_0. - (function_reader::extra_parsing_for_operand_code_0): Convert - return type from void to rtx, returning x. When reading - SYMBOL_REF with SYMBOL_FLAG_HAS_BLOCK_INFO, reallocate x to the - larger size containing struct block_symbol. - -2017-03-10 Segher Boessenkool - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow - -mfloat128-hardware without -m64. - -2017-03-10 Will Schmidt - - PR target/79941 - * config/rs6000/rs6000.c (builtin_function_type): Add VMUL*U[HB] - entries to the case statement that marks unsigned arguments to - overloaded functions. - -2017-03-10 Kelvin Nilsen - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Fix - two typographic errors in the handling of TARGET_UPPER_REGS_DI. - -2017-03-10 Pat Haugen - - PR target/79907 - * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Test - TARGET_UPPER_REGS_DI when setting 'wi' constraint regclass. - -2017-03-10 Martin Liska - - PR target/65705 - PR target/69804 - * toplev.c (process_options): Enable MPX with LSAN and UBSAN. - * tree-chkp.c (chkp_walk_pointer_assignments): Verify that - FIELD != NULL. - -2017-03-10 Olivier Hainque - - * tree-switch-conversion (array_value_type): Start by resetting - candidate type to it's main variant. - -2017-03-10 Jakub Jelinek - - PR rtl-optimization/79909 - * combine.c (try_combine): Use simplify_replace_rtx on individual - CALL_INSN_FUNCTION_USAGE elements instead of replace_rtx on copy_rtx - of the whole CALL_INSN_FUNCTION_USAGE. - - PR tree-optimization/79972 - * gimple-ssa-warn-alloca.c (alloca_call_type): Only call - get_range_info on SSA_NAMEs. Formatting fixes. - -2017-03-10 Richard Biener - Jakub Jelinek - - PR tree-optimization/77975 - * tree-ssa-loop-niter.c (get_base_for): Allow phi argument from latch - edge to be constant. - (get_val_for): For constant x return it. Formatting fix. - (loop_niter_by_eval): Avoid pointless looping if the next iteration - would use the same bases as the current one. - -2017-03-09 Bill Schmidt - - * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Use rotate - instead of vec_select for V1TImode. - * conifg/rs6000/vsx.md (VSX_LE): Remove mode iterator that is no - longer needed. - (VSX_LE_128): Add V1TI to this mode iterator. - (*vsx_le_perm_load_): Change to use VSX_D mode iterator. - (*vsx_le_perm_store_): Likewise. - (pre-reload splitter for VSX stores): Likewise. - (post-reload splitter for VSX stores): Likewise. - (*vsx_xxpermdi2_le_): Likewise. - (*vsx_lxvd2x2_le_): Likewise. - (*vsx_stxvd2x2_le_): Likewise. - -2017-03-09 Michael Eager - - Correct failures with --enable-checking=yes,rtl. - - * config/microblaze/microblaze.c (microblaze_expand_shift): - Replace GET_CODE test with CONST_INT_P and INTVAL test with - test for const0_rtx. - * config/microblaze/microblaze.md (ashlsi3_byone, ashrsi3_byone, - lshrsi3_byone): Replace INTVAL with test for const1_rtx. - -2017-03-09 Richard Biener - - PR tree-optimization/79977 - * graphite-scop-detection.c (scop_detection::merge_sese): - Handle the case of extra exits to blocks dominating the entry. - -2017-03-09 Toma Tabacu - - * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes): - Document rdynamic. - -2017-03-09 Vladimir Makarov - - PR rtl-optimization/79949 - * lra-constraints.c (process_alt_operands): Check memory when - trying to predict a cycle. Print about the overall increase. - -2017-03-09 Richard Biener - - PR middle-end/79971 - * gimple-expr.c (useless_type_conversion_p): Preserve - TYPE_SATURATING for fixed-point types. - -2017-03-09 Richard Biener - - PR ipa/79970 - * ipa-prop.c (ipa_modify_formal_parameters): Avoid changing - alignment of BLKmode params. - -2017-03-09 Kyrylo Tkachov - - PR target/79913 - * config/aarch64/iterators.md (VALL_F16_NO_V2Q): New mode iterator. - (VALL_NO_V2Q): Likewise. - (VDQF_DF): Delete. - * config/aarch64/aarch64-simd.md - (aarch64_dup_lane_): Use VALL_F16_NO_V2Q - iterator. - (*aarch64_simd_vec_copy_lane_): Use - VALL_NO_V2Q mode iterator. - (*aarch64_vgetfmulx): Use VDQF iterator. - -2017-03-09 Martin Liska - - PR tree-optimization/79631 - * tree-chkp-opt.c (chkp_is_constant_addr): Call - tree_int_cst_sign_bit just for INTEGER constants. - -2017-03-09 Martin Liska - - PR target/65705 - PR target/69804 - * toplev.c (process_options): Disable -fcheck-pointer-bounds with - sanitizers. - -2017-03-09 Marek Polacek - - PR c++/79672 - * tree.c (inchash::add_expr): Handle TREE_VEC. - -2017-03-09 Martin Liska - - PR ipa/79764 - (chkp_narrow_size_and_offset): New function. - (chkp_parse_array_and_component_ref): Support BIT_FIELD_REF. - (void chkp_parse_bit_field_ref): New function. - (chkp_make_addressed_object_bounds): Add case for BIT_FIELD_REF. - (chkp_process_stmt): Use chkp_parse_bit_field_ref. - -2017-03-09 Martin Liska - - PR ipa/79761 - * tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param. - (chkp_find_bounds_1): Remove gcc_unreachable. - -2017-03-09 Jakub Jelinek - - PR sanitizer/79944 - * asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and - BUILT_IN_SYNC*, determine the access type from the size suffix and - always build a MEM_REF with that type. Handle forgotten - BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16. - - PR target/79932 - * config/i386/avx512vlintrin.h (_mm256_cmpge_epi32_mask, - _mm256_cmpge_epi64_mask, _mm256_cmpge_epu32_mask, - _mm256_cmpge_epu64_mask, _mm256_cmple_epi32_mask, - _mm256_cmple_epi64_mask, _mm256_cmple_epu32_mask, - _mm256_cmple_epu64_mask, _mm256_cmplt_epi32_mask, - _mm256_cmplt_epi64_mask, _mm256_cmplt_epu32_mask, - _mm256_cmplt_epu64_mask, _mm256_cmpneq_epi32_mask, - _mm256_cmpneq_epi64_mask, _mm256_cmpneq_epu32_mask, - _mm256_cmpneq_epu64_mask, _mm256_mask_cmpge_epi32_mask, - _mm256_mask_cmpge_epi64_mask, _mm256_mask_cmpge_epu32_mask, - _mm256_mask_cmpge_epu64_mask, _mm256_mask_cmple_epi32_mask, - _mm256_mask_cmple_epi64_mask, _mm256_mask_cmple_epu32_mask, - _mm256_mask_cmple_epu64_mask, _mm256_mask_cmplt_epi32_mask, - _mm256_mask_cmplt_epi64_mask, _mm256_mask_cmplt_epu32_mask, - _mm256_mask_cmplt_epu64_mask, _mm256_mask_cmpneq_epi32_mask, - _mm256_mask_cmpneq_epi64_mask, _mm256_mask_cmpneq_epu32_mask, - _mm256_mask_cmpneq_epu64_mask, _mm_cmpge_epi32_mask, - _mm_cmpge_epi64_mask, _mm_cmpge_epu32_mask, _mm_cmpge_epu64_mask, - _mm_cmple_epi32_mask, _mm_cmple_epi64_mask, _mm_cmple_epu32_mask, - _mm_cmple_epu64_mask, _mm_cmplt_epi32_mask, _mm_cmplt_epi64_mask, - _mm_cmplt_epu32_mask, _mm_cmplt_epu64_mask, _mm_cmpneq_epi32_mask, - _mm_cmpneq_epi64_mask, _mm_cmpneq_epu32_mask, _mm_cmpneq_epu64_mask, - _mm_mask_cmpge_epi32_mask, _mm_mask_cmpge_epi64_mask, - _mm_mask_cmpge_epu32_mask, _mm_mask_cmpge_epu64_mask, - _mm_mask_cmple_epi32_mask, _mm_mask_cmple_epi64_mask, - _mm_mask_cmple_epu32_mask, _mm_mask_cmple_epu64_mask, - _mm_mask_cmplt_epi32_mask, _mm_mask_cmplt_epi64_mask, - _mm_mask_cmplt_epu32_mask, _mm_mask_cmplt_epu64_mask, - _mm_mask_cmpneq_epi32_mask, _mm_mask_cmpneq_epi64_mask, - _mm_mask_cmpneq_epu32_mask, _mm_mask_cmpneq_epu64_mask): Move - definitions outside of __OPTIMIZE__ guarded section. - - PR target/79932 - * config/i386/avx512bwintrin.h (_mm512_packs_epi32, - _mm512_maskz_packs_epi32, _mm512_mask_packs_epi32, - _mm512_packus_epi32, _mm512_maskz_packus_epi32, - _mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__ - guarded section. - -2017-03-09 Andreas Krebbel - - * config/s390/vx-builtins.md ("vfee", "vfeez") - ("vfenez"): Add missing constraints. - -2017-03-08 Martin Sebor - - PR target/79928 - * config/nds32/nds32.c (nds32_option_override): - Fix misspelled diagnostic. - -2017-03-08 Jakub Jelinek - - PR c/79940 - * gimplify.c (gimplify_omp_for): Replace index var in outer - taskloop statement with an artificial variable and add - OMP_CLAUSE_PRIVATE clause for it. - -2017-03-08 Richard Biener - - PR tree-optimization/79955 - * tree-ssa-uninit.c (warn_uninitialized_vars): Do not warn - for accesses that are completely outside of the variable. - -2017-03-08 Andrew Haley - - PR tree-optimization/79943 - * tree-ssa-loop-split.c (compute_new_first_bound): When - calculating the new upper bound, (END-BEG) should be added, not - subtracted. - -2017-03-08 Jakub Jelinek - - * config/avr/avr.md (setmemhi): Make sure match_dup - operand number comes before match_scratch. - -2017-03-08 Richard Biener - - PR tree-optimization/79920 - * tree-vect-slp.c (vect_create_mask_and_perm): Remove and inline - with ncopies == 1 to ... - (vect_transform_slp_perm_load): ... here. Properly compute - all element loads by iterating VF times over the group. Do - not handle ncopies (computed in a broken way) in - vect_create_mask_and_perm. - -2017-03-08 Jakub Jelinek - - PR sanitizer/79904 - * internal-fn.c (expand_vector_ubsan_overflow): If arg0 or arg1 - is a uniform vector, use uniform_vector_p return value instead of - building ARRAY_REF on folded VIEW_CONVERT_EXPR to array type. - -2017-03-07 Marek Polacek - - PR middle-end/79809 - * gimple-ssa-warn-alloca.c (pass_walloca::gate): Use HOST_WIDE_INT. - (alloca_call_type): Likewise. - -2017-03-07 Martin Liska - - * gcov.c (process_args): Put comment to correct location. - -2017-03-07 Martin Liska - - PR middle-end/68270 - * tree-chkp.c (chkp_may_narrow_to_field): Add new argument ref. - Use array_at_struct_end_p instead of DECL_CHAIN (field). - (chkp_narrow_bounds_for_field): Likewise. - (chkp_parse_array_and_component_ref): Pass one more argument to - call. - -2017-03-07 Richard Biener - - * tree-vect-loop-manip.c (slpeel_add_loop_guard): Preserve - preheaders. - -2017-03-07 Segher Boessenkool - - * config/i386/i386.c (ix86_local_alignment): Align most aggregates - of 16 bytes and more to 16 bytes, not those of 16 bits and more. - -2017-03-07 Kyrylo Tkachov - - PR c/79855 - * params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Add full stop - to end of description. - (PARAM_MAX_STORES_TO_MERGE): Likewise. - -2017-03-07 Jakub Jelinek - - PR rtl-optimization/79901 - * config/i386/sse.md (*avx512bw_3): Renamed to - ... - (*avx512f_3): ... this. - (3 with maxmin code iterator): Use VI8_AVX2_AVX512F - iterator instead of VI8_AVX2_AVX512BW. - - PR rtl-optimization/79901 - * expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no - min/max expander, expand it using expand_vec_cond_expr. - - PR sanitizer/79897 - * ubsan.c (ubsan_encode_value): Call mark_addressable on the - temporary. - -2017-03-06 Jakub Jelinek - - PR c++/79821 - * dwarf2out.h (dw_vec_const): Change array type from unsigned char * - to void * for PCH reasons. - * dwarf2out.c (output_loc_operands, output_die): Cast - v.val_vec.array to unsigned char *. - -2017-03-06 John David Anglin - - PR target/77850 - * config/pa/pa-64.h (PAD_VARARGS_DOWN): Don't pad down complex and - vector types. - -2017-03-06 Vladimir Makarov - - PR rtl-optimization/79571 - * lra-constraints.c (process_alt_operands): Calculate static - reject and subtract it from overall when only addresses will be - reloaded. - -2017-03-06 Julia Koval - - PR target/79793 - * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): Set - incoming stack boundary to 128 for 64-bit targets. - -2017-03-06 Richard Biener - - PR tree-optimization/79894 - * tree-vectorizer.c (vectorize_loops): Set loop_vectorized_call - to NULL after folding it. - -2017-03-06 Richard Biener - - PR tree-optimization/79824 - * tree-vect-stmts.c (get_group_load_store_type): Fix alignment - check disabling peeling for gaps. - -2017-03-06 Toma Tabacu - - * doc/sourcebuild.texi (Effective-Target Keywords, Environment - attributes): Document gettimeofday. - -2017-03-06 Robin Dapp - - * config/s390/s390.c (s390_option_override_internal): Set - PARAM_MIN_VECT_LOOP_BOUND - -2017-03-06 Robin Dapp - - * config/s390/s390.c (s390_asm_output_function_label): Use nopr %r0. - * config/s390/s390.md: Likewise. - -2017-03-06 Jakub Jelinek - - PR target/79812 - * config/i386/sse.md (VI8F_256_512): Remove mode iterator. - (_perm): Rename to ... - (avx2_perm): ... this. Use VI8F_256 iterator instead - of VI8F_256_512. - (_perm_mask): Rename to ... - (avx512vl_perm_mask): ... this. Use VI8F_256 iterator instead - of VI8F_256_512. - (_perm_1): Rename to ... - (avx2_perm_1): New define_expand. - (avx512f_perm_mask): Likewise. - (avx512f_perm_1): New define_insn. - (_vec_dup_1): Fix up vec_select mode. - -2017-03-06 Prachi Godbole - - * config/mips/mips-msa.md (msa_fmax_a_, msa_fmin_a_, - msa_max_a_, msa_min_a_): Introduce mode interator for - if_then_else. - (smin3, smax3): Change operand print code from 'B' to 'E'. - -2017-03-06 Martin Liska - - PR sanitize/79783 - * asan.c (asan_expand_poison_ifn): Do not expand ASAN_POISON - when having a SSA NAME w/o VAR_DECL assigned to it. - -2017-03-06 Prachi Godbole - - * config/mips/mips-msa.md (msa_dotp__d, msa_dpadd__d, - msa_dpsub__d): Fix MODE for vec_select. - -2017-03-06 Prachi Godbole - - * config/mips/mips.c (mips_gen_const_int_vector): Change type of last - argument. - * config/mips/mips-protos.h (mips_gen_const_int_vector): Likewise. - -2017-03-06 Richard Biener - - * lto-streamer.c (lto_check_version): Use %qs in diagnostics. - * plugin.c (register_plugin_info): Likewise. - * tree-chkp.c (chkp_make_static_const_bounds): Likewise. - -2017-03-05 Jakub Jelinek - - * config/i386/sse.md (sse_storehps, sse_storelps, - avx__, - avx512f__, - avx512f__256): Require - in condition that at least one operand is not a MEM. - -2017-03-03 Jakub Jelinek - - PR middle-end/79805 - * internal-fn.def (ATOMIC_BIT_TEST_AND_SET, ATOMIC_BIT_TEST_AND_RESET, - ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_COMPARE_EXCHANGE): Remove - ECF_NOTHROW. - * gimple-fold.c (fold_builtin_atomic_compare_exchange): Set - gimple_call_nothrow_p flag based on whether original builtin can throw. - If it can, emit following stmts on the fallthrough edge. - * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Similarly, except - don't create new bb if inserting just debug stmts on the edge, try to - insert them on the fallthru bb or just reset debug stmts. - -2017-03-03 Segher Boesssenkool - - PR target/43763 - * config/rs6000/rs6000.c (rs6000_final_prescan_insn): Save and - restore recog_data (including the operand rtxes inside it) around - the call to get_insn_template. - -2017-03-03 Martin Sebor - - PR tree-optimization/79699 - * context.c (context::~context): Free MPFR caches to avoid - a memory leak on program exit. - -2017-03-03 Kyrylo Tkachov - - * config/aarch64/aarch64.c (aarch64_float_const_representable_p): - Use wide_int::ulow () instead of .elt (0). - -2017-03-03 Uros Bizjak - - * config/i386/i386.md (*pushtf): Change *roF constraint to *roC. - (*pushxf): Limit oF constraint to 32bit targets and add oC - constraint for 64bit targets. - (pushxf splitter): Use PUSH_ROUNDING to calculate stack adjustment. - (*pushdf): Change rmF constraint to rmC. - -2017-03-03 Martin Liska - - * tree-ssa-loop-prefetch.c (pass_loop_prefetch::execute): - Remove unused variable. - -2017-03-03 Jakub Jelinek - - PR target/79807 - * config/i386/i386.c (ix86_expand_multi_arg_builtin): If target - is a memory operand, increase num_memory. - (ix86_expand_args_builtin): Likewise. - -2017-03-03 Jan Hubicka - - PR lto/79760 - * ipa-devirt.c (maybe_record_node): Properly handle - __cxa_pure_virtual visibility. - -2017-03-03 Martin Liska - - PR tree-optimization/79803 - * tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Remove - assert. - (pass_loop_prefetch::execute): Disabled optimization if an - assumption about L1 cache size is not met. - -2017-03-03 Martin Liska - - PR rtl-optimization/79574 - * gcse.c (struct gcse_expr): Use HOST_WIDE_INT instead of int. - (hash_scan_set): Likewise. - (dump_hash_table): Likewise. - (hoist_code): Likewise. - -2017-03-03 Richard Biener - - * fixed-value.c (fixed_from_string): Restore use of elt (1) - in place of uhigh (). - (fixed_convert_from_real): Likewise. - -2017-03-03 Uros Bizjak - - PR target/79514 - * config/i386/i386.md (*pushxf_rounded): Use Pmode instead of DImode. - -2017-03-03 Richard Biener - - PR middle-end/79818 - * match.pd ( X +- C1 CMP C2 -> X CMP C2 -+ C1): Add missing - TYPE_OVERFLOW_UNDEFINED check. - -2017-03-02 Bill Schmidt - - * config/rs6000/vector.md (vector_ne__p): Correct operand - numbers. - (vector_ae__p): Likewise. - (vector_nez__p): Likewise. - (vector_ne_v2di_p): Likewise. - (vector_ae_v2di_p): Likewise. - (vector_ne__p): Likewise. - * config/rs6000/vsx.md (vsx_tsqrt2_fg): Correct operand - numbers. - (vsx_tsqrt2_fe): Likewise. - -2017-03-02 Uros Bizjak - - PR target/79514 - * config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern. - -2017-03-02 Jakub Jelinek - - PR rtl-optimization/79780 - * cprop.c (one_cprop_pass): When second and further conditional trap - in a single basic block is turned into an unconditional trap, turn it - into a deleted note to avoid RTL verification failures. - -2017-03-02 Richard Biener - - * fold-const.c (const_binop): Use ulow () instead of elt (0). - -2017-03-02 Richard Biener - - PR tree-optimization/79345 - PR c++/42000 - * tree-ssa-alias.c (walk_aliased_vdefs_1): Take a limit - param and abort the walk, returning -1 if it is hit. - (walk_aliased_vdefs): Take a limit param and pass it on. - * tree-ssa-alias.h (walk_aliased_vdefs): Add a limit param, - defaulting to 0 and return a signed int. - * tree-ssa-uninit.c (struct check_defs_data): New struct. - (check_defs): New helper. - (warn_uninitialized_vars): Use walk_aliased_vdefs to warn - about uninitialized memory. - * fixed-value.c (fixed_from_string): Use ulow/uhigh to avoid - bogus uninitialized warning. - (fixed_convert_from_real): Likewise. - -2017-03-02 Bin Cheng - - PR tree-optimization/66768 - * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr - iv_use if base object can't be determined. - -2017-03-02 Jakub Jelinek - - PR tree-optimization/79345 - * gensupport.h (struct pattern_stats): Add min_scratch_opno field. - * gensupport.c (get_pattern_stats_1) : Update it. - (get_pattern_stats): Initialize it. - * genemit.c (gen_expand): Verify match_scratch numbers come after - match_operand/match_dup numbers. - * config/i386/i386.md (mul3_highpart): Swap match_dup and - match_scratch numbers. - * config/i386/sse.md (avx2_gathersi, avx2_gatherdi): - Likewise. - * config/s390/s390.md (trunctdsd2): Likewise. - -2017-03-02 Richard Biener - - * wide-int.h (wide_int_storage::operator=): Implement in terms - of wi::copy. - -2017-03-02 Richard Biener - - PR tree-optimization/79777 - * tree-ssa-pre.c (eliminate_insert): Give up if we simplify - the to insert expression to sth existing. - -2017-03-01 Martin Sebor - - PR middle-end/79692 - * gimple-ssa-sprintf.c - (directive::known_width_and_precision): New function. - (format_integer): Use it. - (get_mpfr_format_length): Consider the full range of precision - when computing %g output with the # flag. Set the likely byte - count to 3 rather than 1 when precision is indeterminate. - (format_floating): Correct the lower bound of precision. - -2017-03-01 Bill Schmidt - - * doc/invoke.texi: Document default code model for 64-bit Linux. - -2017-03-01 Aaron Sawdey - - PR target/79752 - * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit - udiv rather than div since input pattern is unsigned. - -2017-03-01 Uros Bizjak - - * config/i386/i386.c (print_reg): Warn for values of - unsupported size in integer register. - -2017-03-01 Michael Meissner - - PR target/79439 - * config/rs6000/predicates.md (current_file_function_operand): Do - not allow self calls to be local if the function is replaceable. - -2017-03-01 Kelvin Nilsen - - PR target/79395 - * config/rs6000/altivec.h (vec_ctz and others): Change the - preprocessor macro that controls conditional compilation from - _ARCH_PWR9 to __POWER9_VECTOR__. - (vec_all_ne): Change parameterization of __altivec_scalar_pred - macro expansion under preprocessor #ifdef __POWER9_VECTOR__ - control (instead of _ARCH_PWR9 control) so that template - definition uses power9-specific function. - (vec_any_eq): Likewise. - (vec_all_ne): Change macro definition to use a power9-specific - expansion under #ifdef __POWER9_VECTOR__ control (instead of - _ARCH_PWR9 control). - (vec_any_eq) Likewise. - * config/rs6000/rs6000-builtin.def (CMPNEF): Remove BU_P9V_AV_2 - expansion for CMPNEF to remove support for xvcmpnesp instruction. - (CMPNED): Remove BU_P9V_AV2 expansion for CMPNED to remove - support for xvcmpnedp instruction. - (VCMPNEB_P): Replace BU_P9V_AV_P macro expansion with BU_P9V_AV_2 - macro expansion so that Power9 implementation of vec_all_ne does - not use the AltiVec predicate framework. - (VCMPNEH_P): Likewise. - (VCMPNEW_P): Likewise. - (VCMPNED_P): Likewise. - (VCMPNEFP_P): Likewise. - (VCMPNEDP_P): Likewise. - (VCMPAEB_P): Add BU_P9V_AV_2 macro expansion to change - implementation of vec_any_eq to not use AltiVec predicate - framework. - (VCMPAEH_P): Likewise. - (VCMPAEW_P): Likewise. - (VCMPAED_P): Likewise. - (VCMPAEFP_P): Likewise. - (VCMPAEDP_P): Likewise. - (VCMPNE_P): Replace BU_P9V_OVERLOAD_P macro expansion with - BU_P9V_OVERLOAD_2 so that Power9 implementation of vec_all_ne does - not use the AltiVec predicate framework. - (VCMPAE_P): Add BU_P9V_OVERLOAD_2 macro to change implementation - of vec_any_eq to not use AltiVec predicate framework. - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add - support for predefined __POWER9_VECTOR__ macro to indicate that - Power9 instruction selection is enabled. - (altivec_overloaded_builtins): Remove extraneous - ALTIVEC_BUILTIN_VEC_CMPNE entry for overloaded - function argument types RS6000_BTI_bool_V16QI and - RS6000_BTI_bool_V16QI. Remove erroneous ALTIVEC_BUILTIN_VEC_CMPNE - entry for overloaded function argument types RS6000_BTI_bool_V4SI - andRS6000_BTI_bool_V4SI, mapping to P9V_BUILTIN_CMPNEB. Remove - two entries mapping to P9V_BUITIN_CMPNED and one entry mapping to - P9V_BUILTIN_CMPNEF to force use of instructions not specific to - Power9 for implementations of vec_cmpne. Change the signature for - all definitions of the overloaded P9V_BUILTIN_VEC_CMPNE_P function - (representing vec_all_ne) to remove the previously described first - argument of type RS6000_BTI_INTSI, as this was an artifact of - reliance on the AltiVec predicate framework, which is no longer - used in the implementation of these functions. Add - P9V_BUILTIN_VEC_VCMPAE_P entries (representing the vec_anyeq - function) to match all of the P9V_BUILTIN_VEC_VCMNE_P entries - since, unlike the AltiVec predicate framework implementation, we - do not share function descriptors between vec_alle and vec_anyeq. - (altivec_resolve_overloaded_builtin): Add SFmode and DFmode to the - set of modes that receive special treatment even when - TARGET_P9_VECTOR is true. The special treatment emits code that - does not depend on Power9 instructions. - * config/rs6000/vector.md (vector_ne__p): Change this - define_expand to not rely on AltiVec predicate framework. - (vector_ae_p): New define_expand to represent vec_any_eq - function. - (vector_ne_v2di_p): Change this define_expand to not rely on - AltiVec predicate framework. - (vector_ae_v2di_p): New define_expand to represent vec_any_eq - function. - (vector_ne__p): Change this define_expand to not rely on - AltiVec predicate framework. - (vector_ae_p): New define_expand to represent vec_any_eq - function. - * config/rs6000/vsx.md (*vsx_ne__p): For modes VSX_EXTRACT_I - (V16QI, V8HI, V4SI), correct a typo in the code emitted for this - define_insn pattern. - (*vsx_ne__p): For modes VSX_F (V4SF and V2DF), remove this - define_insn pattern because the xvcmpne. instruction is not - supported. - (vcmpne): Remove this define_insn because xvcmpne - instruction is not supported. - -2017-03-01 Jakub Jelinek - - * config/nvptx/nvptx.c: Include intl.h. - -2017-03-01 Martin Jambor - - PR lto/78140 - * ipa-prop.h (ipa_bits): Removed field known. - (ipa_jump_func): Removed field vr_known. Changed fields bits and m_vr - to pointers. Adjusted their comments to warn about their sharing. - (ipcp_transformation_summary): Change bits to a vector of pointers. - (ipa_check_create_edge_args): Moved to ipa-prop.c, declare. - (ipa_get_ipa_bits_for_value): Declare. - * tree-vrp.h (value_range): Mark as GTY((for_user)). - * ipa-prop.c (ipa_bit_ggc_hash_traits): New. - (ipa_bits_hash_table): Likewise. - (ipa_vr_ggc_hash_traits): Likewise. - (ipa_vr_hash_table): Likewise. - (ipa_print_node_jump_functions_for_edge): Adjust for bits and m_vr - being pointers and vr_known being removed. - (ipa_set_jf_unknown): Likewise. - (ipa_get_ipa_bits_for_value): New function. - (ipa_set_jfunc_bits): Likewise. - (ipa_get_value_range): New overloaded functions. - (ipa_set_jfunc_vr): Likewise. - (ipa_compute_jump_functions_for_edge): Use the above functions to - construct bits and vr parts of jump functions. - (ipa_check_create_edge_args): Move here from ipa-prop.h, also allocate - ipa_bits_hash_table and ipa_vr_hash_table if they do not already - exist. - (ipcp_grow_transformations_if_necessary): Also allocate - ipa_bits_hash_table and ipa_vr_hash_table if they do not already - exist. - (ipa_node_params_t::duplicate): Do not copy bits, just pointers to - them. Fix too long lines. - (ipa_write_jump_function): Adjust for bits and m_vr being pointers and - vr_known being removed. - (ipa_read_jump_function): Use new setter functions to construct bits - and vr parts of jump functions or set them to NULL. - (write_ipcp_transformation_info): Adjust for bits being pointers. - (read_ipcp_transformation_info): Likewise. - (ipcp_update_bits): Likewise. Fix excessively long lines a trailing - space. - Include gt-ipa-prop.h. - * ipa-cp.c (propagate_bits_across_jump_function): Adjust for bits - being pointers. - (ipcp_store_bits_results): Likewise. - (propagate_vr_across_jump_function): Adjust for m_vr being a pointer. - Do not write to existing jump functions but use a temporary instead. - -2017-03-01 Jakub Jelinek - - PR c++/79681 - * fold-const.c (make_bit_field_ref): If orig_inner is COMPONENT_REF, - attempt to use its first operand as BIT_FIELD_REF base. - -2017-03-01 Richard Biener - - PR middle-end/79721 - * tree-chrec.c (chrec_evaluate): Perform computation of Newtons - interpolating formula in wrapping arithmetic. - (chrec_apply): Convert chrec_evaluate return value to wanted type. - -2017-03-01 Jakub Jelinek - - PR tree-optimization/79734 - * tree-vect-generic.c (expand_vector_condition): Optimize - AVX512 vector boolean VEC_COND_EXPRs into bitwise operations. - Handle VEC_COND_EXPR where comparison has different inner width from - type's inner width. - -2017-02-28 Sandra Loosemore - - * doc/invoke.texi (ARC Options): Copy-edit to fix punctuation, - markup, and similar issues. Remove @opindex entries for things - that aren't options. Add missing -mmpy-option entries. - -2017-02-28 Jakub Jelinek - - PR tree-optimization/79737 - * gimple-ssa-store-merging.c (encode_tree_to_bitpos): If bitlen is - a multiple of BITS_PER_UNIT and !BYTES_BIG_ENDIAN, clear - tmpbuf[byte_size - 1]. Call natice_encode_expr with byte_size - 1 - instead of byte_size. Formatting fix. - (shift_bytes_in_array_right): Formatting fix. - -2017-02-28 Eric Botcazou - - PR target/79749 - * config/sparc/sparc.c (sparc_frame_pointer_required): Add missing - condition on optimize for the leaf function test. - -2017-02-28 Martin Liska - - PR lto/79625 - * read-rtl-function.c (function_reader::handle_unknown_directive): - Bail out when one uses -flto. - -2017-02-28 Martin Liska - - * common.opt: Replace space with tabular for options of - type. - * config/i386/i386.opt: Show value for - -mlarge-data-threshold. - * opts.c (print_filtered_help): Do not display number in hexadecimal - format. - -2017-02-28 Martin Liska - - * common.opt: Fix --help=option -Q for options which are of - an enum type. - -2017-02-28 Uros Bizjak - - * config/i386/i386.c (print_reg): Error out for values - of 8-bit size in invalid integer register. - -2017-02-28 Martin Sebor - - PR tree-optimization/79691 - * passes.def (pass_all_optimizations_g): Enable pass_sprintf_length. - -2017-02-28 Jakub Jelinek - - PR target/79729 - * config/i386/i386.c (ix86_print_operand) : Replace - gcc_unreachable with output_operand_lossage. - -2017-02-28 Richard Biener - - PR tree-optimization/79740 - * tree-ssa-sccvn.c (vn_nary_op_insert_into): Allow redundant - inserts. - (visit_nary_op): Insert the nary into the hashtable if we - pattern-matched sth. - * tree-ssa-pre.c (eliminate_insert): Robustify. - -2017-02-28 Richard Biener - - PR middle-end/79731 - * fold-const.c (decode_field_reference): Reject out-of-bound - accesses. - -2017-02-28 Jakub Jelinek - - * config/i386/i386.c: Include intl.h. - (ix86_option_override_internal): Use cond ? G_("...") : G_("...") - instead of just cond ? "..." : "...". - * config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Likewise. - * coverage.c (read_counts_file): Likewise. - * omp-offload.c: Include intl.h. - (oacc_loop_fixed_partitions): Use cond ? G_("...") : G_("...") instead - of just cond ? "..." : "...". - * gcov.c (read_count_file): Use cond ? N_("...") : N_("...") instead - of just cond ? "..." : "...". - -2017-02-28 Richard Earnshaw - - PR target/79742 - * config/arm/parsecpu.awk (gen_data): Set tuning target to 'tune for' - entry, if present. - * config/arm/arm-cpus.in (cortex-m0plus.small-multiply): Correct - 'tune for' CPU name. - * config/arm/arm-cpu-data.h: Regenerated. - -2017-02-28 Richard Biener - - PR tree-optimization/79732 - * tree-inline.c (expand_call_inline): Do not shadow var. - -2017-02-28 Richard Biener - - PR tree-optimization/79723 - * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Preserve - address-space properly. - -2017-02-28 Thomas Schwinge - - * doc/optinfo.texi (Optimization groups): Fix option used for - OPTGROUP_ALL. - * doc/invoke.texi (-fopt-info): Document "omp". - * dumpfile.h: Sort OPTGROUP_OMP before OPTGROUP_VEC. - (OPTGROUP_ALL): Add OPTGROUP_OMP. - * hsa-gen.c (pass_data_gen_hsail): Use OPTGROUP_OMP. - * ipa-hsa.c (pass_data_ipa_hsa): Likewise. - * omp-simd-clone.c (pass_data_omp_simd_clone): Likewise. - - * dumpfile.h (OPTGROUP_OPENMP): Rename to OPTGROUP_OMP. Adjust - all users. - * dumpfile.c (optgroup_options): Instead of "openmp", associate - OPTGROUP_OMP with "omp". - -2017-02-27 Pat Haugen - - PR target/79544 - * config/rs6000/rs6000-c.c (struct altivec_builtin_types): Use VSRAD - for arithmetic shift of unsigned V2DI. - -2017-02-27 Claudiu Zissulescu - - * config.gcc (arc*-): Clean up, use arc/big.h, arc/elf.h, and - arc/linux.h headers. - * config/arc/arc.h (TARGET_OS_CPP_BUILTINS): Remove. - (LINK_SPEC): Likewise. - (ARC_TLS_EXTRA_START_SPEC): Likewise. - (EXTRA_SPECS): Likewise. - (STARTFILE_SPEC): Likewise. - (ENDFILE_SPEC): Likewise. - (LIB_SPEC): Likewise. - (TARGET_SDATA_DEFAULT): Likewise. - (TARGET_MMEDIUM_CALLS_DEFAULT): Likewise. - (MULTILIB_DEFAULTS): Likewise. - (DWARF2_UNWIND_INFO): Likewise. - * config/arc/big.h: New file. - * config/arc/elf.h: Likewise. - * config/arc/linux.h: Likewise. - * config/arc/t-uClibc: Remove. - -2017-02-27 Bin Cheng - - PR tree-optimization/77536 - * tree-ssa-loop-manip.c (niter_for_unrolled_loop): New function. - (tree_transform_and_unroll_loop): Use above function to compute the - estimated niter of unrolled loop and use it when scaling profile. - Also use count info rather than frequency if it's non-zero. - * tree-ssa-loop-manip.h niter_for_unrolled_loop(): New declaration. - * tree-vect-loop.c (scale_profile_for_vect_loop): New function. - (vect_transform_loop): Call above function. - -2017-02-27 Richard Biener - - PR tree-optimization/45397 - * tree-ssa-pre.c (eliminate_insert): Handle BIT_AND_EXPR. - * tree-ssa-sccvn.c (valueized_wider_op): New helper. - (visit_nary_op): Add pattern matching for CSEing sign-changed - or truncated operations with wider ones. - -2017-02-27 Richard Biener - - PR tree-optimization/79690 - * tree-vect-stmts.c (vectorizable_store): Use vector type - built from the DR with address-space. - -2017-02-26 Gerald Pfeifer - - * doc/invoke.texi (Optimize Options): Refine the description - of asan-use-after-return. - -2017-02-25 Alan Modra - - PR rtl-optimization/79584 - * lra-constraints.c (base_to_reg): Reload ad->base, the entire - base, not ad->base_term, the reg within base. Remove assertion - that ad->base == ad->base_term. Replace gen_int_mode using - bogus mode with const0_rtx. - -2017-02-25 Jakub Jelinek - - PR middle-end/79396 - * tree-eh.c (operation_could_trap_p, stmt_could_throw_1_p): Handle - FMA_EXPR like tcc_binary or tcc_unary. - - * tree-ssa-loop-niter.c (number_of_iterations_exit): Simplify warning. - - PR debug/77589 - * dwarf2out.c (struct dw_loc_list_struct): Add noted_variable_value - bitfield. - (size_of_loc_descr): Handle DW_OP_GNU_variable_value. - (output_loc_operands): Handle DW_OP_call_ref and - DW_OP_GNU_variable_value. - (struct variable_value_struct): New type. - (struct variable_value_hasher): Likewise. - (variable_value_hash): New variable. - (string_types): Remove. - (copy_loc_descr): New function. - (add_loc_descr_to_each): Clarify comment. Use copy_loc_descr. - (prepend_loc_descr_to_each): New function. - (add_loc_list): Fix comment typo. Use prepend_loc_descr_to_each - instead of add_loc_descr_to_each if the first argument is single - location list and the second has multiple. - (resolve_args_picking_1): Handle DW_OP_GNU_variable_value. - (loc_list_from_tree_1): For early_dwarf, emit DW_OP_GNU_variable_value - when looking for variable value which doesn't have other location info. - (loc_list_from_tree): Formatting fix. - (gen_array_type_die): Simplify DW_AT_string_length handling. - (adjust_string_types): Remove. - (gen_subprogram_die): Don't call adjust_string_types nor test/set - string_types. Call resolve_variable_values. - (prune_unused_types_walk_loc_descr): Handle DW_OP_GNU_variable_value. - (resolve_addr_in_expr): Likewise. Add A argument. - (copy_deref_exprloc): Remove deref argument. Adjust for the - original expression being DW_OP_GNU_variable_value with optionally - DW_OP_stack_value after it instead of DW_OP_call4 with DW_OP_deref - optionally after it. - (optimize_string_length): Rework for DW_OP_GNU_variable_value. - (resolve_addr): Adjust optimize_string_length and resolve_addr_in_expr - callers. Set remove_AT_byte_size if removing DW_AT_string_length. - (variable_value_hasher::hash, variable_value_hasher::equal): New - methods. - (resolve_variable_value_in_expr, resolve_variable_value, - resolve_variable_values, note_variable_value_in_expr, - note_variable_value): New functions. - (dwarf2out_early_finish): Call note_variable_value on all toplevel - DIEs. - -2017-02-24 Jakub Jelinek - - PR c/79677 - * opts.h (handle_generated_option): Add GENERATED_P argument. - * opts-common.c (handle_option): Adjust function comment. - (handle_generated_option): Add GENERATED_P argument, pass it to - handle_option. - (control_warning_option): Pass false to handle_generated_option - GENERATED_P. - * opts.c (maybe_default_option): Pass true to handle_generated_option - GENERATED_P. - * optc-gen.awk: Likewise. - -2017-02-24 Segher Boessenkool - - * config/sh/sh.md (tstsi_t): If operands[0] is a SUBREG instead of - a REG, look at the REG it is a SUBREG of. - (splitter for cmpeqsi_t): Ditto. - -2017-02-24 Segher Boessenkool - - * config/pa/pa.c (pa_combine_instructions): Do not share RTL. Make - the special USEs with the pattern of the insn, not the insn itself. - -2017-02-24 Matthew Fortune - - PR target/79473 - * doc/invoke.texi: Document -mload-store-pairs. - -2017-02-24 Segher Boessenkool - Sandra Loosemore - - * config/nios2/nios2.c (nios2_simple_const_p): Returns false if the - argument isn't a CONST_INT. - (nios2_alternate_compare_const): Assert op is a CONST_INT. - (nios2_valid_compare_const_p): Assert op is a CONST_INT. - (nios2_validate_compare): Bypass alternate compare logic if *op2 - is not a CONST_INT. - (ldstwm_operation_p): Return false if first_base is not a REG or - if first_offset is not a CONST_INT. - -2017-02-24 Segher Boessenkool - - * config/cris/cris.md: Use correct operand in a define_peephole2. - -2017-02-24 Segher Boessenkool - - * config/c6x/c6x.c (predicate_insn): Do not incorrectly share RTL. - -2017-02-24 Segher Boessenkool - - * config/arc/arc.c (arc_ccfsm_advance): Only take the PATTERN of - this_insn if it is an INSN or JUMP_INSN. - (force_offsettable): Look at base, not at addr. - * config/arc/predicates.md (brcc_nolimm_operator): Don't call INTVAL - on things that aren't necessarily CONST_INTs. - -2017-02-24 Uros Bizjak - - * doc/invoke.texi (x86 Options, -mfpmath=sse): Mention that - -mfpmath=sse is the default also for x86-32 targets with SSE2 - instruction set when @option{-ffast-math} is enabled - -2017-02-24 Jeff Law - - PR rtl-optimizatoin/79286 - * ira.c (update_equiv_regs): Drop may_trap_p exception to - dominance test. - -2017-02-24 Richard Biener - - PR tree-optimization/79389 - * gimple-ssa-split-paths.c (is_feasible_trace): Properly skip - debug insns. - -2017-02-24 Aldy Hernandez - - * tree-ssa-loop-niter.c (number_of_iterations_exit): Update - function comment to reflect reality. - (loop_exits_before_overflow): Fix typo in function description. - -2017-02-24 Richard Biener - - PR tree-optimization/79389 - * gimple-ssa-split-paths.c (is_feasible_trace): Verify more - properly that a threading opportunity exists. Detect conditional - copy/constant propagation opportunities. - -2017-02-23 Eric Botcazou - - * config/visium/visium.md (type): Add trap. - (b): New mode attribute. - (*btst): Rename into... - (*btst): ...this and adjust. - (*cbranchsi4_btst_insn): Rename into... - (*cbranch4_btst_insn): ...this and adjust. - (trap): New define_insn. - -2017-02-23 Jakub Jelinek - - PR tree-optimization/79389 - * ifcvt.c (struct noce_if_info): Add rev_cond field. - (noce_reversed_cond_code): New function. - (noce_emit_store_flag): Use rev_cond if non-NULL instead of - reversed_comparison_code. Formatting fix. - (noce_try_store_flag): Test rev_cond != NULL in addition to - reversed_comparison_code. - (noce_try_store_flag_constants): Likewise. - (noce_try_store_flag_mask): Likewise. - (noce_try_addcc): Use rev_cond if non-NULL instead of - reversed_comparison_code. - (noce_try_cmove_arith): Likewise. Formatting fixes. - (noce_try_minmax, noce_try_abs): Clear rev_cond. - (noce_find_if_block): Initialize rev_cond. - (find_cond_trap): Call noce_get_condition with then_bb == trap_bb - instead of false as last argument never attempt to reverse it - afterwards. - -2017-02-23 Bin Cheng - - PR tree-optimization/79663 - * tree-predcom.c (combine_chains): Process refs in reverse order - only for ZERO length chains, and add explaining comment. - -2017-02-23 Jeff Law - - PR tree-optimization/79578 - * tree-ssa-dse.c (clear_bytes_written_by): Use OEP_ADDRESS_OF - in call to operand_equal_p. - -2017-01-23 Dominique d'Humieres - - PR target/71017 - * config/i386/cpuid.h: Fix another undefined behavior. - -2017-02-23 Richard Biener - - PR tree-optimization/79683 - * tree-vect-stmts.c (vect_analyze_stmt): Do not overwrite - vector types for data-refs. - -2017-02-23 Martin Liska - - * params.def (PARAM_MIN_NONDEBUG_INSN_UID): Change default to 0. - -2017-02-23 Jakub Jelinek - - PR middle-end/79665 - * internal-fn.c (get_range_pos_neg): Moved to ... - * tree.c (get_range_pos_neg): ... here. No longer static. - * tree.h (get_range_pos_neg): New prototype. - * expr.c (expand_expr_real_2) : If both arguments - are known to be in between 0 and signed maximum inclusive, try to - expand both unsigned and signed divmod and use the cheaper one from - those. - -2017-02-22 Jeff Law - - PR tree-optimization/79578 - * tree-ssa-dse.c (clear_bytes_written_by): Use operand_equal_p - to compare base operands. - -2017-02-22 Segher Boessenkool - - PR target/79211 - * config/rs6000/rs6000.md (*fsel4): Use - gpc_reg_operand instead of fpr_reg_operand. - -2017-02-22 Sameera Deshpande - - * config/mips/mips.c (mips_return_in_memory): Force FP - vector types to be returned in memory for o32 ABI. - -2017-02-22 Jakub Jelinek - - * dwarf2out.c (gen_variable_die): For -gdwarf-5, use DW_TAG_variable - instead of DW_TAG_member for static data member declarations and don't - set no_linkage_name for static inline data members. - (gen_member_die): For -gdwarf-5 don't change DW_TAG_variable - to DW_TAG_member. - -2017-02-22 Martin Liska - - * doc/invoke.texi: Replace inequality signs with square brackets - for -Wnormalized. - -2017-02-22 Matthew Fortune - - PR target/78660 - * lra-constraints.c (simplify_operand_subreg): Handle - WORD_REGISTER_OPERATIONS targets. - -2017-02-22 Jakub Jelinek - - PR target/70465 - * reg-stack.c (emit_swap_insn): Treat (float_extend:?F (mem:?F)) - and (const_double:?F) like (mem:?F) for the purpose of fxch %st(1) - elimination by swapping fld*. - -2017-02-22 Richard Biener - - PR tree-optimization/79673 - * tree-ssa-pre.c (compute_avail): Use wide_int_to_tree to - convert the [TARGET_]MEM_REF offset INTEGER_CST, scrapping off - irrelevant address-space qualifiers and avoiding a - ADDR_SPACE_CONVERT_EXPR from fold_convert. - -2017-02-22 Richard Biener - - PR tree-optimization/79666 - * tree-vrp.c (extract_range_from_binary_expr_1): Make sure - to not symbolically negate if that may introduce undefined - overflow. - -2017-02-22 Martin Liska - - PR lto/79587 - * data-streamer-in.c (streamer_read_gcov_count): Remove assert. - * data-streamer-out.c (streamer_write_gcov_count_stream): - Likewise. - * value-prof.c (stream_out_histogram_value): Make assert more - precise based on type of counter. - -2017-02-21 Uros Bizjak - - PR target/79593 - * config/i386/i386.md (standard_x87sse_constant_load splitter): - Use nonimmediate_operand instead of memory_operand for operand 1. - (float-extend standard_x87sse_constant_load splitter): Ditto. - -2017-02-21 Jeff Law - - PR tree-optimization/79621 - * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Ignore - blocks with edges to themselves. - -2017-02-21 Jakub Jelinek - - PR target/79633 - * tree-chkp-opt.c (chkp_optimize_string_function_calls): Use - is_gimple_call instead of comparing gimple_code with GIMPLE_CALL. - Use gimple_call_builtin_p. - - PR target/79570 - * sel-sched.c (moveup_expr_cached): Don't call sel_bb_head - on temporarily removed DEBUG_INSNs. - - PR tree-optimization/79649 - * tree-loop-distribution.c (classify_partition): Give up on - non-generic address space loads/stores. - -2017-02-21 Aldy Hernandez - - * doc/loop.texi (Loop manipulation): Remove nonexistent - tree_ssa_loop_version from the documentation. - * cfgloopmanip.c (loop_version): Document CONDITION_BB argument. - -2017-02-21 Jakub Jelinek - - PR target/79494 - * config/i386/i386.c (ix86_expand_split_stack_prologue): Call - make_reg_eh_region_note_nothrow_nononlocal on call_insn. - * config/rs6000/rs6000.c: Include except.h. - (rs6000_expand_split_stack_prologue): Call - make_reg_eh_region_note_nothrow_nononlocal on the call insn. - -2017-02-21 Martin Jambor - - PR lto/79579 - * ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges - have been analyzed. - -2017-02-21 Martin Jambor - - * common.opt (-fipa-cp-alignment): Mark as ignored and preserved - for backward compatibility only. - * doc/invoke.texi (Option Summary): Remove all references to - -fipa-cp-alignment. - -2017-02-21 Matthew Fortune - - PR target/78660 - Revert: - 2017-02-20 Matthew Fortune - - * lra-constraints.c (curr_insn_transform): Handle - WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs. - -2017-02-21 Martin Liska - - * config/i386/i386.opt: Replace -masm-dialect with -masm. - -2017-02-21 Thomas Schwinge - - PR translation/79638 - * config/nvptx/nvptx.c (ENTRY_TEMPLATE): Single out "%ntid.y". - -2017-02-21 Eric Botcazou - - PR ada/67205 - * config/arm/arm.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define. - (arm_function_ok_for_sibcall): Return false for an indirect call by - descriptor if all the argument registers are used. - (arm_relayout_function): Use FUNCTION_ALIGNMENT macro to adjust the - alignment of the function. - -2017-02-21 Jakub Jelinek - - PR tree-optimization/61441 - * simplify-rtx.c (simplify_const_unary_operation): For - -fsignaling-nans and sNaN operand, return NULL_RTX rather than - the sNaN unmodified. - -2017-02-20 Bernd Edlinger - - * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe. - (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR - instead of SYSTEM_HEADER_DIR. - -2017-02-20 Gerald Pfeifer - Martin Liška - - * doc/invoke.texi (use-after-scope-direct-emission-threshold): - Fix typos and grammar, use active voice, and clarify. - -2017-02-20 Marek Polacek - - PR middle-end/79537 - * gimplify.c (gimplify_expr): Handle unused *&&L;. - - PR sanitizer/79558 - * ubsan.c (ubsan_type_descriptor): Check if TYPE_MAX_VALUE is null. - -2017-02-20 Jakub Jelinek - - PR target/79568 - * config/i386/i386.c (ix86_expand_builtin): Handle - OPTION_MASK_ISA_AVX512VL and OPTION_MASK_ISA_64BIT in - ix86_builtins_isa[fcode].isa as a requirement of those - flags and any other flag in the bitmask. - (ix86_init_mmx_sse_builtins): Use 0 instead of - ~OPTION_MASK_ISA_64BIT as mask. - * config/i386/i386-builtin.def (__builtin_ia32_rdtsc, - __builtin_ia32_rdtscp, __builtin_ia32_pause, __builtin_ia32_bsrsi, - __builtin_ia32_rdpmc, __builtin_ia32_rolqi, __builtin_ia32_rolhi, - __builtin_ia32_rorqi, __builtin_ia32_rorhi): Likewise. - -2017-02-20 Matthew Fortune - - PR target/78012 - * lra-constraints.c (split_reg): Check requested split mode - is supported by the register. - -2017-02-20 Matthew Fortune - - * lra-constraints.c (simplify_operand_subreg): Remove early - return false. - -2017-02-20 Matthew Fortune - - PR target/78660 - * lra-constraints.c (curr_insn_transform): Tighten condition - for converting SUBREG reloads from OP_OUT to OP_INOUT. - -2017-02-20 Matthew Fortune - - PR target/78660 - * lra-constraints.c (curr_insn_transform): Handle - WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs. - -2017-02-19 Uros Bizjak - - Revert: - 2016-05-30 Uros Bizjak - - * config/i386/sync.md (mfence_nosse): Use "lock orl $0, -4(%esp)". - -2017-02-19 Jonathan Wakely - - PR c++/69523 - * doc/invoke.texi (C++ Dialect Options) [-Wliteral-suffix]: Update - description. - -2017-02-19 Prathamesh Kulkarni - - * gimple-pretty-print.c (dump_ternary_rhs): Adjust gimple dump format - for FMA_EXPR. - -2017-02-18 Jakub Jelinek - - * final.c (last_columnnum, override_columnnum): New variables. - (final_start_function): Set last_columnnum, pass it to begin_prologue - hook and pass 0 to dwarf2out_begin_prologue. - (final_scan_insn): Update override_columnnum. Pass last_columnnum - to source_line debug hook. - (notice_source_line): Compute last_columnnum and for debug_column_info - return true on column changes. - * debug.h (struct gcc_debug_hooks): Add column argument to - source_line and begin_prologue hooks. - (debug_nothing_int_charstar_int_bool): Remove prototype. - (debug_nothing_int_int_charstar, - debug_nothing_int_int_charstar_int_bool): New prototypes. - (dwarf2out_begin_prologue): Add column argument. - * debug.c (do_nothing_debug_hooks): Adjust source_line and - begin_prologue hooks. - (debug_nothing_int_charstar_int_bool): Remove. - (debug_nothing_int_int_charstar, - debug_nothing_int_int_charstar_int_bool): New functions. - * dwarf2out.c (dwarf2out_begin_prologue): Add column argument, pass it - through to dwarf2out_source_line. - (dwarf2_lineno_debug_hooks): Adjust begin_prologue hook. - (dwarf2out_source_line): Add column argument, emit it if requested. - * sdbout.c (sdbout_source_line, sdbout_begin_prologue): Add column - arguments. - * xcoffout.h (xcoffout_begin_prologue, xcoffout_source_line): Likewise. - * xcoffout.c (xcoffout_begin_prologue, xcoffout_source_line): Likewise. - * vmsdbgout.c (vmsdbgout_begin_prologue): Add column argument, pass it - through to dwarf2out_begin_prologue. - (vmsdbgout_source_line): Add column argument, pass it through to - dwarf2out_source_line. - * dbxout.c (dbxout_begin_prologue): Add column argument, adjust - dbxout_source_line caller. - (dbxout_source_line): Add column argument. - - * common.opt (gno-column-info, gcolumn-info): New options. - * dwarf2out.c (dwarf2_lineno_debug_hooks): Formatting fix. - (check_die): Also test for multiple DW_AT_decl_column attributes. - (add_src_coords_attributes, dwarf2out_imported_module_or_decl_1): Add - DW_AT_decl_column if requested. - (gen_subprogram_die): Compare and/or add also DW_AT_decl_column - if requested. - (gen_variable_die): Likewise. - (add_call_src_coords_attributes): Add DW_AT_call_column if requested. - * doc/invoke.texi (-gcolumn-info, -gno-column-info): Document. - - PR target/79569 - * config/i386/i386.opt (m3dnowa): Replace Undocumented with Report. - * common/config/i386/i386-common.c (OPTION_MASK_ISA_3DNOW_A_SET): Define. - (ix86_handle_option): Handle OPT_m3dnowa. - * doc/invoke.texi (-m3dnowa): Document. - * doc/extend.texi (__builtin_ia32_pmulhuw, __builtin_ia32_pf2iw): Use - -m3dnowa instead of -m3dnow -march=athlon. - - PR target/79559 - * config/i386/i386.c (ix86_print_operand): Use output_operand_lossage - instead of gcc_assert for K, r and R code checks. Formatting fixes. - -2017-02-17 Bill Schmidt - - PR target/79261 - * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add - support for CODE_FOR_vsx_xxpermdi_v2d[fi]_be. - * config/rs6000/rs6000.md (reload_gpr_from_vsx): Call - generator for vsx_xxpermdi__be. - * config/rs6000/vsx.md (vsx_xxpermdi_): Remove logic to - force big-endian semantics. - (vsx_xxpermdi__be): New define_expand with same - implementation as previous version of vsx_xxpermdi_. - -2017-02-17 Jakub Jelinek - - PR tree-optimization/79327 - * gimple-ssa-sprintf.c (format_integer): Remove likely_adjust - variable, its initialization and use. - -2017-02-17 Julia Koval - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_RDPID_SET): New. - (OPTION_MASK_ISA_PKU_UNSET): New. - (ix86_handle_option): Handle -mrdpid. - * config/i386/cpuid.h (bit_RDPID): New. - * config/i386/driver-i386.c (host_detect_local_cpu): - Detect RDPID feature. - * config/i386/i386-builtin.def (__builtin_ia32_rdpid): New. - * config/i386/i386-c.c (ix86_target_macros_internal): - Handle RDPID flag. - * config/i386/i386.c (ix86_target_string): Add -mrdpid to isa2_opts. - (ix86_valid_target_attribute_inner_p): Add "rdpid". - (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID. - * config/i386/i386.h (TARGET_RDPID, TARGET_RDPID_P): New. - * config/i386/i386.md (define_insn "rdpid"): New. - * config/i386/i386.opt Add -mrdpid. - * config/i386/immintrin.h (_rdpid_u32): New. - -2017-02-17 Vladimir Makarov - - PR rtl-optimization/79541 - * lra-constraints.c (curr_insn_transform): Remove wrong asm insn - instead of transforming it into USE. - -2017-02-17 Segher Boessenkool - - * config/rs6000/rs6000.md (extendsfdf2): Remove default arguments. - If HONOR_SNANS (SFmode) force the input to a register. - (*extendsfdf2_fpr): Add !HONOR_SNANS (SFmode) condition. - (*extendsfdf2_snan): New pattern, used when using SNaNs; it generates - an frsp or similar insn. - -2017-02-17 Martin Liska - - PR rtl-optimization/79577 - * params.def (selsched-max-sched-times): Increase minimum to 1. - -2017-02-17 Martin Liska - - PR rtl-optimization/79574 - * gcse.c (want_to_gcse_p): Prevent integer overflow. - -2017-02-17 Martin Liska - - PR tree-optimization/79529 - * tree-ssa-loop-unswitch.c (is_maybe_undefined): Use - ssa_defined_default_def_p to handle cases which are implicitly - defined. - * tree-ssa.c (ssa_defined_default_def_p): New function. - (ssa_undefined_value_p): Use ssa_defined_default_def_p to handle cases - which are implicitly defined. - * tree-ssa.h (ssa_defined_default_def_p): Declare. - -2017-02-17 Richard Biener - - PR middle-end/79576 - * params.def (max-ssa-name-query-depth): Limit to 10. - -2017-02-17 Richard Biener - - PR tree-optimization/79552 - * tree-ssa-structalias.c (visit_loadstore): Properly verify - default defs. - -2017-02-17 Richard Biener - - PR bootstrap/79567 - * genmatch.c (output_line_directive): Handle DIR_SEPARATOR_2. - -2017-02-17 Marek Polacek - - PR middle-end/79536 - * fold-const.c (fold_negate_expr_1): Renamed from fold_negate_expr. - (fold_negate_expr): New wrapper. - -2017-02-16 Sandra Loosemore - - * doc/invoke.texi (C++ Dialect Options) [-Wno-non-template-friend]: - Correct terminology and de-emphasize pre-standard behavior. - -2017-02-16 Alan Modra - - PR rtl-optimization/79286 - * ira.c (def_dominates_uses): New function. - (update_equiv_regs): Don't create an equivalence for insns that - may trap where the register def does not dominate the use. - -2017-02-16 Vladimir Makarov - - PR rtl-optimization/78127 - * lra.c (lra): Call lra_eliminate before finish the loop after - lra_constraint. - -2017-02-16 Richard Biener - - * graphite.h: Do not include isl/isl_val_gmp.h, instead include - isl/isl_val.h. - * graphite-isl-ast-to-gimple.c (gmp_cst_to_tree): Remove. - (gcc_expression_from_isl_expr_int): Use generic isl_val interface. - * graphite-sese-to-poly.c: Do not include isl/isl_val_gmp.h. - (isl_val_int_from_wi): New function. - (extract_affine_gmp): Rename to ... - (extract_affine_wi): ... this, take a widest_int. - (extract_affine_int): Just wrap extract_affine_wi. - (add_param_constraints): Use isl_val_int_from_wi. - (add_loop_constraints): Likewise, and extract_affine_wi. - -2017-02-15 Jeff Law - - PR middle-end/79521 - * ira-costs.c (scan_one_insn): Check have_regs_of_mode before calling - ira_init_register_move_cost_if_necessary. - -2017-02-15 Martin Sebor - - PR middle-end/32003 - * doc/invoke.texi (-fdump-final-insns): Replace option accidentally - removed in a prior commit. - -2017-02-15 Bin Cheng - - PR tree-optimization/79347 - * tree-vect-loop-manip.c (vect_do_peeling): Maintain profile - counters during peeling. - -2017-02-15 Thomas Schwinge - - * Makefile.in (site.exp): Remove "set ISLVER". - -2017-02-15 Jakub Jelinek - - PR target/79487 - * real.c (real_from_integer): Call real_convert even for decimal. - -2017-02-15 Dominik Vogt - - PR target/79421 - * config/s390/s390.c: define TARGET_CUSTOM_FUNCTION_DESCRIPTORS. - -2017-02-14 Andrew Pinski - - * config/aarch64/aarch64-cores.def (thunderx2t99): Move to under 'C" - cores and change the partno/implementer to be correct. - (thunderx2t99p1): New core which replaces thunderx2t99 and still has - the 'B" as the implementer. - * config/aarch64/aarch64-tune.md: Regenerate. - -2017-02-14 Carl Love - - * config/rs6000/rs6000.c: Add case statement entry to make the - xvcvuxdsp built-in argument unsigned. - * config/rs6000/vsx.md: Fix the source and return operand types so they - match the instruction definitions from the ISA document. Fix typo - in the instruction generation for the (define_insn "vsx_xvcvuxdsp" - statement. - -2017-02-14 Vladimir Makarov - - PR target/79282 - * lra-int.h (struct lra_operand_data, struct lra_insn_reg): Add - member early_clobber_alts. - * lra-lives.c (reg_early_clobber_p): New. - (process_bb_lives): Use it. - * lra.c (new_insn_reg): New arg early_clobber_alts. Use it. - (debug_operand_data): Initialize early_clobber_alts. - (setup_operand_alternative): Set up early_clobber_alts. - (collect_non_operand_hard_regs): Ditto. Pass early clobber - alternatives to new_insn_reg. - (add_regs_to_insn_regno_info): Add arg early_clobber_alts. Use - it. - (lra_update_insn_regno_info): Pass the new arg. - -2017-02-14 Jakub Jelinek - - PR middle-end/79505 - * omp-offload.c (free_oacc_loop): Release loop->ifns vector. - (new_oacc_loop_raw): Don't clear already cleared fields. - - PR target/79481 - * config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd, - _mm512_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd, - _mm512_prefetch_i64gather_ps): New inline functions and macros. - -2017-02-14 Uros Bizjak - - PR target/79495 - * config/i386/i386.md (*movxf_internal): Add (o,rC) alternative. - -2017-02-14 H.J. Lu - - PR target/79498 - * config/i386/i386.c (timode_scalar_chain::convert_insn): Insert - the extra instruction to the right place to store 128-bit constant - when needed. - -2017-02-14 Martin Sebor - - PR middle-end/79448 - * gimple-ssa-sprintf.c (format_directive): Avoid issuing INT_MAX - warning for strings of unknown length. - -2017-02-13 Segher Boessenkool - - * config.gcc (supported_defaults) [powerpc*-*-*]: Update. - -2017-02-14 Jeff Law - - PR target/79404 - * ira-costs.c (scan_one_insn): Initialize register move costs - for pseudos seen in USE/CLOBBER insns. - - PR tree-optimization/79095 - * tree-vrp.c (extract_range_from_binary_expr_1): For EXACT_DIV_EXPR, - if the numerator has the range ~[0,0] make the resultant range ~[0,0]. - (extract_range_from_binary_expr): For MINUS_EXPR with no derived range, - if the operands are known to be not equal, then the resulting range - is ~[0,0]. - (intersect_ranges): If the new range is ~[0,0] and the old range is - wide, then prefer ~[0,0]. - * tree-vrp.c (overflow_comparison_p_1): New function. - (overflow_comparison_p): New function. - * tree-vrp.c (register_edge_assert_for_2): Register additional asserts - if NAME is used in an overflow test. - (vrp_evaluate_conditional_warnv_with_ops): If the ops represent an - overflow check that can be expressed as an equality test, then adjust - ops to be that equality test. - -2017-02-14 Andreas Krebbel - - * config/s390/s390-builtin-types.def: Remove flags argument. - * config/s390/s390.c (s390_init_builtins): Likewise. - -2017-02-14 Martin Liska - - * tree-ssa-loop-unswitch.c (hoist_guard): Release get_loop_body - vector. Fix trailing white spaces. - -2017-02-14 James Greenhalgh - - * config/aarch64/aarch64.c (aarch64_simd_container_mode): Handle - HFmode. - -2017-02-14 Kyrylo Tkachov - - PR rtl-optimization/68664 - * config/arm/arm.c (arm_sched_can_speculate_insn): - New function. Declare prototype. - (TARGET_SCHED_CAN_SPECULATE_INSN): Define. - -2017-02-14 Kyrylo Tkachov - - PR rtl-optimization/68664 - * config/aarch64/aarch64.c (aarch64_sched_can_speculate_insn): - New function. - (TARGET_SCHED_CAN_SPECULATE_INSN): Define. - -2017-02-14 Amit Pawar - - * config/i386/i386.c (znver1_cost): Fix the alignment for function and - max skip bytes for function, loop and jump. - -2017-02-14 Prathamesh Kulkarni - - * gimple-pretty-print.c (dump_unary_rhs): Adjust dump format for - ABS_EXPR for gimple dump. - -2017-02-14 Jakub Jelinek - - PR target/79462 - * config/sh/sh.c (expand_cbranchdi4): Don't clear operands[4]. - - PR tree-optimization/79408 - * tree-vrp.c (simplify_div_or_mod_using_ranges): Handle also the - case when on TRUNC_MOD_EXPR op0 is INTEGER_CST. - (simplify_stmt_using_ranges): Call simplify_div_or_mod_using_ranges - also if rhs1 is INTEGER_CST. - -2017-02-14 Richard Biener - - PR middle-end/79432 - * tree-into-ssa.c (insert_phi_nodes): When the function can - have abnormal edges rewrite SSA names with broken use-def - dominance out of SSA and register them for PHI insertion. - -2017-02-13 Martin Sebor - - PR middle-end/79496 - * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): Avoid - clearing info.nowrite flag when snprintf size argument is a range. - -2017-02-13 Jakub Jelinek - - * cprop.c (cprop_jump): Add missing space in string literal. - * tree-ssa-structalias.c (rewrite_constraints): Likewise. - (get_constraint_for_component_ref): Likewise. - * df-core.c (df_worklist_dataflow_doublequeue): Likewise. - * tree-outof-ssa.c (insert_partition_copy_on_edge): Likewise. - * lra-constraints.c (process_alt_operands): Likewise. - * ipa-inline.c (inline_small_functions): Likewise. - * tree-ssa-sccvn.c (visit_reference_op_store): Likewise. - * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise. - * trans-mem.c (diagnose_tm_1_op): Likewise. - * omp-grid.c (grid_find_single_omp_among_assignments): Likewise. - (grid_parallel_clauses_gridifiable): Likewise. - - * config/nvptx/mkoffload.c (process): Add space in between - , and %d. - - * config/i386/i386.h (REG_CLASS_NAMES): Add , in between - "MOD4_SSE_REGS" and "ALL_REGS". - - * spellcheck.c (test_data): Add , in between "foo" and "food". - -2017-02-13 Aaron Sawdey - - PR target/79449 - * config/rs6000/rs6000.c (expand_block_compare): Make sure runtime - boundary crossing check and subsequent code generation agree. - -2017-02-13 Kyrylo Tkachov - - * config/aarch64/aarch64.c (has_memory_op): Delete. - (aarch64_madd_needs_nop): Use contains_mem_rtx_p instead of - has_memory_op. - -2017-02-13 Jakub Jelinek - - PR rtl-optimization/79388 - PR rtl-optimization/79450 - * combine.c (distribute_notes): When removing TEM_INSN for which - corresponding dest has last value recorded, invalidate that last - value. - -2017-02-13 Kyrylo Tkachov - - * config/arm/arm.c (arm_print_tune_info): Use ASM_COMMENT_START instead - of explicit '@'. Add missing assembly comment marker on branch costs - printout. - -2017-02-13 Nathan Sidwell - - * gengtype-lex.l (): Add '/'. - -2017-02-13 Martin Liska - - PR c/79471 - * calls.c (expand_call): Replace XALLOCAVEC with XCNEWVEC. - -2017-02-13 Richard Biener - - * configure.ac (HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS): - Remove. - * configure: Re-generate. - * config.in: Likewise. - * graphite-dependences.c: Simplify as if - HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS was defined. - * graphite-isl-ast-to-gimple.c: Likewise. - * graphite-optimize-isl.c: Likewise. - * graphite-poly.c: Likewise. - * graphite-sese-to-poly.c: Likewise. - * graphite.h: Likewise. - * toplev.c: Include isl/version.h and use isl_version () for - printing the ISL version. - * doc/install.texi: Update ISL requirement. - -2017-02-12 Gerald Pfeifer - - * doc/standards.texi (Standards): Update reference to - Objective-C 2.0. - -2017-02-12 Gerald Pfeifer - - * doc/extend.texi (Named Address Spaces): sourceware.org now - defaults to https. - * doc/install.texi (Binaries): Ditto. - (Specific): Ditto. - -2017-02-11 Sandra Loosemore - - * doc/cpp.texi: Replace "stringify"/"stringification" with C - standard terminology "stringize"/"stringizing" throughout. - * doc/cppinternals.texi: Likewise. - -2017-02-11 Sandra Loosemore - - * doc/extend.texi: Fix some spelling mistakes and typos. - * doc/invoke.texi: Likewise. - -2017-02-11 Jan Hubicka - - PR ipa/79224 - * params.def (inline-min-speedup) Change from 10 to 8. - -2017-02-11 Jakub Jelinek - - * doc/invoke.texi (fopenmp): Bump OpenMP version from 4.0 to - 4.5. - -2017-02-11 Jan Hubicka - - PR ipa/79224 - * ipa-inline-analysis.c (get_minimal_bb): New function. - (record_modified): Use it. - (remap_edge_change_prob): Handle also ancestor functions. - -2017-02-11 Gerald Pfeifer - - * doc/contrib.texi (Contributors): Remove broken link into - the Mauve CVS repository. - -2017-02-11 Jakub Jelinek - - PR middle-end/79454 - * internal-fn.c (expand_vector_ubsan_overflow): Use piece-wise - result computation whenever lhs doesn't have vector mode, not - just when it has BLKmode. - -2017-02-10 Gerald Pfeifer - - * doc/makefile.texi (profiledbootstrap): Refer to the - installation instructions only in textual form. - -2017-02-10 Aaron Sawdey - - PR target/79295 - * config/rs6000/altivec.md (bcd): Fix constraints. - -2017-02-10 Gerald Pfeifer - - * doc/install.texi (Specific): Use https for blackfin.uclinux.org. - (Specific): Update mingw-w64 reference. - (Binaries): Ditto. - (Specific): Remove broken link to Renesas RX processor. - -2017-02-10 Richard Biener - - * toplev.c (process_options): Do not mention obsolete graphite - options when printing sorry message about missing graphite support. - Mention -floop-nest-optimize. - -2017-02-10 Christophe Lyon - - * config/aarch64/arm_neon.h (vtst_p8): Rewrite without asm. - (vtst_p16): Likewise. - (vtstq_p8): Likewise. - (vtstq_p16): Likewise. - (vtst_p64): New. - (vtstq_p64): Likewise. - * config/arm/arm_neon.h (vgetq_lane_p64): New. - (vset_lane_p64): New. - (vsetq_lane_p64): New. - -2017-02-10 Jakub Jelinek - - PR tree-optimization/79411 - * tree-ssa-reassoc.c (is_reassociable_op): Return false if - stmt operands are SSA_NAMEs used in abnormal phis. - (can_reassociate_p): Return false if op is SSA_NAME used in abnormal - phis. - -2017-02-09 Jan Hubicka - - PR ipa/70795 - * cgraphunit.c (cgraph_node::add_new_function): Set externally_visible - flag if needed. - -2017-02-09 Jan Hubicka - - * tree-ssa-loop-unswitch.c (hoist_guard): Update profile. - -2017-02-09 Jakub Jelinek - - * omp-offload.c (oacc_loop_auto_partitions): Use || instead of | - to avoid warning. - - PR c/79413 - * gimplify.h (is_gimple_sizepos): Only test for INTEGER_CST constants, - not arbitrary TREE_CONSTANT. - - PR c/79431 - * gimplify.c (gimplify_adjust_omp_clauses): Ignore - "omp declare target link" attribute unless is_global_var. - * omp-offload.c (find_link_var_op): Likewise. - -2017-02-09 Nathan Sidwell - Chung-Lin Tang - - * gimplify.c (gimplify_scan_omp_clauses): No special handling for - OMP_CLAUSE_TILE. - (gimplify_adjust_omp_clauses): Don't delete TILE. - (gimplify_omp_for): Deal with TILE. - * internal-fn.c (expand_GOACC_TILE): New function. - * internal-fn.def (GOACC_DIM_POS): Comment may be overly conservative. - (GOACC_TILE): New. - * omp-expand.c (struct oacc_collapse): Add tile and outer fields. - (expand_oacc_collapse_init): Add LOC paramter. Initialize tile - element fields. - (expand_oacc_collapse_vars): Add INNER parm, adjust for tiling, - avoid DIV for outermost collapse var. - (expand_oacc_for): Insert tile element loop as needed. Adjust. - Remove out of date comments, fix whitespace. - * omp-general.c (omp_extract_for_data): Deal with tiling. - * omp-general.h (enum oacc_loop_flags): Add OLF_TILE flag, - adjust OLF_DIM_BASE value. - (struct omp_for_data): Add tiling field. - * omp-low.c (scan_sharing_clauses): Allow OMP_CLAUSE_TILE. - (lower_oacc_head_mark): Add OLF_TILE as appropriate. Ensure 2 levels - for auto loops. Remove default auto determining, moved to - oacc_loop_fixed_partitions. - * omp-offload.c (struct oacc_loop): Change 'ifns' to vector of call - stmts, add e_mask field. - (oacc_dim_call): New function, abstracted out from oacc_thread_numbers. - (oacc_thread_numbers): Use oacc_dim_call. - (oacc_xform_tile): New. - (new_oacc_loop_raw): Initialize e_mask, adjust for ifns vector. - (finish_oacc_loop): Adjust for ifns vector. - (oacc_loop_discover_walk): Append loop abstraction sites to list, - add case for GOACC_TILE fns. - (oacc_loop_xform_loop): Delete. - (oacc_loop_process): Iterate over call list directly, and add - handling for GOACC_TILE fns. - (oacc_loop_fixed_partitions): Determine default auto, deal with TILE, - dump partitioning. - (oacc_loop_auto_partitions): Add outer_assign parm. Assign all but - vector partitioning to outer loops. Assign 2 partitions to loops - when available. Add TILE handling. - (oacc_loop_partition): Adjust oacc_loop_auto_partitions call. - (execite_oacc_device_lower): Process GOACC_TILE fns, - ignore unknown specs. - * tree-nested.c (convert_nonlocal_omp_clauses): Allow OMP_CLAUSE_TILE. - * tree.c (omp_clause_num_ops): Adjust TILE ops. - * tree.h (OMP_CLAUSE_TILE_ITERVAR, OMP_CLAUSE_TILE_COUNT): New. - -2017-02-09 Gerald Pfeifer - - * configure.ac (ACX_BUGURL): Update. - * configure: Regenerate. - -2017-02-09 Richard Biener - - PR tree-optimization/69823 - * graphite-scop-detection.c (scop_detection::harmful_loop_in_region): - Properly enumerate all BBs in the region. Use auto_vec/auto_bitmap. - -2017-02-09 Andrew Burgess - - * config/arc/arc-c.def: Add __NPS400__ definition. - * config/arc/arc.h (CPP_SPEC): Don't define __NPS400__ here. - (TARGET_NPS400): Define. - -2017-02-09 Andrew Burgess - - * config/arc/arc-arch.h (arc_arch_t): Move unchanged to earlier in - file. - (arc_cpu_t): Change base_architecture field, arch, to a arc_arc_t - pointer, arch_info. - (arc_cpu_types): Fill the arch_info field with a pointer into the - arc_arch_types table. - (arc_selected_cpu): Declare. - * config/arc/arc.c (arc_selected_cpu): Make global. - (arc_selected_arch): Delete. - (arc_base_cpu): Delete. - (arc_override_options): Remove references to deleted variables, - update access to arch information. - (ARC_OPT): Update access to arch information. - (ARC_OPTX): Likewise. - * config/arc/arc.h (arc_base_cpu): Remove declaration. - (TARGET_ARC600): Update access to arch information. - (TARGET_ARC601): Likewise. - (TARGET_ARC700): Likewise. - (TARGET_EM): Likewise. - (TARGET_HS): Likewise. - * config/arc/driver-arc.c (arc_cpu_to_as): Update access to arch - information. - -2017-02-08 Pat Haugen - - PR target/78604 - * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Invert - condition/operands for integer GE/LE/GEU/LEU operations. - -2017-02-08 Segher Boessenkool - - PR translation/79397 - * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling - of AltiVec. - -2017-02-08 Martin Jambor - - PR ipa/79375 - * ipa-prop.c (ipa_alloc_node_params): Make static, return bool - whether allocation happened. - (ipa_initialize_node_params): Do not call ipa_alloc_node_params if - nothing was allocated. - -2017-02-08 Jakub Jelinek - - PR tree-optimization/79408 - * tree-vrp.c (simplify_div_or_mod_using_ranges): If op1 is not - constant, but SSA_NAME with a known integer range, use the minimum - of that range instead of op1 to determine if modulo can be replaced - with its first operand. - -2016-02-08 Kyrylo Tkachov - - * config/riscv/riscv.c (riscv_build_integer_1): Avoid use of INT16_MAX. - -2017-02-08 Richard Biener - - PR tree-optimization/71824 - * graphite-scop-detection.c (scop_detection::build_scop_breadth): - Check all loops contained in the merged region. - -2017-02-07 Andrew Pinski - - * config/aarch64/aarch64.md (popcount2): New pattern. - -2017-02-07 Andrew Pinski - - * config/aarch64/aarch64-cores.def (thunderx): Disable LSE. - (thunderxt88): Likewise. - (thunderxt81): Disable LSE and change v8.1 to v8. - (thunderxt83): Likewise. - -2017-02-07 Jakub Jelinek - Richard Biener - - PR middle-end/79399 - * ira-int.h (struct target_ira_int): Change x_max_struct_costs_size - type from int to size_t. - * ira-costs.c (struct_costs_size): Change type from int to size_t. - -2017-02-07 Jakub Jelinek - - PR rtl-optimization/79386 - * cprop.c (bypass_conditional_jumps): Initialize - bypass_last_basic_block already before splitting bbs after - unconditional traps... - (bypass_conditional_jumps): ... rather than here. - - PR target/79299 - * config/i386/sse.md (xtg_mode, gatherq_mode): New mode attrs. - (*avx512f_gathersi, *avx512f_gathersi_2, - *avx512f_gatherdi, *avx512f_gatherdi_2): Use them, - fix -masm=intel patterns. - -2017-02-07 Richard Biener - - PR tree-optimization/79256 - PR middle-end/79278 - * builtins.c (get_object_alignment_2): Use min_align_of_type - to extract alignment for MEM_REFs to honor BIGGEST_FIELD_ALIGNMENT - and ADJUST_FIELD_ALIGN. - - * doc/tm.texi.in (ADJUST_FIELD_ALIGN): Adjust to take additional - type parameter. - * doc/tm.texi: Regenerate. - * stor-layout.c (layout_decl): Adjust. - (update_alignment_for_field): Likewise. - (place_field): Likewise. - (min_align_of_type): Likewise. - * config/arc/arc.h (ADJUST_FIELD_ALIGN): Adjust. - * config/epiphany/epiphany.h (ADJUST_FIELD_ALIGN): Likewise. - * config/epiphany/epiphany.c (epiphany_adjust_field_align): Likewise. - * config/frv/frv.h (ADJUST_FIELD_ALIGN): Likewise. - * config/frv/frv.c (frv_adjust_field_align): Likewise. - * config/i386/i386.h (ADJUST_FIELD_ALIGN): Likewise. - * config/i386/i386.c (x86_field_alignment): Likewise. - * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise. - * config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Likewise. - * config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise. - * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise. - * config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Likewise. - * config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p): - Likewise. - - Revert - 2017-01-30 Richard Biener - - PR tree-optimization/79256 - * targhooks.c (default_builtin_vector_alignment_reachable): Honor - BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus - alignment on TYPE. - -2017-02-07 Toma Tabacu - - * config/mips/mips.c (mips_expand_builtin_insn): Convert the QImode - argument of the pshufh, psllh, psllw, psrah, psraw, psrlh, psrlw - builtins to SImode and emit a zero-extend, if necessary. - -2017-02-06 Palmer Dabbelt - - * docs/invoke.texi (RISC-V Options): Alphabetize. - -2017-02-06 Palmer Dabbelt - - * doc/invoke.texi (RISC-V Options): Use two spaces to separate - options. - -2017-02-06 Palmer Dabbelt - - * config/riscv/riscv.c: New file. - * common/config/riscv/riscv-common.c: Likewise. - * config.gcc: Likewise. - * config/riscv/constraints.md: Likewise. - * config/riscv/elf.h: Likewise. - * config/riscv/generic.md: Likewise. - * config/riscv/linux.h: Likewise. - * config/riscv/multilib-generator: Likewise. - * config/riscv/peephole.md: Likewise. - * config/riscv/pic.md: Likewise. - * config/riscv/predicates.md: Likewise. - * config/riscv/riscv-builtins.c: Likewise. - * config/riscv/riscv-c.c: Likewise. - * config/riscv/riscv-ftypes.def: Likewise. - * config/riscv/riscv-modes.def: Likewise. - * config/riscv/riscv-opts.h: Likewise. - * config/riscv/riscv-protos.h: Likewise. - * config/riscv/riscv.h: Likewise. - * config/riscv/riscv.md: Likewise. - * config/riscv/riscv.opt: Likewise. - * config/riscv/sync.md: Likewise. - * config/riscv/t-elf-multilib: Likewise. - * config/riscv/t-linux: Likewise. - * config/riscv/t-linux-multilib: Likewise. - * config/riscv/t-riscv: Likewise. - * configure.ac: Likewise. - * doc/contrib.texi: Add Kito Cheng, Palmer Dabbelt, and Andrew - Waterman as RISC-V maintainers. - * doc/install.texi: Add RISC-V entries. - * doc/invoke.texi: Add RISC-V options section. - * doc/md.texi: Add RISC-V constraints section. - * configure: Regenerated. - -2017-02-06 Michael Meissner - - PR target/66144 - * config/rs6000/vector.md (vcond): Allow the true and - false values to be constant vectors with all 0 or all 1 bits set. - (vcondu): Likewise. - * config/rs6000/predicates.md (vector_int_reg_or_same_bit): New - predicate. - (fpmask_comparison_operator): Update comment. - (vecint_comparison_operator): New predicate. - * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Optimize - vector conditionals when the true and false values are constant - vectors with all 0 bits or all 1 bits set. - -2017-02-06 Martin Sebor - - PR tree-optimization/79376 - * gimple-fold.c (get_range_strlen): Set the minimum length to zero. - -2017-02-06 Uros Bizjak - - * config/i386/sse.md (vector modes -> vec_extract* splitter): Use - explicit subreg RTX with operand 1. Use VECTOR_MODE_P predicate - to simplify split condition. - -2017-02-06 Jakub Jelinek - - * omp-expand.c (oxpand_omp_atomic_fetch_op, - expand_omp_atomic_pipeline): Return false if can_atomic_load_p is - false. - -2017-02-06 Segher Boessenkool - - PR rtl-optimization/68664 - * target.def (can_speculate_insn): New hook. - * doc/tm.texi.in (TARGET_SCHED_CAN_SPECULATE_INSN): New hook. - * doc/tm.texi: Regenerate. - * sched-rgn.c (can_schedule_ready_p): Use the new hook. - * config/rs6000/rs6000.c (TARGET_SCHED_CAN_SPECULATE_INSN): New macro. - (rs6000_sched_can_speculate_insn): New function. - -2017-02-06 Jakub Jelinek - - PR tree-optimization/79284 - * tree-vectorizer.h (VECT_SCALAR_BOOLEAN_TYPE_P): Define. - * tree-vect-stmts.c (vect_get_vec_def_for_operand, - vectorizable_mask_load_store, vectorizable_operation, - vect_is_simple_cond, get_same_sized_vectype): Use it instead - of comparing TREE_CODE of a type against BOOLEAN_TYPE. - * tree-vect-patterns.c (check_bool_pattern, search_type_for_mask_1, - vect_recog_bool_pattern, vect_recog_mask_conversion_pattern): Likewise. - * tree-vect-slp.c (vect_get_constant_vectors): Likewise. - * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise. - Remove redundant gimple_code (stmt) == GIMPLE_ASSIGN test after - is_gimple_assign (stmt). Replace another such test with - is_gimple_assign (stmt). - -2017-02-06 Georg-Johann Lay - - PR target/78883 - * config/avr/avr.c (rtl-iter.h): Include it. - (TARGET_LEGITIMATE_COMBINED_INSN): New hook define... - (avr_legitimate_combined_insn): ...and implementation. - -2017-02-06 Dominik Vogt - - * config/s390/predicates.md ("larl_operand"): Use macros from hwint.h. - * config/s390/s390.c (s390_const_operand_ok) - (s390_canonicalize_comparison, s390_extract_part) - (s390_single_part, s390_contiguous_bitmask_nowrap_p) - (s390_contiguous_bitmask_p, s390_rtx_costs) - (legitimize_pic_address): Likewise. - * config/s390/s390.md ("clzdi2", "clztidi2"): Likewise. - * config/s390/vx-builtins.md ("vec_genbytemaskv16qi") - ("vec_permi", "vfae", "*vfaes", "vstrc") - ("*vstrcs"): Use UINTVAL() to set unsigned HOST_WIDE_INT. - * config/s390/vector.md ("vec_vfenes"): Likewise. - -2017-02-06 Georg-Johann Lay - - * config/avr/avr.md (*addhi3_zero_extend): Add alternative where - REGNO($0) == REGNO($1). - -2017-02-06 Andreas Krebbel - - * config/s390/linux.h(SIZE_TYPE): Add comment. - -2017-02-06 Julian Brown - Naveen H.S - Virendra Pathak - - * config/aarch64/aarch64-cores.def: Change the scheduler - to Thunderx2t99. - * config/aarch64/aarch64.md: Include thunderx2t99.md. - * config/aarch64/thunderx2t99.md: New file. - -2017-02-05 Gerald Pfeifer - - * doc/standards.texi (Go Language): Update link to language - standard. - -2017-02-05 Jan Hubicka - - * tree-eh.c (lower_resx): Sanitize profile. - (cleanup_empty_eh_move_lp): Likewise. - -2017-02-05 Jan Hubicka - - PR tree-ssa/79347 - * cfgloopmanip.c (lv_adjust_loop_entry_edge, loop_version): Add - ELSE_PROB. - * cfgloopmanip.h (loop_version): Update prototype. - * modulo-sched.c (sms_schedule): Update call of loop_version. - * tree-if-conv.c(version_loop_for_if_conversion): Likewise. - * tree-parloops.c (gen_parallel_loop): Likewise. - * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Likewise. - * tree-ssa-loop-split.c (split_loop): Likewise. - * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Likewise. - * tree-vect-loop-manip.c (vect_loop_versioning): Likewise. - -2017-02-05 Martin Liska - - PR bootstrap/78985 - * config/s390/s390.c (s390_gimplify_va_arg): Initialize local - variable to NULL. - (print_operand_address): Initialize a struct to zero. - -2017-02-05 Gerald Pfeifer - - * doc/contrib.texi (Contributors): Refer to Hans Boehm's - garbage collector only in textual form. - -2017-02-05 Gerald Pfeifer - - * doc/extend.texi (x86 specific memory model extensions for - transactional memory): Simplify a phrase. - -2017-02-05 Eric Botcazou - - PR target/79353 - * config/sparc/sync.md (atomic_loaddi_1): Replace 'U' constraint with - 'r', 'm' constraint with 'T' and !TARGET_ARCH64 with TARGET_ARCH32. - (atomic_storedi_1): Likewise. - -2017-02-04 Jakub Jelinek - - PR tree-optimization/79338 - * tree-parloops.c (gather_scalar_reductions): Don't call - vect_analyze_loop_form for loop->inner before destroying loop's - loop_vinfo. - -2017-02-03 Martin Sebor - - PR tree-optimization/79327 - * gimple-ssa-sprintf.c (tree_digits): Avoid adding the base prefix - when precision has resulted in leading zeros. - (format_integer): Adjust the likely counter to assume an unknown - argument that may be zero is non-zero. - -2017-02-03 Jason Merrill - - PR c++/78689 - * tree-inline.c (copy_tree_body_r) [COND_EXPR]: Revert change to - avoid copying non-taken branch. - -2017-02-03 Jakub Jelinek - - PR tree-optimization/79340 - * tree-vect-loop.c (vectorizable_reduction): Release - vec_defs elements after safe_splicing them into other vectors. - Formatting fixes. - - PR tree-optimization/79327 - * gimple-ssa-sprintf.c (adjust_range_for_overflow): If returning - true, always set *argmin and *argmax to TYPE_{MIN,MAX}_VALUE of - dirtype. - (format_integer): Use wide_int_to_tree instead of build_int_cst - + to_?hwi. If argmin is NULL, just set argmin and argmax to - TYPE_{MIN,MAX}_VALUE of argtype. Simplify and fix computation - of shortest and longest sequence. - -2017-02-03 Uros Bizjak - - * config/i386/i386.c (dimode_scalar_chain::convert_reg): - Use pextrd for TARGET_SSE4_1 when creating scalar copy. - -2017-02-03 Walter Lee - - PR target/78862 - * config/tilegx/tilegx.md (tilegx_expand_prologue): Add blockage - after initial stackframe link reg save. - * config/tilepro/tilepro.md (tilepro_expand_prologue): Likewise. - -2017-02-03 Jakub Jelinek - - PR target/79354 - * config/rs6000/rs6000.md (movsi_from_sf): Use wb constraint instead of - wu for stxssp alternative. - -2017-02-03 Martin Sebor - - PR tree-optimization/79352 - * gimple-fold.c (get_range_strlen): Add argument. - (get_range_strlen): Change return type to bool. - (get_maxval_strlen): Pass in a dummy argument. - * gimple-fold.h (get_range_strlen): Change return type to bool. - * gimple-ssa-sprintf.c (get_string_length): Set unlikely counter. - * tree.h (array_at_struct_end_p): Add argument. - * tree.c (array_at_struct_end_p): Handle it. - -2017-02-03 Martin Liska - - PR lto/66295 - * multiple_target.c (create_dispatcher_calls): Redirect edge - from a caller of a dispatcher. - (expand_target_clones): Make the clones local. - (ipa_target_clone): Do both target clones and resolvers. - (ipa_dispatcher_calls): Remove the pass. - (pass_dispatcher_calls::gate): Likewise. - (make_pass_dispatcher_calls): Likewise. - * passes.def (pass_target_clone): Put as very first IPA early - pass. - -2017-02-03 Martin Liska - - * symtab.c (symtab_node::binds_to_current_def_p): Bail out - in case of a function with ifunc attribute. - -2017-02-03 Martin Liska - - * cgraph.c (cgraph_node::dump): Dump function version info. - * symtab.c (symtab_node::dump_base): Add missing new line. - -2017-02-02 Jan Hubicka - - * tree-ssa-ifcombine.c (update_profile_after_ifcombine): New function. - (ifcombine_ifandif): Use it. - -2017-02-03 Martin Liska - - * doc/invoke.texi: Document default value for - use-after-scope-direct-emission-threshold. - -2017-02-03 Martin Liska - - PR tree-optimization/79339 - * gimple-ssa-sprintf.c (format_floating_max): Call mpfr_clear. - (format_floating): Likewise. - -2017-02-03 Martin Liska - - PR ipa/79337 - * ipa-prop.c (ipa_node_params_t::insert): Remove current - implementation. - (ipa_node_params_t::remove): Likewise. - * ipa-prop.h (ipa_node_params::ipa_node_params): Make default - initialization from removed ipa_node_params_t::insert. - (ipa_node_params::~ipa_node_params): Move from removed - ipa_node_params_t::release. - * symbol-summary.h (symbol_summary::m_released): New member. - Do not release a summary twice. Do not allow to call finalizer - for types of a summary that live in GGC memory. - -2017-02-02 Naveen H.S - - * config/aarch64/aarch64.c (thunderx2t99_tunings): Enable AES and - cmp_branch fusion. - -2017-02-02 Martin Sebor - - PR middle-end/79275 - * gimple-ssa-sprintf.c (get_string_length): Set lower bound to zero. - (format_string): Tighten up the range of output for non-constant - strings and correct the expected range for wide non-constant strings. - -2017-02-02 Martin Sebor - - * doc/invoke.texi (-maccumulate-args): Fix bad grammar. - - PR middle-end/32003 - * doc/invoke.texi (-fdump-tree-): Remove pass-specific options from - index. - (-fdump-tree-@var): Add to index and document how to come up - with pass-specific option and dump file names. - (-fdump-passes): Clarify where to look for output. - -2017-02-02 Jan Hubicka - - PR middle-end/77445 - * tree-ssa-threadbackward.c (profitable_jump_thread_path): Dump - statistics of the analyzed path; allow threading for speed when - any of BBs along the path are optimized for speed. - -2017-02-02 Eric Botcazou - - PR middle-end/78468 - * emit-rtl.c (init_emit): Add ??? comment for problematic alignment - settings of the virtual registers. - - Revert again - 2016-08-23 Dominik Vogt - - * explow.c (get_dynamic_stack_size): Take known alignment of stack - pointer + STACK_DYNAMIC_OFFSET into account when calculating the size - needed. - -2017-02-02 Andreas Krebbel - - * config/s390/vx-builtins.md ("vec_ceil", "vec_floor") - ("vec_trunc", "vec_roundc", "vec_round"): Remove expanders. - -2017-02-02 Andreas Krebbel - - * config/s390/s390.md: Add missing comments with the expanded - mnemonics. - * config/s390/vector.md: Likewise. - * config/s390/vx-builtins.md: Likewise. - -2017-02-02 Jakub Jelinek - - PR target/79197 - * config/rs6000/rs6000.md (*fixuns_truncdi2_fctiduz): Rename to ... - (fixuns_truncdi2): ... this, remove previous expander. Put all - conditions on a single line. - -2017-02-02 Andreas Krebbel - - * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename - __S390_VX__ to __VX__. - -2017-02-01 Andrew Pinski - - * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Pass - stmt_info to record_stmt_cost. - (vect_get_known_peeling_cost): Pass stmt_info if known to - record_stmt_cost. - * config/aarch64/aarch64-protos.h (cpu_vector_cost): Split - cpu_vector_cost field into - scalar_int_stmt_cost and scalar_fp_stmt_cost. Split vec_stmt_cost - field into vec_int_stmt_cost and vec_fp_stmt_cost. - * config/aarch64/aarch64.c (generic_vector_cost): Update for the - splitting of scalar_stmt_cost and vec_stmt_cost. - (thunderx_vector_cost): Likewise. - (cortexa57_vector_cost): LIkewise. - (exynosm1_vector_cost): Likewise. - (xgene1_vector_cost): Likewise. - (thunderx2t99_vector_cost): Improve after the splitting of the two - fields. - (aarch64_builtin_vectorization_cost): Update for the splitting of - scalar_stmt_cost and vec_stmt_cost. - -2017-02-01 Torvald Riegel - Richard Henderson - - * builtins.c (fold_builtin_atomic_always_lock_free): Make "lock-free" - conditional on existance of a fast atomic load. - * optabs-query.c (can_atomic_load_p): New function. - * optabs-query.h (can_atomic_load_p): Declare it. - * optabs.c (expand_atomic_exchange): Always delegate to libatomic if - no fast atomic load is available for the particular size of access. - (expand_atomic_compare_and_swap): Likewise. - (expand_atomic_load): Likewise. - (expand_atomic_store): Likewise. - (expand_atomic_fetch_op): Likewise. - * testsuite/lib/target-supports.exp - (check_effective_target_sync_int_128): Remove x86 because it provides - no fast atomic load. - (check_effective_target_sync_int_128_runtime): Likewise. - -2017-02-01 Richard Biener - - * graphite.c: Include tree-vectorizer.h for find_loop_location. - (graphite_transform_loops): Provide opt-info for optimized nests. - * tree-parloop.c (parallelize_loops): Provide opt-info for - parallelized loops. - -2017-02-01 Richard Biener - - PR middle-end/79315 - * tree-cfg.c (move_stmt_op): Never set TREE_BLOCK when it - was not set before. - -2017-02-01 Richard Biener - - PR tree-optimization/71824 - * graphite-scop-detection.c (scop_detection::build_scop_breadth): - Verify the loops are valid in the merged SESE region. - (scop_detection::can_represent_loop_1): Check analyzing the - evolution of the number of iterations in the region succeeds. - -2017-01-31 Ian Lance Taylor - - * config/i386/i386.c (ix86_expand_split_stack_prologue): Add - REG_ARGS_SIZE note to 32-bit push insns and call insn. - -2017-01-31 David Malcolm - - PR preprocessor/79210 - * input.c (get_substring_ranges_for_loc): Replace line_width - assertion with error-handling. - -2017-01-31 Richard Biener - - PR tree-optimization/77318 - * graphite-sese-to-poly.c (extract_affine): Fix assert. - (create_pw_aff_from_tree): Take loop parameter. - (add_condition_to_pbb): Pass loop of the condition to - create_pw_aff_from_tree. - -2017-01-31 Jakub Jelinek - - * config/s390/s390.c (s390_asan_shadow_offset): New function. - (TARGET_ASAN_SHADOW_OFFSET): Redefine. - -2017-01-31 Michael Meissner - - PR target/78597 - PR target/79038 - * config/rs6000/rs6000-protos.h (convert_float128_to_int): Delete, - no longer used. - (convert_int_to_float128): Likewise. - * config/rs6000/rs6000.c (convert_float128_to_int): Likewise. - (convert_int_to_float128): Likewise. - * config/rs6000/rs6000.md (UNSPEC_IEEE128_MOVE): Likewise. - (UNSPEC_IEEE128_CONVERT): Likewise. - (floatsi2, FLOAT128 iterator): Bypass calling - rs6000_expand_float128_convert if we have IEEE 128-bit hardware. - Use local variables for IBM extended format. - (fix_truncsi2, FLOAT128 iterator): Likewise. - (fix_truncsi2_fprs): Likewise. - (fixuns_trunc2): Likewise. - (floatuns2, IEEE128 iterator): Likewise. - (fix_si2_hw): Rework the IEEE 128-bt hardware support - to know that we can now have integers of all sizes in vector - registers. - (fix_di2_hw): Likewise. - (float_si2_hw): Likewise. - (fix_si2_hw): Likewise. - (fixuns_si2_hw): Likewise. - (float_di2_hw): Likewise. - (float_di2_hw): Likewise. - (float_si2_hw): Likewise. - (floatuns_di2_hw): Likewise. - (floatuns_si2_hw): Likewise. - (xscvqpwz_): Delete, no longer used. - (xscvqpdz_): Likewise. - (xscvdqp_): Likewise. - (ieee128_mfvsrd_64bit): Likewise. - (ieee128_mfvsrd_32bit): Likewise. - (ieee128_mfvsrwz): Likewise. - (ieee128_mtvsrw): Likewise. - (ieee128_mtvsrd_64bit): Likewise. - (ieee128_mtvsrd_32bit): Likewise. - -2017-01-31 Martin Liska - - PR ipa/79285 - * ipa-prop.c (ipa_free_all_node_params): Call release method - instead of ~sumbol_summary to not to trigger double times - dtor of hash_map. - -2017-01-31 Aldy Hernandez - - PR tree-optimization/71691 - * bitmap.h (class auto_bitmap): New. - * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Call - is_maybe_undefined instead of ssa_undefined_value_p. - -2017-01-31 Andreas Krebbel - - * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename - __S390_ARCH_LEVEL__ to __ARCH__. - -2017-01-31 Jakub Jelinek - - PR tree-optimization/79267 - * value-prof.c (gimple_ic): Only drop lhs for noreturn calls - if should_remove_lhs_p is true. - -2017-01-30 Alexandre Oliva - - PR debug/63238 - * dwarf2out.c (clone_as_declaration): Drop DW_AT_alignment. - (add_alignment_attribute): New. - (base_type_die): Add alignment attribute. - (subrange_type_die): Likewise. - (modified_type_die): Likewise. - (gen_array_type_die): Likewise. - (gen_descr_array_type_die: Likewise. - (gen_enumeration_type_die): Likewise. - (gen_subprogram_die): Likewise. - (gen_variable_die): Likewise. - (gen_field_die): Likewise. - (gen_ptr_to_mbr_type_die): Likewise. - (gen_struct_or_union_type_die): Likewise. - (gen_subroutine_type_die): Likewise. - (gen_typedef_die): Likewise. - (base_type_cmp): Compare alignment attribute. - -2017-01-30 Aaron Sawdey - - PR target/79170 - * config/rs6000/altivec.md (*setb_internal): Rename to setb_signed. - (setb_unsigned) New pattern for setb with CCUNS. - * config/rs6000/rs6000.c (expand_block_compare): Use a different - subfc./subfe sequence to avoid overflow problems. Generate a - shorter sequence with cmpld/setb for power9. - * config/rs6000/rs6000.md (subf3_carry_dot2): Add a new pattern - for generating subfc. instruction. - (cmpstrsi): Add TARGET_POPCNTD predicate as the generate sequence - now uses this instruction. - -2017-01-30 Ian Lance Taylor - - PR debug/79289 - * dwarf2out.c (gen_type_die_with_usage): When picking a variant - for FUNCTION_TYPE/METHOD_TYPE, use the first matching one. - -2017-01-30 Martin Sebor - - * gimple-ssa-sprintf.c (fmtresult::adjust_for_width_or_precision): - Move constant to the right of a relational operator. - (get_mpfr_format_length, format_character, format_string): Ditto. - (should_warn_p, maybe_warn): Same. - - * doc/invoke.texi (-Wformat-truncation=1): Fix typo. - -2017-01-30 Maxim Ostapenko - - PR lto/79061 - * asan.c (get_translation_unit_decl): Remove function. - (asan_add_global): Force has_dynamic_init to zero in LTO mode. - -2017-01-30 Martin Liska - - PR gcov-profile/79259 - * opts.c (common_handle_option): Enable flag_ipa_bit_cp w/ - -fprofile-generate. - -2017-01-30 Martin Liska - - PR bootstrap/78985 - * config/aarch64/cortex-a57-fma-steering.c (func_fma_steering::analyze): - Initialize variables with NULL value. - -2017-01-30 Richard Earnshaw - - PR target/79260 - * config.gcc (arm*-*-*): Add arm/arm-flags.h and arm/arm-isa.h to - tm_p_file. - * arm/arm-protos.h: Don't directly include arm-flags.h and arm-isa.h. - -2017-01-30 Richard Biener - - PR tree-optimization/79276 - * tree-vrp.c (process_assert_insertions): Properly adjust common - when removing a duplicate. - -2017-01-30 Richard Biener - - PR tree-optimization/79256 - * targhooks.c (default_builtin_vector_alignment_reachable): Honor - BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus - alignment on TYPE. - * tree.c (build_aligned_type): Set TYPE_USER_ALIGN. - -2017-01-30 Dominik Vogt - - PR target/79240 - * config/s390/s390.md ("*rsbg__srl_bitmask") - ("*rsbg__sll_bitmask") - ("*extzv__srl") - ("*extzv__sll"): - Use contiguous_bitmask_nowrap_operand. - -2017-01-29 Bill Schmidt - - PR target/79268 - * config/rs6000/altivec.h (vec_xl): Revise #define. - (vec_xst): Likewise. - -2017-01-27 Uros Bizjak - - * config/i386/i386.c (print_reg): Use REGNO instead of true_regnum. - -2017-01-27 Bernd Schmidt - - PR rtl-optimization/79194 - * cprop.c (one_cprop_pass): Move deletion of code after unconditional - traps before call to bypass_conditional_jumps. - -2017-01-27 Vladimir Makarov - - PR tree-optimization/71374 - * lra-constraints.c (check_conflict_input_operands): New. - (match_reload): Use it. - -2017-01-27 Vladimir Makarov - - PR target/79131 - * lra-assigns.c (find_hard_regno_for_1): Take endianess for into - account to calculate conflict_set. - -2017-01-27 Bin Cheng - - PR rtl-optimization/78559 - * combine.c (try_combine): Discard REG_EQUAL and REG_EQUIV for - other_insn in combine. - -2017-01-27 Pekka Jääskeläinen - - * builtin-types.def: Use unsigned_char_type_node for BT_UINT8. Use - uint16_type_node for BT_UINT16. - -2017-01-27 David Malcolm - - * doc/sourcebuild.texi (Testsuites): Add "GIMPLE Tests" and - "RTL Tests" to menu. - (GIMPLE Tests): New node. - (RTL Tests): New node. - -2017-01-27 Richard Biener - - PR tree-optimization/79245 - * tree-loop-distribution.c (distribute_loop): Apply cost - modeling also to detected patterns. - -2017-01-27 Richard Biener - - PR tree-optimization/71433 - * tree-vrp.c (register_new_assert_for): Revert earlier changes. - (compare_assert_loc): New function. - (process_assert_insertions): Sort and optimize assert locations - to remove duplicates and push down identical assertions on - edges to their destination block. - -2017-01-27 Richard Biener - - PR tree-optimization/79244 - * tree-vrp.c (remove_range_assertions): Forcefully propagate - out SSA names even if abnormal. - -2017-01-27 Jakub Jelinek - - * realmpfr.h: Poison MPFR_RND{N,Z,U,D}. - * gimple-ssa-sprintf.c (format_floating_max): Use GMP_RNDN - instead of MPFR_RNDN. - -2017-01-27 Richard Earnshaw - - PR target/79239 - * arm.c (arm_option_override): Don't call build_target_option_node - until after doing all option overrides. - (arm_valid_target_attribute_tree): Likewise. - -2017-01-27 Martin Liska - - * doc/invoke.texi (-fprofile-arcs): Document profiling support - for {cd}tors and C++ {cd}tors. - -2017-01-27 Dominik Vogt - - * config/s390/s390.md ("*setmem_long_and") - ("*setmem_long_and_31z"): Use zero_extend instead of and. - -2017-01-26 Martin Sebor - - * gimple-ssa-sprintf.c (format_floating): Simplify the computation - of precision. - -2017-01-26 Martin Sebor - - * gimple-ssa-sprintf.c (format_floating): Test HAVE_XFmode and - HAVE_DFmode before using XFmode or DFmode. - (parse_directive): Avoid using the z length modifier to avoid - the ISO C++98 does not support the ‘z’ gnu_printf length modifier. - - PR middle-end/78703 - * gimple-ssa-sprintf.c (adjust_for_width_or_precision): Change - to accept adjustment as an array. - (get_int_range): New function. - (struct directive): Make width and prec arrays. - (directive::set_width, directive::set_precision): Call get_int_range. - (format_integer, format_floating): Handle width and precision ranges. - (format_string, parse_directive): Same. - -2017-01-26 Jakub Jelinek - - PR debug/79129 - * dwarf2out.c (generate_skeleton_bottom_up): For children with - comdat_type_p set, just clone them, but keep the children in the - original DIE. - - PR debug/78835 - * dwarf2out.c (prune_unused_types): Mark all functions with DIEs - which have direct callers with -fvar-tracking-assignments enabled - in the current TU. - (resolve_addr): Avoid adding skeleton DIEs for DW_AT_call_origin - inside of type units. - -2017-01-26 Martin Sebor - - PR middle-end/78703 - * gimple-ssa-sprintf.c (struct result_range): Add likely and - unlikely counters. - (struct format_result): Replace number_chars, number_chars_min, - and number_chars_max with a single member of struct result_range. - Remove bounded. - (format_result::operator+=): Adjust. - (struct fmtresult): Remove bounded. Handle likely and unlikely - counters. - (fmtresult::adjust_for_width_or_precision): New function. - (fmtresult:type_max_digits): New function. - (bytes_remaining): Handle likely and unlikely counters. - (min_bytes_remaining): Remove. - (format_percent): Simplify. - (format_integer, format_floating): Set likely and unlikely counters. - (get_string_length, format_character, format_string): Same. - (format_plain, should_warn_p): New function. - (maybe_warn): Call should_warn_p. Update diagnostic messages - and handle those for all directives, including plain strings. - (format_directive): Handle likely and unlikely counters. - Remove unnecessary quoting from diagnostics. Add an informational - note. - (add_bytes): Remove. - (pass_sprintf_length::compute_format_length): Simplify. - (try_substitute_return_value): Handle likely and unlikely counters. - -2017-01-26 Carl Love - - * config/rs6000/rs6000-c (altivec_overloaded_builtins): Remove - bogus entries for the P8V_BUILTIN_VEC_VGBBD built-ins - -2017-01-26 Vladimir Makarov - - PR target/79131 - * lra-assigns.c (setup_live_pseudos_and_spill_after_risky): Take - endianess for subregs into account. - * lra-constraints.c (lra_constraints): Do risky transformations - always on the first iteration. - * lra-lives.c (check_pseudos_live_through_calls): Add arg - last_call_used_reg_set. - (process_bb_lives): Define and use last_call_used_reg_set. - * lra.c (lra): Always continue after lra_constraints on the first - iteration. - -2017-01-26 Kirill Yukhin - - * gcc.target/i386/avx512bw-kshiftlq-2.c: Use unsigned long long - constant. - * gcc.target/i386/avx512bw-kshiftrq-2.c: Ditto. - -2017-01-26 Jakub Jelinek - - * config/i386/avx512fintrin.h (_ktest_mask16_u8, - _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): Move to ... - * config/i386/avx512dqintrin.h (_ktest_mask16_u8, - _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): ... here. - * config/i386/i386-builtin.def (__builtin_ia32_ktestchi, - __builtin_ia32_ktestzhi, __builtin_ia32_kaddhi): Use - OPTION_MASK_ISA_AVX512DQ instead of OPTION_MASK_ISA_AVX512F. - * config/i386/sse.md (SWI1248_AVX512BWDQ2): New mode iterator. - (kadd, ktest): Use it instead of SWI1248_AVX512BWDQ. - -2017-01-26 Marek Polacek - - PR c/79199 - * fold-const.c (operand_equal_p) [COND_EXPR]: Use OP_SAME_WITH_NULL - for the third operand. - -2017-01-26 Jakub Jelinek - - PR middle-end/79236 - * omp-low.c (struct omp_context): Add simt_stmt field. - (scan_omp_for): Return omp_context *. - (scan_omp_simd): Set simt_stmt on the non-_simt_ SIMD - context to the _simt_ SIMD stmt. - (lower_omp_for): For combined SIMD with sibling _simt_ - SIMD, make sure to use the same decls in _looptemp_ - clauses as in the sibling. - -2017-01-26 David Sherwood - - PR middle-end/79212 - * gimplify.c (omp_notice_variable): Add GOVD_SEEN flag to variables in - all contexts. - -2017-01-26 Jakub Jelinek - - PR target/70465 - * reg-stack.c (emit_swap_insn): Instead of fld a; fld b; fxchg %st(1); - emit fld b; fld a; if possible. - - * brig-builtins.def: Update copyright years. - * config/arm/arm_acle_builtins.def: Update copyright years. - -2017-01-25 Michael Meissner - - PR target/79179 - * config/rs6000/vsx.md (vsx_extract__store): Use wY - constraint instead of o for the stxsd instruction. - -2017-01-25 Carl Love - - * config/rs6000/rs6000-c (altivec_overloaded_builtins): Fix order - of entries for ALTIVEC_BUILTIN_VEC_PACKS and P8V_BUILTIN_VEC_VGBBD. - -2017-01-25 Jonathan Wakely - - * doc/invoke.texi (C++ Dialect Options): Fix typo. - -2017-01-25 Richard Biener - - PR tree-optimization/69264 - * target.def (vector_alignment_reachable): Improve documentation. - * doc/tm.texi: Regenerate. - * targhooks.c (default_builtin_vector_alignment_reachable): Simplify - and add a comment. - * tree-vect-data-refs.c (vect_supportable_dr_alignment): Revert - earlier changes with respect to TYPE_USER_ALIGN. - (vector_alignment_reachable_p): Likewise. Improve dumping. - -2016-01-25 Kyrylo Tkachov - - PR target/79145 - * config/arm/arm.md (xordi3): Force constant operand into a register - for TARGET_IWMMXT. - -2016-01-25 Kyrylo Tkachov - - * doc/invoke.texi (-fstore-merging): Correct default optimization - levels at which it is enabled. - (-O): Move -fstore-merging from list to... - (-O2): ... Here. - -2017-01-25 Richard Biener - - PR debug/78363 - * omp-expand.c: Include debug.h. - (expand_omp_taskreg): Make sure to generate early debug before - outlining anything from a function. - (expand_omp_target): Likewise. - (grid_expand_target_grid_body): Likewise. - -2017-01-25 Maxim Ostapenko - - PR lto/79061 - * asan.c (get_translation_unit_decl): New function. - (asan_add_global): Extract modules file name from globals - TRANSLATION_UNIT_DECL name. - -2017-01-24 Eric Botcazou - - PR target/77439 - * config/arm/arm.c (arm_function_ok_for_sibcall): Add back restriction - for long calls with APCS frame and VFP. - -2017-01-24 David Malcolm - - * cfg.c (original_copy_tables_initialized_p): New function. - * cfg.h (original_copy_tables_initialized_p): New decl. - * cfgrtl.c (relink_block_chain): Guard the call to - free_original_copy_tables with a call to - original_copy_tables_initialized_p. - * cgraph.h (symtab_node::native_rtl_p): New decl. - * cgraphunit.c (symtab_node::native_rtl_p): New function. - (symtab_node::needed_p): Don't assert for early assembly output - for __RTL functions. - (cgraph_node::finalize_function): Set "force_output" for __RTL - functions. - (cgraph_node::analyze): Bail out early for __RTL functions. - (analyze_functions): Update assertion to support __RTL functions. - (cgraph_node::expand): Bail out early for __RTL functions. - * final.c (rest_of_clean_state): Don't call delete_tree_ssa for - __RTL functions. - * function.h (struct function): Update comment for field - "pass_startwith". - * gimple-expr.c: Include "tree-pass.h". - (gimple_has_body_p): Return false for __RTL functions. - * Makefile.in (OBJS): Add run-rtl-passes.o. - * pass_manager.h (gcc::pass_manager::get_rest_of_compilation): New - accessor. - (gcc::pass_manager::get_clean_slate): New accessor. - * passes.c: Include "insn-addr.h". - (should_skip_pass_p): Add logging. Update logic for running - "expand" to be compatible with both __GIMPLE and __RTL. Guard - property-provider override so it is only done for gimple passes. - Don't skip dfinit. - (skip_pass): New function. - (execute_one_pass): Call skip_pass when skipping passes. - * read-md.c (md_reader::read_char): Support filtering - the input to a subset of line numbers. - (md_reader::md_reader): Initialize fields - m_first_line and m_last_line. - (md_reader::read_file_fragment): New function. - * read-md.h (md_reader::read_file_fragment): New decl. - (md_reader::m_first_line): New field. - (md_reader::m_last_line): New field. - * read-rtl-function.c (function_reader::create_function): Only - create cfun if it doesn't already exist. Set PROP_rtl on cfun's - curr_properties. Set DECL_INITIAL to a dummy block. - (read_rtl_function_body_from_file_range): New function. - * read-rtl-function.h (read_rtl_function_body_from_file_range): - New decl. - * run-rtl-passes.c: New file. - * run-rtl-passes.h: New file. - -2017-01-24 Jeff Law - - * config/microblaze/microblaze.h (ASM_FORMAT_PRIVATE_NAME): Increase - buffer size. - -2017-01-24 Bin Cheng - - PR tree-optimization/79159 - * tree-ssa-loop-niter.c (get_cst_init_from_scev): New function. - (record_nonwrapping_iv): Improve boundary using above function if no - value range information. - -2017-01-24 Pekka Jääskeläinen - Martin Jambor - - * brig-builtins.def: New file. - * builtins.def (DEF_HSAIL_BUILTIN): New macro. - (DEF_HSAIL_ATOMIC_BUILTIN): Likewise. - (DEF_HSAIL_SAT_BUILTIN): Likewise. - (DEF_HSAIL_INTR_BUILTIN): Likewise. - (DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN): Likewise. - * builtin-types.def (BT_INT8): New. - (BT_INT16): Likewise. - (BT_UINT8): Likewise. - (BT_UINT16): Likewise. - (BT_FN_ULONG): Likewise. - (BT_FN_UINT_INT): Likewise. - (BT_FN_UINT_ULONG): Likewise. - (BT_FN_UINT_LONG): Likewise. - (BT_FN_UINT_PTR): Likewise. - (BT_FN_ULONG_PTR): Likewise. - (BT_FN_INT8_FLOAT): Likewise. - (BT_FN_INT16_FLOAT): Likewise. - (BT_FN_UINT32_FLOAT): Likewise. - (BT_FN_UINT16_FLOAT): Likewise. - (BT_FN_UINT8_FLOAT): Likewise. - (BT_FN_UINT64_FLOAT): Likewise. - (BT_FN_UINT16_UINT32): Likewise. - (BT_FN_UINT32_UINT16): Likewise. - (BT_FN_UINT16_UINT16_UINT16): Likewise. - (BT_FN_INT_PTR_INT): Likewise. - (BT_FN_UINT_PTR_UINT): Likewise. - (BT_FN_LONG_PTR_LONG): Likewise. - (BT_FN_ULONG_PTR_ULONG): Likewise. - (BT_FN_VOID_UINT64_UINT64): Likewise. - (BT_FN_UINT8_UINT8_UINT8): Likewise. - (BT_FN_INT8_INT8_INT8): Likewise. - (BT_FN_INT16_INT16_INT16): Likewise. - (BT_FN_INT_INT_INT): Likewise. - (BT_FN_UINT_FLOAT_UINT): Likewise. - (BT_FN_FLOAT_UINT_UINT): Likewise. - (BT_FN_ULONG_UINT_UINT): Likewise. - (BT_FN_ULONG_UINT_PTR): Likewise. - (BT_FN_ULONG_ULONG_ULONG): Likewise. - (BT_FN_UINT_UINT_UINT): Likewise. - (BT_FN_VOID_UINT_PTR): Likewise. - (BT_FN_UINT_UINT_PTR: Likewise. - (BT_FN_UINT32_UINT64_PTR): Likewise. - (BT_FN_INT_INT_UINT_UINT): Likewise. - (BT_FN_UINT_UINT_UINT_UINT): Likewise. - (BT_FN_UINT_UINT_UINT_PTR): Likewise. - (BT_FN_UINT_ULONG_ULONG_UINT): Likewise. - (BT_FN_ULONG_ULONG_ULONG_ULONG): Likewise. - (BT_FN_LONG_LONG_UINT_UINT): Likewise. - (BT_FN_ULONG_ULONG_UINT_UINT): Likewise. - (BT_FN_VOID_UINT32_UINT64_PTR): Likewise. - (BT_FN_VOID_UINT32_UINT32_PTR): Likewise. - (BT_FN_UINT_UINT_UINT_UINT_UINT): Likewise. - (BT_FN_UINT_FLOAT_FLOAT_FLOAT_FLOAT): Likewise. - (BT_FN_ULONG_ULONG_ULONG_UINT_UINT): Likewise. - * doc/frontends.texi: List BRIG FE. - * doc/install.texi (Testing): Add BRIG tesring requirements. - * doc/invoke.texi (Overall Options): Mention BRIG. - * doc/standards.texi (Standards): Doucment BRIG HSA version. - -2017-01-24 Richard Biener - - PR translation/79208 - * ipa-devirt.c (odr_types_equivalent_p): Fix typo in diagnostic. - -2017-01-24 Martin Jambor - - PR bootstrap/79198 - * ipa-prop.c (ipa_free_all_node_params): Call summary destructor. - * ipa-prop.c (ipa_node_params_t::insert): Initialize fields known_csts - and known_contexts. - -2017-01-24 Aldy Hernandez - - PR middle-end/79123 - * gimple-ssa-warn-alloca.c (alloca_call_type): Make sure - casts from signed to unsigned really don't have a range. - -2017-01-24 Markus Trippelsdorf - - * gimple-ssa-sprintf.c (format_floating): Change MPFR_RNDx to - GMP_RNDx for compatiblity. - -2017-01-24 Martin Liska - - PR bootstrap/79132 - * tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Insert assert - that would prevent us to call alloca with -1 as argument. - -2017-01-24 Jakub Jelinek - - * dwarf2out.c (output_compilation_unit_header, output_file_names): - Avoid -Wformat-security warning. - -2017-01-23 Andrew Pinski - - * config/aarch64/aarch64.c (thunderx2t99_addrcost_table): Improve - cost table. - -2017-01-23 Martin Sebor - - PR middle-end/78703 - * gimple-ssa-sprintf.c (warn_level): New global. - (format_integer): Use it here and throughout the rest of the file. - Use the same switch to compute sign as base. - (maybe_warn): New function. - (format_directive): Factor out warnings into maybe_warn. - Add debugging output. Use warn_level. - (add_bytes): Use warn_level. - (pass_sprintf_length::compute_format_length): Add debugging output. - (try_substitute_return_value): Same. - (pass_sprintf_length::handle_gimple_call): Set and use warn_level. - - PR middle-end/78703 - * gimple-ssa-sprintf.c (struct format_result): Remove constant member. - (struct fmtresult, format_integer, format_floating): Adjust. - (fmtresult::fmtresult): Set max correctly in two argument ctor. - (get_string_length, format_string,format_directive): Same. - (pass_sprintf_length::compute_format_length): Same. - (try_substitute_return_value): Simplify slightly. - - PR middle-end/78703 - * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust formatting. - (fmtresult::operator+=): Outlined. - (struct fmtresult): Add ctors. - (struct conversion_spec): Rename... - (struct directive): ...to this. Add and remove data members. - (directive::set_width, directive::set_precision): New functions. - (format_percent): Use fmtresult ctor. - (get_width_and_precision): Remove. - (format_integer): Make naming changes. Avoid computing width and - precision. - (format_floating): Same. Adjust indentation. - (format_character, format_none): New functions. - (format_string): Moved character handling to format_character. - (format_directive): Remove arguments, change return type. - (parse_directive): New function. - (pass_sprintf_length::compute_format_length): Move directive - parsing to parse_directive. - -2017-01-23 Jakub Jelinek - - * tree.h (assign_assembler_name_if_neeeded): Rename to ... - (assign_assembler_name_if_needed): ... this. - * tree.c (assign_assembler_name_if_neeeded): Rename to ... - (assign_assembler_name_if_needed): ... this. - (free_lang_data_in_cgraph): Adjust callers. - * cgraphunit.c (cgraph_node::analyze): Likewise. - * omp-expand.c (expand_omp_taskreg, expand_omp_target): - Likewise. - -2017-01-23 Richard Biener - - PR tree-optimization/79088 - PR tree-optimization/79188 - * tree-ssa-threadupdate.c (mark_threaded_blocks): Move code - resetting loop bounds after last path deletion. Reset loop - bounds of the target loop, make code match the comments. - * tree-ssa-threadbackwards.c (pass_early_thread_jumps::execute): - Make sure loops need no fixups. - -2017-01-23 Kelvin Nilsen - - * config/rs6000/rs6000-builtin.def (VSIEDPF): Add scalar insert - exponent support with double type for first argument. - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Changed - type returned by __builtin_vec_extract_sig, - __builtin_vec_extract_sig_sp, and __builtin_vec_extract_sig_dp - functions from "vector int" to "vector unsigned int" or from - "vector long long int" to "vector unsigned long long int". - Changed type returned by __builtin_vec_extract_exp, - __builtin_vec_extract_exp_sp, and __builtin_vec_extract_exp_dp - functions from "vector int" to "vector unsigned int" or from - "vector long long int" to "vector unsigned long long int". - Changed return type of __builtin_vec_test_data_class, - __builtin_vec_test_data_class_sp, and - __builtin_vec_test_data_class_dp from "vector int" to - "vector bool int" or from "vector long long int" to "vector bool - long long int" and changed second argument type from "unsigned - int" to "int". Added new overloaded function forms "vector float - __builtin_vec_insert_exp (vector float, vector unsigned int)" and - "vector float __builtin_vec_insert_exp_sp (vector float, vector - unsigned int)" and "vector double __builtin_vec_insert_exp (vector - double, vector unsigned long long int)" and "vector double - __builtin_vec_insert_exp_dp (vector double, vector unsigned long - long int)". Changed return type of - __builtin_scalar_test_data_class and - __builtin_scalar_test_data_class_sp and - __builtin_scalar_test_data_class_dp from "unsigned int" to "bool - int" and changed second argument from "unsigned int" to "int". - Changed type returned by __builtin_scalar_test_neg, - __builtin_scalar_test_neg_sp, and __builtin_scalar_test_neg_dp - from "int" to "bool int". Added new overloaded function form - "double __builtin_scalar_insert_exp (double, unsigned long long int)". - * config/rs6000/vsx.md (xsiexpdpf): New insn for scalar insert - exponent double-precision with floating point first argument. - * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust - documentation of scalar_test_data_class, scalar_test_neg, - scalar_extract_sig, scalar_extract_exp, scalar_insert_exp, - vector_extract_exp, vec_extract_sig, vec_insert_exp, and - vec_test_data_class built-in functions to reflect refinements in - their type signatures. - -2017-01-23 Andreas Tobler - - * config/aarch64/aarch64.c (aarch64_elf_asm_constructor): Increase - size of buf. - (aarch64_elf_asm_destructor): Likewise. - -2017-01-23 Bernd Schmidt - - PR rtl-optimization/78634 - * config/i386/i386.c (ix86_max_noce_ifcvt_seq_cost): New function. - (TARGET_MAX_NOCE_IFCVT_SEQ_COST): Define. - * ifcvt.c (noce_try_cmove): Add missing cost check. - - PR rtl-optimization/71724 - * combine.c (if_then_else_cond): Look for situations where it is - beneficial to undo the work of one of the recursive calls. - -2017-01-23 Bin Cheng - - PR tree-optimization/70754 - * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE. - (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE. Insert - combined stmt before it if not NULL. - (combine_chains): Process refs reversely and compute dominance point - for root ref. - -2017-01-23 Martin Liska - - PR tree-optimization/79196 - * tree-ssa-strlen.c (fold_strstr_to_memcmp): Rename to ... - (fold_strstr_to_strncmp): ... this. Fold the pattern to strncmp - instead of memcmp. - (strlen_optimize_stmt): Call the renamed function. - -2017-01-23 Michael Matz - - PR tree-optimization/78384 - * tree-ssa-loop-split.c (patch_loop_exit): Use correct edge. - -2017-01-23 Richard Biener - - PR tree-optimization/79186 - * tree-vrp.c (register_new_assert_for): Make sure we've seen - both incoming edges before moving an assert. - -2017-01-23 Martin Jambor - - * ipa-prop.c (load_from_param_1): Removed. - (load_from_unmodified_param): Bits from load_from_param_1 put back - here. - (load_from_param): Removed. - (compute_complex_assign_jump_func): Removed stmt2 and just replaced it - with stmt. Reverted back to use of load_from_unmodified_param. - -2017-01-23 Martin Jambor - - PR ipa/79108 - * ipa-prop.h (ipa_param_descriptor): Anotate with with GTY(()). - (ipa_node_params): Annotate with GTY((for_user)). Make descriptors - field a pointer to garbage collected vector, mark lattices and - ipcp_orig_node with GTY((skip)). - (ipa_get_param_count): Adjust to descriptors being a pointer. - (ipa_get_param): Likewise. - (ipa_get_type): Likewise. - (ipa_get_param_move_cost): Likewise. - (ipa_set_param_used): Likewise. - (ipa_get_controlled_uses): Likewise. - (ipa_set_controlled_uses): Likewise. - (ipa_is_param_used): Likewise. - (ipa_node_params_t): Move into garbage collector. New methods insert - and remove. - (ipa_node_params_sum): Annotate wth GTY(()). - (ipa_check_create_node_params): Adjust to ipa_node_params_sum being - garbage collected. - (ipa_load_from_parm_agg): Adjust declaration. - * ipa-icf.c (param_used_p): Adjust to descriptors being a pointer. - * ipa-profile.c (ipa_profile): Likewise. - * ipa-prop.c (ipa_get_param_decl_index_1): Likewise. - (ipa_populate_param_decls): Make descriptors parameter garbage - collected. - (ipa_dump_param): Adjust to descriptors being a pointer. - (ipa_alloc_node_params): Likewise. - (ipa_initialize_node_params): Likewise. - (load_from_param_1): Make descriptors parameter garbage collected. - (load_from_unmodified_param): Likewise. - (load_from_param): Likewise. - (ipa_load_from_parm_agg): Likewise. - (ipa_node_params::~ipa_node_params): Removed. - (ipa_free_all_node_params): Remove call to delete operator. - (ipa_node_params_t::insert): New. - (ipa_node_params_t::remove): Likewise. - (ipa_node_params_t::duplicate): Adjust to descriptors being a pointer, - copy known_csts and known_contexts vectors. - (ipa_read_node_info): Adjust to descriptors being a pointer. - (ipcp_modif_dom_walker): Make m_descriptors field garbage - collected. - (ipcp_transform_function): Make descriptors variable garbage - collected. - -2017-01-23 Andrew Senkevich - - * config/i386/avx512bwintrin.h: Add k-mask test, kortest intrinsics. - * config/i386/avx512dqintrin.h: Ditto. - * config/i386/avx512fintrin.h: Ditto. - * config/i386/i386.c: Handle new builtins. - * config/i386/i386-builtin.def: Add new builtins. - * config/i386/sse.md (ktest, kortest): New. - (UNSPEC_KORTEST, UNSPEC_KTEST): New. - -2017-01-23 Jakub Jelinek - Martin Liska - - * asan.h: Define ASAN_USE_AFTER_SCOPE_ATTRIBUTE. - * asan.c (asan_expand_poison_ifn): Support stores and use - appropriate ASAN report function. - * internal-fn.c (expand_ASAN_POISON_USE): New function. - * internal-fn.def (ASAN_POISON_USE): Declare. - * tree-into-ssa.c (maybe_add_asan_poison_write): New function. - (maybe_register_def): Create ASAN_POISON_USE when sanitizing. - * tree-ssa-dce.c (eliminate_unnecessary_stmts): Remove - ASAN_POISON calls w/o LHS. - * tree-ssa.c (execute_update_addresses_taken): Create clobber - for ASAN_MARK (UNPOISON, &x, ...) in order to prevent usage of a LHS - from ASAN_MARK (POISON, &x, ...) coming to a PHI node. - * gimplify.c (asan_poison_variables): Add attribute - use_after_scope_memory to variables that really needs to live - in memory. - * tree-ssa.c (is_asan_mark_p): Do not rewrite into SSA when - having the attribute. - -2017-01-23 Martin Liska - - * asan.c (create_asan_shadow_var): New function. - (asan_expand_poison_ifn): Likewise. - * asan.h (asan_expand_poison_ifn): New declaration. - * internal-fn.c (expand_ASAN_POISON): Likewise. - * internal-fn.def (ASAN_POISON): New builtin. - * sanopt.c (pass_sanopt::execute): Expand - asan_expand_poison_ifn. - * tree-inline.c (copy_decl_for_dup_finish): Make function - external. - * tree-inline.h (copy_decl_for_dup_finish): Likewise. - * tree-ssa.c (is_asan_mark_p): New function. - (execute_update_addresses_taken): Rewrite local variables - (identified just by use-after-scope as addressable) into SSA. - -2017-01-22 Gerald Pfeifer - - * doc/install.texi (Specific): opensource.apple.com uses https - now. Remove trailing slash. - -2017-01-22 Gerald Pfeifer - - * README.Portability: Remove note on an Irix compatibility issue. - -2017-01-22 Dimitry Andric - - * gcov.c (INCLUDE_ALGORITHM): Define. - (INCLUDE_VECTOR): Define. - No longer include and directly. - -2017-01-21 Gerald Pfeifer - - * doc/extend.texi (Thread-Local): Change www.akkadia.org reference - to https. - * doc/invoke.texi (Code Gen Options): Ditto. - -2017-01-21 Jan Hubicka - - PR lto/78407 - * cfg.c (update_bb_profile_for_threading): Fix updating of probablity. - -2017-01-21 Bernd Schmidt - - rtl-optimization/79125 - * cprop.c (local_cprop_pass): Handle cases where we make an - unconditional trap. - -2017-01-20 Segher Boessenkool - - PR target/61729 - PR target/77850 - * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to - read from, for big endian. - -2017-01-20 Jiong Wang - - * config/aarch64/aarch64-builtins.c (aarch64_init_builtins): Register - register pauth builtins for LP64 only. - -2017-01-20 Marek Polacek - - PR c/79152 - * gimplify.c (should_warn_for_implicit_fallthrough): Handle consecutive - non-case labels. - -2017-01-20 Alexander Monakov - - * omp-expand.c (expand_omp_simd): Clear PROP_gimple_lomp_dev regardless - of safelen status. - * omp-offload.c (pass_omp_device_lower::gate): Use PROP_gimple_lomp_dev. - * passes.c (dump_properties): Handle PROP_gimple_lomp_dev. - * tree-inline.c (expand_call_inline): Propagate PROP_gimple_lomp_dev. - -2017-01-20 Kyrylo Tkachov - - PR target/71270 - * config/arm/arm.c (neon_valid_immediate): Reject vector constants - in big-endian mode when they are not a single duplicated value. - -2017-01-20 Richard Biener - - * BASE-VER: Bump to 7.0.1. - -2017-01-20 Alexander Monakov - - * omp-low.c (omplow_simd_context): New struct. Use it... - (lower_rec_simd_input_clauses): ...here and... - (lower_rec_input_clauses): ...here to hold common data. Adjust all - references to idx, lane, max_vf, is_simt. - -2017-01-20 Graham Markall - - * config/arc/arc.h (LINK_SPEC): Use arclinux_nps emulation when - mcpu=nps400. - -2017-01-20 Martin Jambor - - * hsa.h: Renaed to hsa-common.h. Adjusted a comment. - * hsa.c: Renaed to hsa-common.c. Change include of gt-hsa.h to - gt-hsa-common.h. - * Makefile.in (OBJS): Rename hsa.o to hsa-common.o. - (GTFILES): Rename hsa.c to hsa-common.c. - * hsa-brig.c: Change include of hsa.h to hsa-common.h. - * hsa-dump.c: Likewise. - * hsa-gen.c: Likewise. - * hsa-regalloc.c: Likewise. - * ipa-hsa.c: Likewise. - * omp-expand.c: Likewise. - * omp-low.c: Likewise. - * toplev.c: Likewise. - -2017-01-20 Marek Polacek - - PR c/64279 - * doc/invoke.texi: Document -Wduplicated-branches. - * fold-const.c (operand_equal_p): Handle MODIFY_EXPR, INIT_EXPR, - COMPOUND_EXPR, PREDECREMENT_EXPR, PREINCREMENT_EXPR, - POSTDECREMENT_EXPR, POSTINCREMENT_EXPR, CLEANUP_POINT_EXPR, EXPR_STMT, - STATEMENT_LIST, and RETURN_EXPR. For non-pure non-const functions - return 0 only when not OEP_LEXICOGRAPHIC. - (fold_build_cleanup_point_expr): Use the expression - location when building CLEANUP_POINT_EXPR. - * tree-core.h (enum operand_equal_flag): Add OEP_LEXICOGRAPHIC. - * tree.c (add_expr): Handle error_mark_node. - -2017-01-20 Martin Liska - - PR lto/69188 - * tree-profile.c (init_ic_make_global_vars): Do not call - finalize_decl. - (gimple_init_gcov_profiler): Likewise. - -2017-01-20 Martin Liska - - PR ipa/71190 - * cgraph.h (maybe_create_reference): Remove argument and - update comment. - * cgraphclones.c (cgraph_node::create_virtual_clone): Remove one - argument. - * ipa-cp.c (create_specialized_node): Likewise. - * symtab.c (symtab_node::maybe_create_reference): Handle - VAR_DECLs and ADDR_EXPRs and select ipa_ref_use type. - -2017-01-20 Martin Liska - - * read-rtl-function.c (function_reader::create_function): Use - build_decl instread of build_decl_stat. - -2017-01-20 Andrew Senkevich - - * config/i386/avx512bwintrin.h: Add k-mask registers shift intrinsics. - * config/i386/avx512dqintrin.h: Ditto. - * config/i386/avx512fintrin.h: Ditto. - * config/i386/i386-builtin-types.def: Add new types. - * config/i386/i386.c: Handle new types. - * config/i386/i386-builtin.def (__builtin_ia32_kshiftliqi) - (__builtin_ia32_kshiftlihi, __builtin_ia32_kshiftlisi) - (__builtin_ia32_kshiftlidi, __builtin_ia32_kshiftriqi) - (__builtin_ia32_kshiftrihi, __builtin_ia32_kshiftrisi) - (__builtin_ia32_kshiftridi): New. - * config/i386/sse.md (k): Rename *k. - -2017-01-19 Segher Boessenkool - - PR target/78875 - PR target/79140 - * config/rs6000/rs6000.c (TARGET_STACK_PROTECT_GUARD): Unconditionally - define to rs6000_init_stack_protect_guard. - (rs6000_init_stack_protect_guard): New function. - -2017-01-19 Matthew Fortune - Yunqiang Su - - * config.gcc (supported_defaults): Add madd4. - (with_madd4): Add validation. - (all_defaults): Add madd4. - * config/mips/mips.opt (mmadd4): New option. - * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for - mmadd4. - (TARGET_CPU_CPP_BUILTINS): Add builtin_define for - __mips_no_madd4. - (ISA_HAS_UNFUSED_MADD4): Gate with mips_madd4. - (ISA_HAS_FUSED_MADD4): Likewise. - * doc/invoke.texi (-mmadd4): Document the new option. - * doc/install.texi (--with-madd4): Document the new option. - -2017-01-19 Jiong Wang - - * config/aarch64/aarch64-builtins.c (enum aarch64_builtins): New - entries for AARCH64_PAUTH_BUILTIN_XPACLRI, - AARCH64_PAUTH_BUILTIN_PACIA1716, AARCH64_PAUTH_BUILTIN_AUTIA1716. - (aarch64_init_pauth_hint_builtins): New. - (aarch64_init_builtins): Call aarch64_init_pauth_hint_builtins. - (aarch64_expand_builtin): Expand new builtins. - -2017-01-19 Jiong Wang - - * reg-notes.def (CFA_TOGGLE_RA_MANGLE): New reg-note. - * combine-stack-adj.c (no_unhandled_cfa): Handle - REG_CFA_TOGGLE_RA_MANGLE. - * dwarf2cfi.c (dwarf2out_frame_debug): Handle REG_CFA_TOGGLE_RA_MANGLE. - * config/aarch64/aarch64.c (aarch64_expand_prologue): Generates DWARF - info for return address signing. - (aarch64_expand_epilogue): Likewise. - -2017-01-19 Jiong Wang - - * config/aarch64/aarch64-opts.h (aarch64_function_type): New enum. - * config/aarch64/aarch64-protos.h - (aarch64_return_address_signing_enabled): New declaration. - * config/aarch64/aarch64.c (aarch64_return_address_signing_enabled): - New function. - (aarch64_expand_prologue): Sign return address before it's pushed onto - stack. - (aarch64_expand_epilogue): Authenticate return address fetched from - stack. - (aarch64_override_options): Sanity check for ILP32 and ISA level. - (aarch64_attributes): New function attributes for "sign-return-address". - * config/aarch64/aarch64.md (UNSPEC_AUTI1716, UNSPEC_AUTISP, - UNSPEC_PACI1716, UNSPEC_PACISP, UNSPEC_XPACLRI): New unspecs. - ("*do_return"): Generate combined instructions according to key index. - ("sp", " - - * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Enable - -mpower9-minmax by default for -mcpu=power9. - (ISA_3_MASKS_IEEE): Require -mvsx-small-integer to enable IEEE - 128-bit floating point. - -2017-01-20 Alan Modra - - * config/rs6000/rs6000.md (cmpstrnsi, cmpstrsi): Fail if - optimizing for size. - -2017-01-20 Alan Modra - - PR target/79144 - * config/rs6000/rs6000.c (expand_strn_compare): Get the asm name - for strcmp and strncmp from corresponding builtin decl. - -2017-01-19 Uros Bizjak - - * config.gcc (x86_64-*-rtems*): Use i386/rtemself.h - instead of i386/rtems-64.h. - * config/i386/rtems-64.h: Remove. - -2017-01-19 Uros Bizjak - - PR target/78478 - Revert: - 2013-11-05 Uros Bizjak - - * config/i386/rtemself.h (LONG_DOUBLE_TYPE_SIZE): New define. - -2017-01-19 Tamar Christina - - * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup): - Change int to HOST_WIDE_INT. - * config/aarch64/aarch64-protos.h - (aarch64_simd_gen_const_vector_dup): Likewise. - * config/aarch64/aarch64-simd.md: Add copysign3. - -2017-01-19 David Malcolm - - * langhooks-def.h (lhd_type_for_size): New decl. - (LANG_HOOKS_TYPE_FOR_SIZE): Define as lhd_type_for_size. - * langhooks.c (lhd_type_for_size): New function, taken from - lto_type_for_size. - -2017-01-19 Pat Haugen - - * config/rs6000/power9.md (power9-alu): Remove 'cmp' type and add - define_bypass for CR latency. - (power9-cracked-alu): Update bypass latency and remove power9-branch. - (power9-alu2): Add define_bypass for CR latency. - (power9-cmp): New. - (power9-mul): Update insn latency. - (power9-mul-compare): Update insn latency, bypass latency and remove - power9-branch. - -2016-01-19 Kyrylo Tkachov - - * config/aarch64/aarch64-protos.h (aarch64_nopcrelative_literal_loads): - Delete. - * config/aarch64/aarch64.md - (aarch64_reload_movcp): Delete reference to - aarch64_nopcrelative_literal_loads. - (aarch64_reload_movcp): Likewise. - -2017-01-19 Chenghua Xu - - * config/mips/mips.h (ISA_HAS_FUSED_MADD4): Enable for - TARGET_LOONGSON_3A. - (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_LOONGSON_3A. - -2017-01-19 Doug Gilmore - - PR target/78176 - * config.gcc (supported_defaults): Add lxc1-sxc1. - (with_lxc1_sxc1): Add validation. - (all_defaults): Add lxc1-sxc1. - * config/mips/mips.opt (mlxc1-sxc1): New option. - * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for - mlxc1-sxc1. - (TARGET_CPU_CPP_BUILTINS): Add builtin_define for - __mips_no_lxc1_sxc1. - (ISA_HAS_LXC1_SXC1): Gate with mips_lxc1_sxc1. - * doc/invoke.texi (-mlxc1-sxc1): Document the new option. - * doc/install.texi (--with-lxc1-sxc1): Document the new option. - -2017-01-19 Richard Biener - - PR tree-optimization/72488 - * tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make - sure to restore SSA info. - * tree-ssa.c (verify_ssa): Verify SSA info is not shared. - -2017-01-19 Richard Earnshaw - - PR rtl-optimization/79121 - * expr.c (expand_expr_real_2, case LSHIFT_EXPR): Look at the signedness - of the inner type when shifting an extended value. - -2017-01-17 Jan Hubicka - - PR lto/78407 - * symtab.c (symtab_node::equal_address_to): Fix comparing of - interposable aliases. - -2017-01-18 Peter Bergner - - PR target/78516 - * config/rs6000/spe.md (mov_si_e500_subreg0): Fix constraints. - Use the evmergelohi instruction. - (mov_si_e500_subreg4_2_le): Likewise. - (mov_sitf_e500_subreg8_2_be): Likewise. - (mov_sitf_e500_subreg12_2_le): Likewise. - (mov_si_e500_subreg0_2_le): Fix constraints. - (mov_si_e500_subreg4_2_be): Likewise. - (mov_sitf_e500_subreg8_2_le): Likewise. - (mov_sitf_e500_subreg12_2_be): Likewise. - -2017-01-18 Bill Schmidt - - * config/rs6000/altivec.md (altivec_vbpermq): Change "type" - attribute from vecsimple to vecperm. - (altivec_vbpermq2): Likewise. - -2017-01-18 Bill Schmidt - - PR target/79040 - * config/rs6000/altivec.h: Fix typo of vec_cntlz to vec_cnttz. - -2017-01-18 Aaron Sawdey - * config/rs6000/rs6000-protos.h (expand_strn_compare): Add arg. - * config/rs6000/rs6000.c (expand_strn_compare): Add ability to expand - strcmp. Fix bug where comparison didn't stop with zero byte. Fix - case where N arg is SIZE_MAX. - * config/rs6000/rs6000.md (cmpstrnsi): Args to expand_strn_compare. - (cmpstrsi): Add pattern. - -2017-01-18 Michael Meissner - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - __builtin_vec_revb builtins. - * config/rs6000/rs6000-builtins.def (P9V_BUILTIN_XXBRQ_V16QI): Add - built-in functions to support generation of the ISA 3.0 XXBR - vector byte reverse instructions. - (P9V_BUILTIN_XXBRQ_V1TI): Likewise. - (P9V_BUILTIN_XXBRD_V2DI): Likewise. - (P9V_BUILTIN_XXBRD_V2DF): Likewise. - (P9V_BUILTIN_XXBGW_V4SI): Likewise. - (P9V_BUILTIN_XXBGW_V4SF): Likewise. - (P9V_BUILTIN_XXBGH_V8HI): Likewise. - (P9V_BUILTIN_VEC_REVB): Likewise. - * config/rs6000/vsx.md (p9_xxbrq_v1ti): New insns/expanders to - generate the ISA 3.0 XXBR vector byte reverse instructions. - (p9_xxbrq_v16qi): Likewise. - (p9_xxbrd_, VSX_D iterator): Likewise. - (p9_xxbrw_, VSX_W iterator): Likewise. - (p9_xxbrh_v8hi): Likewise. - * config/rs6000/altivec.h (vec_revb): Define if ISA 3.0. - * doc/extend.texi (RS/6000 Altivec Built-ins): Document the - vec_revb built-in functions. - -2017-01-18 Uros Bizjak - - PR rtl-optimization/78952 - * config/i386/i386.md (any_extract): New code iterator. - (*insvqi_2): Use any_extract for source operand. - (*insvqi_3): Use any_shiftrt for source operand. - -2017-01-18 Wilco Dijkstra - - * config/aarch64/aarch64.c (aarch64_sched_adjust_priority) - New function. - (TARGET_SCHED_ADJUST_PRIORITY): Define target hook. - -2017-01-18 Matthias Klose - - * doc/install.texi: Allow default for --with-target-bdw-gc-include. - -2016-01-18 Bill Schmidt - - * config/rs6000/altivec.h (vec_bperm): Change #define. - * config/rs6000/altivec.md (UNSPEC_VBPERMD): New enum constant. - (altivec_vbpermq2): New define_insn. - (altivec_vbpermd): Likewise. - * config/rs6000/rs6000-builtin.def (VBPERMQ2): New monomorphic - function interface. - (VBPERMD): Likewise. - (VBPERM): New polymorphic function interface. - * config/rs6000/r6000-c.c (altivec_overloaded_builtins_table): - Add entries for P9V_BUILTIN_VEC_VBPERM. - * doc/extend.texi: Add interfaces for vec_bperm. - -2017-01-18 Andreas Krebbel - - * config/s390/s390-c.c (s390_expand_overloaded_builtin): Downcase - first letter of error messages. - (s390_resolve_overloaded_builtin): Likewise. - * config/s390/s390.c (s390_expand_builtin): Likewise. - (s390_invalid_arg_for_unprototyped_fn): Likewise. - (s390_valid_target_attribute_inner_p): Likewise. - * config/s390/s390.md ("tabort"): Likewise. - -2017-01-18 Toma Tabacu - - * config/mips/mips.h (ISA_HAS_DIV3): Remove unused macro. - (ISA_AVOID_DIV_HILO): New macro. - (ISA_HAS_DIV): Use new ISA_AVOID_DIV_HILO macro. - (ISA_HAS_DDIV): Likewise. - -2017-01-18 Markus Trippelsdorf - - * doc/invoke.texi (fabi-version): Correct number of occurrences. - -2017-01-18 Markus Trippelsdorf - - * doc/invoke.texi (fabi-version): Spelling fix. - -2017-01-18 Markus Trippelsdorf - - PR c++/70182 - * doc/invoke.texi (fabi-version): Mention mangling fix for - operator names. - -2017-01-18 Markus Trippelsdorf - - PR c++/77489 - * doc/invoke.texi (fabi-version): Document discriminator mangling. - -2017-01-17 Segher Boessenkool - - PR target/78875 - * config/rs6000/rs6000-opts.h (stack_protector_guard): New enum. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Handle - the new options. - * config/rs6000/rs6000.md (stack_protect_set): Handle the new more - flexible settings. - (stack_protect_test): Ditto. - * config/rs6000/rs6000.opt (mstack-protector-guard=, - mstack-protector-guard-reg=, mstack-protector-guard-offset=): New - options. - * doc/invoke.texi (Option Summary) [RS/6000 and PowerPC Options]: - Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and - -mstack-protector-guard-offset=. - (RS/6000 and PowerPC Options): Ditto. - -2017-01-17 Uros Bizjak - - * config/i386/i386.h (MASK_CLASS_P): New define. - * config/i386/i386.c (inline_secondary_memory_needed): Ensure that - there are no registers from different register sets also when - mask registers are used. Update function comment. - * config/i386/i386.md (*movsi_internal): Split (*k/*krm) alternative - to (*k/*r) and (*k/*km) alternatives. - -2017-01-17 Wilco Dijkstra - - * config/aarch64/aarch64.md (eh_return): Remove pattern and splitter. - * config/aarch64/aarch64.h (AARCH64_EH_STACKADJ_REGNUM): Remove. - (EH_RETURN_HANDLER_RTX): New define. - * config/aarch64/aarch64.c (aarch64_frame_pointer_required): - Force frame pointer in EH return functions. - (aarch64_expand_epilogue): Add barrier for eh_return. - (aarch64_final_eh_return_addr): Remove. - (aarch64_eh_return_handler_rtx): New function. - * config/aarch64/aarch64-protos.h (aarch64_final_eh_return_addr): - Remove. - (aarch64_eh_return_handler_rtx): New prototype. - -2017-01-17 Bill Schmidt - - * config/rs6000/altivec.h (vec_rlmi): New #define. - (vec_vrlnm): Likewise. - (vec_rlnm): Likewise. - * config/rs6000/altivec.md (UNSPEC_VRLMI): New UNSPEC enum value. - (UNSPEC_VRLNM): Likewise. - (VIlong): New mode iterator. - (altivec_vrlmi): New define_insn. - (altivec_vrlnm): Likewise. - * config/rs6000/rs6000-builtin.def (VRLWNM): New monomorphic - function entry. - (VRLDNM): Likewise. - (RLNM): New polymorphic function entry. - (VRLWMI): New monomorphic function entry. - (VRLDMI): Likewise. - (RLMI): New polymorphic function entry. - * config/rs6000/r6000-c.c (altivec_overloaded_builtin_table): Add - new entries for P9V_BUILTIN_VEC_RLMI and P9V_BUILTIN_VEC_RLNM. - * doc/extend.texi: Add description of vec_rlmi, vec_rlnm, and - vec_vrlnm. - -2017-01-17 Jakub Jelinek - - PR debug/78839 - * dwarf2out.c (field_byte_offset): Restore the - PCC_BITFIELD_TYPE_MATTERS behavior for INTEGER_CST DECL_FIELD_OFFSET - and DECL_FIELD_BIT_OFFSET. Use fold_build2 instead of build2 + fold. - (analyze_variants_discr, gen_variant_part): Use fold_build2 instead - of build2 + fold. - -2017-01-17 Eric Botcazou - - PR ada/67205 - * config/aarch64/aarch64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define - -2017-01-17 Jakub Jelinek - - PR debug/71669 - * dwarf2out.c (add_data_member_location_attribute): For constant - offset bitfield emit for -gdwarf-5 DW_AT_data_bit_offset attribute - instead of DW_AT_data_member_location, DW_AT_bit_offset and - DW_AT_byte_size attributes. - -2017-01-17 Eric Botcazou - - * config/rs6000/rs6000.c (rs6000_emit_move): Also use a TOC reference - after forcing to constant memory when the code model is medium. - -2017-01-17 Julia Koval - - PR target/76731 - * config/i386/avx512fintrin.h - (_mm512_i32gather_ps): Change __addr type to void const*. - (_mm512_mask_i32gather_ps): Ditto. - (_mm512_i32gather_pd): Ditto. - (_mm512_mask_i32gather_pd): Ditto. - (_mm512_i64gather_ps): Ditto. - (_mm512_mask_i64gather_ps): Ditto. - (_mm512_i64gather_pd): Ditto. - (_mm512_mask_i64gather_pd): Ditto. - (_mm512_i32gather_epi32): Ditto. - (_mm512_mask_i32gather_epi32): Ditto. - (_mm512_i32gather_epi64): Ditto. - (_mm512_mask_i32gather_epi64): Ditto. - (_mm512_i64gather_epi32): Ditto. - (_mm512_mask_i64gather_epi32): Ditto. - (_mm512_i64gather_epi64): Ditto. - (_mm512_mask_i64gather_epi64): Ditto. - (_mm512_i32scatter_ps): Change __addr type to void*. - (_mm512_mask_i32scatter_ps): Ditto. - (_mm512_i32scatter_pd): Ditto. - (_mm512_mask_i32scatter_pd): Ditto. - (_mm512_i64scatter_ps): Ditto. - (_mm512_mask_i64scatter_ps): Ditto. - (_mm512_i64scatter_pd): Ditto. - (_mm512_mask_i64scatter_pd): Ditto. - (_mm512_i32scatter_epi32): Ditto. - (_mm512_mask_i32scatter_epi32): Ditto. - (_mm512_i32scatter_epi64): Ditto. - (_mm512_mask_i32scatter_epi64): Ditto. - (_mm512_i64scatter_epi32): Ditto. - (_mm512_mask_i64scatter_epi32): Ditto. - (_mm512_i64scatter_epi64): Ditto. - (_mm512_mask_i64scatter_epi64): Ditto. - * config/i386/avx512pfintrin.h - (_mm512_mask_prefetch_i32gather_pd): Change __addr type to void const*. - (_mm512_mask_prefetch_i32gather_ps): Ditto. - (_mm512_mask_prefetch_i64gather_pd): Ditto. - (_mm512_mask_prefetch_i64gather_ps): Ditto. - (_mm512_prefetch_i32scatter_pd): Change __addr type to void*. - (_mm512_prefetch_i32scatter_ps): Ditto. - (_mm512_mask_prefetch_i32scatter_pd): Ditto. - (_mm512_mask_prefetch_i32scatter_ps): Ditto. - (_mm512_prefetch_i64scatter_pd): Ditto. - (_mm512_prefetch_i64scatter_ps): Ditto. - (_mm512_mask_prefetch_i64scatter_pd): Ditto. - (_mm512_mask_prefetch_i64scatter_ps): Ditto. - * config/i386/avx512vlintrin.h - (_mm256_mmask_i32gather_ps): Change __addr type to void const*. - (_mm_mmask_i32gather_ps): Ditto. - (_mm256_mmask_i32gather_pd): Ditto. - (_mm_mmask_i32gather_pd): Ditto. - (_mm256_mmask_i64gather_ps): Ditto. - (_mm_mmask_i64gather_ps): Ditto. - (_mm256_mmask_i64gather_pd): Ditto. - (_mm_mmask_i64gather_pd): Ditto. - (_mm256_mmask_i32gather_epi32): Ditto. - (_mm_mmask_i32gather_epi32): Ditto. - (_mm256_mmask_i32gather_epi64): Ditto. - (_mm_mmask_i32gather_epi64): Ditto. - (_mm256_mmask_i64gather_epi32): Ditto. - (_mm_mmask_i64gather_epi32): Ditto. - (_mm256_mmask_i64gather_epi64): Ditto. - (_mm_mmask_i64gather_epi64): Ditto. - (_mm256_i32scatter_ps): Change __addr type to void*. - (_mm256_mask_i32scatter_ps): Ditto. - (_mm_i32scatter_ps): Ditto. - (_mm_mask_i32scatter_ps): Ditto. - (_mm256_i32scatter_pd): Ditto. - (_mm256_mask_i32scatter_pd): Ditto. - (_mm_i32scatter_pd): Ditto. - (_mm_mask_i32scatter_pd): Ditto. - (_mm256_i64scatter_ps): Ditto. - (_mm256_mask_i64scatter_ps): Ditto. - (_mm_i64scatter_ps): Ditto. - (_mm_mask_i64scatter_ps): Ditto. - (_mm256_i64scatter_pd): Ditto. - (_mm256_mask_i64scatter_pd): Ditto. - (_mm_i64scatter_pd): Ditto. - (_mm_mask_i64scatter_pd): Ditto. - (_mm256_i32scatter_epi32): Ditto. - (_mm256_mask_i32scatter_epi32): Ditto. - (_mm_i32scatter_epi32): Ditto. - (_mm_mask_i32scatter_epi32): Ditto. - (_mm256_i32scatter_epi64): Ditto. - (_mm256_mask_i32scatter_epi64): Ditto. - (_mm_i32scatter_epi64): Ditto. - (_mm_mask_i32scatter_epi64): Ditto. - (_mm256_i64scatter_epi32): Ditto. - (_mm256_mask_i64scatter_epi32): Ditto. - (_mm_i64scatter_epi32): Ditto. - (_mm_mask_i64scatter_epi32): Ditto. - (_mm256_i64scatter_epi64): Ditto. - (_mm256_mask_i64scatter_epi64): Ditto. - (_mm_i64scatter_epi64): Ditto. - (_mm_mask_i64scatter_epi64): Ditto. - * config/i386/i386-builtin-types.def (V16SF_V16SF_PCFLOAT_V16SI_HI_INT) - (V8DF_V8DF_PCDOUBLE_V8SI_QI_INT, V8SF_V8SF_PCFLOAT_V8DI_QI_INT) - (V8DF_V8DF_PCDOUBLE_V8DI_QI_INT, V16SI_V16SI_PCINT_V16SI_HI_INT) - (V8DI_V8DI_PCINT64_V8SI_QI_INT, V8SI_V8SI_PCINT_V8DI_QI_INT) - (V8DI_V8DI_PCINT64_V8DI_QI_INT, V2DF_V2DF_PCDOUBLE_V4SI_QI_INT) - (V4DF_V4DF_PCDOUBLE_V4SI_QI_INT, V2DF_V2DF_PCDOUBLE_V2DI_QI_INT) - (V4DF_V4DF_PCDOUBLE_V4DI_QI_INT, V4SF_V4SF_PCFLOAT_V4SI_QI_INT) - (V8SF_V8SF_PCFLOAT_V8SI_QI_INT, V4SF_V4SF_PCFLOAT_V2DI_QI_INT) - (V4SF_V4SF_PCFLOAT_V4DI_QI_INT, V2DI_V2DI_PCINT64_V4SI_QI_INT) - (V4DI_V4DI_PCINT64_V4SI_QI_INT, V2DI_V2DI_PCINT64_V2DI_QI_INT) - (V4DI_V4DI_PCINT64_V4DI_QI_INT, V4SI_V4SI_PCINT_V4SI_QI_INT) - (V8SI_V8SI_PCINT_V8SI_QI_INT, V4SI_V4SI_PCINT_V2DI_QI_INT) - (V4SI_V4SI_PCINT_V4DI_QI_INT, VOID_PFLOAT_HI_V16SI_V16SF_INT) - (VOID_PFLOAT_QI_V8SI_V8SF_INT, VOID_PFLOAT_QI_V4SI_V4SF_INT) - (VOID_PDOUBLE_QI_V8SI_V8DF_INT, VOID_PDOUBLE_QI_V4SI_V4DF_INT) - (VOID_PDOUBLE_QI_V4SI_V2DF_INT, VOID_PFLOAT_QI_V8DI_V8SF_INT) - (VOID_PFLOAT_QI_V4DI_V4SF_INT, VOID_PFLOAT_QI_V2DI_V4SF_INT) - (VOID_PDOUBLE_QI_V8DI_V8DF_INT, VOID_PDOUBLE_QI_V4DI_V4DF_INT) - (VOID_PDOUBLE_QI_V2DI_V2DF_INT, VOID_PINT_HI_V16SI_V16SI_INT) - (VOID_PINT_QI_V8SI_V8SI_INT, VOID_PINT_QI_V4SI_V4SI_INT) - (VOID_PLONGLONG_QI_V8SI_V8DI_INT, VOID_PLONGLONG_QI_V4SI_V4DI_INT) - (VOID_PLONGLONG_QI_V4SI_V2DI_INT, VOID_PINT_QI_V8DI_V8SI_INT) - (VOID_PINT_QI_V4DI_V4SI_INT, VOID_PINT_QI_V2DI_V4SI_INT) - (VOID_PLONGLONG_QI_V8DI_V8DI_INT, VOID_QI_V8SI_PCINT64_INT_INT) - (VOID_PLONGLONG_QI_V4DI_V4DI_INT, VOID_PLONGLONG_QI_V2DI_V2DI_INT) - (VOID_HI_V16SI_PCINT_INT_INT, VOID_QI_V8DI_PCINT64_INT_INT) - (VOID_QI_V8DI_PCINT_INT_INT): Remove. - (V16SF_V16SF_PCVOID_V16SI_HI_INT, V8DF_V8DF_PCVOID_V8SI_QI_INT) - (V8SF_V8SF_PCVOID_V8DI_QI_INT, V8DF_V8DF_PCVOID_V8DI_QI_INT) - (V16SI_V16SI_PCVOID_V16SI_HI_INT, V8DI_V8DI_PCVOID_V8SI_QI_INT) - (V8SI_V8SI_PCVOID_V8DI_QI_INT, V8DI_V8DI_PCVOID_V8DI_QI_INT) - (VOID_PVOID_HI_V16SI_V16SF_INT, VOID_PVOID_QI_V8SI_V8DF_INT) - (VOID_PVOID_QI_V8DI_V8SF_INT, VOID_PVOID_QI_V8DI_V8DF_INT) - (VOID_PVOID_HI_V16SI_V16SI_INT, VOID_PVOID_QI_V8SI_V8DI_INT) - (VOID_PVOID_QI_V8DI_V8SI_INT, VOID_PVOID_QI_V8DI_V8DI_INT) - (V2DF_V2DF_PCVOID_V4SI_QI_INT, V4DF_V4DF_PCVOID_V4SI_QI_INT) - (V2DF_V2DF_PCVOID_V2DI_QI_INT, V4DF_V4DF_PCVOID_V4DI_QI_INT - (V4SF_V4SF_PCVOID_V4SI_QI_INT, V8SF_V8SF_PCVOID_V8SI_QI_INT) - (V4SF_V4SF_PCVOID_V2DI_QI_INT, V4SF_V4SF_PCVOID_V4DI_QI_INT) - (V2DI_V2DI_PCVOID_V4SI_QI_INT, V4DI_V4DI_PCVOID_V4SI_QI_INT) - (V2DI_V2DI_PCVOID_V2DI_QI_INT, V4DI_V4DI_PCVOID_V4DI_QI_INT) - (V4SI_V4SI_PCVOID_V4SI_QI_INT, V8SI_V8SI_PCVOID_V8SI_QI_INT) - (V4SI_V4SI_PCVOID_V2DI_QI_INT, V4SI_V4SI_PCVOID_V4DI_QI_INT) - (VOID_PVOID_QI_V8SI_V8SF_INT, VOID_PVOID_QI_V4SI_V4SF_INT) - (VOID_PVOID_QI_V4SI_V4DF_INT, VOID_PVOID_QI_V4SI_V2DF_INT) - (VOID_PVOID_QI_V4DI_V4SF_INT, VOID_PVOID_QI_V2DI_V4SF_INT) - (VOID_PVOID_QI_V4DI_V4DF_INT, VOID_PVOID_QI_V2DI_V2DF_INT) - (VOID_PVOID_QI_V8SI_V8SI_INT, VOID_PVOID_QI_V4SI_V4SI_INT) - (VOID_PVOID_QI_V4SI_V4DI_INT, VOID_PVOID_QI_V4SI_V2DI_INT) - (VOID_PVOID_QI_V4DI_V4SI_INT, VOID_PVOID_QI_V2DI_V4SI_INT) - (VOID_PVOID_QI_V4DI_V4DI_INT, VOID_PVOID_QI_V2DI_V2DI_INT) - (VOID_QI_V8SI_PCVOID_INT_INT, VOID_HI_V16SI_PCVOID_INT_INT) - (VOID_QI_V8DI_PCVOID_INT_INT): Add. - * config/i386/i386.c (ix86_init_mmx_sse_builtins): Adjust builtin - definitions accordingly. - -2017-01-17 Kito Cheng - Kuan-Lin Chen - - PR target/79079 - * internal-fn.c (expand_mul_overflow): Use convert_modes instead of - gen_lowpart. - -2017-01-17 Vladimir Makarov - - PR target/79058 - * ira-conflicts.c (ira_build_conflicts): Update total conflict - hard regs for inner regno. - -2017-01-17 Martin Liska - - PR ipa/71207 - * ipa-polymorphic-call.c (contains_type_p): Fix wrong - assumption and add comment. - -2017-01-17 Nathan Sidwell - - * ipa-visibility.c (localize_node): New function, broken out of ... - (function_and_variable_visibility): ... here. Call it. - -2017-01-17 Jan Hubicka - - PR middle-end/77445 - * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): - correctly set frequency of oudgoing edge. - (duplicate_thread_path): Fix profile updating. - -2017-01-17 Jakub Jelinek - - PR other/79046 - * configure.ac: Add GCC_BASE_VER. - * Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get - version from BASE-VER file. - (CFLAGS-gcc.o): Add -DBASEVER=$(BASEVER_s). - (gcc.o): Depend on $(BASEVER). - * common.opt (dumpfullversion): New option. - * gcc.c (driver_handle_option): Handle OPT_dumpfullversion. - * doc/invoke.texi: Document -dumpfullversion. - * doc/install.texi: Document --with-gcc-major-version-only. - * configure: Regenerated. - -2017-01-17 Richard Biener - - PR tree-optimization/71433 - * tree-vrp.c (register_new_assert_for): Merge same asserts - on all incoming edges. - (process_assert_insertions_for): Handle insertions at the - beginning of BBs. - -2017-01-17 Gerald Pfeifer - - * config/i386/cygwin.h (LIBGCJ_SONAME): Remove. - * config/i386/mingw32.h (LIBGCJ_SONAME): Remove. - -2017-01-17 Kaz Kojima - - PR target/78633 - * config/sh/sh.md (cmpeqsi_t+1): Call copy_rtx to avoid invalid - RTL sharing. - -2017-01-17 Alan Modra - - PR target/79066 - * config/rs6000/rs6000.md (elf_high, elf_low): Disable when pic. - * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Don't allow - symbolic stack limit when pic. - -2017-01-16 Martin Sebor - - PR tree-optimization/78608 - * gimple-ssa-sprintf.c (tree_digits): Avoid negating TYPE_MIN. - -2017-01-16 Jeff Law - - Revert: - 2016-12-02 Tadek Kijkowski - * Makefile.in (PREPROCESSOR_DEFINES): Add a level of indirection - for several include directories that may be relative to sysroot. - * config/i386/x-mingw32 (gplus_includedir): Define. - (gplus_tool_includedir, gplus_backward_include_dir): Likewise. - (native_system_includedir): Likewise. - * config/i386/mingw32.h (STANDARD_STARTFILE_PREFIX_1): Do not - override if TARGET_SYSTEM_ROOT is defined. - (NATIVE_SYSTEM_HEADER_DIR): Likewise. - - PR tree-optimization/79090 - PR tree-optimization/33562 - PR tree-optimization/61912 - PR tree-optimization/77485 - * tree-ssa-dse.c (compute_trims): Accept STMT argument. Dump STMT - and computed trims into the dump file. - -2017-01-17 Uros Bizjak - - * config/i386/i386.h (LIMIT_RELOAD_CLASS): Remove. - -2017-01-16 Jakub Jelinek - - PR c/79089 - * gimplify.c (gimplify_init_constructor): If want_value and - object == lhs, unshare lhs to avoid invalid tree sharing. Formatting - fix. - - PR target/79080 - * loop-doloop.c (doloop_modify): Call unshare_all_rtl_in_chain on - sequence. Formatting fixes. - (doloop_optimize): Formatting fixes. - - PR driver/49726 - * gcc.c (debug_level_greater_than_spec_func): New function. - (static_spec_functions): Add debug-level-gt spec function. - (ASM_DEBUG_SPEC, cpp_options): Use %:debug-level-gt(0) instead of - !g0. - * config/darwin.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise. - * config/darwin9.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise. - * common.opt (g, gcoff, gdwarf, gdwarf-, ggdb, gno-pubnames, - gpubnames, ggnu-pubnames, gno-record-gcc-switches, - grecord-gcc-switches, gno-strict-dwarf, gstrict-dwarf, gstabs, - gstabs+, gtoggle, gvms, gxcoff, gxcoff+): Add Driver flag. - -2017-01-16 Uros Bizjak - - * config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and - QImode fixups to general and mask registers only. - -2017-01-16 Carl Love - - * config/rs6000/rs6000-c (altivec_overloaded_builtins): Add support - for built-in functions - vector signed char vec_nabs (vector signed char) - vector signed short vec_nabs (vector signed short) - vector signed int vec_nabs (vector signed int) - vector signed long long vec_nabs (vector signed long long) - vector float vec_nabs (vector float) - vector double vec_nabs (vector double) - * config/rs6000/rs6000-builtin.def: Add definitions for NABS functions - and NABS overload. - * config/rs6000/altivec.md: New define_expand nabs2 types - * config/rs6000/altivec.h: New define for vec_nabs built-in function. - * doc/extend.texi: Update the documentation file for the new built-in - functions. - -2017-01-16 Martin Sebor - - * gimple-ssa-sprintf.c (format_directive): Correct a typo in a warning - message. - -2017-01-16 Bill Schmidt - - * config/rs6000/rs6000.c (rtx_is_swappable_p): Change - UNSPEC_VSX__XXSPLTD to require special splat handling. - -2017-01-16 David Malcolm - - PR bootstrap/78616 - * system.h: Poison strndup. - -2017-01-16 Alan Modra - - PR target/79098 - * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Don't - use a switch. - -2017-01-16 Georg-Johann Lay - - * config/avr/avr.h (BRANCH_COST) [reload_completed]: Increase by 4. - -2017-01-15 Uros Bizjak - - * config/i386/i386.c (ix86_legitimate_combined_insn): Do not - call recog here. Assert that INSN_CODE (insn) is non-negative. - -2017-01-15 Segher Boessenkool - - PR target/72749 - * cfgrtl.c (rtl_split_edge): Also patch jump insns that jump to the - fallthrough. - * haifa-sched.c (dump_insn_stream): Don't crash if there is a label - in the currently scheduled RTL fragment. - -2017-01-15 Segher Boessenkool - - PR rtl-optimization/78751 - * ifcvt.c (find_cond_trap): If we generated a non-existing insn, - give up. - -2017-01-14 Jeff Law - - PR tree-optimization/79090 - * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject zero length and - variable length stores. - (compute_trims): Delete dead assignment to *trim_tail. - (dse_dom_walker::dse_optimize_stmt): Optimize mem* calls with - zero length. - -2017-01-14 Bernd Schmidt - - PR rtl-optimization/78626 - PR rtl-optimization/78727 - * cprop.c (one_cprop_pass): Collect unconditional traps in the middle - of a block, and split such blocks after everything else is finished. - -2017-01-14 Alan Modra - - PR target/72749 - * combine.c (recog_for_combine_1): Set INSN_CODE before calling - target legitimate_combined_insn. - * config/rs6000/rs6000.c (TARGET_LEGITIMATE_COMBINED_INSN): Define. - (rs6000_legitimate_combined_insn): New function. - * config/rs6000/rs6000.md (UNSPEC_DOLOOP): Delete, and remove - all uses. - (ctr_internal3): Rename from *ctr_internal5. - (ctr_internal4): Rename from *ctr_internal6. - (ctr_internal1, ctr_internal2): Remove '*' from name. - -2017-01-14 Gerald Pfeifer - - * doc/frontends.texi (G++ and GCC): Remove references to Java. - -2017-01-13 Jeff Law - - PR tree-optimization/33562 - PR tree-optimization/61912 - PR tree-optimization/77485 - * tree-ssa-dse.c (delete_dead_call): Accept gsi rather than - a statement. - (delete_dead_assignment): Likewise. - (dse_dom_walker::dse_optimize_stmt): Pass in the gsi rather than - statement to delete_dead_call and delete_dead_assignment. - -2017-01-13 David Malcolm - - PR c/78304 - * substring-locations.c (format_warning_va): Strengthen case 1 so - that both endpoints of the substring must be within the format - range for just the substring to be printed. - -2017-01-13 Uros Bizjak - - * config/i386/i386.opt (msgx): Use ix86_isa_flags2 variable. - * config/i386/i386.c (ix86_target_string): Add missing options - to isa_opts and reorder options by implied ISAs. Rename isa_opts2 to - isa2_opts, ix86_flag_opts to flag2_opts, ix86_target_other to - flags_other and ix86_target_other to flags2_other. Display unknown - isa2 options. - (ix86_valid_target_attribute_inner_p): Add missing options and - reorder options by implied ISAs, as in ix86_target_string. - -2017-01-13 Richard Sandiford - - * hash-table.h (hash_table::too_empty_p): New function. - (hash_table::expand): Use it. - (hash_table::traverse): Likewise. - (hash_table::empty_slot): Use sizeof (value_type) instead of - sizeof (PTR) to convert bytes to elements. Shrink the table - if the current size is excessive for the current number of - elements. - -2017-01-13 Richard Sandiford - - * ira-costs.c (record_reg_classes): Break from the inner loop - early once alt_fail is known to be true. Update outer loop - handling accordingly. - -2017-01-13 Jeff Law - - * tree-ssa-dse.c (decrement_count): New function. - (increment_start_addr, maybe_trim_memstar_call): Likewise. - (dse_dom_walker::optimize_stmt): Call maybe_trim_memstar_call directly - when we know the partially dead statement is a mem* function. - - PR tree-optimization/61912 - PR tree-optimization/77485 - * tree-ssa-dse.c: Include expr.h. - (maybe_trim_constructor_store): New function. - (maybe_trim_partially_dead_store): Call maybe_trim_constructor_store. - - PR tree-optimization/33562 - PR tree-optimization/61912 - PR tree-optimization/77485 - * doc/invoke.texi: Document new dse-max-object-size param. - * params.def (PARM_DSE_MAX_OBJECT_SIZE): New PARAM. - * tree-ssa-dse.c: Include params.h. - (dse_store_status): New enum. - (initialize_ao_ref_for_dse): New, partially extracted from - dse_optimize_stmt. - (valid_ao_ref_for_dse, normalize_ref): New. - (setup_live_bytes_from_ref, compute_trims): Likewise. - (clear_bytes_written_by, maybe_trim_complex_store): Likewise. - (maybe_trim_partially_dead_store): Likewise. - (maybe_trim_complex_store): Likewise. - (dse_classify_store): Renamed from dse_possibly_dead_store_p. - Track what bytes live from the original store. Return tri-state - for dead, partially dead or live. - (dse_dom_walker): Add constructor, destructor and new private members. - (delete_dead_call, delete_dead_assignment): New extracted from - dse_optimize_stmt. - (dse_optimize_stmt): Make a member of dse_dom_walker. - Use initialize_ao_ref_for_dse. - - PR tree-optimization/33562 - PR tree-optimization/61912 - PR tree-optimization/77485 - * sbitmap.h (bitmap_count_bits): Prototype. - (bitmap_clear_range, bitmap_set_range): Likewise. - * sbitmap.c (bitmap_clear_range): New function. - (bitmap_set_range, sbitmap_popcount, bitmap_count_bits): Likewise. - -2017-01-13 Martin Liska - - PR ipa/79043 - * function.c (set_cfun): Add new argument force. - * function.h (set_cfun): Likewise. - * ipa-inline-transform.c (inline_call): Use the function when - strict alising from is dropped for function we inline to. - -2017-01-13 Richard Biener - - * tree-pretty-print.c (dump_generic_node): Fix inverted condition - for dumping GIMPLE INTEGER_CSTs. - -2017-01-13 Rainer Orth - - * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __STDC_VERSION__ - to 201112L since C++17. - -2017-01-13 Maxim Ostapenko - - PR sanitizer/78887 - * asan.c (asan_needs_odr_indicator_p): Don't emit ODR indicators - if -fsanitize=kernel-address is present. - -2017-01-13 Richard Biener - - * tree-pretty-print.c (dump_generic_node): Dump INTEGER_CSTs - as _Literal ( type ) number in case usual suffixes do not - preserve all information. - -2017-01-13 Richard Biener - - PR tree-optimization/77283 - * gimple-ssa-split-paths.c: Include gimple-ssa.h, tree-phinodes.h - and ssa-iterators.h. - (is_feasible_trace): Implement a cost model based on joiner - PHI node uses. - -2017-01-12 Michael Meissner - - PR target/79004 - * config/rs6000/rs6000.md (FP_ISA3): Do not optimize converting - char or short to __float128/_Float128 directly. - -2017-01-12 Martin Sebor - - to -Wformat-overflow. - * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust. - (min_bytes_remaining): Same. - (get_string_length): Same. - (format_string): Same. - (format_directive): Same. - (add_bytes): Same. - (pass_sprintf_length::handle_gimple_call): Same. - -2017-01-12 Jakub Jelinek - - * gimple-ssa-sprintf.c (try_substitute_return_value): Remove - info.nowrite calls with no lhs that can't throw. Return bool - whether gsi_remove has been called or not. - (pass_sprintf_length::handle_gimple_call): Return bool whether - try_substitute_return_value called gsi_remove. Formatting fix. - (pass_sprintf_length::execute): Don't use gsi_remove if - handle_gimple_call returned true. - - PR bootstrap/79069 - * cfgrtl.c (rtl_tidy_fallthru_edge): For any_uncondjump_p that can't - be removed due to side-effects, don't remove following barrier nor - turn the successor edge into fallthru edge. - -2017-01-12 Bill Schmidt - - PR target/79044 - * config/rs6000/rs6000.c (insn_is_swappable_p): Mark - element-reversing loads and stores as not swappable. - -2017-01-12 Nathan Sidwell - Nicolai Stange - - * combine.c (try_combine): Don't ignore result of overlap checking - loop. Combine overlap & asm check into single loop. - -2017-01-12 Richard Biener - - * tree-pretty-print.c (dump_generic_node): Provide -gimple - variant for MEM_REF. Sanitize INTEGER_CST for -gimple. - -2017-01-12 Richard Biener - - * tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION - and TS_TARGET_OPTION directly derive from TS_BASE. - * tree-core.h (tree_optimization_option): Derive from tree_base. - (tree_target_option): Likewise. - -2017-01-11 Uros Bizjak - - * config/i386/i386.c (memory_address_length): Increase len - only when rip_relative_addr_p returns false. - -2017-01-11 Julia Koval - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_SGX_UNSET): New. - (OPTION_MASK_ISA_SGX_SET): New. - (ix86_handle_option): Handle OPT_msgx. - * config.gcc: Added sgxintrin.h. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect sgx. - * config/i386/i386-c.c (ix86_target_macros_internal): Define __SGX__. - * config/i386/i386.c (ix86_target_string): Add -msgx. - (PTA_SGX): New. - (ix86_option_override_internal): Handle new options. - (ix86_valid_target_attribute_inner_p): Add sgx. - * config/i386/i386.h (TARGET_SGX, TARGET_SGX_P): New. - * config/i386/i386.opt: Add msgx. - * config/i386/sgxintrin.h: New file. - * config/i386/x86intrin.h: Add sgxintrin.h. - -2017-01-11 Jakub Jelinek - - PR c++/71537 - * fold-const.c (maybe_nonzero_address): Return 1 for function - local objects. - (tree_single_nonzero_warnv_p): Don't handle function local objects - here. - - PR c++/72813 - * gcc.c (default_compilers): Don't add -o %g.s for -S -save-temps - of c-header. - -2017-01-11 David Malcolm - - PR driver/78877 - * opts.c: Include "spellcheck.h" - (struct string_fragment): New struct. - (struct edit_distance_traits): New - struct. - (get_closest_sanitizer_option): New function. - (parse_sanitizer_options): Offer suggestions for unrecognized arguments. - -2017-01-11 Jakub Jelinek - - * dwarf2out.c (DWARF_COMPILE_UNIT_HEADER_SIZE): For DWARF5 decrease - by 12. - (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): Always - DWARF_COMPILE_UNIT_HEADER_SIZE plus 12. - (DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE): Define. - (calc_base_type_die_sizes): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE - for initial die_offset if dwarf_split_debug_info. - (output_comp_unit): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE for - initial next_die_offset if dwo_id is non-NULL. Don't emit padding - fields. - (output_skeleton_debug_sections): Formatting fix. Use - DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE instead of - DWARF_COMPILE_UNIT_HEADER_SIZE. Don't emit padding. - -2017-01-11 Wilco Dijkstra - - * config/arm/cortex-a53.md: Add bypasses for - cortex_a53_r2f_cvt. - (cortex_a53_r2f): Only use for transfers. - (cortex_a53_f2r): Likewise. - (cortex_a53_r2f_cvt): Add reservation for conversions. - (cortex_a53_f2r_cvt): Likewise. - -2017-01-11 Tamar Christina - - * config/arm/arm_neon.h: Add __artificial__ and gnu_inline - to all inlined functions, change static to extern. - -2017-01-11 Christophe Lyon - - PR target/78253 - * config/arm/arm.c (legitimize_pic_address): Handle reference to - weak symbol. - (arm_assemble_integer): Likewise. - -2017-01-11 Richard Earnshaw - - * config.gcc: Use new awk script to check CPU, FPU and architecture - parameters for --with-... options. - * config/arm/parsecpu.awk: New file - * config/arm/arm-cpus.in: New file. - * config/arm/arm-opts.h: Include arm-cpu.h instead of processing .def - files. - * config/arm/arm.c: Include arm-cpu-data.h instead of processing .def - files. - * config/arm/t-arm: Update dependency rules. - * common/config/arm/arm-common.c: Include arm-cpu-cdata.h instead - of processing .def files. - * config/arm/genopt.sh: Deleted. - * config/arm/gentune.sh: Deleted. - * config/arm/arm-cores.def: Deleted. - * config/arm/arm-arches.def: Deleted. - * config/arm/arm-fpus.def: Deleted. - * config/arm/arm-tune.md: Regenerated. - * config/arm/arm-tables.opt: Regenerated. - * config/arm/arm-cpu.h: New generated file. - * config/arm/arm-cpu-data.h: New generated file. - * config/arm/arm-cpu-cdata.h: New generated file. - -2017-01-11 Maxim Ostapenko - - PR lto/79042 - * lto-cgraph.c (lto_output_varpool_node): Pack dynamically_initialized - bit. - (input_varpool_node): Unpack dynamically_initialized bit. - -2017-01-11 Eric Botcazou - - PR rtl-optimization/79032 - * lra-constraints.c (simplify_operand_subreg): In the MEM case, test - the alignment of the adjusted memory reference against that of MODE, - instead of the alignment of the original memory reference. - -2017-01-11 Martin Jambor - - * hsa.c (hsa_callable_function_p): Revert addition of DECL_ARTIFICIAL - test. - * ipa-hsa.c (process_hsa_functions): Only duplicate non-artificial - decorated functions. - -2017-01-11 Richard Biener - - * tree-vrp.c (evrp_dom_walker::before_dom_children): Also - set range/nonnull info for PHI results. Do not set it on - stmts marked for removal. - -2017-01-10 Eric Botcazou - - * expr.c (store_field): In the bitfield case, fetch the return value - from the registers before applying a single big-endian adjustment. - Always do a final load for a BLKmode value not larger than a word. - -2017-01-10 David Malcolm - - PR c++/77949 - * input.c (selftest::test_accessing_ordinary_linemaps): Verify - that we correctly handle column numbers greater than - LINE_MAP_MAX_COLUMN_NUMBER. - -2017-01-10 Martin Sebor - - PR middle-end/78245 - * gimple-ssa-sprintf.c (get_destination_size): Call - {init,fini}object_sizes. - * tree-object-size.c (addr_object_size): Adjust. - (pass_through_call): Adjust. - (pass_object_sizes::execute): Adjust. - * tree-object-size.h (fini_object_sizes): Declare. - -2017-01-10 Martin Sebor - - PR tree-optimization/78775 - * builtins.c (get_size_range): Move... - * calls.c: ...to here. - (alloc_max_size): Accept zero argument. - (operand_signed_p): Remove. - (maybe_warn_alloc_args_overflow): Call get_size_range. - * calls.h (get_size_range): Declare. - -2017-01-10 Joe Seymour - - * config/msp430/driver-msp430.c (msp430_mcu_data): Sync with data - from TI's devices.csv file as of September 2016. - * config/msp430/msp430.c (msp430_mcu_data): Likewise. - -2017-01-10 Sandra Loosemore - - * doc/extend.texi: Tweak formatting to fix overfull hbox warnings. - * doc/invoke.texi: Likewise. - * doc/md.texi: Likewise. - * doc/objc.texi: Likewise. - -2017-01-10 Joshua Conner - - * config/arm/fuchsia-elf.h: New file. - * config/fuchsia.h: New file. - * config.gcc (*-*-fuchsia*): Set native_system_header_dir. - (aarch64*-*-fuchsia*, arm*-*-fuchsia*, x86_64-*-fuchsia*): Add to - targets. - * config.host: (aarch64*-*-fuchsia*, arm*-*-fuchsia*): Add to hosts. - -2016-01-10 Richard Biener - - PR tree-optimization/79034 - * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds): - Propagate out degenerate PHIs in the joiner. - -2017-01-10 Martin Liska - - * ipa-icf.c (sort_sem_items_by_decl_uid): New function. - (sort_congruence_classes_by_decl_uid): Likewise. - (sort_congruence_class_groups_by_decl_uid): Likewise. - (sem_item_optimizer::merge_classes): Sort class, groups in these - classes and members in the groups by DECL_UID of declarations. - This would make merge operations stable. - -2017-01-10 Martin Liska - - * ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Remove - usage of m_classes_vec. - (sem_item_optimizer::~sem_item_optimizer): Likewise. - (sem_item_optimizer::get_group_by_hash): Likewise. - (sem_item_optimizer::subdivide_classes_by_equality): Likewise. - (sem_item_optimizer::subdivide_classes_by_sensitive_refs): Likewise. - (sem_item_optimizer::verify_classes): Likewise. - (sem_item_optimizer::process_cong_reduction): Likewise. - (sem_item_optimizer::dump_cong_classes): Likewise. - (sem_item_optimizer::merge_classes): Likewise. - * ipa-icf.h (congruence_class_hash): Rename from - congruence_class_group_hash. Remove declaration of m_classes_vec. - -2017-01-10 Andrew Senkevich - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET, - OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET): New. - * config.gcc: Add avx512vpopcntdqintrin.h. - * config/i386/avx512vpopcntdqintrin.h: New. - * config/i386/cpuid.h (bit_AVX512VPOPCNTDQ): New. - * config/i386/i386-builtin-types.def: Add new types. - * config/i386/i386-builtin.def (__builtin_ia32_vpopcountd_v16si, - __builtin_ia32_vpopcountd_v16si_mask, __builtin_ia32_vpopcountq_v8di, - __builtin_ia32_vpopcountq_v8di_mask): New. - * config/i386/i386-c.c (ix86_target_macros_internal): Define - __AVX512VPOPCNTDQ__. - * config/i386/i386.c (ix86_target_string): Add -mavx512vpopcntdq. - (PTA_AVX512VPOPCNTDQ): Define. - * config/i386/i386.h (TARGET_AVX512VPOPCNTDQ, - TARGET_AVX512VPOPCNTDQ_P): Define. - * config/i386/i386.opt: Add mavx512vpopcntdq. - * config/i386/immintrin.h: Include avx512vpopcntdqintrin.h. - * config/i386/sse.md (define_insn "vpopcount"): New. - -2017-01-01 Jan Hubicka - - PR middle-end/77484 - * predict.def (PRED_CALL): Set to 67. - -2017-01-09 Eric Botcazou - - * expr.c (store_field): In the bitfield case, if the value comes from - a function call and is of an aggregate type returned in registers, do - not modify the field mode; extract the value in all cases if the mode - is BLKmode and the size is not larger than a word. - -2017-01-09 Dominique d'Humieres - - PR target/71017 - * config/i386/cpuid.h: Fix undefined behavior. - -2017-01-04 Jeff Law - - PR tree-optimization/79007 - PR tree-optimization/67955 - * tree-ssa-alias.c (same_addr_size_stores_p): Only need to be - conservative for pt.null when flag_non_call_exceptions is on. - -2017-01-09 Jakub Jelinek - - PR translation/79019 - PR translation/79020 - * params.def (PARAM_INLINE_MIN_SPEEDUP, - PARAM_IPA_CP_SINGLE_CALL_PENALTY, - PARAM_USE_AFTER_SCOPE_DIRECT_EMISSION_THRESHOLD): Fix typos - in descriptions. - * config/avr/avr.opt (maccumulate-args): Likewise. - * config/msp430/msp430.opt (mwarn-mcu): Likewise. - * common.opt (freport-bug): Likewise. - * cif-code.def (CIF_FINAL_ERROR): Likewise. - * doc/invoke.texi (ipa-cp-single-call-penalty): Likewise. - * config/s390/s390.c (s390_invalid_binary_op): Fix spelling in - translatable string. - * config/i386/i386.c (function_value_32): Likewise. - * config/nios2/nios2.c (nios2_valid_target_attribute_rec): Likewise. - * config/msp430/msp430.c (msp430_option_override, msp430_attr): - Likewise. - * config/msp430/driver-msp430.c (msp430_select_hwmult_lib): Likewise. - * common/config/msp430/msp430-common.c (msp430_handle_option): - Likewise. - * symtab.c (symtab_node::verify_base): Likewise. - * opts.c (set_debug_level): Likewise. - * tree.c (verify_type_variant): Likewise. Fix typo in comment. - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add - missing whitespace to translatable strings. - * config/avr/avr.md (bswapsi2): Fix typo in comment. - * config/sh/superh.h: Likewise. - * config/i386/xopintrin.h: Likewise. - * config/i386/znver1.md: Likewise. - * config/rs6000/rs6000.c (struct rs6000_opt_mask): Likewise. - * ipa-inline-analysis.c (compute_inline_parameters): Likewise. - * double-int.h (struct double_int): Likewise. - * double-int.c (div_and_round_double): Likewise. - * wide-int.cc: Likewise. - * tree-ssa.c (non_rewritable_mem_ref_base): Likewise. - * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise. - * cfgcleanup.c (crossjumps_occured): Renamed to ... - (crossjumps_occurred): ... this. - (try_crossjump_bb, try_head_merge_bb, try_optimize_cfg, cleanup_cfg): - Adjust all uses. - - PR tree-optimization/78899 - * tree-if-conv.c (version_loop_for_if_conversion): Instead of - returning bool return struct loop *, NULL for failure and the new - loop on success. - (versionable_outer_loop_p): Don't version outer loop if it has - dont_vectorized bit set. - (tree_if_conversion): When versioning outer loop, ensure - tree_if_conversion is performed also on the inner loop of the - non-vectorizable outer loop copy. - * tree-vectorizer.c (set_uid_loop_bbs): Formatting fix. Fold - LOOP_VECTORIZED in inner loop of the scalar outer loop and - prevent vectorization of it. - (vectorize_loops): For outer + inner LOOP_VECTORIZED, ensure - the outer loop vectorization of the non-scalar version is attempted - before vectorization of the inner loop in scalar version. If - outer LOOP_VECTORIZED guarded loop is not vectorized, prevent - vectorization of its inner loop. - * tree-vect-loop-manip.c (rename_variables_in_bb): If outer_loop - has 2 inner loops, rename also on edges from bb whose single pred - is outer_loop->header. Fix typo in function comment. - -2017-01-09 Martin Sebor - - PR bootstrap/79033 - * asan.c (asan_emit_stack_protection): Increase local buffer size - to avoid snprintf truncation warning. - -2017-01-09 Andrew Pinski - - * config/aarch64/aarch64-cores.def: Add thunderx2t99. Change vulcan - to reference thunderx2t99 for the tuning structure - * config/aarch64/aarch64-cost-tables.h (vulcan_extra_costs): - Rename to ... - (thunderx2t99_extra_costs): This. - * config/aarch64/aarch64-tune.md: Regenerate. - * config/aarch64/aarch64.c (vulcan_addrcost_table): Rename to ... - (vulcan_addrcost_table): This. - (vulcan_regmove_cost): Rename to ... - (thunderx2t99_regmove_cost): This. - (vulcan_vector_cost): Rename to ... - (thunderx2t99_vector_cost): this. - (vulcan_branch_cost): Rename to ... - (thunderx2t99_branch_cost): This. - (vulcan_tunings): Rename to ... - (thunderx2t99_tunings): This and s/vulcan/thunderx2t99 . - * doc/invoke.texi (AARCH64/mtune): Add thunderx2t99. - -2017-01-09 Martin Jambor - - PR ipa/78365 - PR ipa/78599 - * ipa-prop.h (ipa_jump_func): Swap positions of vr_known and m_vr. - * ipa-cp.c (ipa_vr_operation_and_type_effects): New function. - (propagate_vr_accross_jump_function): Use the above function for all - value range computations for pass-through jump functions and type - converasion from explicit value range values. - (ipcp_propagate_stage): Do not attempt to deduce types of formal - parameters from TYPE_ARG_TYPES. - * ipa-prop.c (ipa_write_jump_function): Remove trailing whitespace. - (ipa_write_node_info): Stream type of the actual argument. - (ipa_read_node_info): Likewise. Also remove trailing whitespace. - -2017-01-09 Martin Liska - - PR pch/78970 - * gcc.c (driver_handle_option): Handle OPT_E and set have_E. - (lookup_compiler): Do not show error message with have_E. - -2017-01-09 Jakub Jelinek - - PR tree-optimization/78938 - * tree-vect-stmts.c (vectorizable_condition): For non-masked COND_EXPR - where comp_vectype is VECTOR_BOOLEAN_TYPE_P, use - BIT_{NOT,XOR,AND,IOR}_EXPR on the comparison operands instead of - {EQ,NE,GE,GT,LE,LT}_EXPR directly inside of VEC_COND_EXPR. Formatting - fixes. - -2017-01-09 Kyrylo Tkachov - - * tree-ssa-address.c (gen_addr_rtx): Don't handle index if it - is const0_rtx. - -2017-01-09 Richard Biener - - PR tree-optimization/78997 - * tree-vect-slp.c (vect_mask_constant_operand_p): Handle SSA - name condition properly. - -2017-01-09 Richard Biener - - PR debug/79000 - * dwarf2out.c (is_cxx): New overload with context. - (is_naming_typedef_decl): Use it. - -2017-01-08 Sandra Loosemore - - * invoke.texi (Option Summary): Correct spacing in option lists - and add line breaks to fix over-long lines. - -2017-01-08 Sandra Loosemore - - PR middle-end/17660 - - * extend.texi (Common Variable Attributes): Add xref to GCC - Internals manual to explain mode attribute keywords. - -2017-01-08 Sandra Loosemore - - PR other/16519 - * doc/invoke.texi (Option Summary): Move -pthread to Linker Options - and Preprocessor Options. - (Options for Linking): Document -pthread here.... - (RS/6000 and PowerPC Options): ...not here. - (Solaris 2 Options): ...or here. - * doc/cppopts.texi: Document -pthread. - -2017-01-08 Martin Sebor - - PR middle-end/77708 - * doc/invoke.texi (Warning Options): Document -Wformat-truncation. - * gimple-ssa-sprintf.c (call_info::reval_used, call_info::warnopt): - New member functions. - (format_directive): Used them. - (add_bytes): Same. - (pass_sprintf_length::handle_gimple_call): Same. - * graphite-sese-to-poly.c (tree_int_to_gmp): Increase buffer size - to avoid truncation for any argument. - (extract_affine_mul): Same. - * tree.c (get_file_function_name): Same. - -2017-01-01 Jan Hubicka - - PR middle-end/77484 - * predict.def (PRED_INDIR_CALL): Set to 86. - -2017-01-07 Sandra Loosemore - - PR preprocessor/54124 - * doc/cppopts.texi: Reformat -d subtable to list the full name - of the options. Add cross-reference to the docs for the general - compiler -d options. - * doc/invoke.texi (Developer Options): Add cross-reference to the - preprocessor-specific -d option documentation. - -2017-01-07 Sandra Loosemore - - PR preprocessor/13498 - * doc/cpp.texi (Search Path): Rewrite to remove obsolete and - redudant material, and reflect new command-line options. - (System Headers): Likewise. - -2017-01-07 Sandra Loosemore - - * doc/cppdiropts.texi: Merge documentation of -I, -iquote, - -isystem, and -idirafter. Copy-edit. - * doc/cppopts.texi: Copy-edit. Remove contradiction about - default for -ftrack-macro-expansion. Delete obsolete and - badly-formatted implementation details about -fdebug-cpp output. - * doc/cppwarnopts.texi: Copy-edit. - -2017-01-07 David Malcolm - - PR c++/72803 - * input.c (selftest::test_accessing_ordinary_linemaps): Verify - that the transition from a max line width >= 1<<10 to narrower - lines works correctly. - -2017-01-07 Alexandre Oliva - - * doc/options.texi (PerFunction): New. - * opt-functions.awk (switch_flags): Map both Optimization and - PerFunction to CL_OPTIMIZATION. - * opth-gen.awk: Test for PerFunction flag along with - Optimization. - * optc-save-gen.awk: Likewise. Introduce var_opt_hash and set - it only when the latter is present. Skip those that don't in - the hash function generator. - * common.opt (fvar-tracking): Mark as PerFunction instead of - Optimization. - (fvar-tracking-assignments): Likewise. - (fvar-tracking-assignments-toggle): Likewise. - (fvar-tracking-uninit): Likewise. - -2017-01-07 Jakub Jelinek - - PR translation/79018 - * params.def (PARAM_MAX_STORES_TO_MERGE): Add missing space between - the and store. - -2017-01-06 Mikael Pettersson - - PR target/57583 - * config/m68k/m68k.opt (LONG_JUMP_TABLE_OFFSETS): New option. - * config/m68k/linux.h (ASM_RETURN_CASE_JUMP): Handle - TARGET_LONG_JUMP_TABLE_OFFSETS. - * config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise. - * config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise. - * config/m68k/m68k.h (CASE_VECTOR_MODE): Likewise. - (ASM_OUTPUT_ADDR_DIFF_ELF): Likewise. - * config/m68k/m68k.md (tablejump expander): Likewise. - (*tablejump_pcrel_hi): Renamed from unnamed insn, reject - TARGET_LONG_JUMP_TABLE_OFFSETS. - (*tablejump_pcrel_si): New insn, handle TARGET_LONG_JUMP_TABLE_OFFSETS. - * doc/invoke.texi (M68K options): Add -mlong-jump-table-offsets. - -2017-01-06 Edgar E. Iglesias - David Holsgrove - - * common/config/microblaze/microblaze-common.c - (TARGET_EXCEPT_UNWIND_INFO): Remove. - * config/microblaze/microblaze-protos.h (microblaze_eh_return): - New prototype. - * config/microblaze/microblaze.c (microblaze_must_save_register) - (microblaze_expand_epilogue, microblaze_return_addr): Handle - calls_eh_return. - (microblaze_eh_return): New function. - * config/microblaze/microblaze.h (RETURN_ADDR_OFFSET) - (EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM) - (EH_RETURN_STACKADJ_RTX, ASM_PREFERRED_EH_DATA_FORMAT): New macros. - * config/microblaze/microblaze.md (eh_return): New pattern. - -2017-01-06 Jakub Jelinek - - * system.h (GCC_DIAGNOSTIC_PUSH_IGNORED, GCC_DIAGNOSTIC_POP, - GCC_DIAGNOSTIC_STRINGIFY): Define. - - * read-rtl.c (rtx_reader::read_rtx_code): Avoid -Wsign-compare warning. - -2017-01-06 Andre Vieira - - * config/arm/arm.md (): New. - (): New. - * config/arm/arm.c (arm_arch5te): New. - (arm_option_override): Set arm_arch5te. - (arm_coproc_builtin_available): Add support for mcrr, mcrr2, mrrc - and mrrc2. - * config/arm/arm-builtins.c (MCRR_QUALIFIERS): Define to... - (arm_mcrr_qualifiers): ... this. New. - (MRRC_QUALIFIERS): Define to... - (arm_mrrc_qualifiers): ... this. New. - * config/arm/arm_acle.h (__arm_mcrr, __arm_mcrr2, __arm_mrrc, - __arm_mrrc2): New. - * config/arm/arm_acle_builtins.def (mcrr, mcrr2, mrrc, mrrc2): New. - * config/arm/iterators.md (MCRRI, mcrr, MCRR): New. - (MRRCI, mrrc, MRRC): New. - * config/arm/unspecs.md (VUNSPEC_MCRR, VUNSPEC_MCRR2, VUNSPEC_MRRC, - VUNSPEC_MRRC2): New. - -2017-01-06 Andre Vieira - - * config/arm/arm.md (): New. - (): New. - * config/arm/arm.c (arm_coproc_builtin_available): Add - support for mcr, mrc, mcr2 and mrc2. - * config/arm/arm-builtins.c (MCR_QUALIFIERS): Define to... - (arm_mcr_qualifiers): ... this. New. - (MRC_QUALIFIERS): Define to ... - (arm_mrc_qualifiers): ... this. New. - (MCR_QUALIFIERS): Define to ... - (arm_mcr_qualifiers): ... this. New. - * config/arm/arm_acle.h (__arm_mcr, __arm_mrc, __arm_mcr2, - __arm_mrc2): New. - * config/arm/arm_acle_builtins.def (mcr, mcr2, mrc, mrc2): New. - * config/arm/iterators.md (MCRI, mcr, MCR, MRCI, mrc, MRC): New. - * config/arm/unspecs.md (VUNSPEC_MCR, VUNSPEC_MCR2, VUNSPEC_MRC, - VUNSPEC_MRC2): New. - -2017-01-06 Andre Vieira - - * config/arm/arm.md (*ldc): New. - (*stc): New. - (): New. - (): New. - * config/arm/arm.c (arm_coproc_builtin_available): Add - support for ldc,ldcl,stc,stcl,ldc2,ldc2l,stc2 and stc2l. - (arm_coproc_ldc_stc_legitimate_address): New. - * config/arm/arm-builtins.c (arm_type_qualifiers): Add - 'qualifier_const_pointer'. - (LDC_QUALIFIERS): Define to... - (arm_ldc_qualifiers): ... this. New. - (STC_QUALIFIERS): Define to... - (arm_stc_qualifiers): ... this. New. - * config/arm/arm-protos.h - (arm_coproc_ldc_stc_legitimate_address): New. - * config/arm/arm_acle.h (__arm_ldc, __arm_ldcl, __arm_stc, - __arm_stcl, __arm_ldc2, __arm_ldc2l, __arm_stc2, __arm_stc2l): New. - * config/arm/arm_acle_builtins.def (ldc, ldc2, ldcl, ldc2l, stc, - stc2, stcl, stc2l): New. - * config/arm/constraints.md (Uz): New. - * config/arm/iterators.md (LDCI, STCI, ldc, stc, LDC STC): New. - * config/arm/unspecs.md (VUNSPEC_LDC, VUNSPEC_LDC2, VUNSPEC_LDCL, - VUNSPEC_LDC2L, VUNSPEC_STC, VUNSPEC_STC2, VUNSPEC_STCL, - VUNSPEC_STC2L): New. - -2017-01-06 Andre Vieira - - * config/arm/arm.md (): New. - * config/arm/arm.c (neon_const_bounds): Rename this ... - (arm_const_bounds): ... this. - (arm_coproc_builtin_available): New. - * config/arm/arm-builtins.c (SIMD_MAX_BUILTIN_ARGS): Increase. - (arm_type_qualifiers): Add 'qualifier_unsigned_immediate'. - (CDP_QUALIFIERS): Define to... - (arm_cdp_qualifiers): ... this. New. - (void_UP): Define. - (arm_expand_builtin_args): Add case for 6 arguments. - * config/arm/arm-protos.h (neon_const_bounds): Rename this ... - (arm_const_bounds): ... this. - (arm_coproc_builtin_available): New. - * config/arm/arm_acle.h (__arm_cdp): New. - (__arm_cdp2): New. - * config/arm/arm_acle_builtins.def (cdp): New. - (cdp2): New. - * config/arm/iterators.md (CDPI,CDP,cdp): New. - * config/arm/neon.md: Rename all 'neon_const_bounds' to - 'arm_const_bounds'. - * config/arm/types.md (coproc): New. - * config/arm/unspecs.md (VUNSPEC_CDP, VUNSPEC_CDP2): New. - * doc/extend.texi (ACLE): Add a mention of Coprocessor intrinsics. - * doc/sourcebuild.texi (arm_coproc1_ok, arm_coproc2_ok, - arm_coproc3_ok, arm_coproc4_ok): Document new effective targets. - -2017-01-06 Andre Vieira - - * config/arm/arm-builtins.c (arm_unsigned_binop_qualifiers): New. - (UBINOP_QUALIFIERS): New. - (si_UP): Define. - (acle_builtin_data): New. Change comment. - (arm_builtins): Remove ARM_BUILTIN_CRC32B, ARM_BUILTIN_CRC32H, - ARM_BUILTIN_CRC32W, ARM_BUILTIN_CRC32CB, ARM_BUILTIN_CRC32CH, - ARM_BUILTIN_CRC32CW. Add ARM_BUILTIN_ACLE_BASE and include - arm_acle_builtins.def. - (ARM_BUILTIN_ACLE_PATTERN_START): Define. - (arm_init_acle_builtins): New. - (CRC32_BUILTIN): Remove. - (bdesc_2arg): Remove entries for crc32b, crc32h, crc32w, - crc32cb, crc32ch and crc32cw. - (arm_init_crc32_builtins): Remove. - (arm_init_builtins): Use arm_init_acle_builtins rather - than arm_init_crc32_builtins. - (arm_expand_acle_builtin): New. - (arm_expand_builtin): Use 'arm_expand_acle_builtin'. - * config/arm/arm_acle_builtins.def: New. - -2017-01-06 Andre Vieira - - * config/arm/arm-builtins.c (neon_builtin_datum): Rename to .. - (arm_builtin_datum): ... this. - (arm_init_neon_builtin): Rename to ... - (arm_init_builtin): ... this. Add a new parameters PREFIX - and USE_SIG_IN_NAME. - (arm_init_neon_builtins): Replace 'arm_init_neon_builtin' with - 'arm_init_builtin'. Replace type 'neon_builtin_datum' with - 'arm_builtin_datum'. - (arm_init_vfp_builtins): Likewise. - (builtin_arg): Rename enum's replacing 'NEON_ARG' with - 'ARG_BUILTIN' and add a 'ARG_BUILTIN_NEON_MEMORY. - (arm_expand_neon_args): Rename to ... - (arm_expand_builtin_args): ... this. Rename builtin_arg - enum values and differentiate between ARG_BUILTIN_MEMORY - and ARG_BUILTIN_NEON_MEMORY. - (arm_expand_neon_builtin_1): Rename to ... - (arm_expand_builtin_1): ... this. Rename builtin_arg enum - values, arm_expand_builtin_args and add bool parameter NEON. - (arm_expand_neon_builtin): Use arm_expand_builtin_1. - (arm_expand_vfp_builtin): Likewise. - (NEON_MAX_BUILTIN_ARGS): Remove, it was unused. - -2017-01-01 Jan Hubicka - - PR middle-end/77484 - * predict.def (PRED_POLYMORPHIC_CALL): Set to 59. - * predict.c (tree_estimate_probability_bb): Reverse direction of - polymorphic call predictor. - -2017-01-06 David Malcolm - - * passes.c (execute_one_pass): Split out pass-skipping logic into... - (determine_pass_name_match): ...this new function and... - (should_skip_pass_p): ...this new function. - -2017-01-06 Nathan Sidwell - - * ipa-visibility.c (function_and_variable_visibility): Reformat - comments and long lines. Remove extrneous if. - * symtab.c (symtab_node::make_decl_local): Fix code format. - (symtab_node::set_section_for_node): Fix comment typo. - -2017-01-06 Martin Liska - - PR bootstrap/79003 - * lra-constraints.c: Rename invariant to lra_invariant. - * predict.c (set_even_probabilities): Initialize e to NULL. - -2017-01-05 Martin Sebor - - PR tree-optimization/78910 - * gimple-ssa-sprintf.c (tree_digits): Add an argument. - (format_integer): Correct off-by-one error in the handling - of precision with negative numbers in signed conversions.. - -2017-01-05 Eric Botcazou - - * doc/invoke.texi (C Dialect Options): Adjust -fsso-struct entry. - -2017-01-05 Jakub Jelinek - - PR tree-optimization/71016 - * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Pass cond_stmt to - factor_out_conditional_conversion. Formatting fix. - (factor_out_conditional_conversion): Add cond_stmt argument. - If arg1 is INTEGER_CST, punt if new_arg0 is not any operand of - cond_stmt and if arg0_def_stmt is not the only stmt in its bb. - Formatting fix. - -2017-01-05 David Malcolm - - * Makefile.in (OBJS): Add read-md.o, read-rtl.o, - read-rtl-function.o, and selftest-rtl.o. - * config/aarch64/aarch64.c: Include selftest.h and selftest-rtl.h. - (selftest::aarch64_test_loading_full_dump): New function. - (selftest::aarch64_run_selftests): New function. - (TARGET_RUN_TARGET_SELFTESTS): Wire it up to - selftest::aarch64_run_selftests. - * config/i386/i386.c - (selftest::ix86_test_loading_dump_fragment_1): New function. - (selftest::ix86_test_loading_call_insn): New function. - (selftest::ix86_test_loading_full_dump): New function. - (selftest::ix86_test_loading_unspec): New function. - (selftest::ix86_run_selftests): Call the new functions. - * emit-rtl.c (maybe_set_max_label_num): New function. - * emit-rtl.h (maybe_set_max_label_num): New decl. - * function.c (instantiate_decls): Guard call to - instantiate_decls_1 with if (DECL_INITIAL (fndecl)). - * function-tests.c (selftest::verify_three_block_rtl_cfg): Remove - "static". - * gensupport.c (gen_reader::gen_reader): Pass "false" - for new "compact" param of rtx_reader. - * print-rtl.c (rtx_writer::print_rtx_operand): Print "(nil)" - rather than an empty string for NULL strings. - * read-md.c: Potentially include config.h rather than bconfig.h. - Wrap include of errors.h with #ifdef GENERATOR_FILE. - (have_error): New global, copied from errors.c. - (md_reader::read_name): Rename to... - (md_reader::read_name_1): ...this, adding "out_loc" param, - and converting "missing name or number" to returning false, rather - than failing. - (md_reader::read_name): Reimplement in terms of read_name_1. - (md_reader::read_name_or_nil): New function. - (md_reader::read_string): Handle "(nil)" by returning NULL. - (md_reader::md_reader): Add new param "compact". - (md_reader::read_md_files): Wrap with #ifdef GENERATOR_FILE. - (md_reader::read_file): New method. - * read-md.h (md_reader::md_reader): Add new param "compact". - (md_reader::read_file): New method. - (md_reader::is_compact): New accessor. - (md_reader::read_name): Convert return type from void to file_location. - (md_reader::read_name_or_nil): New decl. - (md_reader::read_name_1): New decl. - (md_reader::m_compact): New field. - (noop_reader::noop_reader): Pass "false" for new "compact" param - of rtx_reader. - (rtx_reader::rtx_reader): Add new "compact" param. - (rtx_reader::read_rtx_operand): Make virtual and convert return - type from void to rtx. - (rtx_reader::read_until): New decl. - (rtx_reader::handle_any_trailing_information): New virtual function. - (rtx_reader::postprocess): New virtual function. - (rtx_reader::finalize_string): New virtual function. - (rtx_reader::m_in_call_function_usage): New field. - (rtx_reader::m_reuse_rtx_by_id): New field. - * read-rtl-function.c: New file. - * selftest-rtl.c (selftest::assert_rtx_ptr_eq_at): New function. - * selftest-rtl.h (ASSERT_RTX_PTR_EQ): New macro. - (selftest::verify_three_block_rtl_cfg): New decl. - * read-rtl-function.h: New file. - * read-rtl.c: Potentially include config.h rather than bconfig.h. - For host, include function.h, memmodel.h, and emit-rtl.h. - (one_time_initialization): New function. - (struct compact_insn_name): New struct. - (compact_insn_names): New array. - (find_code): Handle insn codes in compact dumps. - (apply_subst_iterator): Wrap with #ifdef GENERATOR_FILE. - (bind_subst_iter_and_attr): Likewise. - (add_condition_to_string): Likewise. - (add_condition_to_rtx): Likewise. - (apply_attribute_uses): Likewise. - (add_current_iterators): Likewise. - (apply_iterators): Likewise. - (initialize_iterators): Guard usage of apply_subst_iterator with - #ifdef GENERATOR_FILE. - (read_conditions): Wrap with #ifdef GENERATOR_FILE. - (md_reader::read_mapping): Likewise. - (add_define_attr_for_define_subst): Likewise. - (add_define_subst_attr): Likewise. - (read_subst_mapping): Likewise. - (check_code_iterator): Likewise. - (rtx_reader::read_rtx): Likewise. Move one-time initialization - logic to... - (one_time_initialization): New function. - (rtx_reader::read_until): New method. - (read_flags): New function. - (parse_reg_note_name): New function. - (rtx_reader::read_rtx_code): Initialize "iterator" to NULL. - Handle reuse_rtx ids. - Wrap iterator lookup within #ifdef GENERATOR_FILE. - Add parsing support for RTL dumps, mirroring the special-cases in - print_rtx, by calling read_flags, reading REG_NOTE names, INSN_UID - values, and calling handle_any_trailing_information. - (rtx_reader::read_rtx_operand): Convert return type from void - to rtx, returning return_rtx. Handle case 'e'. Call - finalize_string on XSTR and XTMPL fields. - (rtx_reader::read_nested_rtx): Handle dumps in which trailing - "(nil)" values were omitted. Call the postprocess vfunc on the - return_rtx. - (rtx_reader::rtx_reader): Add new "compact" param and pass to base - class ctor. Initialize m_in_call_function_usage. Call - one_time_initialization. - * rtl-tests.c (selftest::test_uncond_jump): Call - set_new_first_and_last_insn. - * rtl.h (read_rtx): Wrap decl with #ifdef GENERATOR_FILE. - * selftest-rtl.c: New file. - * selftest-rtl.h (class selftest::rtl_dump_test): New class. - (selftest::get_insn_by_uid): New decl. - * selftest-run-tests.c (selftest::run_tests): Call - read_rtl_function_c_tests. - * selftest.h (selftest::read_rtl_function_c_tests): New decl. - * tree-dfa.c (ssa_default_def): Return NULL_TREE for rtl function - dumps. - -2017-01-05 Uros Bizjak - - * config/i386/i386.md (*testqi_ext_3): No need to handle memory - operands in a special way. Assert that pos+len <= mode precision. - -2017-01-05 Jakub Jelinek - - * common.opt (fvect-cost-model): Remove RejectNegative flag, use - 3 argument Alias with unlimited for the negative form. - (fno-vect-cost-model): Removed. - -2017-01-05 Martin Liska - - * hsa-gen.c (gen_hsa_divmod): New function. - (gen_hsa_insn_for_internal_fn_call): Use the function for IFN_DIVMOD. - -2017-01-05 Martin Liska - - PR pch/78970 - * gcc.c (lookup_compiler): Reject '-' filename for a precompiled - header. - -2017-01-05 Andreas Krebbel - - * config/s390/s390.c (s390_expand_setmem): Unroll the loop for - small constant length operands. - -2017-01-05 Andreas Krebbel - - * config/s390/s390.c (s390_expand_setmem): Avoid overlapping bytes - between loop iterations. - -2017-01-05 Martin Liska - - PR sanitizer/78815 - * gimplify.c (gimplify_decl_expr): Compare to - asan_poisoned_variables instread of checking flags. - (gimplify_target_expr): Likewise. - (gimplify_expr): Likewise. - (gimplify_function_tree): Conditionally initialize - asan_poisoned_variables. - -2017-01-04 Jeff Law - - PR tree-optimizatin/78812 - * rtl.h (contains_mem_rtx_p): Prototype. - * ifcvt.c (containts_mem_rtx_p): Move from here to... - * rtlanal.c (contains_mem_rtx_p): Here and remove static linkage. - * gcse.c (prune_expressions): Use contains_mem_rtx_p to discover - and prune MEMs that are not at the toplevel of a SET_SRC rtx. Look - through ZERO_EXTEND and SIGN_EXTEND when trying to avoid pruning MEMs. - -2017-01-04 Alexandre Oliva - - * input.c (assert_char_at_range): Default-initialize actual_range. - -2017-01-04 Alexandre Oliva - - * df-scan.c (df_ref_create_structure): Make regno unsigned, - to match the caller. - -2017-01-04 Alexandre Oliva - - * cfgexpand.c (expand_gimple_basic_block): Disregard debug - insns after final jump in test to emit dummy move. - -2017-01-04 Alexandre Oliva - - * gimple-iterator.h (gsi_one_nondebug_before_end_p): New. - * tree-eh.c (cleanup_empty_eh): Skip more debug stmts. - -2017-01-04 Alexandre Oliva - - * multiple_target.c (create_dispatcher_calls): Init e_next. - * tree-ssa-loop-split.c (split_loop): Init border. - * tree-vect-loop.c (vect_determine_vectorization_factor): Init - scalar_type. - -2017-01-04 Michael Meissner - - PR target/71977 - PR target/70568 - PR target/78823 - * config/rs6000/predicates.md (sf_subreg_operand): New predicate. - (altivec_register_operand): Do not return true if the operand - contains a SUBREG mixing SImode and SFmode. - (vsx_register_operand): Likewise. - (vsx_reg_sfsubreg_ok): New predicate. - (vfloat_operand): Do not return true if the operand contains a - SUBREG mixing SImode and SFmode. - (vint_operand): Likewise. - (vlogical_operand): Likewise. - (gpc_reg_operand): Likewise. - (int_reg_operand): Likewise. - * config/rs6000/rs6000-protos.h (valid_sf_si_move): Add declaration. - * config/rs6000/rs6000.c (valid_sf_si_move): New function to - determine if a MOVSI or MOVSF operation contains SUBREGs that mix - SImode and SFmode. - (rs6000_emit_move_si_sf_subreg): New helper function. - (rs6000_emit_move): Call rs6000_emit_move_si_sf_subreg to possbily - fixup SUBREGs involving SImode and SFmode. - * config/rs6000/vsx.md (SFBOOL_*): New constants that are operand - numbers for the new peephole2 optimization. - (peephole2 for SFmode unions): New peephole2 to optimize cases in - the GLIBC math library that do AND/IOR/XOR operations on single - precision floating point. - * config/rs6000/rs6000.h (TARGET_NO_SF_SUBREG): New internal - target macros to say whether we need to avoid SUBREGs mixing - SImode and SFmode. - (TARGET_ALLOW_SF_SUBREG): Likewise. - * config/rs6000/rs6000.md (UNSPEC_SF_FROM_SI): New unspecs. - (UNSPEC_SI_FROM_SF): Likewise. - (iorxor): Change spacing. - (and_ior_xor): New iterator for AND, IOR, and XOR. - (movsi_from_sf): New insns for SImode/SFmode SUBREG support. - (movdi_from_sf_zero_ext): Likewise. - (mov_hardfloat, FMOVE32 iterator): Use register_operand - instead of gpc_reg_operand. Add SImode/SFmode SUBREG support. - (movsf_from_si): New insn for SImode/SFmode SUBREG support. - (fma4): Use gpc_reg_operand instead of register_operand. - (fms4): Likewise. - (fnma4): Likewise. - (fnms4): Likewise. - (nfma4): Likewise. - (nfms4): Likewise. - -2017-01-04 Marek Polacek - - PR c++/64767 - * doc/invoke.texi: Document -Wpointer-compare. - -2017-01-04 Jakub Jelinek - - * optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without - RejectNegative. - - * dwarf2out.c (output_loc_list): Don't throw away 64K+ location - descriptions for -gdwarf-5 and emit them as uleb128 instead of - 2-byte data. - -2017-01-04 Kelvin Nilsen - - PR target/78056 - * doc/sourcebuild.texi (PowerPC-specific attributes): Add - documentation of the powerpc_popcntb_ok attribute. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Add - code to issue warning messages if a requested CPU configuration is - not supported by the binary (assembler and loader) toolchain. - (spe_init_builtins): Add two assertions to prevent ICE if attempt is - made to define a built-in function that has been disabled. - (paired_init_builtins): Add assertion to prevent ICE if attempt is - made to define a built-in function that has been disabled. - (altivec_init_builtins): Add comment explaining why definition - of the DST built-in functions is not preceded by an assertion - check. Add assertions to prevent ICE if attempts are made to - define an altivec predicate or an abs* built-in function that has - been disabled. - (htm_init_builtins): Add comment explaining why definition of the - htm built-in functions is not preceded by an assertion check. - -2017-01-04 Jeff Law - - PR tree-optimizatin/67955 - * tree-ssa-alias.c (same_addr_size_stores_p): Check offsets first. - Allow any SSA_VAR_P as the base objects. Use integer_zerop. Verify - the points-to solution does not include pt_null. Use DECL_PT_UID - unconditionally. - -2017-01-04 Uros Bizjak - - * config/i386/i386.md (HI/SImode test with imm to QImode splitters): - Use gen_int_mode instead of gen_lopwart for const_int operands. - -2017-01-04 Jakub Jelinek - - PR tree-optimization/71563 - * match.pd: Simplify X << Y into X if Y is known to be 0 or - out of range value - has low bits known to be zero. - -2017-01-04 Alan Modra - - * Makefile.in (aclocal_deps): Update and order as per aclocal.m4. - * configure: Regenerate. - * config.in: Regenerate. - -2017-01-04 Jakub Jelinek - - PR bootstrap/77569 - * input.c (ebcdic_execution_charset::on_error): Don't use strstr for - a substring of the message, but strcmp with the whole message. Ifdef - ENABLE_NLS, translate the message first using dgettext. - -2017-01-03 Jeff Law - - PR tree-optimizatin/78856 - * tree-ssa-threadupdate.c: Include tree-vectorizer.h. - (mark_threaded_blocks): Remove code to truncate thread paths that - cross multiple loop headers. Instead invalidate the cached loop - iteration information and handle case of a thread path walking - into an irreducible region. - -2017-01-03 Michael Meissner - - PR target/78900 - * config/rs6000/rs6000.c (rs6000_split_signbit): Change some - assertions. Add support for doing the signbit if the IEEE 128-bit - floating point value is in a GPR. - * config/rs6000/rs6000.md (Fsignbit): Delete. - (signbit2_dm): Delete using and just use "wa". - Update the length attribute if the value is in a GPR. - (signbit2_dm_ext): Add combiner pattern to eliminate - the sign or zero extension instruction, since the value is always 0/1. - (signbit2_dm2): Delete using . - - PR target/78953 - * config/rs6000/vsx.md (vsx_extract__store_p9): If we are - extracting SImode to a GPR register so that we can generate a - store, limit the vector to be in a traditional Altivec register - for the vextuwrx instruction. - -2017-01-03 Ian Lance Taylor - - * godump.c (go_format_type): Treat ENUMERAL_TYPE like INTEGER_TYPE. - -2017-01-03 Martin Sebor - - PR tree-optimization/78696 - * gimple-ssa-sprintf.c (format_floating): Correct handling of - precision. Use MPFR for %f for greater fidelity. Correct handling - of %g. - (pass_sprintf_length::compute_format_length): Set width and precision - specified by asrerisk to void_node for vararg functions. - (try_substitute_return_value): Adjust dump output. - -2017-01-03 David Edelsohn - - * doc/invoke.texi (RS6000 options): LRA is enabled by default. - -2017-01-03 Eric Botcazou - - * doc/invoke.texi (SPARC options): Document -mlra as the default. - * config/sparc/sparc.c (sparc_option_override): Force LRA unless - -mlra/-mno-lra was passed to the compiler. - -2017-01-03 James Cowgill - - PR rtl-optimization/65618 - * emit-rtl.c (try_split): Move initialization of "before" and - "after" to just before the call to emit_insn_after_setloc. - -2017-01-03 Gerald Pfeifer - - * doc/md.texi (Standard Names): Remove reference to Java frontend. - -2017-01-03 Pierre-Marie de Rodat - - * dwarf2out.c (gen_enumeration_type_die): When - -gno-strict-dwarf, add a DW_AT_encoding attribute. - -2017-01-03 Jakub Jelinek - - PR tree-optimization/78965 - * gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length): - Change first argument from const call_info & to call_info &. For %n - set info.nowrite to false. - - PR middle-end/78901 - * gimple-ssa-sprintf.c (try_substitute_return_value): Don't change - possibly throwing calls. - - * genmatch.c (dt_node::gen_kids_1): If generic_exprs include SSA_NAME - and exprs_len || fns_len, emit the code for SSA_NAME next to the exprs - and fns handling, rather than in a separate case SSA_NAME. - -2017-01-02 Jeff Law - - * config/darwin-driver.c (darwin_driver_init): Const-correctness - fixes for first_period and second_period variables. - -2017-01-02 Uros Bizjak - - PR target/78967 - * config/i386/i386.md (UNSPEC_NOREX_MEM): New unspec. - (*insvqi_1): New insn pattern. - (*insvqi_1_mem_rex64): Ditto. - (*insvqi_2): Ditto. - (*insvqi_3): Rename from *insvqi. - - (*extzvqi_mem_rex64): Add UNSPEC_NOREX_MEM tag. - -2017-01-02 Gerald Pfeifer - - * doc/cfg.texi (Edges): Remove reference to Java. - (Maintaining the CFG): Ditto. - -2017-01-01 Jan Hubicka - - PR middle-end/77674 - * symtab.c (symtab_node::binds_to_current_def_p): Fix handling of - transparent aliases. - -2017-01-01 Jan Hubicka - - PR middle-end/77484 - * predict.def (PRED_CALL): Update hitrate. - (PRED_INDIR_CALL, PRED_POLYMORPHIC_CALL): New predictors. - * predict.c (tree_estimate_probability_bb): Split CALL predictor - into direct/indirect/polymorphic variants. - -2017-01-01 Jakub Jelinek - - Update copyright years. - - * gcc.c (process_command): Update copyright notice dates. - * gcov-dump.c (print_version): Ditto. - * gcov.c (print_version): Ditto. - * gcov-tool.c (print_version): Ditto. - * gengtype.c (create_file): Ditto. - * doc/cpp.texi: Bump @copying's copyright year. - * doc/cppinternals.texi: Ditto. - * doc/gcc.texi: Ditto. - * doc/gccint.texi: Ditto. - * doc/gcov.texi: Ditto. - * doc/install.texi: Ditto. - * doc/invoke.texi: Ditto. -Copyright (C) 2017 Free Software Foundation, Inc. +Copyright (C) 2018 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/ChangeLog-2017 b/gcc/ChangeLog-2017 new file mode 100644 index 00000000000..122911df180 --- /dev/null +++ b/gcc/ChangeLog-2017 @@ -0,0 +1,41783 @@ +2017-12-31 Jakub Jelinek + + PR target/83536 + * config/i386/i386.c (ix86_attribute_table): Remove excess + initializer for "shared" attribute. + +2017-12-30 Tom de Vries + + PR libgomp/83046 + * omp-expand.c (expand_omp_target): If in_lto_p, mark offload_funcs with + DECL_PRESERVE_P. + * lto-streamer-out.c (prune_offload_funcs): New function. Remove + offload_funcs entries that no longer have a corresponding cgraph_node. + Mark the remaining ones as DECL_PRESERVE_P. + (output_lto): Call prune_offload_funcs. + +2017-12-30 Jakub Jelinek + + * config/i386/sse.md (vgf2p8affineinvqb_, + vgf2p8affineqb_, vgf2p8mulb_, + vpshrd_, vpshld_, + vpshrdv_, vpshrdv__mask, vpshrdv__maskz, + vpshrdv__maskz_1, vpshldv_, vpshldv__mask, + vpshldv__maskz, vpshldv__maskz_1, vpdpbusd_, + vpdpbusd__mask, vpdpbusd__maskz, vpdpbusd__maskz_1, + vpdpbusds_, vpdpbusds__mask, vpdpbusds__maskz, + vpdpbusds__maskz_1, vpdpwssd_, vpdpwssd__mask, + vpdpwssd__maskz, vpdpwssd__maskz_1, vpdpwssds_, + vpdpwssds__mask, vpdpwssds__maskz, + vpdpwssds__maskz_1, vaesdec_, vaesdeclast_, + vaesenc_, vpclmulqdq_, + avx512vl_vpshufbitqmb): Formatting fixes. + +2017-12-28 Michael Meissner + + * builtins.def: (_Float and _FloatX BUILT_IN_CEIL): Add + _Float and _FloatX variants for rounding built-in + functions. + (_Float and _FloatX BUILT_IN_FLOOR): Likewise. + (_Float and _FloatX BUILT_IN_NEARBYINT): Likewise. + (_Float and _FloatX BUILT_IN_RINT): Likewise. + (_Float and _FloatX BUILT_IN_ROUND): Likewise. + (_Float and _FloatX BUILT_IN_TRUNC): Likewise. + * builtins.c (mathfn_built_in_2): Likewise. + * internal-fn.def (CEIL): Likewise. + (FLOOR): Likewise. + (NEARBYINT): Likewise. + (RINT): Likewise. + (ROUND): Likewise. + (TRUNC): Likewise. + * convert.c (convert_to_integer_1): Likewise. + * fold-const.c (tree_call_nonnegative_warnv_p): Likewise. + (integer_valued_real_call_p): Likewise. + * fold-const-call.c (fold_const_call_ss): Likewise. + * gencfn-macros.c (print_case_cfn): Change CFN and operator + printers to take a const char * suffix instead of a bool. + (print_define_operator_list): Likewise. + (fltall_suffixes): New list of suffixes, that include the + traditional suffixes as well as all of the _Float and + _FloatX suffixes. + (main): For _Float and _FloatX functions, emit both + _FN and _ALL variants. The _FN variant only + has the _Float and _FloatX case names or operators. The + _ALL variant has both the traditional and the + _Float/_FloatX case names or operators. + * match.pd (COPYSIGN optimizations): Provide optimizations for + _Float and _FloatX types where possible. + (MIN/MAX optimizations): Likewise. + (sqrt optimizations): Likewise. + (rounding optimizations): Likewise. + +2017-12-28 Richard Sandiford + + * config/powerpcspe/powerpcspe.md (ieee_128bit_negative_zero): Use + gen_int_mode rather than GEN_INT. + * config/rs6000/rs6000.md (ieee_128bit_negative_zero): Likewise. + +2017-12-28 Richard Sandiford + + * emit-rtl.c (gen_const_vec_series): Use valid_for_const_vector_p + instead of CONSTANT_P. + (gen_vec_series): Likewise. + * simplify-rtx.c (simplify_binary_operation_1): Likewise. + +2017-12-28 Andreas Schwab + + * config/m68k/m68k.md (ashrdi3_const1, lshrdi3_const1): Add + CC_STATUS_INIT. + +2017-12-27 Kugan Vivekanandarajah + + * config/aarch64/aarch64-simd.md (aarch64_ld1x2): New. + (aarch64_ld1x2): Likewise. + (aarch64_simd_ld1_x2): Likewise. + (aarch64_simd_ld1_x2): Likewise. + * config/aarch64/arm_neon.h (vld1_u8_x2): New. + (vld1_s8_x2): Likewise. + (vld1_u16_x2): Likewise. + (vld1_s16_x2): Likewise. + (vld1_u32_x2): Likewise. + (vld1_s32_x2): Likewise. + (vld1_u64_x2): Likewise. + (vld1_s64_x2): Likewise. + (vld1_f16_x2): Likewise. + (vld1_f32_x2): Likewise. + (vld1_f64_x2): Likewise. + (vld1_p8_x2): Likewise. + (vld1_p16_x2): Likewise. + (vld1_p64_x2): Likewise. + (vld1q_u8_x2): Likewise. + (vld1q_s8_x2): Likewise. + (vld1q_u16_x2): Likewise. + (vld1q_s16_x2): Likewise. + (vld1q_u32_x2): Likewise. + (vld1q_s32_x2): Likewise. + (vld1q_u64_x2): Likewise. + (vld1q_s64_x2): Likewise. + (vld1q_f16_x2): Likewise. + (vld1q_f32_x2): Likewise. + (vld1q_f64_x2): Likewise. + (vld1q_p8_x2): Likewise. + (vld1q_p16_x2): Likewise. + (vld1q_p64_x2): Likewise. + +2017-12-27 Martin Liska + + PR tree-optimization/83552 + * tree-ssa-strlen.c (fold_strstr_to_strncmp): Assign result + of get_string_lenth to a SSA_NAME if not a GIMPLE value. + +2017-12-27 Tom de Vries + + * config/nvptx/nvptx.c (nvptx_option_override): Disable + -gstatement-frontiers. + +2017-12-26 Alexander Monakov + + PR rtl-optimization/83513 + * sel-sched.c (sel_rank_for_schedule): Order by non-zero usefulness + before priority comparison. + +2017-12-25 Jakub Jelinek + + PR target/83488 + * config/i386/i386.opt (-mavx512vpopcntdq, -mmavx512bitalg): Move from + ix86_isa_flags2 to ix86_isa_flags. + * config/i386/i386-c.c (ix86_target_macros_internal): Test + OPTION_MASK_ISA_AVX512BITALG and OPTION_MASK_ISA_AVX512VPOPCNTDQ in + isa_flags rather than isa_flags2. + * config/i386/i386.c (ix86_target_string): Move -mavx512vpopcntdq + and -mavx512bitalg from isa2_opts to isa_opts. + (ix86_option_override_internal): Test OPTION_MASK_ISA_AVX512VPOPCNTDQ + in x_ix86_isa_flags_explicit rather than x_ix86_isa_flags2_explicit + and set it in x_ix86_isa_flags rather than x_ix86_isa_flags2. + Formatting fixes. + (def_builtin): Treat OPTION_MASK_ISA_AVX512BW or + OPTION_MASK_ISA_AVX512F ored with another option similarly to + OPTION_MASK_ISA_AVX512VL. Even for OPTION_MASK_ISA_AVX512VL don't + clear it if mask is just OPTION_MASK_ISA_AVX512VL itself. + (ix86_expand_builtin): Don't handle OPTION_MASK_ISA_GFNI and + OPTION_MASK_ISA_VPCLMULQDQ specially, instead handle + OPTION_MASK_ISA_AVX512BW and OPTION_MASK_ISA_AVX512F that way. + * config/i386/i386-builtin.def: Move AVX512VPOPCNTDQ and AVX512BITALG + builtins from bdesc_args2 to bdesc_args section. + (__builtin_ia32_compressstoreuqi512_mask, + __builtin_ia32_compressstoreuhi512_mask, + __builtin_ia32_compressstoreuqi256_mask, + __builtin_ia32_expandloadqi512_mask, + __builtin_ia32_expandloadqi512_maskz, + __builtin_ia32_expandloadhi512_mask, + __builtin_ia32_expandloadhi512_maskz, + __builtin_ia32_compressqi512_mask, __builtin_ia32_compresshi512_mask, + __builtin_ia32_compressqi256_mask, __builtin_ia32_expandqi512_mask, + __builtin_ia32_expandqi512_maskz, __builtin_ia32_expandhi512_mask, + __builtin_ia32_expandhi512_maskz, __builtin_ia32_expandqi256_mask, + __builtin_ia32_expandqi256_maskz, __builtin_ia32_vpshrd_v32hi_mask, + __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshrdv_v32hi_mask, + __builtin_ia32_vpshrdv_v32hi_maskz, __builtin_ia32_vpshldv_v32hi_mask, + __builtin_ia32_vpshldv_v32hi_maskz, + __builtin_ia32_vpopcountb_v64qi_mask, + __builtin_ia32_vpopcountw_v32hi_mask, + __builtin_ia32_vpshufbitqmb512_mask, + __builtin_ia32_vpshufbitqmb256_mask): Add + " | OPTION_MASK_ISA_AVX512BW". + (__builtin_ia32_expandloadqi256_mask, + __builtin_ia32_expandloadqi256_maskz, + __builtin_ia32_vpopcountb_v32qi_mask): Add + " | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW". + (__builtin_ia32_expandloadhi256_mask, + __builtin_ia32_expandloadhi256_maskz, + __builtin_ia32_expandloadqi128_mask, + __builtin_ia32_expandloadqi128_maskz, + __builtin_ia32_expandloadhi128_mask, + __builtin_ia32_expandloadhi128_maskz, + __builtin_ia32_vpshrd_v16hi, __builtin_ia32_vpshrd_v16hi_mask, + __builtin_ia32_vpshrd_v8hi, __builtin_ia32_vpshrd_v8hi_mask, + __builtin_ia32_vpshrd_v8si, __builtin_ia32_vpshrd_v8si_mask, + __builtin_ia32_vpshrd_v4si, __builtin_ia32_vpshrd_v4si_mask, + __builtin_ia32_vpshrd_v4di, __builtin_ia32_vpshrd_v4di_mask, + __builtin_ia32_vpshrd_v2di, __builtin_ia32_vpshrd_v2di_mask, + __builtin_ia32_vpshld_v16hi, __builtin_ia32_vpshld_v16hi_mask, + __builtin_ia32_vpshld_v8hi, __builtin_ia32_vpshld_v8hi_mask, + __builtin_ia32_vpshld_v8si, __builtin_ia32_vpshld_v8si_mask, + __builtin_ia32_vpshld_v4si, __builtin_ia32_vpshld_v4si_mask, + __builtin_ia32_vpshld_v4di, __builtin_ia32_vpshld_v4di_mask, + __builtin_ia32_vpshld_v2di, __builtin_ia32_vpshld_v2di_mask, + __builtin_ia32_vpshrdv_v16hi, __builtin_ia32_vpshrdv_v16hi_mask, + __builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi, + __builtin_ia32_vpshrdv_v8hi_mask, __builtin_ia32_vpshrdv_v8hi_maskz, + __builtin_ia32_vpshrdv_v8si, __builtin_ia32_vpshrdv_v8si_mask, + __builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si, + __builtin_ia32_vpshrdv_v4si_mask, __builtin_ia32_vpshrdv_v4si_maskz, + __builtin_ia32_vpshrdv_v4di, __builtin_ia32_vpshrdv_v4di_mask, + __builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di, + __builtin_ia32_vpshrdv_v2di_mask, __builtin_ia32_vpshrdv_v2di_maskz, + __builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask, + __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi, + __builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz, + __builtin_ia32_vpshldv_v8si, __builtin_ia32_vpshldv_v8si_mask, + __builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si, + __builtin_ia32_vpshldv_v4si_mask, __builtin_ia32_vpshldv_v4si_maskz, + __builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask, + __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di, + __builtin_ia32_vpshldv_v2di_mask, __builtin_ia32_vpshldv_v2di_maskz, + __builtin_ia32_vpopcountb_v32qi, __builtin_ia32_vpopcountb_v16qi, + __builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v16hi, + __builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi, + __builtin_ia32_vpopcountw_v8hi_mask): Add + " | OPTION_MASK_ISA_AVX512VL". + * config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16, + _mm512_shrdi_epi32, _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32, + _mm512_shrdi_epi64, _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64, + _mm512_shldi_epi16, _mm512_shldi_epi32, _mm512_mask_shldi_epi32, + _mm512_maskz_shldi_epi32, _mm512_shldi_epi64, _mm512_mask_shldi_epi64, + _mm512_maskz_shldi_epi64, _mm512_shrdv_epi16, _mm512_shrdv_epi32, + _mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64, + _mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64, _mm512_shldv_epi16, + _mm512_shldv_epi32, _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32, + _mm512_shldv_epi64, _mm512_mask_shldv_epi64, + _mm512_maskz_shldv_epi64): Don't require avx512bw for these intrinsics. + * config/i386/avx512bitalgintrin.h (_mm_bitshuffle_epi64_mask, + _mm_mask_bitshuffle_epi64_mask): Likewise. + * common/config/i386/i386-common.c + (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET, + OPTION_MASK_ISA_AVX512BITALG_SET): Or in OPTION_MASK_ISA_AVX512F_SET. + (OPTION_MASK_ISA_AVX512F_UNSET): Or in + OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET and + OPTION_MASK_ISA_AVX512BITALG_UNSET. + (OPTION_MASK_ISA2_AVX512F_UNSET, + OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Define. + (ix86_handle_option): For -mno-general-regs-only, clear from + ix86_isa_flags2 OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET rather than + just OPTION_MASK_ISA_MPX. For -mno-sse{,2,3,4,4.1,4.2,avx,avx2} and + -mno-ssse3 clear OPTION_MASK_ISA2_AVX512F_UNSET bits from + ix86_isa_flags2. For -mno-avx512f likewise, instead of masking + individually listed ISAs. For -m{,no-}avx512{vpopcntdq,bitalg} adjust + for moving from ix86_isa_flags2 to ix86_isa_flags. + +2017-12-23 Jakub Jelinek + + PR c++/83553 + * fold-const.c (struct contains_label_data): New type. + (contains_label_1): Return non-NULL even for CASE_LABEL_EXPR, unless + inside of a SWITCH_BODY seen during the walk. + (contains_label_p): Use walk_tree instead of + walk_tree_without_duplicates, prepare data for contains_label_1 and + provide own pset. + +2017-12-22 Jakub Jelinek + + PR debug/83547 + * tree-iterator.c (alloc_stmt_list): Start with cleared + TREE_SIDE_EFFECTS regardless whether a new STATEMENT_LIST is allocated + or old one reused. + + PR target/83488 + * config/i386/avx512vnniintrin.h: Don't check for __AVX512F__ nor + enable avx512f explicitly in #pragma GCC target. + * config/i386/i386-builtin.def (__builtin_ia32_vpdpbusd_v8si, + __builtin_ia32_vpdpbusd_v8si_mask, __builtin_ia32_vpdpbusd_v8si_maskz, + __builtin_ia32_vpdpbusd_v4si, __builtin_ia32_vpdpbusd_v4si_mask, + __builtin_ia32_vpdpbusd_v4si_maskz, __builtin_ia32_vpdpbusds_v8si, + __builtin_ia32_vpdpbusds_v8si_mask, + __builtin_ia32_vpdpbusds_v8si_maskz, __builtin_ia32_vpdpbusds_v4si, + __builtin_ia32_vpdpbusds_v4si_mask, + __builtin_ia32_vpdpbusds_v4si_maskz, __builtin_ia32_vpdpwssd_v8si, + __builtin_ia32_vpdpwssd_v8si_mask, __builtin_ia32_vpdpwssd_v8si_maskz, + __builtin_ia32_vpdpwssd_v4si, __builtin_ia32_vpdpwssd_v4si_mask, + __builtin_ia32_vpdpwssd_v4si_maskz, __builtin_ia32_vpdpwssds_v8si, + __builtin_ia32_vpdpwssds_v8si_mask, + __builtin_ia32_vpdpwssds_v8si_maskz, __builtin_ia32_vpdpwssds_v4si, + __builtin_ia32_vpdpwssds_v4si_mask, + __builtin_ia32_vpdpwssds_v4si_maskz): Use + OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL instead of + just OPTION_MASK_ISA_AVX512VNNI. + +2017-12-22 Martin Jambor + + PR lto/82027 + * lto-cgraph.c (output_cgraph_opt_summary_p): Also check former + clones. + +2017-12-22 Julia Koval + Sebastian Peryt + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512BITALG_SET, + OPTION_MASK_ISA_AVX512BITALG_UNSET): New. + (ix86_handle_option): Handle -mavx512bitalg, fix 4VNNIW formatting. + * config.gcc: Add avx512vpopcntdqvlintrin.h and avx512bitalgintrin.h. + * config/i386/avx512bitalgintrin.h (_mm512_popcnt_epi8, _mm512_popcnt_epi16, + _mm512_mask_popcnt_epi8, _mm512_maskz_popcnt_epi8, _mm512_mask_popcnt_epi16, + _mm512_maskz_popcnt_epi16, _mm512_bitshuffle_epi64_mask, _mm256_popcnt_epi8, + _mm512_mask_bitshuffle_epi64_mask, _mm256_mask_popcnt_epi8, _mm_popcnt_epi8, + _mm256_maskz_popcnt_epi8, _mm_bitshuffle_epi64_mask, _mm256_popcnt_epi16, + _mm_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask, + _mm256_mask_bitshuffle_epi64_mask, _mm_popcnt_epi16, _mm_maskz_popcnt_epi8, + _mm256_mask_popcnt_epi16, _mm256_maskz_popcnt_epi16, _mm_mask_popcnt_epi8, + _mm_mask_popcnt_epi16, _mm_maskz_popcnt_epi16): New intrinsics. + * config/i386/avx512vpopcntdqvlintrin.h (_mm_popcnt_epi32, _mm_popcnt_epi64, + _mm_mask_popcnt_epi32, _mm_maskz_popcnt_epi32, _mm256_popcnt_epi32, + _mm256_mask_popcnt_epi32, _mm256_maskz_popcnt_epi32, _mm_mask_popcnt_epi64, + _mm_maskz_popcnt_epi64, _mm256_popcnt_epi64, _mm256_mask_popcnt_epi64, + _mm256_maskz_popcnt_epi64): New intrinsics. + * config/i386/cpuid.h (bit_AVX512BITALG): New bit. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mavx512bitalg. + * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI, V64QI_FTYPE_V64QI, + V4DI_FTYPE_V4DI, UHI_FTYPE_V2DI_V2DI_UHI, USI_FTYPE_V4DI_V4DI_USI, + V4SI_FTYPE_V4SI_V4SI_UHI, V8SI_FTYPE_V8SI_V8SI_UHI): New types. + * config/i386/i386-builtin.def (__builtin_ia32_vpopcountq_v4di, + __builtin_ia32_vpopcountq_v4di_mask, __builtin_ia32_vpopcountq_v2di, + __builtin_ia32_vpopcountq_v2di_mask, __builtin_ia32_vpopcountd_v4si, + __builtin_ia32_vpopcountd_v4si_mask, __builtin_ia32_vpopcountd_v8si, + __builtin_ia32_vpopcountd_v8si_mask, __builtin_ia32_vpopcountb_v64qi, + __builtin_ia32_vpopcountb_v64qi_mask, __builtin_ia32_vpopcountb_v32qi, + __builtin_ia32_vpopcountb_v32qi_mask, __builtin_ia32_vpopcountb_v16qi, + __builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v32hi, + __builtin_ia32_vpopcountw_v32hi_mask, __builtin_ia32_vpopcountw_v16hi, + __builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi, + __builtin_ia32_vpopcountw_v8hi_mask, __builtin_ia32_vpshufbitqmb128_mask, + __builtin_ia32_vpshufbitqmb256_mask, + __builtin_ia32_vpshufbitqmb512_mask): New builtins. + * config/i386/i386-c.c (__AVX512BITALG__): New. + * config/i386/i386.c (isa2_opts): Add -mavx512bitalg. + (ix86_valid_target_attribute_inner_p): Ditto. + (ix86_expand_args_builtin): Handle new types. + * config/i386/i386.h (TARGET_AVX512BITALG, TARGET_AVX512BITALG_P): New. + * config/i386/i386.opt: Add -mavx512bitalg. + * config/i386/immintrin.h: Add avx512vpopcntdqvlintrin.h and + avx512bitalgintrin.h. + * config/i386/sse.md (VI48_AVX512VLBW): New iterator. + (vpopcount): Add more types. + (avx512vl_vpshufbitqmb): New. + * doc/invoke.texi: Add -mavx512bitalg and -mavx512vpopcntdq. + +2017-12-22 Igor Tsimbalist + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET): + Or in OPTION_MASK_ISA_AVX512F_SET. + (OPTION_MASK_ISA_AVX512F_UNSET): Or in + OPTION_MASK_ISA_AVX512VNNI_UNSET. + (ix86_handle_option): Adjust for + OPTION_MASK_ISA_AVX512VNNI_*SET being in ix86_isa_flags. + * config/i386/i386-builtin.def: Move VNNI builtins from ARGS2 + section to ARGS. + * config/i386/i386-c.c: Check for OPTION_MASK_ISA_AVX512VNNI in + isa_flag instead of isa_flag2. + * config/i386/i386.c (ix86_target_string): Move -mavx512vnni from + isa_opts2 to isa_opts. + * config/i386/i386.opt (mavx512vnni): Move from ix86_isa_flags2 + to ix86_isa_flags. + +2017-12-22 Mike Stump + Eric Botcazou + + * doc/extend.texi (Loop-Specific Pragmas): Document pragma GCC unroll. + +2017-12-21 Jakub Jelinek + + PR middle-end/83487 + * config/i386/i386.c (ix86_function_arg_boundary): Return + PARM_BOUNDARY for TYPE_EMPTY_P types. + + PR c/83448 + * gimple-ssa-sprintf.c (maybe_warn): Don't call set_caret_index + if navail is >= dir.len. + +2017-12-21 Steve Ellcey + + * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Fix + triplet for ilp32. + +2017-12-21 Jakub Jelinek + + PR rtl-optimization/80747 + PR rtl-optimization/83512 + * cfgrtl.c (force_nonfallthru_and_redirect): When splitting + succ edge from ENTRY, copy partition from e->dest to the newly + created bb. + * bb-reorder.c (reorder_basic_blocks_simple): If last_tail is + ENTRY, use BB_PARTITION of its successor block as current_partition. + Don't copy partition when splitting succ edge from ENTRY. + + PR tree-optimization/83523 + * tree-ssa-math-opts.c (is_widening_mult_p): Return false if + for INTEGER_TYPE TYPE_OVERFLOW_TRAPS. + (convert_mult_to_fma): Likewise. + + PR tree-optimization/83521 + * tree-ssa-phiopt.c (factor_out_conditional_conversion): Use + gimple_build_assign without code on result of + fold_build1 (VIEW_CONVERT_EXPR, ...), as it might not create + a VIEW_CONVERT_EXPR. + +2017-12-21 Andrew Pinski + Steve Ellcey + + * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle + multi-arch for ilp32. + +2017-12-21 Uros Bizjak + + PR target/83467 + * config/i386/i386.md (*ashl3_mask): Add operand + constraints to operand 2. + (*ashl3_mask_1): Ditto. + (*3_mask): Ditto. + (*3_mask_1): Ditto. + (*3_mask): Ditto. + (*3_mask_1): Ditto. + +2017-12-21 Alexandre Oliva + + * reorg.c (make_return_insns): Reemit each insn with its own location. + +2017-12-21 James Greenhalgh + + * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code + generation for cases where splatting a value is not useful. + * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge + across a vec_duplicate and a paradoxical subreg forming a vector + mode to a vec_concat. + +2017-12-21 James Greenhalgh + + * combine.c (simplify_set): Do not transform subregs to zero_extends + if the destination is not a scalar int mode. + +2017-12-21 Eric Botcazou + + PR c++/82872 + * convert.c (convert_to_integer_1) : Do not return the + shared zero if the input has overflowed. + +2017-12-21 Kyrylo Tkachov + + * config/arm/driver-arm.c (arm_cpu_table): Specify dotprod + support for Cortex-A55 and Cortex-A75. + +2017-12-21 Kyrylo Tkachov + + * common/config/arm/arm-common.c (compare_opt_names): Add function + comment. Use strcmp instead of manual loop. + +2017-12-21 Martin Liska + + PR gcov-profile/83509 + * gcov-dump.c (dump_gcov_file): Do not read info about + support_unexecuted_blocks for gcda files. + +2017-12-21 Jakub Jelinek + + PR rtl-optimization/82973 + * emit-rtl.h (valid_for_const_vec_duplicate_p): Rename to ... + (valid_for_const_vector_p): ... this. + * emit-rtl.c (valid_for_const_vec_duplicate_p): Rename to ... + (valid_for_const_vector_p): ... this. Adjust function comment. + (gen_vec_duplicate): Adjust caller. + * optabs.c (expand_vector_broadcast): Likewise. + * simplify-rtx.c (simplify_const_unary_operation): Don't optimize into + CONST_VECTOR if some element isn't simplified valid_for_const_vector_p + constant. + (simplify_const_binary_operation): Likewise. Use CONST_FIXED_P macro + instead of GET_CODE == CONST_FIXED. + (simplify_subreg): Use CONST_FIXED_P macro instead of + GET_CODE == CONST_FIXED. + + PR target/83488 + * config/i386/i386.c (ix86_target_string): Move -mavx512vbmi2 and + -mshstk entries from isa_opts2 to isa_opts and -mhle, -mmovbe, + -mclzero and -mmwaitx entries from isa_opts to isa_opts2. + (ix86_option_override_internal): Adjust for + OPTION_MASK_ISA_{HLE,MOVBE,CLZERO,MWAITX} moving to ix86_isa_flags2 + and OPTION_MASK_ISA_SHSTK moving to ix86_isa_flags. + (BDESC_VERIFYS): Remove SPECIAL_ARGS2 related checks. + (ix86_init_mmx_sse_builtins): Remove bdesc_special_args2 handling. + Use def_builtin2 instead of def_builtin for OPTION_MASK_ISA_MWAITX + and OPTION_MASK_ISA_CLZERO builtins. Use def_builtin instead of + def_builtin2 for CET builtins. + (ix86_expand_builtin): Remove bdesc_special_args2 handling. Fix + up formatting in IX86_BUILTIN_RDPID code. + * config/i386/i386-builtin.def: Move VBMI2 builtins from SPECIAL_ARGS2 + section to SPECIAL_ARGS and from ARGS2 section to ARGS. + * config/i386/i386.opt (mavx512vbmi2, mshstk): Move from + ix86_isa_flags2 to ix86_isa_flags. + (mhle, mmovbe, mclzero, mmwaitx): Move from ix86_isa_flags to + ix86_isa_flags2. + * config/i386/i386-c.c (ix86_target_macros_internal): Check for + OPTION_MASK_ISA_{CLZERO,MWAITX} in isa_flag2 instead of isa_flag. + Check for OPTION_MASK_ISA_{SHSTK,AVX512VBMI2} in isa_flag instead + of isa_flag2. + * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET): + Or in OPTION_MASK_ISA_AVX512F_SET. + (OPTION_MASK_ISA_AVX512F_UNSET): Or in + OPTION_MASK_ISA_AVX512VBMI2_UNSET. + (ix86_handle_option): Adjust for + OPTION_MASK_ISA_{SHSTK,AVX512VBMI2}_*SET being in ix86_isa_flags + and OPTION_MASK_ISA_{MOVBE,MWAITX,CLZERO}_*SET in ix86_isa_flags2. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-data-ref.h (prune_runtime_alias_test_list): Take the + factor as a poly_uint64 rather than an unsigned HOST_WIDE_INT. + * tree-data-ref.c (prune_runtime_alias_test_list): Likewise. + Track polynomial offsets. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): + Treat drb->init as a poly_int. Fail if its misalignment wrt + vector_alignment isn't known. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vectorizer.h (_loop_vec_info): Add a versioning_threshold + field. + (LOOP_VINFO_VERSIONING_THRESHOLD): New macro + (vect_loop_versioning): Take the loop versioning threshold as a + separate parameter. + * tree-vect-loop-manip.c (vect_loop_versioning): Likewise. + * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize + versioning_threshold. + (vect_analyze_loop_2): Compute the loop versioning threshold + whenever loop versioning is needed, and store it in the new + field rather than combining it with the cost model threshold. + (vect_transform_loop): Update call to vect_loop_versioning. + Try to combine the loop versioning and cost thresholds here. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-ssa-loop-ivopts.h (strip_offset): Return the offset as + poly_uint64_pod rather than an unsigned HOST_WIDE_INT. + * tree-loop-distribution.c (classify_builtin_st): Update accordingly. + * tree-ssa-loop-ivopts.c (iv_use::addr_offset): Change from + an unsigned HOST_WIDE_INT to a poly_uint64_pod. + (group_compare_offset): Update accordingly. + (split_small_address_groups_p): Likewise. + (record_use): Take addr_offset as a poly_uint64 rather than + an unsigned HOST_WIDE_INT. + (strip_offset): Return the offset as a poly_uint64 rather than + an unsigned HOST_WIDE_INT. + (record_group_use, split_address_groups): Track polynomial offsets. + (add_iv_candidate_for_use): Likewise. + (addr_offset_valid_p): Take the offset as a poly_int64 rather + than a HOST_WIDE_INT. + (strip_offset_1): Return the offset as a poly_int64 rather than + a HOST_WIDE_INT. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * tree.h (get_binfo_at_offset): Take the offset as a poly_int64 + rather than a HOST_WIDE_INT. + * tree.c (get_binfo_at_offset): Likewise. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * ipa-prop.h (build_ref_for_offset): Take the offset as a poly_int64 + rather than a HOST_WIDE_INT. + * tree-sra.c (build_ref_for_offset): Likewise. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * fold-const.h (mem_ref_offset): Return a poly_offset_int rather + than an offset_int. + * tree.c (mem_ref_offset): Likewise. + (build_simple_mem_ref_loc): Treat MEM_REF offsets as poly_ints. + * builtins.c (get_object_alignment_2): Likewise. + * expr.c (get_inner_reference, expand_expr_real_1): Likewise. + * gimple-fold.c (get_base_constructor): Likewise. + * gimple-ssa-strength-reduction.c (restructure_reference): Likewise. + * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): + Likewise. + * ipa-polymorphic-call.c + (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise. + * ipa-prop.c (compute_complex_assign_jump_func): Likewise. + (get_ancestor_addr_info): Likewise. + * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Likewise. + * match.pd: Likewise. + * tree-data-ref.c (dr_analyze_innermost): Likewise. + * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise. + * tree-eh.c (tree_could_trap_p): Likewise. + * tree-object-size.c (addr_object_size): Likewise. + * tree-ssa-address.c (copy_ref_info): Likewise. + * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise. + (indirect_refs_may_alias_p): Likewise. + * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise. + * tree-ssa.c (maybe_rewrite_mem_ref_base): Likewise. + (non_rewritable_mem_ref_base): Likewise. + * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise. + * tree-vrp.c (vrp_prop::check_array_ref): Likewise. + * varasm.c (decode_addr_const): Likewise. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * gimple-ssa-stor-merging.c (find_bswap_or_nop_load): Track polynomial + offsets for MEM_REFs. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-ssanames.h (adjust_ptr_info_misalignment): Take the increment + as a poly_uint64 rather than an unsigned int. + * tree-ssanames.c (adjust_ptr_info_misalignment): Likewise. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * varasm.c (addr_const::offset): Change from HOST_WIDE_INT + to poly_int64. + (decode_addr_const): Update accordingly. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * tree.h (bit_field_size, bit_field_offset): New functions. + * hsa-gen.c (gen_hsa_addr): Use them. + * tree-ssa-forwprop.c (simplify_bitfield_ref): Likewise. + (simplify_vector_constructor): Likewise. + * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise. + * tree-cfg.c (verify_expr): Require the sizes and offsets of a + BIT_FIELD_REF to be poly_uint64s rather than uhwis. + * fold-const.c (fold_ternary_loc): Protect tree_to_uhwi with + tree_fits_uhwi_p. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.h (emit_group_load, emit_group_load_into_temps) + (emit_group_store): Take the size as a poly_int64 rather than an int. + * expr.c (emit_group_load_1, emit_group_load): Likewise. + (emit_group_load_into_temp, emit_group_store): Likewise. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * ira-int.h (ira_spilled_reg_stack_slot::width): Change from + an unsigned int to a poly_uint64. + * ira.h (ira_reuse_stack_slot, ira_mark_new_stack_slot): Take the + sizes as poly_uint64s rather than unsigned ints. + * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): + Likewise. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * lra-constraints.c (emit_inc): Change inc_amount from an int + to a poly_int64. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * cfgexpand.c (stack_var::size): Change from a HOST_WIDE_INT + to a poly_uint64. + (add_stack_var, stack_var_cmp, partition_stack_vars) + (dump_stack_var_partition): Update accordingly. + (alloc_stack_frame_space): Take the size as a poly_int64 rather + than a HOST_WIDE_INT. + (expand_stack_vars, expand_one_stack_var_1): Handle polynomial sizes. + (defer_stack_allocation, estimated_stack_frame_size): Likewise. + (account_stack_vars, expand_one_var): Likewise. Return a poly_uint64 + rather than a HOST_WIDE_INT. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (return_pops_args): Treat both the input and output + sizes as poly_int64s rather than HOST_WIDE_INTS. + * targhooks.h (default_return_pops_args): Update accordingly. + * targhooks.c (default_return_pops_args): Likewise. + * doc/tm.texi: Regenerate. + * emit-rtl.h (incoming_args): Change pops_args, size and + outgoing_args_size from int to poly_int64_pod. + * function.h (expr_status): Change x_pending_stack_adjust and + x_stack_pointer_delta from int to poly_int64. + (args_size::constant): Change from HOST_WIDE_INT to poly_int64. + (ARGS_SIZE_RTX): Update accordingly. + * calls.c (highest_outgoing_arg_in_use): Change from int to + unsigned int. + (stack_usage_watermark, stored_args_watermark): New variables. + (stack_region_maybe_used_p, mark_stack_region_used): New functions. + (emit_call_1): Change the stack_size and rounded_stack_size + parameters from HOST_WIDE_INT to poly_int64. Track n_popped + as a poly_int64. + (save_fixed_argument_area): Check stack_usage_watermark. + (initialize_argument_information): Change old_pending_adj from + a HOST_WIDE_INT * to a poly_int64_pod *. + (compute_argument_block_size): Return the size as a poly_int64 + rather than an int. + (finalize_must_preallocate): Track polynomial argument sizes. + (compute_argument_addresses): Likewise. + (internal_arg_pointer_based_exp): Track polynomial offsets. + (mem_overlaps_already_clobbered_arg_p): Rename to... + (mem_might_overlap_already_clobbered_arg_p): ...this and take the + size as a poly_uint64 rather than an unsigned HOST_WIDE_INT. + Check stored_args_used_watermark. + (load_register_parameters): Update accordingly. + (check_sibcall_argument_overlap_1): Likewise. + (combine_pending_stack_adjustment_and_call): Take the unadjusted + args size as a poly_int64 rather than an int. Return a bool + indicating whether the optimization was possible and return + the new adjustment by reference. + (check_sibcall_argument_overlap): Track polynomail argument sizes. + Update stored_args_watermark. + (can_implement_as_sibling_call_p): Handle polynomial argument sizes. + (expand_call): Likewise. Maintain stack_usage_watermark and + stored_args_watermark. Update calls to + combine_pending_stack_adjustment_and_call. + (emit_library_call_value_1): Handle polynomial argument sizes. + Call stack_region_maybe_used_p and mark_stack_region_used. + Maintain stack_usage_watermark. + (store_one_arg): Likewise. Update call to + mem_overlaps_already_clobbered_arg_p. + * config/arm/arm.c (arm_output_function_prologue): Add a cast to + HOST_WIDE_INT. + * config/avr/avr.c (avr_outgoing_args_size): Likewise. + * config/microblaze/microblaze.c (microblaze_function_prologue): + Likewise. + * config/cr16/cr16.c (cr16_return_pops_args): Update for new + TARGET_RETURN_POPS_ARGS interface. + (cr16_compute_frame, cr16_initial_elimination_offset): Add casts + to HOST_WIDE_INT. + * config/ft32/ft32.c (ft32_compute_frame): Likewise. + * config/i386/i386.c (ix86_return_pops_args): Update for new + TARGET_RETURN_POPS_ARGS interface. + (ix86_expand_split_stack_prologue): Add a cast to HOST_WIDE_INT. + * config/moxie/moxie.c (moxie_compute_frame): Likewise. + * config/m68k/m68k.c (m68k_return_pops_args): Update for new + TARGET_RETURN_POPS_ARGS interface. + * config/vax/vax.c (vax_return_pops_args): Likewise. + * config/pa/pa.h (STACK_POINTER_OFFSET): Add a cast to poly_int64. + (EXIT_IGNORE_STACK): Update reference to crtl->outgoing_args_size. + * config/arm/arm.h (CALLER_INTERWORKING_SLOT_SIZE): Likewise. + * config/powerpcspe/aix.h (STACK_DYNAMIC_OFFSET): Likewise. + * config/powerpcspe/darwin.h (STACK_DYNAMIC_OFFSET): Likewise. + * config/powerpcspe/powerpcspe.h (STACK_DYNAMIC_OFFSET): Likewise. + * config/rs6000/aix.h (STACK_DYNAMIC_OFFSET): Likewise. + * config/rs6000/darwin.h (STACK_DYNAMIC_OFFSET): Likewise. + * config/rs6000/rs6000.h (STACK_DYNAMIC_OFFSET): Likewise. + * dojump.h (saved_pending_stack_adjust): Change x_pending_stack_adjust + and x_stack_pointer_delta from int to poly_int64. + * dojump.c (do_pending_stack_adjust): Update accordingly. + * explow.c (allocate_dynamic_stack_space): Handle polynomial + stack_pointer_deltas. + * function.c (STACK_DYNAMIC_OFFSET): Add a cast to poly_int64. + (pad_to_arg_alignment): Track polynomial offsets. + (assign_parm_find_stack_rtl): Likewise. + (assign_parms, locate_and_pad_parm): Handle polynomial argument sizes. + * toplev.c (output_stack_usage): Update reference to + current_function_pushed_stack_size. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * function.c (in_arg_offset, var_offset, dynamic_offset) + (out_arg_offset, cfa_offset): Change from int to poly_int64. + (instantiate_new_reg): Return the new offset as a poly_int64_pod + rather than a HOST_WIDE_INT. + (instantiate_virtual_regs_in_rtx): Track polynomial offsets. + (instantiate_virtual_regs_in_insn): Likewise. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * rtl.h (get_args_size, add_args_size_note): New functions. + (find_args_size_adjust): Return a poly_int64 rather than a + HOST_WIDE_INT. + (fixup_args_size_notes): Likewise. Make the same change to the + end_args_size parameter. + * rtlanal.c (get_args_size, add_args_size_note): New functions. + * builtins.c (expand_builtin_trap): Use add_args_size_note. + * calls.c (emit_call_1): Likewise. + * explow.c (adjust_stack_1): Likewise. + * cfgcleanup.c (old_insns_match_p): Update use of + find_args_size_adjust. + * combine.c (distribute_notes): Track polynomial arg sizes. + * dwarf2cfi.c (dw_trace_info): Change beg_true_args_size, + end_true_args_size, beg_delay_args_size and end_delay_args_size + from HOST_WIDE_INT to poly_int64. + (add_cfi_args_size): Take the args_size as a poly_int64 rather + than a HOST_WIDE_INT. + (notice_args_size, notice_eh_throw, maybe_record_trace_start) + (maybe_record_trace_start_abnormal, scan_trace, connect_traces): Track + polynomial arg sizes. + * emit-rtl.c (try_split): Use get_args_size. + * recog.c (peep2_attempt): Likewise. + * reload1.c (reload_as_needed): Likewise. + * expr.c (find_args_size_adjust): Return the adjustment as a + poly_int64 rather than a HOST_WIDE_INT. + (fixup_args_size_notes): Change end_args_size from a HOST_WIDE_INT + to a poly_int64 and change the return type in the same way. + (emit_single_push_insn): Track polynomial arg sizes. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.h (push_block, emit_push_insn): Change the "extra" parameter + from HOST_WIDE_INT to poly_int64. + * expr.c (push_block, emit_push_insn): Likewise. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * function.h (frame_space): Change start and length from HOST_WIDE_INT + to poly_int64. + (get_frame_size): Return the size as a poly_int64 rather than a + HOST_WIDE_INT. + (frame_offset_overflow): Take the offset as a poly_int64 rather + than a HOST_WIDE_INT. + (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type) + (assign_stack_temp): Likewise for the size. + * function.c (get_frame_size): Return a poly_int64 rather than + a HOST_WIDE_INT. + (frame_offset_overflow): Take the offset as a poly_int64 rather + than a HOST_WIDE_INT. + (try_fit_stack_local): Take the start, length and size as poly_int64s + rather than HOST_WIDE_INTs. Return the offset as a poly_int64_pod + rather than a HOST_WIDE_INT. + (add_frame_space): Take the start and end as poly_int64s rather than + HOST_WIDE_INTs. + (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type) + (assign_stack_temp): Likewise for the size. + (temp_slot): Change size, base_offset and full_size from HOST_WIDE_INT + to poly_int64. + (find_temp_slot_from_address): Handle polynomial offsets. + (combine_temp_slots): Likewise. + * emit-rtl.h (rtl_data::x_frame_offset): Change from HOST_WIDE_INT + to poly_int64. + * cfgexpand.c (alloc_stack_frame_space): Return the offset as a + poly_int64 rather than a HOST_WIDE_INT. + (expand_one_stack_var_at): Take the offset as a poly_int64 rather + than a HOST_WIDE_INT. + (expand_stack_vars, expand_one_stack_var_1, expand_used_vars): Handle + polynomial frame offsets. + * config/m32r/m32r-protos.h (m32r_compute_frame_size): Take the size + as a poly_int64 rather than an int. + * config/m32r/m32r.c (m32r_compute_frame_size): Likewise. + * config/v850/v850-protos.h (compute_frame_size): Likewise. + * config/v850/v850.c (compute_frame_size): Likewise. + * config/xtensa/xtensa-protos.h (compute_frame_size): Likewise. + * config/xtensa/xtensa.c (compute_frame_size): Likewise. + * config/pa/pa-protos.h (pa_compute_frame_size): Likewise. + * config/pa/pa.c (pa_compute_frame_size): Likewise. + * explow.h (get_dynamic_stack_base): Take the offset as a poly_int64 + rather than a HOST_WIDE_INT. + * explow.c (get_dynamic_stack_base): Likewise. + * final.c (final_start_function): Use the constant lower bound + of the frame size for -Wframe-larger-than. + * ira.c (do_reload): Adjust for new get_frame_size return type. + * lra.c (lra): Likewise. + * reload1.c (reload): Likewise. + * config/avr/avr.c (avr_asm_function_end_prologue): Likewise. + * config/pa/pa.h (EXIT_IGNORE_STACK): Likewise. + * rtlanal.c (get_initial_register_offset): Return the offset as + a poly_int64 rather than a HOST_WIDE_INT. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * reload1.c (elim_table): Change initial_offset, offset and + previous_offset from HOST_WIDE_INT to poly_int64_pod. + (offsets_at): Change the target array's element type from + HOST_WIDE_INT to poly_int64_pod. + (set_label_offsets, eliminate_regs_1, eliminate_regs_in_insn) + (elimination_costs_in_insn, update_eliminable_offsets) + (verify_initial_elim_offsets, set_offsets_for_label) + (init_eliminable_invariants): Update after above changes. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * reload.h (reload::inc): Change from an int to a poly_int64_pod. + * reload.c (combine_reloads, debug_reload_to_stream): Likewise. + (decomposition): Change start and end from HOST_WIDE_INT + to poly_int64_pod. + (decompose, immune_p): Update accordingly. + (find_inc_amount): Return a poly_int64 rather than an int. + * reload1.c (inc_for_reload): Take the inc_amount as a poly_int64 + rather than an int. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * tree.h (get_inner_reference): Return the bitsize and bitpos + as poly_int64_pods rather than HOST_WIDE_INT. + * fold-const.h (ptr_difference_const): Return the pointer difference + as a poly_int64_pod rather than a HOST_WIDE_INT. + * expr.c (get_inner_reference): Return the bitsize and bitpos + as poly_int64_pods rather than HOST_WIDE_INT. + (expand_expr_addr_expr_1, expand_expr_real_1): Track polynomial + offsets and sizes. + * fold-const.c (make_bit_field_ref): Take the bitpos as a poly_int64 + rather than a HOST_WIDE_INT. Update call to get_inner_reference. + (optimize_bit_field_compare): Update call to get_inner_reference. + (decode_field_reference): Likewise. + (fold_unary_loc): Track polynomial offsets and sizes. + (split_address_to_core_and_offset): Return the bitpos as a + poly_int64_pod rather than a HOST_WIDE_INT. + (ptr_difference_const): Likewise for the pointer difference. + * asan.c (instrument_derefs): Track polynomial offsets and sizes. + * config/mips/mips.c (r10k_safe_mem_expr_p): Likewise. + * dbxout.c (dbxout_expand_expr): Likewise. + * dwarf2out.c (loc_list_for_address_of_addr_expr_of_indirect_ref) + (loc_list_from_tree_1, fortran_common): Likewise. + * gimple-laddress.c (pass_laddress::execute): Likewise. + * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Likewise. + * gimplify.c (gimplify_scan_omp_clauses): Likewise. + * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise. + * tree-affine.c (tree_to_aff_combination): Likewise. + (get_inner_reference_aff): Likewise. + * tree-data-ref.c (split_constant_offset_1): Likewise. + (dr_analyze_innermost): Likewise. + * tree-scalar-evolution.c (interpret_rhs_expr): Likewise. + * tree-sra.c (ipa_sra_check_caller): Likewise. + * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise. + * ubsan.c (maybe_instrument_pointer_overflow): Likewise. + (instrument_bool_enum_load, instrument_object_size): Likewise. + * gimple-ssa-strength-reduction.c (slsr_process_ref): Update call + to get_inner_reference. + * hsa-gen.c (gen_hsa_addr): Likewise. + * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Likewise. + * tsan.c (instrument_expr): Likewise. + * match.pd: Update call to ptr_difference_const. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * fold-const.c (fold_comparison): Track sizes and offsets as + poly_int64s rather than HOST_WIDE_INTs when folding address + comparisons. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.h (get_bit_range): Return the bitstart and bitend as + poly_uint64s rather than unsigned HOST_WIDE_INTs. Return the bitpos + as a poly_int64 rather than a HOST_WIDE_INT. + * expr.c (get_bit_range): Likewise. + (expand_assignment): Update call accordingly. + * fold-const.c (optimize_bit_field_compare): Likewise. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-protos.h (aarch64_addr_query_type): New enum. + (aarch64_legitimate_address_p): Use it instead of an rtx code, + as an optional final parameter. + * config/aarch64/aarch64.c (aarch64_classify_address): Likewise. + (aarch64_legitimate_address_p): Likewise. + (aarch64_print_address_internal): Take an aarch64_addr_query_type + instead of an rtx code. + (aarch64_address_valid_for_prefetch_p): Update calls accordingly. + (aarch64_legitimate_address_hook_p): Likewise. + (aarch64_print_ldpstp_address): Likewise. + (aarch64_print_operand_address): Likewise. + (aarch64_address_cost): Likewise. + * config/aarch64/constraints.md (Uml, Umq, Ump, Utq): Likewise. + * config/aarch64/predicates.md (aarch64_mem_pair_operand): Likewise. + (aarch64_mem_pair_lanes_operand): Likewise. + +2017-12-20 Richard Biener + + * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Call + update_stmt_if_modified. + +2017-12-20 Wilco Dijkstra + + PR tree-optimization/83491 + * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Check for SSA_NAME + before walking uses. Improve coding style and comments. + +2017-12-20 Tom de Vries + + * gimple-fold.c (fold_internal_goacc_dim): Simplify. + +2017-12-20 Jakub Jelinek + + PR ipa/83506 + * ipa-fnsummary.c (pass_data_ipa_free_fn_summary): Use 0 for + todo_flags_finish. + (pass_ipa_free_fn_summary): Add small_p private data member, + initialize to false in the ctor. + (pass_ipa_free_fn_summary::clone, + pass_ipa_free_fn_summary::set_pass_param, + pass_ipa_free_fn_summary::gate): New methods. + (pass_ipa_free_fn_summary::execute): Return TODO_remove_functions + | TODO_dump_symtab if small_p. + * passes.def: Add true parm for the existing pass_ipa_free_fn_summary + entry and add another instance of the pass with false parm after + ipa-pure-const. + * ipa-pure-const.c (pass_ipa_pure_const): Don't call + ipa_free_fn_summary here. + +2017-12-20 Paolo Carlini + + * gimplify.c (gimplify_return_expr): Remove dead error_mark_node check. + +2017-12-20 Martin Sebor + + PR testsuite/83131 + * builtins.c (expand_builtin_strlen): Use get_callee_fndecl. + (expand_builtin_strcmp): Call maybe_warn_nonstring_arg. + (expand_builtin_strncmp): Same. + +2017-12-20 Alexandre Oliva + + PR bootstrap/83396 + * cfgexpand.c (label_rtx_for_bb): Revert SFN changes that + allowed debug stmts before labels. + (expand_gimple_basic_block): Likewise. + * gimple-iterator.c (gimple_find_edge_insert_loc): Likewise. + * gimple-iterator.h (gsi_after_labels): Likewise. + * tree-cfgcleanup (remove_forwarder_block): Likewise, but + rename reused variable, and simplify using gsi_move_before. + * tree-ssa-tail-merge.c (find_duplicate): Likewise. + * tree-cfg.c (make_edges, cleanup_dead_labels): Likewise. + (gimple_can_merge_blocks_p, verify_gimple_in_cfg): Likewise. + (gimple_verify_flow_info, gimple_block_label): Likewise. + (make_blocks): Move debug markers after adjacent labels. + * cfgrtl.c (skip_insns_after_block): Revert SFN changes that + allowed debug insns outside blocks. + * df-scan.c (df_insn_delete): Likewise. + * lra-constraints.c (update_ebb_live_info): Likewise. + * var-tracking.c (get_first_insn, vt_emit_notes): Likewise. + (vt_initialize, delete_vta_debug_insns): Likewise. + (reemit_marker_as_note): Drop BB parm. Adjust callers. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * poly-int-types.h (round_down_to_byte_boundary): New macro. + (round_up_to_byte_boundary): Likewise. + * expr.h (get_bit_range): Add temporary shim. + * gimple-ssa-store-merging.c (store_operand_info): Change the + bitsize, bitpos, bitregion_start and bitregion_end fields from + unsigned HOST_WIDE_INT to poly_uint64. + (merged_store_group): Likewise load_align_base. + (compatible_load_p, compatible_load_p): Update accordingly. + (imm_store_chain_info::coalesce_immediate_stores): Likewise. + (split_group, imm_store_chain_info::output_merged_store): Likewise. + (mem_valid_for_store_merging): Return the bitsize, bitpos, + bitregion_start and bitregion_end as poly_uint64s rather than + unsigned HOST_WIDE_INTs. Track polynomial offsets internally. + (handled_load): Take the bitsize, bitpos, + bitregion_start and bitregion_end as poly_uint64s rather than + unsigned HOST_WIDE_INTs. + (pass_store_merging::process_store): Update call to + mem_valid_for_store_merging. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * builtins.c (get_object_alignment_2): Track polynomial offsets + and sizes. Update the alignment handling. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * tree.h (get_inner_reference): Add a version that returns the + offset and size as poly_int64_pods rather than HOST_WIDE_INTs. + * cfgexpand.c (expand_debug_expr): Track polynomial offsets. Simply + the case in which bitpos is not associated with the first byte. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-affine.h (get_inner_reference_aff): Return the size as a + poly_widest_int. + * tree-affine.c (get_inner_reference_aff): Likewise. + * tree-data-ref.c (dr_may_alias_p): Update accordingly. + * tree-ssa-loop-im.c (mem_refs_may_alias_p): Likewise. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * fold-const.c (pointer_may_wrap_p): Take the offset as a + HOST_WIDE_INT rather than a poly_int64. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * gimple-ssa-store-merging.c (symbolic_number::bytepos): Change from + HOST_WIDE_INT to poly_int64_pod. + (perform_symbolic_merge): Update accordingly. + (bswap_replace): Likewise. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-affine.h (aff_tree::offset): Change from widest_int + to poly_widest_int. + (wide_int_ext_for_comb): Delete. + (aff_combination_const, aff_comb_cannot_overlap_p): Take the + constants as poly_widest_int rather than widest_int. + (aff_combination_constant_multiple_p): Return the multiplier + as a poly_widest_int. + (aff_combination_zero_p, aff_combination_singleton_var_p): Handle + polynomial offsets. + * tree-affine.c (wide_int_ext_for_comb): Make original widest_int + version static and add an overload for poly_widest_int. + (aff_combination_const, aff_combination_add_cst) + (wide_int_constant_multiple_p, aff_comb_cannot_overlap_p): Take + the constants as poly_widest_int rather than widest_int. + (tree_to_aff_combination): Generalize INTEGER_CST case to + poly_int_tree_p. + (aff_combination_to_tree): Track offsets as poly_widest_ints. + (aff_combination_add_product, aff_combination_mult): Handle + polynomial offsets. + (aff_combination_constant_multiple_p): Return the multiplier + as a poly_widest_int. + * tree-predcom.c (determine_offset): Return the offset as a + poly_widest_int. + (split_data_refs_to_components, suitable_component_p): Update + accordingly. + (valid_initializer_p): Update call to + aff_combination_constant_multiple_p. + * tree-ssa-address.c (addr_to_parts): Handle polynomial offsets. + * tree-ssa-loop-ivopts.c (get_address_cost_ainc): Take the step + as a poly_int64 rather than a HOST_WIDE_INT. + (get_address_cost): Handle polynomial offsets. + (iv_elimination_compare_lt): Likewise. + (rewrite_use_nonlinear_expr): Likewise. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-dfa.h (get_addr_base_and_unit_offset_1): Return the offset + as a poly_int64_pod rather than a HOST_WIDE_INT. + (get_addr_base_and_unit_offset): Likewise. + * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise. + (get_addr_base_and_unit_offset): Likewise. + * doc/match-and-simplify.texi: Change off from HOST_WIDE_INT + to poly_int64 in example. + * fold-const.c (fold_binary_loc): Update call to + get_addr_base_and_unit_offset. + * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise. + (maybe_canonicalize_mem_ref_addr): Likewise. + (gimple_fold_stmt_to_constant_1): Likewise. + * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): + Likewise. + * ipa-param-manipulation.c (ipa_modify_call_arguments): Likewise. + * match.pd: Likewise. + * omp-low.c (lower_omp_target): Likewise. + * tree-sra.c (build_ref_for_offset): Likewise. + (build_debug_ref_for_model): Likewise. + * tree-ssa-address.c (maybe_fold_tmr): Likewise. + * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Likewise. + * tree-ssa-ccp.c (optimize_memcpy): Likewise. + * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise. + (constant_pointer_difference): Likewise. + * tree-ssa-loop-niter.c (expand_simple_operations): Likewise. + * tree-ssa-phiopt.c (jump_function_from_stmt): Likewise. + * tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise. + * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise. + (vn_reference_maybe_forwprop_address, vn_reference_lookup_3): Likewise. + (set_ssa_val_to): Likewise. + * tree-ssa-strlen.c (get_addr_stridx, addr_stridxptr) + (maybe_diag_stxncpy_trunc): Likewise. + * tree-vrp.c (vrp_prop::check_array_ref): Likewise. + * tree.c (build_simple_mem_ref_loc): Likewise. + (array_at_struct_end_p): Likewise. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-dfa.h (get_ref_base_and_extent): Return the base, size and + max_size as poly_int64_pods rather than HOST_WIDE_INTs. + (get_ref_base_and_extent_hwi): Declare. + * tree-dfa.c (get_ref_base_and_extent): Return the base, size and + max_size as poly_int64_pods rather than HOST_WIDE_INTs. + (get_ref_base_and_extent_hwi): New function. + * cfgexpand.c (expand_debug_expr): Update call to + get_ref_base_and_extent. + * dwarf2out.c (add_var_loc_to_decl): Likewise. + * gimple-fold.c (get_base_constructor): Return the offset as a + poly_int64_pod rather than a HOST_WIDE_INT. + (fold_const_aggregate_ref_1): Track polynomial sizes and offsets. + * ipa-polymorphic-call.c + (ipa_polymorphic_call_context::set_by_invariant) + (extr_type_from_vtbl_ptr_store): Track polynomial offsets. + (ipa_polymorphic_call_context::ipa_polymorphic_call_context) + (check_stmt_for_type_change): Use get_ref_base_and_extent_hwi + rather than get_ref_base_and_extent. + (ipa_polymorphic_call_context::get_dynamic_type): Likewise. + * ipa-prop.c (ipa_load_from_parm_agg, compute_complex_assign_jump_func) + (get_ancestor_addr_info, determine_locally_known_aggregate_parts): + Likewise. + * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Update + call to get_ref_base_and_extent. + * tree-sra.c (create_access, get_access_for_expr): Likewise. + * tree-ssa-alias.c (ao_ref_base, aliasing_component_refs_p) + (stmt_kills_ref_p): Likewise. + * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise. + * tree-ssa-scopedtables.c (avail_expr_hash, equal_mem_array_ref_p): + Likewise. + * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise. + Use get_ref_base_and_extent_hwi rather than get_ref_base_and_extent + when calling native_encode_expr. + * tree-ssa-structalias.c (get_constraint_for_component_ref): Update + call to get_ref_base_and_extent. + (do_structure_copy): Use get_ref_base_and_extent_hwi rather than + get_ref_base_and_extent. + * var-tracking.c (track_expr_p): Likewise. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * ipa-param-manipulation.h (ipa_parm_adjustment::offset): Change from + HOST_WIDE_INT to poly_int64_pod. + * ipa-param-manipulation.c (ipa_modify_call_arguments): Track + polynomail parameter offsets. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * gengtype.c (main): Handle poly_int64_pod. + * dwarf2out.h (dw_cfi_oprnd_cfa_loc): New dw_cfi_oprnd_type. + (dw_cfi_oprnd::dw_cfi_cfa_loc): New field. + (dw_cfa_location::offset, dw_cfa_location::base_offset): Change + from HOST_WIDE_INT to poly_int64_pod. + * dwarf2cfi.c (queued_reg_save::cfa_offset): Likewise. + (copy_cfa): New function. + (lookup_cfa_1): Use the cached dw_cfi_cfa_loc, if it exists. + (cfi_oprnd_equal_p): Handle dw_cfi_oprnd_cfa_loc. + (cfa_equal_p, dwarf2out_frame_debug_adjust_cfa) + (dwarf2out_frame_debug_cfa_offset, dwarf2out_frame_debug_expr) + (initial_return_save): Treat offsets as poly_ints. + (def_cfa_0): Likewise. Cache the CFA in dw_cfi_cfa_loc if either + offset is nonconstant. + (reg_save): Take the offset as a poly_int64. Fall back to + DW_CFA_expression for nonconstant offsets. + (queue_reg_save): Take the offset as a poly_int64. + * dwarf2out.c (dw_cfi_oprnd2_desc): Handle DW_CFA_def_cfa_expression. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * rtl.h (operand_subword, operand_subword_force): Take the offset + as a poly_uint64 an unsigned int. + * emit-rtl.c (operand_subword, operand_subword_force): Likewise. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/rtl.texi: Update documentation of SUBREG_BYTE. Document the + 'p' format code. Use INT_LIST rather than SUBREG as the example of + a code with an XINT and an XEXP. Remove the implication that + accessing an rtx field using XINT is expected to work. + * rtl.def (SUBREG): Change format from "ei" to "ep". + * rtl.h (rtunion::rt_subreg): New field. + (XCSUBREG): New macro. + (SUBREG_BYTE): Use it. + (subreg_shape): Change offset from an unsigned int to a poly_uint16. + Update constructor accordingly. + (subreg_shape::operator ==): Update accordingly. + (subreg_shape::unique_id): Return an unsigned HOST_WIDE_INT rather + than an unsigned int. + (subreg_lsb, subreg_lowpart_offset, subreg_highpart_offset): Return + a poly_uint64 rather than an unsigned int. + (subreg_lsb_1): Likewise. Take the offset as a poly_uint64 rather + than an unsigned int. + (subreg_size_offset_from_lsb, subreg_size_lowpart_offset) + (subreg_size_highpart_offset): Return a poly_uint64 rather than + an unsigned int. Take the sizes as poly_uint64s. + (subreg_offset_from_lsb): Return a poly_uint64 rather than + an unsigned int. Take the shift as a poly_uint64 rather than + an unsigned int. + (subreg_regno_offset, subreg_offset_representable_p): Take the offset + as a poly_uint64 rather than an unsigned int. + (simplify_subreg_regno): Likewise. + (byte_lowpart_offset): Return the memory offset as a poly_int64 + rather than an int. + (subreg_memory_offset): Likewise. Take the subreg offset as a + poly_uint64 rather than an unsigned int. + (simplify_subreg, simplify_gen_subreg, subreg_get_info) + (gen_rtx_SUBREG, validate_subreg): Take the subreg offset as a + poly_uint64 rather than an unsigned int. + * rtl.c (rtx_format): Describe 'p' in comment. + (copy_rtx, rtx_equal_p_cb, rtx_equal_p): Handle 'p'. + * emit-rtl.c (validate_subreg, gen_rtx_SUBREG): Take the subreg + offset as a poly_uint64 rather than an unsigned int. + (byte_lowpart_offset): Return the memory offset as a poly_int64 + rather than an int. + (subreg_memory_offset): Likewise. Take the subreg offset as a + poly_uint64 rather than an unsigned int. + (subreg_size_lowpart_offset, subreg_size_highpart_offset): Take the + mode sizes as poly_uint64s rather than unsigned ints. Return a + poly_uint64 rather than an unsigned int. + (subreg_lowpart_p): Treat subreg offsets as poly_ints. + (copy_insn_1): Handle 'p'. + * rtlanal.c (set_noop_p): Treat subregs offsets as poly_uint64s. + (subreg_lsb_1): Take the subreg offset as a poly_uint64 rather than + an unsigned int. Return the shift in the same way. + (subreg_lsb): Return the shift as a poly_uint64 rather than an + unsigned int. + (subreg_size_offset_from_lsb): Take the sizes and shift as + poly_uint64s rather than unsigned ints. Return the offset as + a poly_uint64. + (subreg_get_info, subreg_regno_offset, subreg_offset_representable_p) + (simplify_subreg_regno): Take the offset as a poly_uint64 rather than + an unsigned int. + * rtlhash.c (add_rtx): Handle 'p'. + * genemit.c (gen_exp): Likewise. + * gengenrtl.c (type_from_format, gendef): Likewise. + * gensupport.c (subst_pattern_match, get_alternatives_number) + (collect_insn_data, alter_predicate_for_insn, alter_constraints) + (subst_dup): Likewise. + * gengtype.c (adjust_field_rtx_def): Likewise. + * genrecog.c (find_operand, find_matching_operand, validate_pattern) + (match_pattern_2): Likewise. + (rtx_test::SUBREG_FIELD): New rtx_test::kind_enum. + (rtx_test::subreg_field): New function. + (operator ==, safe_to_hoist_p, transition_parameter_type) + (print_nonbool_test, print_test): Handle SUBREG_FIELD. + * genattrtab.c (attr_rtx_1): Say that 'p' is deliberately not handled. + * genpeep.c (match_rtx): Likewise. + * print-rtl.c (print_poly_int): Include if GENERATOR_FILE too. + (rtx_writer::print_rtx_operand): Handle 'p'. + (print_value): Handle SUBREG. + * read-rtl.c (apply_int_iterator): Likewise. + (rtx_reader::read_rtx_operand): Handle 'p'. + * alias.c (rtx_equal_for_memref_p): Likewise. + * cselib.c (rtx_equal_for_cselib_1, cselib_hash_rtx): Likewise. + * caller-save.c (replace_reg_with_saved_mem): Treat subreg offsets + as poly_ints. + * calls.c (expand_call): Likewise. + * combine.c (combine_simplify_rtx, expand_field_assignment): Likewise. + (make_extraction, gen_lowpart_for_combine): Likewise. + * loop-invariant.c (hash_invariant_expr_1, invariant_expr_equal_p): + Likewise. + * cse.c (remove_invalid_subreg_refs): Take the offset as a poly_uint64 + rather than an unsigned int. Treat subreg offsets as poly_ints. + (exp_equiv_p): Handle 'p'. + (hash_rtx_cb): Likewise. Treat subreg offsets as poly_ints. + (equiv_constant, cse_insn): Treat subreg offsets as poly_ints. + * dse.c (find_shift_sequence): Likewise. + * dwarf2out.c (rtl_for_decl_location): Likewise. + * expmed.c (extract_low_bits): Likewise. + * expr.c (emit_group_store, undefined_operand_subword_p): Likewise. + (expand_expr_real_2): Likewise. + * final.c (alter_subreg): Likewise. + (leaf_renumber_regs_insn): Handle 'p'. + * function.c (assign_parm_find_stack_rtl, assign_parm_setup_stack): + Treat subreg offsets as poly_ints. + * fwprop.c (forward_propagate_and_simplify): Likewise. + * ifcvt.c (noce_emit_move_insn, noce_emit_cmove): Likewise. + * ira.c (get_subreg_tracking_sizes): Likewise. + * ira-conflicts.c (go_through_subreg): Likewise. + * ira-lives.c (process_single_reg_class_operands): Likewise. + * jump.c (rtx_renumbered_equal_p): Likewise. Handle 'p'. + * lower-subreg.c (simplify_subreg_concatn): Take the subreg offset + as a poly_uint64 rather than an unsigned int. + (simplify_gen_subreg_concatn, resolve_simple_move): Treat + subreg offsets as poly_ints. + * lra-constraints.c (operands_match_p): Handle 'p'. + (match_reload, curr_insn_transform): Treat subreg offsets as poly_ints. + * lra-spills.c (assign_mem_slot): Likewise. + * postreload.c (move2add_valid_value_p): Likewise. + * recog.c (general_operand, indirect_operand): Likewise. + * regcprop.c (copy_value, maybe_mode_change): Likewise. + (copyprop_hardreg_forward_1): Likewise. + * reginfo.c (simplifiable_subregs_hasher::hash, simplifiable_subregs) + (record_subregs_of_mode): Likewise. + * rtlhooks.c (gen_lowpart_general, gen_lowpart_if_possible): Likewise. + * reload.c (operands_match_p): Handle 'p'. + (find_reloads_subreg_address): Treat subreg offsets as poly_ints. + * reload1.c (alter_reg, choose_reload_regs): Likewise. + (compute_reload_subreg_offset): Likewise, and return an poly_int64. + * simplify-rtx.c (simplify_truncation, simplify_binary_operation_1): + (test_vector_ops_duplicate): Treat subreg offsets as poly_ints. + (simplify_const_poly_int_tests::run): Likewise. + (simplify_subreg, simplify_gen_subreg): Take the subreg offset as + a poly_uint64 rather than an unsigned int. + * valtrack.c (debug_lowpart_subreg): Likewise. + * var-tracking.c (var_lowpart): Likewise. + (loc_cmp): Handle 'p'. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * ira.c (get_subreg_tracking_sizes): New function. + (init_live_subregs): Take an integer size rather than a register. + (build_insn_chain): Use get_subreg_tracking_sizes. Update calls + to init_live_subregs. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.c (store_constructor_field): Change bitsize from a + unsigned HOST_WIDE_INT to a poly_uint64 and bitpos from a + HOST_WIDE_INT to a poly_int64. + (store_constructor): Change size from a HOST_WIDE_INT to + a poly_int64. + (store_field): Likewise bitsize and bitpos. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * expmed.h (store_bit_field): Change bitregion_start and + bitregion_end from unsigned HOST_WIDE_INT to poly_uint64. + * expmed.c (adjust_bit_field_mem_for_reg, strict_volatile_bitfield_p) + (store_bit_field_1, store_integral_bit_field, store_bit_field) + (store_fixed_bit_field, store_split_bit_field): Likewise. + * expr.c (store_constructor_field, store_field): Likewise. + (optimize_bitfield_assignment_op): Likewise. Make the same change + to bitsize and bitpos. + * machmode.h (bit_field_mode_iterator): Change m_bitregion_start + and m_bitregion_end from HOST_WIDE_INT to poly_int64. Make the + same change in the constructor arguments. + (get_best_mode): Change bitregion_start and bitregion_end from + unsigned HOST_WIDE_INT to poly_uint64. + * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator): + Change bitregion_start and bitregion_end from HOST_WIDE_INT to + poly_int64. + (bit_field_mode_iterator::next_mode): Update for new types + of m_bitregion_start and m_bitregion_end. + (get_best_mode): Change bitregion_start and bitregion_end from + unsigned HOST_WIDE_INT to poly_uint64. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * rtl.h (simplify_gen_subreg): Add a temporary overload that + accepts poly_uint64 offsets. + * expmed.h (extract_bit_field): Take bitsize and bitnum as + poly_uint64s rather than unsigned HOST_WIDE_INTs. + * expmed.c (lowpart_bit_field_p): Likewise. + (extract_bit_field_as_subreg): New function, split out from... + (extract_bit_field_1): ...here. Take bitsize and bitnum as + poly_uint64s rather than unsigned HOST_WIDE_INTs. For vector + extractions, check that BITSIZE matches the size of the extracted + value and that BITNUM is an exact multiple of that size. + If all else fails, try forcing the value into memory if + BITNUM is variable, and adjusting the address so that the + offset is constant. Split the part that can only handle constant + bitsize and bitnum out into... + (extract_integral_bit_field): ...this new function. + (extract_bit_field): Take bitsize and bitnum as poly_uint64s + rather than unsigned HOST_WIDE_INTs. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * expmed.h (store_bit_field): Take bitsize and bitnum as + poly_uint64s rather than unsigned HOST_WIDE_INTs. + * expmed.c (simple_mem_bitfield_p): Likewise. Add a parameter + that returns the byte size. + (store_bit_field_1): Take bitsize and bitnum as + poly_uint64s rather than unsigned HOST_WIDE_INTs. Update call + to simple_mem_bitfield_p. Split the part that can only handle + constant bitsize and bitnum out into... + (store_integral_bit_field): ...this new function. + (store_bit_field): Take bitsize and bitnum as poly_uint64s rather + than unsigned HOST_WIDE_INTs. + (extract_bit_field_1): Update call to simple_mem_bitfield_p. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * lra-int.h (lra_reg): Change offset from int to poly_int64. + (lra_insn_recog_data): Change sp_offset from HOST_WIDE_INT + to poly_int64. + (lra_eliminate_regs_1, eliminate_regs_in_insn): Change + update_sp_offset from a HOST_WIDE_INT to a poly_int64. + (lra_update_reg_val_offset, lra_reg_val_equal_p): Take the + offset as a poly_int64 rather than an int. + * lra-assigns.c (find_hard_regno_for_1): Handle poly_int64 offsets. + (setup_live_pseudos_and_spill_after_risky_transforms): Likewise. + * lra-constraints.c (equiv_address_substitution): Track offsets + as poly_int64s. + (emit_inc): Check poly_int_rtx_p instead of CONST_INT_P. + (curr_insn_transform): Handle the new form of sp_offset. + * lra-eliminations.c (lra_elim_table): Change previous_offset + and offset from HOST_WIDE_INT to poly_int64. + (print_elim_table, update_reg_eliminate): Update accordingly. + (self_elim_offsets): Change from HOST_WIDE_INT to poly_int64_pod. + (get_elimination): Update accordingly. + (form_sum): Check poly_int_rtx_p instead of CONST_INT_P. + (lra_eliminate_regs_1, eliminate_regs_in_insn): Change + update_sp_offset from a HOST_WIDE_INT to a poly_int64. Handle + poly_int64 offsets generally. + (curr_sp_change): Change from HOST_WIDE_INT to poly_int64. + (mark_not_eliminable, init_elimination): Update accordingly. + (remove_reg_equal_offset_note): Return a bool and pass the new + offset back by pointer as a poly_int64. + * lra-remat.c (change_sp_offset): Take sp_offset as a poly_int64 + rather than a HOST_WIDE_INT. + (do_remat): Track offsets poly_int64s. + * lra.c (lra_update_insn_recog_data, setup_sp_offset): Likewise. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * rtl.h (mem_attrs): Add a default constructor. Change size and + offset from HOST_WIDE_INT to poly_int64. + * emit-rtl.h (set_mem_offset, set_mem_size, adjust_address_1) + (adjust_automodify_address_1, set_mem_attributes_minus_bitpos) + (widen_memory_access): Take the sizes and offsets as poly_int64s + rather than HOST_WIDE_INTs. + * alias.c (ao_ref_from_mem): Handle the new form of MEM_OFFSET. + (offset_overlap_p): Take poly_int64s rather than HOST_WIDE_INTs + and ints. + (adjust_offset_for_component_ref): Change the offset from a + HOST_WIDE_INT to a poly_int64. + (nonoverlapping_memrefs_p): Track polynomial offsets and sizes. + * cfgcleanup.c (merge_memattrs): Update after mem_attrs changes. + * dce.c (find_call_stack_args): Likewise. + * dse.c (record_store): Likewise. + * dwarf2out.c (tls_mem_loc_descriptor, dw_sra_loc_expr): Likewise. + * print-rtl.c (rtx_writer::print_rtx): Likewise. + * read-rtl-function.c (test_loading_mem): Likewise. + * rtlanal.c (may_trap_p_1): Likewise. + * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise. + * var-tracking.c (int_mem_offset, track_expr_p): Likewise. + * emit-rtl.c (mem_attrs_eq_p, get_mem_align_offset): Likewise. + (mem_attrs::mem_attrs): New function. + (set_mem_attributes_minus_bitpos): Change bitpos from a + HOST_WIDE_INT to poly_int64. + (set_mem_alias_set, set_mem_addr_space, set_mem_align, set_mem_expr) + (clear_mem_offset, clear_mem_size, change_address) + (get_spill_slot_decl, set_mem_attrs_for_spill): Directly + initialize mem_attrs. + (set_mem_offset, set_mem_size, adjust_address_1) + (adjust_automodify_address_1, offset_address, widen_memory_access): + Likewise. Take poly_int64s rather than HOST_WIDE_INT. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * rtlanal.c (rtx_addr_can_trap_p_1): Take the offset and size + as poly_int64s rather than HOST_WIDE_INTs. Use a size of -1 + rather than 0 to represent an unknown size. Assert that the size + is known when the mode isn't BLKmode. + (may_trap_p_1): Use -1 for unknown sizes. + (rtx_addr_can_trap_p): Likewise. Pass BLKmode rather than VOIDmode. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * dse.c (store_info): Change offset and width from HOST_WIDE_INT + to poly_int64. Update commentary for positions_needed.large. + (read_info_type): Change offset and width from HOST_WIDE_INT + to poly_int64. + (set_usage_bits): Likewise. + (canon_address): Return the offset as a poly_int64 rather than + a HOST_WIDE_INT. Use strip_offset_and_add. + (set_all_positions_unneeded, any_positions_needed_p): Use + positions_needed.large to track stores with non-constant widths. + (all_positions_needed_p): Likewise. Take the offset and width + as poly_int64s rather than ints. Assert that rhs is nonnull. + (record_store): Cope with non-constant offsets and widths. + Nullify the rhs of an earlier store if we can't tell which bytes + of it are needed. + (find_shift_sequence): Take the access_size and shift as poly_int64s + rather than ints. + (get_stored_val): Take the read_offset and read_width as poly_int64s + rather than HOST_WIDE_INTs. + (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Handle + non-constant offsets and widths. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * inchash.h (inchash::hash::add_poly_int): New function. + * tree-ssa-alias.h (ao_ref::offset, ao_ref::size, ao_ref::max_size): + Use poly_int64 rather than HOST_WIDE_INT. + (ao_ref::max_size_known_p): New function. + * tree-ssa-sccvn.h (vn_reference_op_struct::off): Use poly_int64_pod + rather than HOST_WIDE_INT. + * tree-ssa-alias.c (ao_ref_base): Apply get_ref_base_and_extent + to temporaries until its interface is adjusted to match. + (ao_ref_init_from_ptr_and_size): Handle polynomial offsets and sizes. + (aliasing_component_refs_p, decl_refs_may_alias_p) + (indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p): Take + the offsets and max_sizes as poly_int64s instead of HOST_WIDE_INTs. + (refs_may_alias_p_1, stmt_kills_ref_p): Adjust for changes to + ao_ref fields. + * alias.c (ao_ref_from_mem): Likewise. + * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise. + * tree-ssa-dse.c (valid_ao_ref_for_dse, normalize_ref) + (clear_bytes_written_by, setup_live_bytes_from_ref, compute_trims) + (maybe_trim_complex_store, maybe_trim_constructor_store) + (live_bytes_read, dse_classify_store): Likewise. + * tree-ssa-sccvn.c (vn_reference_compute_hash, vn_reference_eq): + (copy_reference_ops_from_ref, ao_ref_init_from_vn_reference) + (fully_constant_vn_reference_p, valueize_refs_1): Likewise. + (vn_reference_lookup_3): Likewise. + * tree-ssa-uninit.c (warn_uninitialized_vars): Likewise. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-ssa-alias.c (indirect_ref_may_alias_decl_p) + (indirect_refs_may_alias_p): Use ranges_may_overlap_p + instead of ranges_overlap_p. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-ssa-alias.c (same_addr_size_stores_p): Take the offsets and + sizes as poly_int64s rather than HOST_WIDE_INTs. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * gimple-fold.h (fold_ctor_reference): Take the offset and size + as poly_uint64 rather than unsigned HOST_WIDE_INT. + * gimple-fold.c (fold_ctor_reference): Likewise. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (dwarf_poly_indeterminate_value): New hook. + * targhooks.h (default_dwarf_poly_indeterminate_value): Declare. + * targhooks.c (default_dwarf_poly_indeterminate_value): New function. + * doc/tm.texi.in (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Document. + * doc/tm.texi: Regenerate. + * dwarf2out.h (build_cfa_loc, build_cfa_aligned_loc): Take the + offset as a poly_int64. + * dwarf2out.c (new_reg_loc_descr): Move later in file. Take the + offset as a poly_int64. + (loc_descr_plus_const, loc_list_plus_const, build_cfa_aligned_loc): + Take the offset as a poly_int64. + (build_cfa_loc): Likewise. Use loc_descr_plus_const. + (frame_pointer_fb_offset): Change to a poly_int64. + (int_loc_descriptor): Take the offset as a poly_int64. Use + targetm.dwarf_poly_indeterminate_value for polynomial offsets. + (based_loc_descr): Take the offset as a poly_int64. + Use strip_offset_and_add to handle (plus X (const)). + Use new_reg_loc_descr instead of an open-coded version of the + previous implementation. + (mem_loc_descriptor): Handle CONST_POLY_INT. + (compute_frame_pointer_to_fb_displacement): Take the offset as a + poly_int64. Use strip_offset_and_add to handle (plus X (const)). + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * rtl.h (reg_attrs::offset): Change from HOST_WIDE_INT to poly_int64. + (gen_rtx_REG_offset): Take the offset as a poly_int64. + * inchash.h (inchash::hash::add_poly_hwi): New function. + * gengtype.c (main): Register poly_int64. + * emit-rtl.c (reg_attr_hasher::hash): Use inchash. Treat the + offset as a poly_int. + (reg_attr_hasher::equal): Use must_eq to compare offsets. + (get_reg_attrs, update_reg_offset, gen_rtx_REG_offset): Take the + offset as a poly_int64. + (set_reg_attrs_from_value): Treat the offset as a poly_int64. + * print-rtl.c (print_poly_int): New function. + (rtx_writer::print_rtx_operand_code_r): Treat REG_OFFSET as + a poly_int. + * var-tracking.c (track_offset_p, get_tracked_reg_offset): New + functions. + (var_reg_set, var_reg_delete_and_set, var_reg_delete): Use them. + (same_variable_part_p, track_loc_p): Take the offset as a poly_int64. + (vt_get_decl_and_offset): Return the offset as a poly_int64. + Enforce track_offset_p for parts of a PARALLEL. + (vt_add_function_parameter): Use const_offset for the final + offset to track. Use get_tracked_reg_offset for the parts + of a PARALLEL. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (truly_noop_truncation): Take poly_uint64s instead of + unsigned ints. Change default to hook_bool_puint64_puint64_true. + * doc/tm.texi: Regenerate. + * hooks.h (hook_bool_uint_uint_true): Delete. + (hook_bool_puint64_puint64_true): Declare. + * hooks.c (hook_bool_uint_uint_true): Delete. + (hook_bool_puint64_puint64_true): New function. + * config/mips/mips.c (mips_truly_noop_truncation): Take poly_uint64s + instead of unsigned ints. + * config/spu/spu.c (spu_truly_noop_truncation): Likewise. + * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): Likewise. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * optabs.h (expand_operand): Add an int_value field. + (create_expand_operand): Add an int_value parameter and use it + to initialize the new expand_operand field. + (create_integer_operand): Replace with a declaration of a function + that accepts poly_int64s. Move the implementation to... + * optabs.c (create_integer_operand): ...here. + (maybe_legitimize_operand): For EXPAND_INTEGER, check whether + the mode preserves the value of int_value, instead of calling + const_int_operand on the rtx. Use gen_int_mode to generate + the new rtx. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * dumpfile.h (dump_dec): Declare. + * dumpfile.c (dump_dec): New function. + * pretty-print.h (pp_wide_integer): Turn into a function and + declare a poly_int version. + * pretty-print.c (pp_wide_integer): New function for poly_ints. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/generic.texi (POLY_INT_CST): Document. + * tree.def (POLY_INT_CST): New tree code. + * treestruct.def (TS_POLY_INT_CST): New tree layout. + * tree-core.h (tree_poly_int_cst): New struct. + (tree_node): Add a poly_int_cst field. + * tree.h (POLY_INT_CST_P, POLY_INT_CST_COEFF): New macros. + (wide_int_to_tree, force_fit_type): Take a poly_wide_int_ref + instead of a wide_int_ref. + (build_int_cst, build_int_cst_type): Take a poly_int64 instead + of a HOST_WIDE_INT. + (build_int_cstu, build_array_type_nelts): Take a poly_uint64 + instead of an unsigned HOST_WIDE_INT. + (build_poly_int_cst, tree_fits_poly_int64_p, tree_fits_poly_uint64_p) + (ptrdiff_tree_p): Declare. + (tree_to_poly_int64, tree_to_poly_uint64): Likewise. Provide + extern inline implementations if the target doesn't use POLY_INT_CST. + (poly_int_tree_p): New function. + (wi::unextended_tree): New class. + (wi::int_traits ): New override. + (wi::extended_tree): Add a default constructor. + (wi::extended_tree::get_tree): New function. + (wi::widest_extended_tree, wi::offset_extended_tree): New typedefs. + (wi::tree_to_widest_ref, wi::tree_to_offset_ref): Use them. + (wi::tree_to_poly_widest_ref, wi::tree_to_poly_offset_ref) + (wi::tree_to_poly_wide_ref): New typedefs. + (wi::ints_for): Provide overloads for extended_tree and + unextended_tree. + (poly_int_cst_value, wi::to_poly_widest, wi::to_poly_offset) + (wi::to_wide): New functions. + (wi::fits_to_boolean_p, wi::fits_to_tree_p): Handle poly_ints. + * tree.c (poly_int_cst_hasher): New struct. + (poly_int_cst_hash_table): New variable. + (tree_node_structure_for_code, tree_code_size, simple_cst_equal) + (valid_constant_size_p, add_expr, drop_tree_overflow): Handle + POLY_INT_CST. + (initialize_tree_contains_struct): Handle TS_POLY_INT_CST. + (init_ttree): Initialize poly_int_cst_hash_table. + (build_int_cst, build_int_cst_type, build_invariant_address): Take + a poly_int64 instead of a HOST_WIDE_INT. + (build_int_cstu, build_array_type_nelts): Take a poly_uint64 + instead of an unsigned HOST_WIDE_INT. + (wide_int_to_tree): Rename to... + (wide_int_to_tree_1): ...this. + (build_new_poly_int_cst, build_poly_int_cst): New functions. + (force_fit_type): Take a poly_wide_int_ref instead of a wide_int_ref. + (wide_int_to_tree): New function that takes a poly_wide_int_ref. + (ptrdiff_tree_p, tree_to_poly_int64, tree_to_poly_uint64) + (tree_fits_poly_int64_p, tree_fits_poly_uint64_p): New functions. + * lto-streamer-out.c (DFS::DFS_write_tree_body, hash_tree): Handle + TS_POLY_INT_CST. + * tree-streamer-in.c (lto_input_ts_poly_tree_pointers): Likewise. + (streamer_read_tree_body): Likewise. + * tree-streamer-out.c (write_ts_poly_tree_pointers): Likewise. + (streamer_write_tree_body): Likewise. + * tree-streamer.c (streamer_check_handled_ts_structures): Likewise. + * asan.c (asan_protect_global): Require the size to be an INTEGER_CST. + * cfgexpand.c (expand_debug_expr): Handle POLY_INT_CST. + * expr.c (expand_expr_real_1, const_vector_from_tree): Likewise. + * gimple-expr.h (is_gimple_constant): Likewise. + * gimplify.c (maybe_with_size_expr): Likewise. + * print-tree.c (print_node): Likewise. + * tree-data-ref.c (data_ref_compare_tree): Likewise. + * tree-pretty-print.c (dump_generic_node): Likewise. + * tree-ssa-address.c (addr_for_mem_ref): Likewise. + * tree-vect-data-refs.c (dr_group_sort_cmp): Likewise. + * tree-vrp.c (compare_values_warnv): Likewise. + * tree-ssa-loop-ivopts.c (determine_base_object, constant_multiple_of) + (get_loop_invariant_expr, add_candidate_1, get_computation_aff_1) + (force_expr_to_var_cost): Likewise. + * tree-ssa-loop.c (for_each_index): Likewise. + * fold-const.h (build_invariant_address, size_int_kind): Take a + poly_int64 instead of a HOST_WIDE_INT. + * fold-const.c (fold_negate_expr_1, const_binop, const_unop) + (fold_convert_const, multiple_of_p, fold_negate_const): Handle + POLY_INT_CST. + (size_binop_loc): Likewise. Allow int_const_binop_1 to fail. + (int_const_binop_2): New function, split out from... + (int_const_binop_1): ...here. Handle POLY_INT_CST. + (size_int_kind): Take a poly_int64 instead of a HOST_WIDE_INT. + * expmed.c (make_tree): Handle CONST_POLY_INT_P. + * gimple-ssa-strength-reduction.c (slsr_process_add) + (slsr_process_mul): Check for INTEGER_CSTs before using them + as candidates. + * stor-layout.c (bits_from_bytes): New function. + (bit_from_pos): Use it. + (layout_type): Likewise. For vectors, multiply the TYPE_SIZE_UNIT + by BITS_PER_UNIT to get the TYPE_SIZE. + * tree-cfg.c (verify_expr, verify_types_in_gimple_reference): Allow + MEM_REF and TARGET_MEM_REF offsets to be a POLY_INT_CST. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/rtl.texi (const_poly_int): Document. Also document the + rtl sharing behavior. + * gengenrtl.c (excluded_rtx): Return true for CONST_POLY_INT. + * rtl.h (const_poly_int_def): New struct. + (rtx_def::u): Add a cpi field. + (CASE_CONST_UNIQUE, CASE_CONST_ANY): Add CONST_POLY_INT. + (CONST_POLY_INT_P, CONST_POLY_INT_COEFFS): New macros. + (wi::rtx_to_poly_wide_ref): New typedef + (const_poly_int_value, wi::to_poly_wide, rtx_to_poly_int64) + (poly_int_rtx_p): New functions. + (trunc_int_for_mode): Declare a poly_int64 version. + (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT. + (immed_wide_int_const): Take a poly_wide_int_ref rather than + a wide_int_ref. + (strip_offset): Declare. + (strip_offset_and_add): New function. + * rtl.def (CONST_POLY_INT): New rtx code. + * rtl.c (rtx_size): Handle CONST_POLY_INT. + (shared_const_p): Use poly_int_rtx_p. + * emit-rtl.h (gen_int_mode): Take a poly_int64 instead of a + HOST_WIDE_INT. + (gen_int_shift_amount): Likewise. + * emit-rtl.c (const_poly_int_hasher): New class. + (const_poly_int_htab): New variable. + (init_emit_once): Initialize it when NUM_POLY_INT_COEFFS > 1. + (const_poly_int_hasher::hash): New function. + (const_poly_int_hasher::equal): Likewise. + (gen_int_mode): Take a poly_int64 instead of a HOST_WIDE_INT. + (immed_wide_int_const): Rename to... + (immed_wide_int_const_1): ...this and make static. + (immed_wide_int_const): New function, taking a poly_wide_int_ref + instead of a wide_int_ref. + (gen_int_shift_amount): Take a poly_int64 instead of a HOST_WIDE_INT. + (gen_lowpart_common): Handle CONST_POLY_INT. + * cse.c (hash_rtx_cb, equiv_constant): Likewise. + * cselib.c (cselib_hash_rtx): Likewise. + * dwarf2out.c (const_ok_for_output_1): Likewise. + * expr.c (convert_modes): Likewise. + * print-rtl.c (rtx_writer::print_rtx, print_value): Likewise. + * rtlhash.c (add_rtx): Likewise. + * explow.c (trunc_int_for_mode): Add a poly_int64 version. + (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT. + Handle existing CONST_POLY_INT rtxes. + * expmed.h (expand_shift): Take a poly_int64 instead of a + HOST_WIDE_INT. + * expmed.c (expand_shift): Likewise. + * rtlanal.c (strip_offset): New function. + (commutative_operand_precedence): Give CONST_POLY_INT the same + precedence as CONST_DOUBLE and put CONST_WIDE_INT between that + and CONST_INT. + * rtl-tests.c (const_poly_int_tests): New struct. + (rtl_tests_c_tests): Use it. + * simplify-rtx.c (simplify_const_unary_operation): Handle + CONST_POLY_INT. + (simplify_const_binary_operation): Likewise. + (simplify_binary_operation_1): Fold additions of symbolic constants + and CONST_POLY_INTs. + (simplify_subreg): Handle extensions and truncations of + CONST_POLY_INTs. + (simplify_const_poly_int_tests): New struct. + (simplify_rtx_c_tests): Use it. + * wide-int.h (storage_ref): Add default constructor. + (wide_int_ref_storage): Likewise. + (trailing_wide_ints): Use GTY((user)). + (trailing_wide_ints::operator[]): Add a const version. + (trailing_wide_ints::get_precision): New function. + (trailing_wide_ints::extra_size): Likewise. + +2017-12-20 Richard Sandiford + Alan Hayward + David Sherwood + + * emit-rtl.h (gen_int_shift_amount): Declare. + * emit-rtl.c (gen_int_shift_amount): New function. + * asan.c (asan_emit_stack_protection): Use gen_int_shift_amount + instead of GEN_INT. + * calls.c (shift_return_value): Likewise. + * cse.c (fold_rtx): Likewise. + * dse.c (find_shift_sequence): Likewise. + * expmed.c (init_expmed_one_mode, store_bit_field_1, expand_shift_1) + (expand_shift, expand_smod_pow2): Likewise. + * lower-subreg.c (shift_cost): Likewise. + * optabs.c (expand_superword_shift, expand_doubleword_mult) + (expand_unop, expand_binop, shift_amt_for_vec_perm_mask) + (expand_vec_perm_var): Likewise. + * simplify-rtx.c (simplify_unary_operation_1): Likewise. + (simplify_binary_operation_1): Likewise. + * combine.c (try_combine, find_split_point, force_int_to_mode) + (simplify_shift_const_1, simplify_shift_const): Likewise. + (change_zero_ext): Likewise. Use simplify_gen_binary. + +2017-12-20 Richard Sandiford + + * poly-int.h (multiple_p): Fix handling of two non-poly_ints. + +2017-12-20 Kyrylo Tkachov + + * doc/invoke.texi (ARM Options): Document accepted extension options + for -march=armv8.3-a. + +2017-12-20 Richard Earnshaw + + PR target/83105 + * config.gcc (arm*-*-linux*): When configured with --with-float=hard + or --with-float=softfp, set the default CPU to arm10e. + +2017-12-20 Eric Botcazou + + * config/visium/constraints.md (J, K, L): Use IN_RANGE macro. + * config/visium/predicates.md (const_shift_operand): Likewise. + * config/visium/visium.c (visium_legitimize_address): Fix oversight. + (visium_legitimize_reload_address): Likewise. + +2017-12-20 Kyrylo Tkachov + + PR target/82975 + * config/arm/arm.h (TEST_REGNO): Adjust comment as expected in r255830. + +2017-12-20 Jakub Jelinek + + PR c++/83490 + * calls.c (compute_argument_addresses): Ignore TYPE_EMPTY_P arguments. + +2017-12-20 Julia Koval + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_VPCLMULQDQ_SET, + OPTION_MASK_ISA_VPCLMULQDQ_UNSET): New. + (ix86_handle_option): Handle -mvpclmulqdq, move cx6 to flags2. + * config.gcc: Include vpclmulqdqintrin.h. + * config/i386/cpuid.h: Handle bit_VPCLMULQDQ. + * config/i386/driver-i386.c (host_detect_local_cpu): Handle + -mvpclmulqdq. + * config/i386/i386-builtin.def (__builtin_ia32_vpclmulqdq_v2di, + __builtin_ia32_vpclmulqdq_v4di, __builtin_ia32_vpclmulqdq_v8di): New. + * config/i386/i386-c.c (__VPCLMULQDQ__): New. + * config/i386/i386.c (isa2_opts): Add -mcx16. + (isa_opts): Add -mpclmulqdq, remove -mcx16. + (ix86_option_override_internal): Move mcx16 to flags2. + (ix86_valid_target_attribute_inner_p): Add vpclmulqdq. + (ix86_expand_builtin): Handle OPTION_MASK_ISA_VPCLMULQDQ. + * config/i386/i386.h (TARGET_VPCLMULQDQ, TARGET_VPCLMULQDQ_P): New. + * config/i386/i386.opt: Add mvpclmulqdq, move mcx16 to flags2. + * config/i386/immintrin.h: Include vpclmulqdqintrin.h. + * config/i386/sse.md (vpclmulqdq_): New pattern. + * config/i386/vpclmulqdqintrin.h (_mm512_clmulepi64_epi128, + _mm_clmulepi64_epi128, _mm256_clmulepi64_epi128): New intrinsics. + * doc/invoke.texi: Add -mvpclmulqdq. + +2017-12-20 Tom de Vries + + PR middle-end/83423 + * config/i386/i386.c (ix86_static_chain): Move + DECL_STATIC_CHAIN test ... + * calls.c (rtx_for_static_chain): ... here. New function. + * calls.h (rtx_for_static_chain): Declare. + * builtins.c (expand_builtin_setjmp_receiver): Use rtx_for_static_chain + instead of targetm.calls.static_chain. + * df-scan.c (df_get_entry_block_def_set): Same. + +2017-12-19 Tom de Vries + + PR tree-optimization/83493 + * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for): Unshare ub + and lb. + +2017-12-19 Jakub Jelinek + + * gimple-ssa-sprintf.c (format_directive): Use inform_n instead of + inform with hardcoded english plural handling. + +2017-12-18 Jeff Law + + PR tree-optimization/83477 + * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): For + a non-virtual PHI, always push a new range. + +2017-12-19 Martin Sebor + + PR middle-end/77608 + * builtins.c (compute_objsize): Handle non-constant offsets. + +2017-12-19 Jakub Jelinek + + PR tree-optimization/83444 + * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): For the + character load case, if get_stridx on MEM_REF's operand doesn't + look usable, retry with get_addr_stridx. + +2017-12-19 Alexandre Oliva + + PR debug/83422 + * var-tracking.c (vt_debug_insns_local): Do not drop markers. + (variable_tracking_main_1): Keep markers even when VTA fails. + + PR bootstrap/83396 + * cfgexpand.c (expand_gimple_basic_block): Expand label first, + even if there are markers before it. + * cfgrtl.c (rtl_verify_bb_layout): Reject DEBUG_INSNs outside BBs. + +2017-12-19 Jakub Jelinek + + * read-rtl.c (parse_reg_note_name): Replace Yoda conditions with + typical order conditions. + * sel-sched.c (extract_new_fences_from): Likewise. + * config/visium/constraints.md (J, K, L): Likewise. + * config/visium/predicates.md (const_shift_operand): Likewise. + * config/visium/visium.c (visium_legitimize_address, + visium_legitimize_reload_address): Likewise. + * config/m68k/m68k.c (output_reg_adjust, emit_reg_adjust): Likewise. + * config/arm/arm.c (arm_block_move_unaligned_straight): Likewise. + * config/avr/constraints.md (Y01, Ym1, Y02, Ym2): Likewise. + * config/avr/avr-log.c (avr_vdump, avr_log_set_avr_log, + SET_DUMP_DETAIL): Likewise. + * config/avr/predicates.md (const_8_16_24_operand): Likewise. + * config/avr/avr.c (STR_PREFIX_P, avr_popcount_each_byte, + avr_is_casesi_sequence, avr_casei_sequence_check_operands, + avr_set_core_architecture, avr_set_current_function, + avr_legitimize_reload_address, avr_asm_len, avr_print_operand, + output_movqi, output_movsisf, avr_out_plus, avr_out_bitop, + avr_out_fract, avr_adjust_insn_length, avr_encode_section_info, + avr_2word_insn_p, output_reload_in_const, avr_has_nibble_0xf, + avr_map_decompose, avr_fold_builtin): Likewise. + * config/avr/driver-avr.c (avr_devicespecs_file): Likewise. + * config/avr/gen-avr-mmcu-specs.c (str_prefix_p, print_mcu): Likewise. + * config/i386/i386.c (ix86_parse_stringop_strategy_string): Likewise. + * config/m32c/m32c-pragma.c (m32c_pragma_memregs): Likewise. + * config/m32c/m32c.c (m32c_conditional_register_usage, + m32c_address_cost): Likewise. + * config/m32c/predicates.md (shiftcount_operand, + longshiftcount_operand): Likewise. + * config/iq2000/iq2000.c (iq2000_expand_prologue): Likewise. + * config/nios2/nios2.c (nios2_handle_custom_fpu_insn_option, + can_use_cdx_ldstw): Likewise. + * config/nios2/nios2.h (CDX_REG_P): Likewise. + * config/cr16/cr16.h (RETURN_ADDR_RTX, REGNO_MODE_OK_FOR_BASE_P): + Likewise. + * config/cr16/cr16.md (*mov_double): Likewise. + * config/cr16/cr16.c (cr16_create_dwarf_for_multi_push): Likewise. + * config/h8300/h8300.c (h8300_rtx_costs, get_shift_alg): Likewise. + * config/vax/constraints.md (U06, U08, U16, CN6, S08, S16): Likewise. + * config/vax/vax.c (adjacent_operands_p): Likewise. + * config/ft32/constraints.md (L, b, KA): Likewise. + * config/ft32/ft32.c (ft32_load_immediate, ft32_expand_prologue): + Likewise. + * cfgexpand.c (expand_stack_alignment): Likewise. + * gcse.c (insert_expr_in_table): Likewise. + * print-rtl.c (rtx_writer::print_rtx_operand_codes_E_and_V): Likewise. + * cgraphunit.c (cgraph_node::expand): Likewise. + * ira-build.c (setup_min_max_allocno_live_range_point): Likewise. + * emit-rtl.c (add_insn): Likewise. + * input.c (dump_location_info): Likewise. + * passes.c (NEXT_PASS): Likewise. + * read-rtl-function.c (parse_note_insn_name, + function_reader::read_rtx_operand_r, function_reader::parse_mem_expr): + Likewise. + * sched-rgn.c (sched_rgn_init): Likewise. + * diagnostic-show-locus.c (layout::show_ruler): Likewise. + * combine.c (find_split_point, simplify_if_then_else, force_to_mode, + if_then_else_cond, simplify_shift_const_1, simplify_comparison): + Likewise. + * explow.c (eliminate_constant_term): Likewise. + * final.c (leaf_renumber_regs_insn): Likewise. + * cfgrtl.c (print_rtl_with_bb): Likewise. + * genhooks.c (emit_init_macros): Likewise. + * poly-int.h (maybe_ne, maybe_le, maybe_lt): Likewise. + * tree-data-ref.c (conflict_fn): Likewise. + * selftest.c (assert_streq): Likewise. + * expr.c (store_constructor_field, expand_expr_real_1): Likewise. + * fold-const.c (fold_range_test, extract_muldiv_1, fold_truth_andor, + fold_binary_loc, multiple_of_p): Likewise. + * reload.c (push_reload, find_equiv_reg): Likewise. + * et-forest.c (et_nca, et_below): Likewise. + * dbxout.c (dbxout_symbol_location): Likewise. + * reorg.c (relax_delay_slots): Likewise. + * dojump.c (do_compare_rtx_and_jump): Likewise. + * gengtype-parse.c (type): Likewise. + * simplify-rtx.c (simplify_gen_ternary, simplify_gen_relational, + simplify_const_relational_operation): Likewise. + * reload1.c (do_output_reload): Likewise. + * dumpfile.c (get_dump_file_info_by_switch): Likewise. + * gengtype.c (type_for_name): Likewise. + * gimple-ssa-sprintf.c (format_directive): Likewise. + +2017-12-19 Kyrylo Tkachov + + PR target/82975 + * config/arm/arm.h (TEST_REGNO): Check reg_renumber is set before + accessing it. Adjust comment. + +2017-12-19 Jakub Jelinek + + PR middle-end/81914 + * predict.c (zero_one_minusone): New function. + (apply_return_prediction): Avoid return prediction for functions + returning only -1, 0 and 1 values, unless they only return -1 and 0 + or 0 and 1. + +2017-12-19 Claudiu Zissulescu + + * config/arc/arc.c (legitimate_scaled_address_p): Clean + fall-through warning. + (arc_compute_frame_size): Remove unused variables. + (arc_print_operand): Fix fprintif format. + (arc_can_follow_jump): Clean fall-through warning. + +2017-12-19 Marek Polacek + + PR c++/83489 + * config/i386/i386.c (init_cumulative_args): Don't check TYPE_EMPTY_P + on an error node. + +2017-12-19 Claudiu Zissulescu + + * config/arc/arc.c (overriderregs): New variable. + (arc_override_options): Track fixed/call saved/call options. + (arc_conditional_register_usage): Check against overrideregs + variable whenever we change register properties. + +2017-12-19 Nathan Sidwell + + * opts.c (finish_options): Don't prefix dump_base_name if it + already contains directories. + +2017-12-19 Martin Liska + + PR rtl-optimization/82675 + * loop-unroll.c (unroll_loop_constant_iterations): Allocate one + more element in sbitmap. + +2017-12-19 Paolo Carlini + + * gimplify.c (gimplify_expr): Use error_operand_p. + +2017-12-19 Sebastian Huber + + PR target/83387 + * config/rs6000/t-rtems (MULTILIB_REQUIRED): Remove 64-bit soft-float + multilib. + +2017-12-19 Daniel Cederman + + * config/sparc/sparc.c (sparc_do_work_around_errata): Make sure + the jump is to a label. + +2017-12-19 Jakub Jelinek + + PR tree-optimization/83444 + * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): Optimize + character loads. + + PR ipa/82801 + PR ipa/83346 + * ipa-inline.c (flatten_remove_node_hook): New function. + (ipa_inline): Keep only nodes with flatten attribute at the end of + the array in the order from ipa_reverse_postorder, only walk that + portion of array for flattening, if there is more than one such + node, temporarily register a removal hook and ignore removed nodes. + + PR tree-optimization/80631 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Compare + induc_code against MAX_EXPR or MIN_EXPR instead of reduc_fn against + IFN_REDUC_MAX or IFN_REDUC_MIN. + +2017-12-18 Jeff Law + + * tree-ssa-dom.c (record_equivalences_from_phis): Do not + record symbolic equivalences from backedges in the CFG. + + Revert + 2017-11-19 Jeff Law + + * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling + of degenerates resulting from ignoring an edge. + +2017-12-18 Martin Sebor + + PR middle-end/83373 + PR tree-optimization/78450 + * tree-ssa-strlen.c (maybe_set_strlen_range): New function. + (handle_builtin_strlen): Call it. + +2017-12-18 Segher Boessenkool + + PR rtl-optimization/83424 + * rtlanal.c (dead_or_set_regno_p): Handle CLOBBER just like SET. + +2017-12-18 Marek Polacek + + PR middle-end/83463 + * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): + Check if TYPE is INTEGRAL_TYPE_P before accessing its min/max + values. + +2017-12-18 Claudiu Zissulescu + + * config/arc/arc.md (maddsidi4, maddsidi4_split): Update pattern. + (umaddsidi4, umaddsidi_split): Likewise. + +2017-12-18 Claudiu Zissulescu + + * config/arc/arc.c (arc_legitimate_constant_p): Always check all + constants. + +2017-12-18 Andreas Krebbel + + PR target/83420 + * config/s390/s390.c (s390_option_override): Avoid strncpy. + +2017-12-18 Richard Biener + + PR tree-optimization/81877 + * tree-ssa-loop-im.c (ref_indep_loop_p): Remove safelen parameters. + (outermost_indep_loop): Adjust. + (ref_indep_loop_p_1): Likewise. Remove safelen handling again. + (can_sm_ref_p): Adjust. + +2017-12-18 Richard Biener + + PR middle-end/77291 + * tree.c (array_at_struct_end_p): Return true if the underlying + object has space for at least one element in excess of what + the array domain specifies. + +2017-12-17 Sandra Loosemore + + * doc/extend.texi (x86 Function Attributes): Reformat nocf_check + example to avoid overfull hbox. + * doc/invoke.texi (Option Summary): Add missing @gol. + (C++ Dialect Options): Reformat -Wnoexcept-type example to avoid + overfull hbox. + +2017-12-17 Sandra Loosemore + Kyrylo Tkachov + + * doc/invoke.texi (Option Summary): Add -mverbose-cost-dump + to AArch64 and ARM lists, plus missing -mflip-thumb for ARM. + (AArch64 Options): Document -mverbose-cost-dump. + (ARM Options): Likewise, plus -mflip-thumb. + +2017-12-17 Martin Sebor + + PR bootstrap/83446 + * gimple-ssa-warn-restrict.c + (builtin_memref::offset_out_of_bounds): Correct the handling of + anti-ranges. + +2017-12-17 Sandra Loosemore + + * doc/invoke.texi (ARC Options): Add missing -mlra entry. + +2017-12-17 John David Anglin + + * config/pa/pa.c (pa_som_asm_init_sections): Fix comment. + +2017-12-17 Markus Trippelsdorf + + * x86-tune-costs.h (skylake_cost, core_cost): Decrease r64 multiply + latencies. + +2017-12-16 Sandra Loosemore + + * doc/invoke.texi: Fix some typos. + +2017-12-16 Martin Sebor + + PR tree-optimization/78918 + * Makefile.in (OBJS): Add gimple-ssa-warn-restrict.o. + * builtins.c (check_sizes): Rename... + (check_access): ...to this. Rename function arguments for clarity. + (check_memop_sizes): Adjust names. + (expand_builtin_memchr, expand_builtin_memcpy): Same. + (expand_builtin_memmove, expand_builtin_mempcpy): Same. + (expand_builtin_strcat, expand_builtin_stpncpy): Same. + (check_strncat_sizes, expand_builtin_strncat): Same. + (expand_builtin_strncpy, expand_builtin_memset): Same. + (expand_builtin_bzero, expand_builtin_memcmp): Same. + (expand_builtin_memory_chk, maybe_emit_chk_warning): Same. + (maybe_emit_sprintf_chk_warning): Same. + (expand_builtin_strcpy): Adjust. + (expand_builtin_stpcpy): Same. + (expand_builtin_with_bounds): Detect out-of-bounds accesses + in pointer-checking forms of memcpy, memmove, and mempcpy. + (gcall_to_tree_minimal, max_object_size): Define new functions. + * builtins.h (max_object_size): Declare. + * calls.c (alloc_max_size): Call max_object_size instead of + hardcoding ssizetype limit. + (get_size_range): Handle new argument. + * calls.h (get_size_range): Add a new argument. + * cfgexpand.c (expand_call_stmt): Propagate no-warning bit. + * doc/invoke.texi (-Wrestrict): Adjust, add example. + * gimple-fold.c (gimple_fold_builtin_memory_op): Detect overlapping + operations. + (gimple_fold_builtin_memory_chk): Same. + (gimple_fold_builtin_stxcpy_chk): New function. + * gimple-ssa-warn-restrict.c: New source. + * gimple-ssa-warn-restrict.h: New header. + * gimple.c (gimple_build_call_from_tree): Propagate location. + * passes.def (pass_warn_restrict): Add new pass. + * tree-pass.h (make_pass_warn_restrict): Declare. + * tree-ssa-strlen.c (handle_builtin_strcpy): Detect overlapping + operations. + (handle_builtin_strcat): Same. + (strlen_optimize_stmt): Rename... + (strlen_check_and_optimize_stmt): ...to this. Handle strncat, + stpncpy, strncpy, and their checking forms. + +2017-12-16 Jan Hubicka + + PR rtl-optimization/82849 + * modulo-sched.c (sms_schedule): Use get_estimated_loop_iterations_int + and get_max_loop_iterations_int. + +2017-12-16 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (mode_for_size, int_mode_for_size, float_mode_for_size) + (smallest_mode_for_size, smallest_int_mode_for_size): Take the mode + size as a poly_uint64. + (mode_for_vector, mode_for_int_vector): Take the number of vector + elements as a poly_uint64. + * stor-layout.c (mode_for_size, smallest_mode_for_size): Take the mode + size as a poly_uint64. + (mode_for_vector, mode_for_int_vector): Take the number of vector + elements as a poly_uint64. + +2017-12-16 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (MACRO_MODE): New macro. + * addresses.h (base_reg_class, ok_for_base_p_1): Use it. + * targhooks.c (default_libcall_value, default_secondary_reload) + (default_memory_move_cost, default_register_move_cost) + (default_class_max_nregs): Likewise. + +2017-12-16 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/sourcebuild.texi: Document IN_TARGET_CODE. + * genattrtab.c (write_header): Define IN_TARGET_CODE to 1 in the + target C file. + * genautomata.c (main): Likewise. + * genconditions.c (write_header): Likewise. + * genemit.c (main): Likewise. + * genextract.c (print_header): Likewise. + * genopinit.c (main): Likewise. + * genoutput.c (output_prologue): Likewise. + * genpeep.c (main): Likewise. + * genpreds.c (write_insn_preds_c): Likewise. + * genrecog.c (writer_header): Likewise. + * config/aarch64/aarch64-builtins.c (IN_TARGET_CODE): Define. + * config/aarch64/aarch64-c.c (IN_TARGET_CODE): Likewise. + * config/aarch64/aarch64.c (IN_TARGET_CODE): Likewise. + * config/aarch64/cortex-a57-fma-steering.c (IN_TARGET_CODE): Likewise. + * config/aarch64/driver-aarch64.c (IN_TARGET_CODE): Likewise. + * config/alpha/alpha.c (IN_TARGET_CODE): Likewise. + * config/alpha/driver-alpha.c (IN_TARGET_CODE): Likewise. + * config/arc/arc-c.c (IN_TARGET_CODE): Likewise. + * config/arc/arc.c (IN_TARGET_CODE): Likewise. + * config/arc/driver-arc.c (IN_TARGET_CODE): Likewise. + * config/arm/aarch-common.c (IN_TARGET_CODE): Likewise. + * config/arm/arm-builtins.c (IN_TARGET_CODE): Likewise. + * config/arm/arm-c.c (IN_TARGET_CODE): Likewise. + * config/arm/arm.c (IN_TARGET_CODE): Likewise. + * config/arm/driver-arm.c (IN_TARGET_CODE): Likewise. + * config/avr/avr-c.c (IN_TARGET_CODE): Likewise. + * config/avr/avr-devices.c (IN_TARGET_CODE): Likewise. + * config/avr/avr-log.c (IN_TARGET_CODE): Likewise. + * config/avr/avr.c (IN_TARGET_CODE): Likewise. + * config/avr/driver-avr.c (IN_TARGET_CODE): Likewise. + * config/avr/gen-avr-mmcu-specs.c (IN_TARGET_CODE): Likewise. + * config/bfin/bfin.c (IN_TARGET_CODE): Likewise. + * config/c6x/c6x.c (IN_TARGET_CODE): Likewise. + * config/cr16/cr16.c (IN_TARGET_CODE): Likewise. + * config/cris/cris.c (IN_TARGET_CODE): Likewise. + * config/darwin.c (IN_TARGET_CODE): Likewise. + * config/epiphany/epiphany.c (IN_TARGET_CODE): Likewise. + * config/epiphany/mode-switch-use.c (IN_TARGET_CODE): Likewise. + * config/epiphany/resolve-sw-modes.c (IN_TARGET_CODE): Likewise. + * config/fr30/fr30.c (IN_TARGET_CODE): Likewise. + * config/frv/frv.c (IN_TARGET_CODE): Likewise. + * config/ft32/ft32.c (IN_TARGET_CODE): Likewise. + * config/h8300/h8300.c (IN_TARGET_CODE): Likewise. + * config/i386/djgpp.c (IN_TARGET_CODE): Likewise. + * config/i386/driver-i386.c (IN_TARGET_CODE): Likewise. + * config/i386/driver-mingw32.c (IN_TARGET_CODE): Likewise. + * config/i386/host-cygwin.c (IN_TARGET_CODE): Likewise. + * config/i386/host-i386-darwin.c (IN_TARGET_CODE): Likewise. + * config/i386/host-mingw32.c (IN_TARGET_CODE): Likewise. + * config/i386/i386-c.c (IN_TARGET_CODE): Likewise. + * config/i386/i386.c (IN_TARGET_CODE): Likewise. + * config/i386/intelmic-mkoffload.c (IN_TARGET_CODE): Likewise. + * config/i386/msformat-c.c (IN_TARGET_CODE): Likewise. + * config/i386/winnt-cxx.c (IN_TARGET_CODE): Likewise. + * config/i386/winnt-stubs.c (IN_TARGET_CODE): Likewise. + * config/i386/winnt.c (IN_TARGET_CODE): Likewise. + * config/i386/x86-tune-sched-atom.c (IN_TARGET_CODE): Likewise. + * config/i386/x86-tune-sched-bd.c (IN_TARGET_CODE): Likewise. + * config/i386/x86-tune-sched-core.c (IN_TARGET_CODE): Likewise. + * config/i386/x86-tune-sched.c (IN_TARGET_CODE): Likewise. + * config/ia64/ia64-c.c (IN_TARGET_CODE): Likewise. + * config/ia64/ia64.c (IN_TARGET_CODE): Likewise. + * config/iq2000/iq2000.c (IN_TARGET_CODE): Likewise. + * config/lm32/lm32.c (IN_TARGET_CODE): Likewise. + * config/m32c/m32c-pragma.c (IN_TARGET_CODE): Likewise. + * config/m32c/m32c.c (IN_TARGET_CODE): Likewise. + * config/m32r/m32r.c (IN_TARGET_CODE): Likewise. + * config/m68k/m68k.c (IN_TARGET_CODE): Likewise. + * config/mcore/mcore.c (IN_TARGET_CODE): Likewise. + * config/microblaze/microblaze-c.c (IN_TARGET_CODE): Likewise. + * config/microblaze/microblaze.c (IN_TARGET_CODE): Likewise. + * config/mips/driver-native.c (IN_TARGET_CODE): Likewise. + * config/mips/frame-header-opt.c (IN_TARGET_CODE): Likewise. + * config/mips/mips.c (IN_TARGET_CODE): Likewise. + * config/mmix/mmix.c (IN_TARGET_CODE): Likewise. + * config/mn10300/mn10300.c (IN_TARGET_CODE): Likewise. + * config/moxie/moxie.c (IN_TARGET_CODE): Likewise. + * config/msp430/driver-msp430.c (IN_TARGET_CODE): Likewise. + * config/msp430/msp430-c.c (IN_TARGET_CODE): Likewise. + * config/msp430/msp430.c (IN_TARGET_CODE): Likewise. + * config/nds32/nds32-cost.c (IN_TARGET_CODE): Likewise. + * config/nds32/nds32-fp-as-gp.c (IN_TARGET_CODE): Likewise. + * config/nds32/nds32-intrinsic.c (IN_TARGET_CODE): Likewise. + * config/nds32/nds32-isr.c (IN_TARGET_CODE): Likewise. + * config/nds32/nds32-md-auxiliary.c (IN_TARGET_CODE): Likewise. + * config/nds32/nds32-memory-manipulation.c (IN_TARGET_CODE): Likewise. + * config/nds32/nds32-pipelines-auxiliary.c (IN_TARGET_CODE): Likewise. + * config/nds32/nds32-predicates.c (IN_TARGET_CODE): Likewise. + * config/nds32/nds32.c (IN_TARGET_CODE): Likewise. + * config/nios2/nios2.c (IN_TARGET_CODE): Likewise. + * config/nvptx/mkoffload.c (IN_TARGET_CODE): Likewise. + * config/nvptx/nvptx.c (IN_TARGET_CODE): Likewise. + * config/pa/pa.c (IN_TARGET_CODE): Likewise. + * config/pdp11/pdp11.c (IN_TARGET_CODE): Likewise. + * config/powerpcspe/driver-powerpcspe.c (IN_TARGET_CODE): Likewise. + * config/powerpcspe/host-darwin.c (IN_TARGET_CODE): Likewise. + * config/powerpcspe/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise. + * config/powerpcspe/powerpcspe-c.c (IN_TARGET_CODE): Likewise. + * config/powerpcspe/powerpcspe-linux.c (IN_TARGET_CODE): Likewise. + * config/powerpcspe/powerpcspe.c (IN_TARGET_CODE): Likewise. + * config/riscv/riscv-builtins.c (IN_TARGET_CODE): Likewise. + * config/riscv/riscv-c.c (IN_TARGET_CODE): Likewise. + * config/riscv/riscv.c (IN_TARGET_CODE): Likewise. + * config/rl78/rl78-c.c (IN_TARGET_CODE): Likewise. + * config/rl78/rl78.c (IN_TARGET_CODE): Likewise. + * config/rs6000/driver-rs6000.c (IN_TARGET_CODE): Likewise. + * config/rs6000/host-darwin.c (IN_TARGET_CODE): Likewise. + * config/rs6000/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise. + * config/rs6000/rs6000-c.c (IN_TARGET_CODE): Likewise. + * config/rs6000/rs6000-linux.c (IN_TARGET_CODE): Likewise. + * config/rs6000/rs6000-p8swap.c (IN_TARGET_CODE): Likewise. + * config/rs6000/rs6000-string.c (IN_TARGET_CODE): Likewise. + * config/rs6000/rs6000.c (IN_TARGET_CODE): Likewise. + * config/rx/rx.c (IN_TARGET_CODE): Likewise. + * config/s390/driver-native.c (IN_TARGET_CODE): Likewise. + * config/s390/s390-c.c (IN_TARGET_CODE): Likewise. + * config/s390/s390.c (IN_TARGET_CODE): Likewise. + * config/sh/sh-c.c (IN_TARGET_CODE): Likewise. + * config/sh/sh-mem.cc (IN_TARGET_CODE): Likewise. + * config/sh/sh.c (IN_TARGET_CODE): Likewise. + * config/sh/sh_optimize_sett_clrt.cc (IN_TARGET_CODE): Likewise. + * config/sh/sh_treg_combine.cc (IN_TARGET_CODE): Likewise. + * config/sparc/driver-sparc.c (IN_TARGET_CODE): Likewise. + * config/sparc/sparc-c.c (IN_TARGET_CODE): Likewise. + * config/sparc/sparc.c (IN_TARGET_CODE): Likewise. + * config/spu/spu-c.c (IN_TARGET_CODE): Likewise. + * config/spu/spu.c (IN_TARGET_CODE): Likewise. + * config/stormy16/stormy16.c (IN_TARGET_CODE): Likewise. + * config/tilegx/mul-tables.c (IN_TARGET_CODE): Likewise. + * config/tilegx/tilegx-c.c (IN_TARGET_CODE): Likewise. + * config/tilegx/tilegx.c (IN_TARGET_CODE): Likewise. + * config/tilepro/mul-tables.c (IN_TARGET_CODE): Likewise. + * config/tilepro/tilepro-c.c (IN_TARGET_CODE): Likewise. + * config/tilepro/tilepro.c (IN_TARGET_CODE): Likewise. + * config/v850/v850-c.c (IN_TARGET_CODE): Likewise. + * config/v850/v850.c (IN_TARGET_CODE): Likewise. + * config/vax/vax.c (IN_TARGET_CODE): Likewise. + * config/visium/visium.c (IN_TARGET_CODE): Likewise. + * config/vms/vms-c.c (IN_TARGET_CODE): Likewise. + * config/vms/vms-f.c (IN_TARGET_CODE): Likewise. + * config/vms/vms.c (IN_TARGET_CODE): Likewise. + * config/xtensa/xtensa.c (IN_TARGET_CODE): Likewise. + +2017-12-16 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid repeated + checks for MEM_REF. + +2017-12-16 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/generic.texi (VEC_SERIES_EXPR): Document. + * doc/md.texi (vec_series@var{m}): Document. + * tree.def (VEC_SERIES_EXPR): New tree code. + * tree.h (build_vec_series): Declare. + * tree.c (build_vec_series): New function. + * cfgexpand.c (expand_debug_expr): Handle VEC_SERIES_EXPR. + * tree-pretty-print.c (dump_generic_node): Likewise. + * gimple-pretty-print.c (dump_binary_rhs): Likewise. + * tree-inline.c (estimate_operator_cost): Likewise. + * expr.c (expand_expr_real_2): Likewise. + * optabs-tree.c (optab_for_tree_code): Likewise. + * tree-cfg.c (verify_gimple_assign_binary): Likewise. + * fold-const.c (const_binop): Fold VEC_SERIES_EXPRs of constants. + * expmed.c (make_tree): Handle VEC_SERIES. + * optabs.def (vec_series_optab): New optab. + * optabs.h (expand_vec_series_expr): Declare. + * optabs.c (expand_vec_series_expr): New function. + * tree-vect-generic.c (expand_vector_operations_1): Check that + the operands also have vector type. + +2017-12-16 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/generic.texi (VEC_DUPLICATE_EXPR): Document. + (VEC_COND_EXPR): Add missing @tindex. + * doc/md.texi (vec_duplicate@var{m}): Document. + * tree.def (VEC_DUPLICATE_EXPR): New tree codes. + * tree.c (build_vector_from_val): Add stubbed-out handling of + variable-length vectors, using VEC_DUPLICATE_EXPR. + (uniform_vector_p): Handle VEC_DUPLICATE_EXPR. + * cfgexpand.c (expand_debug_expr): Likewise. + * tree-cfg.c (verify_gimple_assign_unary): Likewise. + * tree-inline.c (estimate_operator_cost): Likewise. + * tree-pretty-print.c (dump_generic_node): Likewise. + * tree-vect-generic.c (ssa_uniform_vector_p): Likewise. + * fold-const.c (const_unop): Fold VEC_DUPLICATE_EXPRs of a constant. + (test_vec_duplicate_folding): New function. + (fold_const_c_tests): Call it. + * optabs.def (vec_duplicate_optab): New optab. + * optabs-tree.c (optab_for_tree_code): Handle VEC_DUPLICATE_EXPR. + * optabs.h (expand_vector_broadcast): Declare. + * optabs.c (expand_vector_broadcast): Make non-static. Try using + vec_duplicate_optab. + * expr.c (store_constructor): Try using vec_duplicate_optab for + uniform vectors. + (expand_expr_real_2): Handle VEC_DUPLICATE_EXPR. + +2017-12-15 Markus Trippelsdorf + + PR target/83358 + * config/i386/x86-tune-costs.h (skylake_cost, core_cost): Increase + div/mod latencies a bit. + +2017-12-15 Jeff Law + + PR tree-optimization/36550 + * tree-ssa-threadupdate.c (count_stmts_and_phis_in_block): New. + (mark_threaded_blocks): Rewrite code to avoid block copying when + optimizing for size. Don't pessimize blocks which will be + copied, but all the statements will be dead. + +2017-12-15 Alexandre Oliva + + PR tree-optimization/81165 + * tree-ssa-threadupdate.c (uses_in_bb): New. + (estimate_threading_killed_stmts): New. + * tree-ssa-threadupdate.h (estimate_threading_killed_stmts): Prototype. + * tree-ssa-threadedge.c + (record_temporary_equivalences_from_stmts_at_dest): Expand limit + when its hit. + +2017-12-15 Jeff Law + + PR tree-optimization/83410 + * tree-ssa-threadupdate.c (thread_block_1): Avoid certain jump + threads when parallelizing loops. + +2017-12-15 Jakub Jelinek + + * tree-core.h (struct attribute_spec): Swap affects_type_identity and + handler fields. + * config/alpha/alpha.c (vms_attribute_table): Swap + affects_type_identity and handler fields, adjust comments. + * config/mips/mips.c (mips_attribute_table): Likewise. + * config/visium/visium.c (visium_attribute_table): Likewise. + * config/epiphany/epiphany.c (epiphany_attribute_table): Likewise. + * config/microblaze/microblaze.c (microblaze_attribute_table): + Likewise. + * config/spu/spu.c (spu_attribute_table): Likewise. + * config/mcore/mcore.c (mcore_attribute_table): Likewise. + * config/arc/arc.c (arc_attribute_table): Likewise. + * config/m68k/m68k.c (m68k_attribute_table): Likewise. + * config/v850/v850.c (v850_handle_interrupt_attribute, + v850_handle_data_area_attribute): Formatting fixes. + (v850_attribute_table): Swap affects_type_identity and handler + fields, adjust comments. + * config/m32r/m32r.c (m32r_attribute_table): Likewise. + * config/arm/arm.c (arm_attribute_table): Likewise. + * config/avr/avr.c (avr_attribute_table): Likewise. + * config/s390/s390.c (s390_attribute_table): Likewise. + * config/sh/sh.c (sh_attribute_table): Likewise. + * config/i386/i386.c (ix86_handle_cconv_attribute, + ix86_handle_callee_pop_aggregate_return): Formatting fixes. + (ix86_attribute_table): Swap affects_type_identity and handler + fields, adjust comments. + * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise. + * config/sparc/sparc.c (sparc_attribute_table): Likewise. + * config/m32c/m32c.c (m32c_attribute_table): Likewise. + * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise. + * config/ia64/ia64.c (ia64_attribute_table): Likewise. + * config/msp430/msp430.c (msp430_attribute_table): Likewise. + * config/rx/rx.c (rx_attribute_table): Likewise. + * config/cr16/cr16.c (cr16_attribute_table): Likewise. + * config/h8300/h8300.c (h8300_attribute_table): Likewise. + * config/nvptx/nvptx.c (nvptx_attribute_table): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise. + * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise. + * config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise. + * config/bfin/bfin.c (bfin_attribute_table): Likewise. + * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise. + * config/rl78/rl78.c (rl78_attribute_table): Likewise. + * config/nds32/nds32.c (nds32_attribute_table): Likewise. + * doc/plugins.texi (user_attr): Likewise. Add NULL for + exclude. + * attribs.c (empty_attribute_table): Swap affects_type_identity and + handler fields. + (register_scoped_attributes, decl_attributes): Formatting fixes. + + PR tree-optimization/83269 + * fold-const.c (fold_binary_loc): Perform (-A) - B -> (-B) - A + subtraction in arg0's type if type is signed and arg0 is unsigned. + Formatting fix. + + PR sanitizer/81281 + * match.pd ((T)(P + A) - (T)P -> (T) A): Use @@0 instead of @0 and + convert? on @0 instead of convert. Check type of @1, not @0. + ((T)P - (T)(P + A) -> -(T) A): Use @@0 instead of @0 and + convert? on @0 instead of convert. Check type of @1, not @0. + ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Use @@0 instead of @0, + only optimize if either both @1 and @2 types are narrower + precision, or both are wider or equal precision, and in the former + case only if both have undefined overflow. + +2017-12-15 Richard Biener + + PR lto/83388 + * internal-fn.def (IFN_NOP): Add. + * internal-fn.c (expand_NOP): Do nothing. + * lto-streamer-in.c (input_function): Instead of removing + sanitizer calls replace them with IFN_NOP calls. + +2017-12-15 Richard Sandiford + Alan Hayward + David Sherwood + + * dse.c (store_info, read_info_type): Replace begin and end with + offset and width. + (print_range): New function. + (set_all_positions_unneeded, any_positions_needed_p) + (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Update + accordingly. + (record_store): Likewise. Optimize the case in which all positions + are unneeded. + (get_stored_val): Replace read_begin and read_end with read_offset + and read_width. + (replace_read): Update call accordingly. + +2017-12-15 Bin Cheng + + * gimple-loop-interchange.cc (STMT_COST_RATIO): New macro. + (loop_cand::m_num_stmts, loop_cand::m_const_init_reduc): New members. + (loop_cand::loop_cand): Initialize above members. + (loop_cand::supported_operations): Delete. + (loop_cand::can_interchange_p): Inline above function. + (loop_cand::classify_simple_reduction): Record number of constant + initialized simple reductions. + (should_interchange_loops): New parameters. Check stmt cost of loops + to be interchange. + (tree_loop_interchange::interchange): Prepare stmt cost of outer loop. + Update call to should_interchange_loops. + (should_interchange_loop_nest): Update call to + should_interchange_loops. + +2017-12-15 Eric Botcazou + + PR target/66488 + * ggc-page.c (HOST_BITS_PER_PTR): Do not define here... + * hwint.h (HOST_BITS_PER_PTR): ...but here instead. + * config/i386/xm-mingw32.h (HOST_BITS_PER_PTR): Delete. + +2017-12-15 Julia Koval + + * config/i386/i386-builtin.def (__builtin_ia32_vaesenclast_v16qi, + __builtin_ia32_vaesenclast_v32qi, __builtin_ia32_vaesenclast_v64qi): + New. + * config/i386/sse.md (vaesenclast_): New pattern. + * config/i386/vaesintrin.h (_mm256_aesenclast_epi128, + _mm512_aesenclast_epi128, _mm_aesenclast_epi128): New intrinsics. + +2017-12-15 Julia Koval + + * config/i386/i386-builtin.def (__builtin_ia32_vaesenc_v16qi, + __builtin_ia32_vaesenc_v32qi, __builtin_ia32_vaesenc_v64qi): New. + * config/i386/sse.md (vaesenc_): New pattern. + * config/i386/vaesintrin.h (_mm256_aesenc_epi128, _mm512_aesenc_epi128, + _mm_aesenc_epi128): New intrinsics. + +2017-12-15 Julia Koval + + * config/i386/i386-builtin.def (__builtin_ia32_vaesdeclast_v16qi, + __builtin_ia32_vaesdeclast_v32qi, __builtin_ia32_vaesdeclast_v64qi): + New. + * config/i386/sse.md (vaesdeclast_): New pattern. + * config/i386/vaesintrin.h (_mm256_aesdeclast_epi128, + _mm512_aesdeclast_epi128, _mm_aesdeclast_epi128): New intrinsics. + +2017-12-14 Bill Schmidt + + * gimple-ssa-strength-reduction.c (analyze_increments): + Distinguish replacement costs for constant strides from those for + unknown strides. + +2017-12-14 Jakub Jelinek + + * var-tracking.c (variable_tracking_main_1): Formatting fix. + +2017-12-14 Bernd Edlinger + + * doc/invoke.texi: Document -Wcast-function-type. + * recog.h (stored_funcptr): Change signature. + * tree-dump.c (dump_node): Avoid warning. + * typed-splay-tree.h (typed_splay_tree): Avoid warning. + +2017-12-14 Qing Zhao + + PR middle_end/79538 + * gimple-fold.c (get_range_strlen): Add the handling of non-member + array. + +2017-12-14 David Malcolm + + PR tree-optimization/83312 + * domwalk.h (dom_walker::dom_walker): Fix typo in comment. + * tree-cfg.c (find_taken_edge): Update to handle NULL_TREE for + "val" param, and to cope with arbitrary basic blocks. + (find_taken_edge_cond_expr): Add "cond_stmt" param and use it to + handle NULL_TREE for "val", dropping "bb" param. + (find_taken_edge_switch_expr): Make "switch_stmt" param const and + drop "bb" param. Handle NULL_TREE for "val". + (find_case_label_for_value): Make "switch_stmt" param const. + * tree-vrp.c (class check_array_bounds_dom_walker): New subclass + of dom_walker. + (vrp_prop::check_all_array_refs): Reimplement as... + (check_array_bounds_dom_walker::before_dom_children): ...this new + vfunc. Replace linear search through BB block list, excluding + those with non-executable in-edges via dominator walk. + +2017-12-14 Kyrylo Tkachov + + * config/arm/arm.opt (mverbose-cost-dump): New option. + * config/arm/arm.c (arm_rtx_costs): Use it. + +2017-12-14 Andreas Schwab + + PR bootstrap/83396 + * reload1.c (emit_input_reload_insns): Skip debug markers. + +2017-12-14 Alexandre Oliva + + * config/i386/i386.c (rest_of_insert_endbranch): Use call loc + for its nop_endbr. + + PR bootstrap/83396 + * config/arc/arc.c (hwloop_optimize): Skip debug insns. + * config/sh/sh-protos.h (sh_find_set_of_reg): Adjust. + * config/sh/sh.c: Skip debug insns besides notes. + * config/sh/sh.md: Likewise. + * config/sh/sh_treg_combine.cc: Likewise. + * config/sh/sync.md: Likewise. + +2017-12-14 Tom de Vries + + * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes): + Add item for weak_undefined. + +2017-12-14 Richard Biener + + PR tree-optimization/67842 + * sese.h (bb_in_region): Remove #if 0'ed code. + +2017-12-14 Richard Biener + + PR tree-optimization/83326 + * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add + may_be_zero parameter and handle it by not marking the first + peeled copy as not exiting the loop. + (try_peel_loop): Likewise. + (canonicalize_loop_induction_variables): Use number_of_iterations_exit + to handle the case of constant or zero iterations and perform + loop header copying on-the-fly. + +2017-12-14 Richard Biener + + PR tree-optimization/83418 + * vr-values.c (vr_values::extract_range_for_var_from_comparison_expr): + Instead of asserting we don't get unfolded comparisons deal with them. + +2017-12-14 Jakub Jelinek + + PR bootstrap/83396 + * var-tracking.c (vt_initialize): Ignore non-DEBUG_INSNs outside of + basic blocks. Assert debug bind insns don't appear outside of bbs, + don't reset them. Assert insns without BLOCK_FOR_INSN are outside of + bb. Simplify. + + PR tree-optimization/83198 + * gimple-ssa-sprintf.c (format_floating): Set type solely based on + dir.modifier, regardless of TREE_TYPE (arg). Assume non-REAL_CST + value if arg is a REAL_CST with incompatible type. + +2017-12-14 Sudakshina Das + Bin Cheng + + PR target/81228 + * config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT + to CCFPEmode. + * config/aarch64/aarch64-simd.md (vec_cmp): Add + LTGT. + +2017-12-14 Kyrylo Tkachov + + * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75, + cortex-a75.cortex-a55): Specify AARCH64_FL_F16 in the arch features. + +2017-12-14 Richard Sandiford + Alan Hayward + David Sherwood + + * poly-int.h: New file. + * poly-int-types.h: Likewise. + * coretypes.h: Include them. + (POLY_INT_CONVERSION): Define. + * target.def (estimated_poly_value): New hook. + * doc/tm.texi.in (TARGET_ESTIMATED_POLY_VALUE): New hook. + * doc/tm.texi: Regenerate. + * doc/poly-int.texi: New file. + * doc/gccint.texi: Include it. + * doc/rtl.texi: Describe restrictions on subreg modes. + * Makefile.in (TEXI_GCCINT_FILES): Add poly-int.texi. + * genmodes.c (NUM_POLY_INT_COEFFS): Provide a default definition. + (emit_insn_modes_h): Emit a definition of NUM_POLY_INT_COEFFS. + * targhooks.h (default_estimated_poly_value): Declare. + * targhooks.c (default_estimated_poly_value): New function. + * target.h (estimated_poly_value): Likewise. + * wide-int.h (WI_UNARY_RESULT): Use wi::binary_traits. + (wi::unary_traits): Delete. + (wi::binary_traits::signed_shift_result_type): Define for + offset_int << HOST_WIDE_INT, etc. + (generic_wide_int::operator <<=): Define for all types and use + wi::lshift instead of <<. + (wi::hwi_with_prec): Add a default constructor. + (wi::ints_for): New class. + (operator <<): Define for all wide-int types. + (operator /): New function. + (operator %): Likewise. + * selftest.h (ASSERT_KNOWN_EQ, ASSERT_KNOWN_EQ_AT, ASSERT_MAYBE_NE) + (ASSERT_MAYBE_NE_AT): New macros. + +2017-12-13 Eric Botcazou + Dominik Vogt + + PR middle-end/78468 + * emit-rtl.c (init_emit): Remove ??? comment. + * explow.c (get_dynamic_stack_size): Take known alignment of stack + pointer + STACK_DYNAMIC_OFFSET into account in lieu of STACK_BOUNDARY. + * config/sparc/sparc.h (INIT_EXPANDERS): In 32-bit mode, lower the + alignment of 3 virtual registers to BITS_PER_WORD. + + * config/sparc/sparc.c (sparc_compute_frame_size): Simplify. + +2017-12-13 Peter Bergner + + * config/rs6000/ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define. + * config/rs6000/rs6000.c (cpu_supports_info): Use it. + +2017-12-13 Alexandre Oliva + + PR bootstrap/83396 + * reload1.c (eliminate_regs_in_insn): Skip debug markers. + +2017-12-13 Jakub Jelinek + + * tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts + with the exception of debug begin stmt markers appear before + labels. + + PR bootstrap/83396 + * final.c (rest_of_handle_final): Call variable_tracking_main only + if !flag_var_tracking. + +2017-12-13 Alexandre Oliva + Jakub Jelinek + + PR bootstrap/83396 + PR debug/83391 + * tree-cfgcleanup.c (remove_forwarder_block): Keep after + labels debug stmts that can only appear after labels. + +2017-12-13 Alexander Monakov + + PR rtl-optimization/82398 + * sel-sched.c (sel_rank_for_schedule): Fix check for zero + EXPR_USEFULNESS in priority comparison. + +2017-12-13 Segher Boessenkool + + PR rtl-optimization/83393 + * combine.c (move_deaths): If reg_stat points to a too new insn in + last_death, do not use it: find the proper insn instead. + +2017-12-12 Aaron Sawdey + + PR target/82190 + * config/rs6000/rs6000-string.c (expand_block_compare, + expand_strn_compare): Fix set_mem_size() calls. + +2017-12-12 Jeff Law + + PR tree-optimization/83298 + PR tree-optimization/83362 + PR tree-optimization/83383 + * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Make + push_value_range a public interface. Add new argument to + record_ranges_from_stmt. + * gimple-ssa-evrp-analyze.c + (evrp_range_analyzer::record_ranges_from_stmt): Add new argument. + Update comments. Handle recording temporary equivalences. + * tree-ssa-dom.c (dom_opt_opt_walker::before_dom_children): Add + new argument to call to evrp_range_analyzer::record_ranges_from_stmt. + * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Likewise. + * tree-ssa-threadedge.c: Include alloc-pool.h, vr-values.h and + gimple-ssa-evrp-analyze.h. + (record_temporary_equivalences_from_phis): Add new argument. When + the PHI arg is an SSA_NAME, set the result's range to the range + of the PHI arg. + (record_temporary_equivalences_from_stmts_at_dest): Record ranges + from statements too. + (thread_through_normal_block): Accept new argument, evrp_range_analyzer. + Pass it down to children as needed. + (thread_outgoing_edges): Likewise. + (thread_across_edge): Likewise. Push/pop range state as needed. + * tree-ssa-threadedge.h (thread_outgoing_edges): Update prototype. + +2017-12-12 Julia Koval + + * config/i386/i386.c (PTA_SKYLAKE_AVX512): Add PTA_CLWB. + (PTA_CANNONLAKE): Remove PTA_CLWB. + +2017-12-12 Bill Schmidt + + PR target/83332 + * config/rs6000/vector.md (vcondv2dfv2di): New define_expand. + (vcondv2div2df): Likewise. + (vconduv2dfv2di): Likewise. + +2017-12-12 Jakub Jelinek + + * builtins.def (BUILT_IN_NEXTAFTER, BUILT_IN_NEXTAFTERF, + BUILT_IN_NEXTAFTERL, BUILT_IN_NEXTTOWARD, BUILT_IN_NEXTTOWARDF, + BUILT_IN_NEXTTOWARDL): Use ATTR_MATHFN_ERRNO instead of + ATTR_MATHFN_FPROUNDING_ERRNO. + +2017-12-12 Richard Biener + + PR tree-optimization/83385 + * graphite-scop-detection.c (get_order, order): Remove. + (bb_to_rpo): New global. + (cmp_pbbs): Adjust. + (build_scops): Sort pbbs in RPO order. + +2017-12-12 James Greenhalgh + + * combine.c (simplify_set): Do not transform subregs to zero_extends + if the destination mode is a vector mode. + +2017-12-12 Jakub Jelinek + + PR tree-optimization/83359 + * tree-cfg.h (fold_loop_internal_call): Declare. + * tree-vectorizer.c (fold_loop_internal_call): Moved to ... + * tree-cfg.c (fold_loop_internal_call): ... here. No longer static. + (find_loop_dist_alias): New function. + (move_sese_region_to_fn): If any dloop->orig_loop_num value is + updated, also adjust any corresponding LOOP_DIST_ALIAS internal + calls. + + PR tree-optimization/80631 + * tree-vect-loop.c (get_initial_def_for_reduction): Fix comment typo. + (vect_create_epilog_for_reduction): Add INDUC_VAL and INDUC_CODE + arguments, for INTEGER_INDUC_COND_REDUCTION use INDUC_VAL instead of + hardcoding zero as the value if COND_EXPR is never true. For + INTEGER_INDUC_COND_REDUCTION don't emit the final COND_EXPR if + INDUC_VAL is equal to INITIAL_DEF, and use INDUC_CODE instead of + hardcoding MAX_EXPR as the reduction operation. + (is_nonwrapping_integer_induction): Allow negative step. + (vectorizable_reduction): Compute INDUC_VAL and INDUC_CODE for + vect_create_epilog_for_reduction, if no value is suitable, don't + use INTEGER_INDUC_COND_REDUCTION for now. Formatting fixes. + +2017-12-12 Richard Biener + + PR tree-optimization/81889 + * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness): Use + range info from the non-wrapping IV instead of just the range + of the type. + +2017-12-12 Julia Koval + + * config.gcc: Add vaesintrin.h. + * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI): + New type. + * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi, + __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi): + New builtins. + * config/i386/i386.c (ix86_expand_args_builtin): Handle new type. + * config/i386/immintrin.h: Include vaesintrin.h. + * config/i386/sse.md (vaesdec_): New pattern. + * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128, + _mm_aesdec_epi128): New intrinsics. + +2017-12-12 Julia Koval + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_VAES_SET, + OPTION_MASK_ISA_VAES_UNSET): New. + (ix86_handle_option): Handle -mvaes. + * config/i386/cpuid.h: Define bit_VAES. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mvaes. + * config/i386/i386-c.c (__VAES__): New. + * config/i386/i386.c (ix86_target_string): Add -mvaes. + (ix86_valid_target_attribute_inner_p): Ditto. + * config/i386/i386.h (TARGET_VAES, TARGET_VAES_P): New. + * config/i386/i386.opt: Add -mvaes. + * doc/invoke.texi: Ditto. + +2017-12-12 Alexandre Oliva + + * debug.h (gcc_debug_hooks): Add inline_entry. + * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise. + * debug.c (do_nothing_debug_hooks): Likewise. + * vmsdbgout.c (vmsdbg_debug_hooks): Likewise. + * dwarf2out.c (dwarf2_debug_hooks): Likewise. + (dwarf2_lineno_debug_hooks): Likewise. + + * common.opt (gstatement-frontiers): New, setting + debug_nonbind_markers_p. + * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate. + * toplev.c (process_options): Autodetect value for debug statement + frontiers option. + * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate. + * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New. + + * cfgexpand.c (expand_gimple_basic_block): Handle begin stmt + markers. Integrate source bind into debug stmt expand loop. + (pass_expand::execute): Check debug marker limit. Avoid deep + TER and expand debug locations for debug bind insns only. + * cse.c (insn_live_p): Keep nonbind markers and debug bindings + followed by them. + * df-scan.c (df_insn_delete): Accept out-of-block debug insn. + * final.c (reemit_insn_block_notes): Take current block from + nonbind markers. Declare note where it's first set. + (final_scan_insn): Handle begin stmt notes. Emit is_stmt according to + begin stmt markers if enabled. + (notice_source_line): Handle nonbind markers. Fail if their + location is unknown or that of builtins. + (rest_of_handle_final): Convert begin stmt markers to notes if + var-tracking didn't run. + (rest_of_clean_state): Skip begin stmt markers. + * gimple-pretty-print.c (dump_gimple_debug): Handle begin stmt + markers. + * function.c (allocate_struct_function): Set begin_stmt_markers. + * function.h (struct function): Add debug_marker_count counter + and debug_nonbind_markers flag. + * gimple-iterator.c (gsi_remove): Adjust debug_marker_count. + * gimple-low.c (lower_function_body): Adjust + debug_nonbind_markers. + (lower_stmt): Drop or skip gimple debug stmts. + (lower_try_catch): Skip debug stmts. + * gimple.c (gimple_build_debug_begin_stmt): New. + (gimple_copy): Increment debug_marker_count if copying one. + * gimple.h (gimple_build_debug_begin_stmt): Declare. + * gimplify.c (rexpr_location): New. + (rexpr_has_location): New. + (warn_switch_unreachable_r): Handle gimple debug stmts. + (shortcut_cond_r): Call expr_location. + (find_goto): New. + (find_goto_label): New. + (shortcut_cond_expr): Call expr_has_location, expr_location, and + find_goto_label. + (gimplify_cond_expr): Call find_goto_label, expr_has_location, and + expr_location. + (gimplify_expr): Handle begin stmt markers. Reject debug expr decls. + * langhooks-def.h (LANG_HOOKS_EMITS_BEGIN_STMT): New. Add to... + (LANG_HOOKS_INITIALIZER): ... this. + * langhooks.h (struct lang_hooks): Add emits_begin_stmt. + * lra-contraints.c (inherit_reload_reg): Tolerate between-blocks + debug insns. + (update_ebb_live_info): Skip debug insn markers. + * lra.c (debug_insn_static_data): Rename to... + (debug_bind_static_data): ... this. + (debug_marker_static_data): New. + (lra_set_insn_recog_data): Select one of the above depending + on debug insn kind. + (lra_update_isn_regno_info): Don't assume debug insns have + freqs. + (push_insns): Skip debug insns. + * lto-streamer-in.c (input_function): Drop debug stmts + depending on active options. Adjust debug_nonbind_markers. + * params.def (PARAM_MAX_DEBUG_MARKER_COUNT): New. + * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle + begin stmt marker notes. + (print_insn): Likewise. + * recog.c (extract_insn): Recognize rtl for debug markers. + * rtl.def (DEBUG_MARKER): New. + * tree-inline.c: Include params.h. + (remap_gimple_stmt): Handle nonbind markers. + (maybe_move_debug_stmts_to_successors): Likewise. + (copy_debug_stmt): Likewise. + * tree-iterator.c (append_to_statement_list_1): Append begin stmt + markers regardless of no side effects. + (tsi_link_before): Don't update container's side effects when adding + a begin stmt marker. + (tsi_link_after): Likewise. + (expr_first): Skip begin stmt markers. + (expr_last): Likewise. + * tree-pretty-print (dump_generic_node): Handle begin stmt markers. + * tree-ssa-threadedge.c (propagate_threaded_block_debug_info): + Disregard nonbind markers. + * tree.c (make_node_stat): Don't set side effects for begin stmt + markers. + (build1_stat): Likewise. + * tree.def (DEBUG_BEGIN_STMT): New. + * tree.h (GOTO_DESTINATION): Require a GOTO_EXPR. + * var-tracking.c (delete_debug_insns): Renamed to... + (delete_vta_debug_insns): ... this. + (reemit_marker_as_note): New. + (vt_initialize): Reemit markers. + (delete_vta_debug_insns): Likewise. + (vt_debug_insns_local): Reemit or delete markers. + (variable_tracking_main_1): Likewise. + * doc/generic.texi (DEBUG_BEGIN_STMT): Document. + * doc/gimple.texi (gimple_debug_begin_stmt_p): New. + (gimple_debug_nonbind_marker_p): New. + (gimple_build_debug_bind): Adjust. + (gimple_build_debug_begin_stmt): New. + * doc/invoke.texi (max-debug-marker-count): New param. + * doc/rtl.texi (debug_implicit_ptr, entry_value): New. + (debug_parameter_ref, debug_marker): New. + (NOTE_INSN_BEGIN_STMT): New. + (DEBUG_INSN): Describe begin stmt markers. + + * cfgbuild.c (find_bb_boundaries): Don't purge dead edges if, + without debug insns, we wouldn't, but clean up debug insns + after a control flow insn nevertheless. + + * cfgcleanup.c (delete_unreachable_blocks): Use alternate + block removal order if MAY_HAVE_DEBUG_BIND_INSNS. + * cfgexpand.c (label_rtx_for_bb): Skip debug insns. + * cfgrtl.c (try_redirect_by_replacing_jump): Skip debug insns. + (rtl_tidy_fallthru_edge): Likewise. + (rtl_verify_fallthru): Likewise. + (rtl_verify_bb_layout): Likewise. + (skip_insns_after_block): Likewise. + (duplicate_insn_chain): Use DEBUG_BIND_INSN_P. + * dwarf2out.c: Include print-rtl.h. + (dwarf2out_next_real_insn): New. + (dwarf2out_var_location): Call it. Disregard begin stmt markers. + Dump debug binds in asm comments. + * gimple-iterator.c (gimple_find_edge_insert_loc): Skip debug stmts. + * gimple-iterator.h (gsi_start_bb_nondebug): Remove; adjust + callers to use gsi_start_nondebug_bb instead. + (gsi_after_labels): Skip gimple debug stmts. + (gsi_start_nondebug): New. + * gimple-loop-interchange.c (find_deps_in_bb_for_stmt): Adjust. + (proper_loop_form_for_interchange): Adjust. + * gimple-low.c (gimple_seq_may_fallthru): Take last nondebug stmt. + * gimple.h (gimple_seq_last_nondebug_stmt): New. + * gimplify.c (last_stmt_in_scope): Skip debug stmts. + (collect_fallthrough_labels): Likewise. + (should_warn_for_implicit_fallthrough): Likewise. + (warn_implicit_fallthrough_r): Likewise. + (expand_FALLTHROUGH_r): Likewise. + * graphite-isl-ast-to-gimple.c (gsi_insert_earliest): Adjust. + (graphite_copy_stmts_from_block): Skip nonbind markers. + * haifa-sched.c (sched_extend_bb): Skip debug insns. + * ipa-icf-gimple.c (func_checker::compare_bb): Adjust. + * jump.c (clean_barriers): Skip debug insns. + * omp-expand.c (expand_parallel_call): Skip debug insns. + (expand_task_call): Likewise. + (remove_exit_barrier): Likewise. + (expand_omp_taskreg): Likewise. + (expand_omp_for_init_counts): Likewise. + (expand_omp_for_generic): Likewise. + (expand_omp_for_static_nochunk): Likewise. + (expand_omp_for_static_chunk): Likewise. + (expand_omp_simd): Likewise. + (expand_omp_taskloop_for_outer): Likewise. + (expand_omp_taskloop_for_inner): Likewise. + (expand_oacc_for): Likewise. + (expand_omp_sections): Likewise. + (expand_omp_single): Likewise. + (expand_omp_synch): Likewise. + (expand_omp_atomic_load): Likewise. + (expand_omp_atomic_store): Likewise. + (expand_omp_atomic_fetch_op): Likewise. + (expand_omp_atomic_pipeline): Likewise. + (expand_omp_atomic_mutex): Likewise. + (expand_omp_target): Likewise. + (grid_expand_omp_for_loop): Likewise. + (grid_expand_target_grid_body): Likewise. + (build_omp_regions_1): Likewise. + * omp-low.c (check_combined_parallel): Skip debug stmts. + * postreload.c (fixup_debug_insns): Skip nonbind debug insns. + * regcprop.c (find_oldest_value_reg): Ensure REGNO is not a pseudo. + * sese.c (sese_trivially_empty_bb_p): Call is_gimple_debug in + test. + * tree-cfg.c (make_blobs_1): Skip debug stmts. + (make_edges): Likewise. + (cleanup_dead_labels): Likewise. + (gimple_can_merge_blocks_p): Likewise. + (stmt_starts_bb_p): Likewise. + (gimple_block_label): Likewise. + (gimple_redirect_edge_and_branch): Likewise. + * tree-cfgcleanup.c (remove_forwarder_block): Rearrange skipping + of debug stmts. + (execute_cleanup_cfg_post_optimizing): Dump enumerated decls with + TDF_SLIM. + * tree-pretty-print (print_declaration): Omit initializer in slim + dumps. + * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark begin stmt + markers. + (eliminate_unnecessary_stmts): Stabilize block removal order. + * tree-ssa-tail-merge.c (find_duplicate): Skip debug stmts. + * var-tracking.c (get_first_insn): New. + (vt_emit_notes): Call it. + (vt_initialize): Walk any insns before the first BB. + (delete_debug_insns): Likewise. + + * gimple.h (enum gimple_debug_subcode): Add + GIMPLE_DEBUG_BEGIN_STMT. + (gimple_debug_begin_stmt_p): New. + (gimple_debug_nonbind_marker_p): New. + * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): New. + (MAY_HAVE_DEBUG_BIND_STMTS): Renamed from.... + (MAY_HAVE_DEBUG_STMTS): ... this. Check both. + * insn-notes.def (BEGIN_STMT): New. + * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): New. + (MAY_HAVE_DEBUG_BIND_INSNS): Renamed from.... + (MAY_HAVE_DEBUG_INSNS): ... this. Check both. + (NOTE_MARKER_LOCATION, NOTE_MARKER_P): New. + (DEBUG_BIND_INSN_P, DEBUG_MARKER_INSN_P): New. + (INSN_DEBUG_MARKER_KIND): New. + (GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT): New. + (INSN_VAR_LOCATION): Check for VAR_LOCATION. + (INSN_VAR_LOCATION_PTR): New. + * cfgexpand.c (expand_debug_locations): Handle debug bind insns + only. + (expand_gimple_basic_block): Likewise. Emit debug temps for TER + deps only if debug bind insns are enabled. + (pass_expand::execute): Avoid deep TER and expand + debug locations for debug bind insns only. + * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Narrow + debug stmts special handling down to debug bind stmts. + * combine.c (try_combine): Narrow debug insns special handling + down to debug bind insns. + * cse.c (delete_trivially_dead_insns): Handle debug bindings. + Narrow debug insns preexisting special handling down to debug + bind insns. + * dce.c (rest_of_handle_ud_dce): Narrow debug insns special + handling down to debug bind insns. + * function.c (instantiate_virtual_regs): Skip debug markers, + adjust handling of debug binds. + * gimple-ssa-backprop.c (backprop::prepare_change): Try debug + temp insertion iff MAY_HAVE_DEBUG_BIND_STMTS. + * haifa-sched.c (schedule_insn): Narrow special handling of debug + insns to debug bind insns. + * ipa-param-manipulation.c (ipa_modify_call_arguments): Narrow + special handling of debug stmts to debug bind stmts. + * ipa-split.c (split_function): Likewise. + * ira.c (combine_and_move_insns): Adjust debug bind insns only. + * loop-unroll.c (apply_opt_in_copies): Adjust tests on bind + debug insns. + * reg-stack.c (convert_regs_1): Use DEBUG_BIND_INSN_P. + * regrename.c (build_def_use): Likewise. + * regcprop.c (copyprop_hardreg_forward_1): Likewise. + (pass_cprop_hardreg): Narrow special casing of debug insns to + debug bind insns. + * regstat.c (regstat_init_n_sets_and_refs): Likewise. + * reload1.c (reload): Likewise. + * sese.c (sese_insert_phis_for_liveouts): Narrow special + casing of debug stmts to debug bind stmts. + * shrink-wrap.c (move_insn_for_shrink_wrap): Likewise. + * ssa-iterators.h (num_imm_uses): Likewise. + * tree-cfg.c (gimple_merge_blocks): Narrow special casing of + debug stmts to debug bind stmts. + * tree-inline.c (tree_function_versioning): Narrow special casing + of debug stmts to debug bind stmts. + * tree-loop-distribution.c (generate_loops_for_partition): + Narrow special casing of debug stmts to debug bind stmts. + * tree-sra.c (analyze_access_subtree): Narrow special casing + of debug stmts to debug bind stmts. + * tree-ssa-dce.c (remove_dead_stmt): Narrow special casing of debug + stmts to debug bind stmts. + * tree-ssa-loop-ivopt.c (remove_unused_ivs): Narrow special + casing of debug stmts to debug bind stmts. + * tree-ssa-reassoc.c (reassoc_remove_stmt): Likewise. + * tree-ssa-tail-merge.c (tail_merge_optimize): Narrow special + casing of debug stmts to debug bind stmts. + * tree-ssa-threadedge.c (propagate_threaded_block_debug_info): + Likewise. + * tree-ssa.c (flush_pending_stmts): Narrow special casing of + debug stmts to debug bind stmts. + (gimple_replace_ssa_lhs): Likewise. + (insert_debug_temp_for_var_def): Likewise. + (insert_debug_temps_for_defs): Likewise. + (reset_debug_uses): Likewise. + * tree-ssanames.c (release_ssa_name_fn): Likewise. + * tree-vect-loop-manip.c (adjust_debug_stmts_now): Likewise. + (adjust_debug_stmts): Likewise. + (adjust_phi_and_debug_stmts): Likewise. + (vect_do_peeling): Likewise. + * tree-vect-loop.c (vect_transform_loop): Likewise. + * valtrack.c (propagate_for_debug): Use BIND_DEBUG_INSN_P. + * var-tracking.c (adjust_mems): Narrow special casing of debug + insns to debug bind insns. + (dv_onepart_p, dataflow_set_clar_at_call, use_type): Likewise. + (compute_bb_dataflow, vt_find_locations): Likewise. + (vt_expand_loc, emit_notes_for_changes): Likewise. + (vt_init_cfa_base): Likewise. + (vt_emit_notes): Likewise. + (vt_initialize): Likewise. + (vt_finalize): Likewise. + + * emit-rtl.c (next_nondebug_insn, prev_nondebug_insn): Reorder. + (next_nonnote_nondebug_insn, prev_nonnote_nondebug_insn): Reorder. + (next_nonnote_nondebug_insn_bb): New. + (prev_nonnote_nondebug_insn_bb): New. + (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove. + * rtl.h (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove decls. + (prev_nonnote_nondebug_insn_bb): Declare. + (next_nonnote_nondebug_insn_bb): Declare. + * cfgbuild.c (find_bb_boundaries): Adjust to skip debug insns. + * cfgrtl.c (get_last_bb_insn): Likewise. + * lra.c (push_insns): Likewise. + +2017-12-11 David Malcolm + + PR c/82050 + * selftest-run-tests.c (selftest::run_tests): Move start/finish code + to... + * selftest.c (selftest::test_runner::test_runner): New ctor. + (selftest::test_runner::~test_runner): New dtor. + * selftest.h (class selftest::test_runner): New class. + +2017-12-11 Carl Love + + * config/rs6000/altivec.h (vec_extract_fp32_from_shorth, + vec_extract_fp32_from_shortl]): Add #defines. + * config/rs6000/rs6000-builtin.def (VSLDOI_2DI): Add macro expansion. + * config/rs6000/rs6000-c.c (ALTIVEC_BUILTIN_VEC_UNPACKH, + ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VEC_AND, + ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SRL, + ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VEC_SLD, + ALTIVEC_BUILTIN_VEC_SLL): Add expansions. + * doc/extend.texi: Add documentation for the added builtins. + +2017-12-11 Alexandre Oliva + + PR rtl-optimization/80693 + PR rtl-optimization/81019 + PR rtl-optimization/81020 + * combine.c (distribute_notes): Reset any REG_UNUSED REGs that + are not mentioned in i3. Place the REG_UNUSED note on i2, + possibly modified to REG_DEAD, if it did not originate in i3. + +2017-12-11 Jakub Jelinek + + * recog.c (store_data_bypass_p_1): New function. + (store_data_bypass_p): Handle USE in a PARALLEL like CLOBBER. Use + store_data_bypass_p_1 to avoid code duplication. Formatting fixes. + +2017-12-11 Segher Boessenkool + + PR rtl-optimization/83361 + * ifcvt.c (if_convert): Call fixup_partitions. + +2017-12-11 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for + early folding of splat_u{8,16,32}. + +2017-12-11 Jakub Jelinek + + * config/aarch64/aarch64.c (aarch64_print_operand): Don't start + output_operand_lossage first argument with capital letter. + (aarch64_override_options): Don't start error and sorry first argument + with capital letter. + +2017-12-11 Andi Kleen + + PR gcov-profile/83355 + * auto-profile.c (string_table::get_index_by_decl): Don't + recurse when abstract origin points to itself. + +2017-12-11 Bin Cheng + + PR tree-optimization/83320 + * gimple-loop-interchange.cc (free_data_refs_with_aux): Use delete. + (prune_datarefs_not_in_loop): Ditto. + +2017-12-10 Gerald Pfeifer + + * doc/install.texi (Specific): Tweak link to mkssoftware.com. + +2017-12-10 Jakub Jelinek + + PR tree-optimization/83337 + * gimple-loop-interchange.cc (compute_access_stride): Handle + bitfield DRs properly. + +2017-12-09 Jakub Jelinek + + PR tree-optimization/83338 + * tree-vect-stmts.c (vectorizable_operation): Handle POINTER_DIFF_EXPR + vectorization as MINUS_EXPR with a subsequent VIEW_CONVERT_EXPR from + vector of unsigned integers to vector of signed integers. + +2017-12-08 Vladimir Makarov + + PR rtl-optimization/83317 + * lra-constraints.c (process_address_1): Add insn code check. + +2017-12-08 Michael Matz + + Fix PR tree-optimization/83323 + * gimple-loop-jam (unroll_jam_possible_p): Correct test for + head-controlled loops and loop BBs. + * common.opt (funroll-and-jam): Remove, instead ... + (floop-unroll-and-jam): ... reuse this option. + * opts.c (default_options_table): Use OPT_floop_unroll_and_jam. + * doc/invoke.texi (-funroll-and-jam): Move docu to ... + (-floop-unroll-and-jam): ... this option. + +2017-12-08 Jakub Jelinek + + * ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix + a comment typo, get_base_ref_and_offset -> get_ref_base_and_extent. + * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Likewise. + +2017-12-08 Richard Biener + + PR middle-end/81782 + * tree-ssa-uninit.c (warn_uninitialized_vars): Properly + handle accesses outside of zero-sized vars. + +2017-12-08 Martin Jambor + + PR tree-optimization/83141 + * tree-sra.c (contains_vce_or_bfcref_p): Move up in the file, also + test for MEM_REFs implicitely changing types with padding. Remove + inline keyword. + (build_accesses_from_assign): Added contains_vce_or_bfcref_p checks. + +2017-12-08 Jakub Jelinek + + * config/arc/arc.c (arc_attribute_table): Add exclusions to + the comment. + * config/avr/avr.c (avr_attribute_table): Likewise. + * config/msp430/msp430.c (msp430_attribute_table): Likewise. + * config/rl78/rl78.c (rl78_attribute_table): Likewise. + * config/nds32/nds32.c (nds32_attribute_table): Likewise. + * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Initialize new member + of struct attribute_spec. + * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise. + +2017-12-08 Ulrich Weigand + + PR target/82960 + * config/spu/spu.c (pad_bb): Only check INSN_CODE when INSN_P is true. + +2017-12-08 Jan Hubicka + + PR middle-end/83609 + * profile-count.c (profile_count::from_gcov_type): Move from + profile-count.h; handle overflow. + * profile-count.h (profile_count::from_gcov_type): Move offline. + +2017-12-08 Segher Boessenkool + + PR rtl-optimization/83304 + * combine.c (move_deaths): If we do not know where a register died, + search for it. + +2017-12-08 Richard Biener + + * gimple-loop-interchange.cc (tree_loop_interchange::interchange): + Provide -fopt-info-loop feedback when we interchange in a nest. + +2017-06-08 Richard Earnshaw + + * config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names + for armv6 ARM CPU IDs. + +2017-06-08 Richard Earnshaw + + * common/config/arm/arm-common.c: Include . + (INCLUDE_VECTOR): Define. + (compare_opt_names): New function. + (arm_rewrite_selected_arch): Only strip out extensions that can be + expressed through -mfpu. Sort the remaining extensions + alphabetically. + +2017-06-08 Richard Earnshaw + + * config/arm/arm.h (arm_asm_auto_mfpu): Declare. + (ASM_CPU_SPEC_FUNCTIONS): Add new rule asm_auto_mfpu. + (ASM_CPU_SPEC): Use it if -mfpu is set to auto. + * common/config/arm/arm-common.c (arm_asm_auto_mfpu): New function. + +2017-06-08 Tristan Gingold + + PR ada/81470 + * dwarf2out.c (dwarf2out_do_cfi_startproc): Only emit + .cfi_personality or .cfi_lsda if the eh data format is dwarf2. + +2017-12-08 Rainer Orth + + * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Initialize new member + of struct attribute_spec. + +2017-12-08 Julia Koval + + * config/i386/avx512vnniintrin.h (_mm512_dpwssds_epi32, + _mm512_mask_dpwssds_epi32, _mm512_maskz_dpwssds_epi32): New intrinsics. + * config/i386/avx512vnnivlintrin.h (_mm256_dpwssds_epi32, + _mm256_mask_dpwssds_epi32, _mm256_maskz_dpwssds_epi32, + _mm_dpwssds_epi32, _mm_mask_dpwssds_epi32, + _mm_maskz_dpwssds_epi32): Ditto. + +2017-12-08 Richard Biener + + PR tree-optimization/81303 + * tree-vect-stmts.c (vect_is_simple_cond): For invariant + conditions try to create a comparison vector type matching + the data vector type. + (vectorizable_condition): Adjust. + * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): + Leave invariant conditions alone in case we can vectorize those. + +2017-12-08 Julia Koval + + * config/i386/avx512vnniintrin.h (_mm512_dpwssd_epi32, + _mm512_mask_dpwssd_epi32, _mm512_maskz_dpwssd_epi32): New intrinsics. + * config/i386/avx512vnnivlintrin.h (_mm256_dpwssd_epi32, + _mm256_mask_dpwssd_epi32, _mm256_maskz_dpwssd_epi32, _mm_dpwssd_epi32, + _mm_mask_dpwssd_epi32, _mm_maskz_dpwssd_epi32): Ditto. + +2017-12-08 Julia Koval + + * config/i386/avx512vnniintrin.h (_mm512_dpbusds_epi32, + _mm512_mask_dpbusds_epi32, _mm512_maskz_dpbusds_epi32): New. + * config/i386/avx512vnnivlintrin.h (_mm256_dpbusds_epi32, + _mm256_mask_dpbusds_epi32, _mm256_maskz_dpbusds_epi32, + _mm_dpbusds_epi32, _mm_mask_dpbusds_epi32, + _mm_maskz_dpbusds_epi32): New intrinsics. + +2017-12-07 Sandra Loosemore + + * config/nios2/nios2.md (ldio): Add splitter for memory + operand. + (ldio_signed): Likewise. + (stio): Likewise. + * config/nios2/predicates.md (ldstio_memory_operand): Allow + SMALL_INT12 constant integer operand. + +2017-12-07 Sandra Loosemore + + * config/nios2/nios2.c (nios2_symbolic_constant_allowed): + Rename to... + (nios2_large_constant_allowed): ...this. Adjust uses. + (nios2_plus_symbolic_constant_p): Rename to... + (nios2_plus_large_constant_p): ...this. Adjust uses. + (nios2_legitimate_address_p): Correct CONST_INT handling. + (nios2_symbolic_memory_operand_p): Rename to... + (nios2_large_constant_memory_operand_p): ...this. Adjust uses. + (nios2_large_constant_p): Check for large constant integers too. + (nios2_split_large_constant): Handle constant integers. + (nios2_split_symbolic_memory_operand): Rename to... + (nios2_split_large_constant_memory_operand): ...this. Adjust uses. + (nios2_legitimize_constant_address): Handle constant integers. + (r0rel_constant_p): Handle small constant integers. + (nios2_print_operand_address): Handle r0-relative integer addresses. + * config/nios2/nios2-protos.h: Adjust for renamed functions. + * config/nios2/nios2.md: Adjust for renamed functions. + +2017-12-07 Andrew Waterman + + * config/riscv/riscv.c (TARGET_ASM_SELECT_SECTION): New define. + (TARGET_HAVE_SRODATA_SECTION): New define. + (riscv_select_section): New function. + +2017-12-08 Joseph Myers + Alexander Monakov + Jakub Jelinek + + PR target/81906 + * config/i386/i386.c (ix86_expand_rint): Handle flag_rounding_math. + +2017-12-07 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_print_address_internal): Return + a bool success value. Don't call output_operand_lossage here. + (aarch64_print_ldpstp_address): Return a bool success value. + (aarch64_print_operand_address): Call output_addr_const if + aarch64_print_address_internal fails. + (aarch64_print_operand): Don't assert that the mode is 16 bytes for + 'y'; call output_operand_lossage instead. Call output_operand_lossage + if aarch64_print_ldpstp_address fails. + +2017-12-07 Richard Sandiford + + * tree-vector-builder.h + (tree_vector_builder::binary_encoded_nelts): Declare. + * tree-vector-builder.c + (tree_vector_builder::binary_encoded_nelts): New function. + * fold-const.c (negate_expr_p): Likewise. + (operand_equal_p, fold_checksum_tree): Likewise. + * tree-loop-distribution.c (const_with_all_bytes_same): Likewise. + * tree.c (integer_zerop, integer_onep, integer_all_onesp, real_zerop) + (real_onep, real_minus_onep, add_expr, initializer_zerop): Likewise. + (uniform_vector_p): Likewise. + * varasm.c (const_hash_1, compare_constant): Likewise. + * tree-ssa-ccp.c: Include tree-vector-builder.h. + (valid_lattice_transition): Operate directly on the VECTOR_CST + encoding. + * ipa-icf.c: Include tree-vector-builder.h. + (sem_variable::equals): Operate directly on the VECTOR_CST encoding. + * print-tree.c (print_node): Print encoding of VECTOR_CSTs. + +2017-12-07 Richard Sandiford + + * tree.c (build_vector): Delete. + * tree.h (build_vector): Make static and move into the self-testing + block. + +2017-12-07 Richard Sandiford + + * vector-builder.h (vector_builder::derived): New const overload. + (vector_builder::elt): New function. + * tree-vector-builder.h (tree_vector_builder::type): New function. + (tree_vector_builder::apply_step): Declare. + * tree-vector-builder.c (tree_vector_builder::apply_step): New + function. + * gimple-fold.h (tree_vector_builder): Declare. + (gimple_build_vector): Take a tree_vector_builder instead of a + type and vector of elements. + * gimple-fold.c (gimple_build_vector): Likewise. + * tree-vect-loop.c (get_initial_def_for_reduction): Update call + accordingly. + (get_initial_defs_for_reduction): Likewise. + (vectorizable_induction): Likewise. + +2017-12-07 Richard Sandiford + + * tree-vector-builder.h + (tree_vector_builder::new_binary_operation): Declare. + * tree-vector-builder.c + (tree_vector_builder::new_binary_operation): New function. + * fold-const.c (fold_relational_const): Use it. + (const_binop): Likewise. Check that both input vectors have + the same number of elements, thus excluding things like WIDEN_SUM. + Check whether it is possible to operate directly on the encodings + of stepped inputs. + +2017-12-07 Richard Sandiford + + * fold-const.c (fold_negate_expr_1): Use tree_vector_builder and + new_unary_operation, operating only on the encoded elements. + (const_unop): Likewise. + (exact_inverse): Likewise. + (distributes_over_addition_p): New function. + (const_binop): Use tree_vector_builder and new_unary_operation + for combinations of VECTOR_CST and INTEGER_CST. Operate only + on the encoded elements unless the encoding is strided and the + operation does not distribute over addition. + (fold_convert_const): Use tree_vector_builder and + new_unary_operation. Operate only on the encoded elements + for truncating integer conversions, or for non-stepped encodings. + +2017-12-07 Richard Sandiford + + * config/sparc/sparc.c: Include tree-vector-builder.h. + (sparc_fold_builtin): Use tree_vector_builder instead of build_vector. + * expmed.c: Include tree-vector-builder.h. + (make_tree): Use tree_vector_builder instead of build_vector. + * fold-const.c: Include tree-vector-builder.h. + (const_binop): Use tree_vector_builder instead of build_vector. + (const_unop): Likewise. + (native_interpret_vector): Likewise. + (fold_vec_perm): Likewise. + (fold_ternary_loc): Likewise. + * gimple-fold.c: Include tree-vector-builder.h. + (gimple_fold_stmt_to_constant_1): Use tree_vector_builder instead + of build_vector. + * tree-ssa-forwprop.c: Include tree-vector-builder.h. + (simplify_vector_constructor): Use tree_vector_builder instead + of build_vector. + * tree-vect-generic.c: Include tree-vector-builder.h. + (add_rshift): Use tree_vector_builder instead of build_vector. + (expand_vector_divmod): Likewise. + (optimize_vector_constructor): Likewise. + * tree-vect-loop.c: Include tree-vector-builder.h. + (vect_create_epilog_for_reduction): Use tree_vector_builder instead + of build_vector. Explicitly use a stepped encoding for + { 1, 2, 3, ... }. + * tree-vect-slp.c: Include tree-vector-builder.h. + (vect_get_constant_vectors): Use tree_vector_builder instead + of build_vector. + (vect_transform_slp_perm_load): Likewise. + (vect_schedule_slp_instance): Likewise. + * tree-vect-stmts.c: Include tree-vector-builder.h. + (vectorizable_bswap): Use tree_vector_builder instead of build_vector. + (vect_gen_perm_mask_any): Likewise. + (vectorizable_call): Likewise. Explicitly use a stepped encoding. + * tree.c: (build_vector_from_ctor): Use tree_vector_builder instead + of build_vector. + (build_vector_from_val): Likewise. Explicitly use a duplicate + encoding. + +2017-12-07 Richard Sandiford + + * doc/generic.texi (VECTOR_CST): Describe new representation of + vector constants. + * vector-builder.h: New file. + * tree-vector-builder.h: Likewise. + * tree-vector-builder.c: Likewise. + * Makefile.in (OBJS): Add tree-vector-builder.o. + * tree.def (VECTOR_CST): Update comment to refer to generic.texi. + * tree-core.h (tree_base): Add a vector_cst field to the u union. + (tree_vector): Change the number of elements to + vector_cst_encoded_nelts. + * tree.h (VECTOR_CST_NELTS): Redefine using TYPE_VECTOR_SUBPARTS. + (VECTOR_CST_ELTS): Delete. + (VECTOR_CST_ELT): Redefine using vector_cst_elt. + (VECTOR_CST_LOG2_NPATTERNS, VECTOR_CST_NPATTERNS): New macros. + (VECTOR_CST_NELTS_PER_PATTERN, VECTOR_CST_DUPLICATE_P): Likewise. + (VECTOR_CST_STEPPED_P, VECTOR_CST_ENCODED_ELTS): Likewise. + (VECTOR_CST_ENCODED_ELT): Likewise. + (vector_cst_encoded_nelts): New function. + (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and + VECTOR_CST_NELTS_PER_PATTERN as arguments. + (vector_cst_int_elt, vector_cst_elt): Declare. + * tree.c: Include tree-vector-builder.h. + (tree_code_size): Abort if passed VECTOR_CST. + (tree_size): Update for new VECTOR_CST layout. + (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and + VECTOR_CST_NELTS_PER_PATTERN as arguments. + (build_vector): Use tree_vector_builder. + (vector_cst_int_elt, vector_cst_elt): New functions. + (drop_tree_overflow): For VECTOR_CST, drop the TREE_OVERFLOW from the + encoded elements and then create the vector in the canonical form. + (check_vector_cst, check_vector_cst_duplicate, check_vector_cst_fill) + (check_vector_cst_stepped, test_vector_cst_patterns): New functions. + (tree_c_tests): Call test_vector_cst_patterns. + * lto-streamer-out.c (DFS::DFS_write_tree_body): Handle the new + VECTOR_CST fields. + (hash_tree): Likewise. + * tree-streamer-out.c (write_ts_vector_tree_pointers): Likewise. + (streamer_write_tree_header): Likewise. + * tree-streamer-in.c (lto_input_ts_vector_tree_pointers): Likewise. + (streamer_alloc_tree): Likewise. Update call to make_vector. + * fold-const.c (fold_ternary_loc): Avoid using VECTOR_CST_ELTS. + +2017-12-07 Richard Sandiford + + * selftest.h (ASSERT_TRUE_AT, ASSERT_FALSE_AT, ASSERT_EQ_AT) + (ASSERT_NE, ASSERT_PRED1): Add underscores to local variable names + * selftest-rtl.h (ASSERT_RTX_EQ, ASSERT_RTX_PTR_EQ): Likewise. + +2017-12-07 Bin Cheng + Richard Biener + + PR tree-optimization/81303 + * Makefile.in (gimple-loop-interchange.o): New object file. + * common.opt (floop-interchange): Reuse the option from graphite. + * doc/invoke.texi (-floop-interchange): Ditto. New document for + -floop-interchange and mention it for -O3. + * opts.c (default_options_table): Enable -floop-interchange at -O3. + * gimple-loop-interchange.cc: New file. + * params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter. + (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter. + * passes.def (pass_linterchange): New pass. + * timevar.def (TV_LINTERCHANGE): New time var. + * tree-pass.h (make_pass_linterchange): New declaration. + * tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external + interchange. Record IV before/after increment in new parameters. + * tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration. + * tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction + path check into... + (check_reduction_path): ...New function here. + * tree-vectorizer.h (check_reduction_path): New declaration. + +2017-12-07 Vladimir Makarov + + PR target/83252 + PR rtl-optimization/80818 + * lra.c (add_regs_to_insn_regno_info): Make a hard reg in CLOBBER + always early clobbered. + * lra-lives.c (process_bb_lives): Check input hard regs for early + clobbered non-operand hard reg. + +2017-12-07 Jakub Jelinek + + PR middle-end/83164 + * tree-cfg.c (verify_gimple_assign_binary): Don't require + types_compatible_p, just that TYPE_MODE is the same. + +2017-12-07 Martin Sebor + + PR c/81544 + * attribs.c (empty_attribute_table): Initialize new member of + struct attribute_spec. + (decl_attributes): Add argument. Handle mutually exclusive + combinations of attributes. + (selftests::test_attribute_exclusions): New function. + (selftests::attribute_c_tests): Ditto. + * attribs.h (decl_attributes): Add default argument. + * selftest.h (attribute_c_tests): Declare. + * selftest-run-tests.c (selftest::run_tests): Call attribute_c_tests. + * tree-core.h (attribute_spec::exclusions, exclude): New type and + member. + * doc/extend.texi (Common Function Attributes): Update const and pure. + * config/alpha/alpha.c (vms_attribute_table): Initialize new member + of struct attribute_spec. + * config/arc/arc.c (arc_attribute_table): Same. + * config/arm/arm.c (arm_attribute_table): Same. + * config/avr/avr.c ( avr_attribute_table): Same. + * config/bfin/bfin.c (bfin_attribute_table): Same. + * config/cr16/cr16.c (cr16_attribute_table): Same. + * config/epiphany/epiphany.c (epiphany_attribute_table): Same. + * config/h8300/h8300.c (h8300_attribute_table): Same. + * config/i386/i386.c (ix86_attribute_table): Same. + * config/ia64/ia64.c (ia64_attribute_table): Same. + * config/m32c/m32c.c (m32c_attribute_table): Same. + * config/m32r/m32r.c (m32r_attribute_table): Same. + * config/m68k/m68k.c (m68k_attribute_table): Same. + * config/mcore/mcore.c (mcore_attribute_table): Same. + * config/microblaze/microblaze.c (microblaze_attribute_table): Same. + * config/mips/mips.c (mips_attribute_table): Same. + * config/msp430/msp430.c (msp430_attribute_table): Same. + * config/nds32/nds32.c (nds32_attribute_table): Same. + * config/nvptx/nvptx.c (nvptx_attribute_table): Same. + * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Same. + * config/rl78/rl78.c (rl78__attribute_table): Same. + * config/rs6000/rs6000.c (rs6000_attribute_table): Same. + * onfig/rx/rx.c (rx_attribute_table): Same. + * config/s390/s390.c (s390_handle_vectorbool_attribute): Same. + * config/sh/sh.c (sh_attribute_table): Same. + * config/sparc/sparc.c (sparc_attribute_table): Same. + * config/spu/spu.c (spu_attribute_table): Same. + * config/stormy16/stormy16.c (xstormy16_attribute_table): Same. + * config/v850/v850.c (v850_attribute_table): Same. + * config/visium/visium.c (visium_attribute_table): Same. + +2017-12-07 Tamar Christina + + PR target/82641 + * config/arm/arm.c (INCLUDE_STRING): Define. + (arm_last_printed_arch_string, arm_last_printed_fpu_string): New. + (arm_declare_function_name): Conservatively emit .arch, .arch_extensions + and .fpu. + +2017-12-07 Michael Matz + + Add unroll and jam pass + + * gimple-loop-jam.c: New file. + * Makefile.in (OBJS): Add gimple-loop-jam.o. + * common.opt (funroll-and-jam): New option. + * opts.c (default_options_table): Add unroll-and-jam at -O3. + * params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param. + (PARAM_UNROLL_JAM_MAX_UNROLL): Ditto. + * passes.def: Add pass_loop_jam. + * timevar.def (TV_LOOP_JAM): Add. + * tree-pass.h (make_pass_loop_jam): Declare. + * cfgloop.c (flow_loop_tree_node_add): Add AT argument. + * cfgloop.h (flow_loop_tree_node_add): Adjust declaration. + * cfgloopmanip.c (duplicate_loop): Add AT argument, adjust call + to flow_loop_tree_node_add. + (duplicate_subloops, copy_loops_to): Append to sibling list. + * cfgloopmanip.h: (duplicate_loop): Adjust declaration. + * doc/invoke.texi (-funroll-and-jam): Document new option. + (unroll-jam-min-percent, unroll-jam-max-unroll): Document new params. + +2017-12-07 Richard Biener + + PR tree-optimization/83296 + PR tree-optimization/67769 + * tree-ssa-phiopt.c (conditional_replacement): Do not reset + flow sensitive info in an unrelated BB. + (value_replacement): Use reset_flow_sensitive_info. + (minmax_replacement): Reset flow sensitive info on the def + we move. Do not reset flow sensitive info in the whole BB + we move the stmt to. + (abs_replacement): Likewise. + +2017-12-07 Segher Boessenkool + + PR target/43871 + * config/rs6000/rs6000.c (rs6000_option_override_internal): Set + rs6000_cpu to the given -mcpu=, or to the default processor. + +2017-12-07 Segher Boessenkool + + * config/rs6000/rs6000.h (rs6000_cpu_attr): Delete. + * config/rs6000/rs6000.c (rs6000_variable_issue_1): Use rs6000_tune + instead of rs6000_cpu_attr. + (rs6000_adjust_cost): Ditto. + (is_microcoded_insn): Ditto. + (rs6000_adjust_priority): Ditto. + (rs6000_issue_rate): Ditto. + (rs6000_use_sched_lookahead): Ditto. + (rs6000_use_sched_lookahead_guard): Ditto. + (rs6000_sched_reorder): Ditto. + (force_new_group): Ditto. + * config/rs6000/rs6000.md (cpu attribute): Ditto. + (group_ending_nop): Ditto. + +2017-12-07 Segher Boessenkool + + * config/rs6000/rs6000.opt (rs6000_tune): New variable. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Also set + rs6000_tune. Use rs6000_tune instead of rs6000_cpu where appropriate. + (rs6000_loop_align): Use rs6000_tune instead of rs6000_cpu where + appropriate. + (rs6000_reassociation_width): Ditto. + (rs6000_emit_epilogue): Ditto. + (rs6000_adjust_cost): Ditto. + (is_microcoded_insn): Ditto. + (is_cracked_insn): Ditto. + (rs6000_adjust_priority): Ditto. + (rs6000_sched_reorder): Ditto. + (rs6000_sched_reorder2): Ditto. + (insn_must_be_first_in_group): Ditto. + (insn_must_be_last_in_group): Ditto. + (rs6000_register_move_cost): Ditto. + * config/rs6000/rs6000.h (rs6000_cpu_attr): Use rs6000_tune instead of + rs6000_cpu. + +2017-12-07 Julia Koval + + * config.gcc: Add vaesintrin.h. + * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI): + New type. + * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi, + __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi): + New builtins. + * config/i386/i386.c (ix86_expand_args_builtin): Handle new type. + * config/i386/immintrin.h: Include vaesintrin.h. + * config/i386/sse.md (vaesdec_): New pattern. + * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128, + _mm_aesdec_epi128): New intrinsics. + +2017-12-06 David Malcolm + + * Makefile.in (C_COMMON_OBJS): Add c-family/c-spellcheck.o. + * spellcheck-tree.c (find_closest_macro_cpp_cb): Move to + c-family/c-spellcheck.cc. + (best_macro_match::best_macro_match): Likewise. + * spellcheck-tree.h + (struct edit_distance_traits): Move to + c-family/c-spellcheck.h. + (class best_macro_match): Likewise. + +2017-12-06 Jakub Jelinek + + PR tree-optimization/83293 + * gimple-ssa-strength-reduction.c (insert_initializers): Use + GSI_NEW_STMT instead of GSI_SAME_STMT in gsi_insert_after that + might insert into empty bb. + + PR sanitizer/81281 + * match.pd ((T)(P + A) - (T)P -> (T) A): Split into separate + simplify for plus with :c added, and pointer_plus without that. + ((T)P - (T)(P + A) -> -(T) A): Likewise. If type is integral + with undefined overflow and the conversion is not widening, + perform negation in utype and only convert to type afterwards. + ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Split into separate + simplify for plus with :c added, and pointer_plus without that. + If type is integral with undefined overflow and the conversion is + not widening, perform minus in utype and only convert to type + afterwards. Move the last pointer_diff_expr simplify into the + two outermost ifs. + +2017-12-06 Martin Sebor + + PR tree-optimization/82646 + * builtins.c (maybe_emit_chk_warning): Use size as the bound for + strncpy, not maxlen. + +2017-12-06 Martin Sebor + + * doc/invoke.texi (-Wstringop-truncation): Mention attribute + nonstring. + + PR tree-optimization/83075 + * tree-ssa-strlen.c (handle_builtin_stxncpy): Avoid assuming + strncat/strncpy don't change length of source string. + +2017-12-06 Eric Botcazou + + Revert + 2017-11-29 Martin Aberg + + * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length + to prevent b2bst errata sequence. + (sqrtdf2_fix): Likewise. + +2017-12-06 Jakub Jelinek + + PR tree-optimization/81945 + * cfgloop.h (FOR_EACH_LOOP_FN): Use FN instead of hardcoding fn. + * tree-cfg.c (move_sese_region_to_fn): If any of the loops moved + to dest_cfun has orig_loop_num set, either remap it to the new + loop number if the loop got moved too, or clear it. + +2017-12-05 Steve Ellcey + + * config/aarch64/thunderx2-t99.md (thunderx2t99_branch): Add trap + to reservation. + (thunderx2t99_nothing): New insn reservation. + (thunderx2t99_mrs): New insn reservation. + (thunderx2t99_multiple): New insn reservation. + (thunderx2t99_alu_basi): Add bfx to reservation. + (thunderx2t99_fp_cmp): Add fccmps and fccmpd to reservation. + +2017-12-05 Ramana Radhakrishnan + + PR target/82248 + * config/arm/arm.md (probe_stack) : Use the 'o' constraint. + +2017-12-05 Bin Cheng + + * tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from + tree-ssa-pre.c::remove_dead_inserted_code. + * tree-ssa-dce.h: New file. + * tree-ssa-pre.c (tree-ssa-dce.h): Include new header file. + (remove_dead_inserted_code): Move and rename to function + tree-ssa-dce.c::simple_dce_from_worklist. + (pass_pre::execute): Update use. + +2017-12-05 Richard Biener + + PR tree-optimization/83277 + * graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure + to code-gen liveout vars. + +2017-12-05 Richard Sandiford + + * config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal) + (aarch64_simd_bsldi_alt): Check REG_P before GP_REGNUM_P. + (aarch64_cmdi, aarch64_cmtstdi): Add leading "&&" to + split condition. + +2017-12-05 Max Filippov + + * config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New + function. + (TARGET_ASAN_SHADOW_OFFSET): New macro definition. + * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if + ASAN is enabled. + +2017-12-05 Richard Biener + + * timevar.def (TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_WIDEN_MUL): Add. + * tree-ssa-math-opts.c (pass_data_cse_reciprocal): Use TV_TREE_RECIP. + (pass_data_cse_sincos): Use TV_TREE_SINCOS. + (pass_data_optimize_widening_mul): Use TV_TREE_WIDEN_MUL. + +2017-12-05 Rainer Orth + + * dbxout.c (dbxout_block): Grow buf to 30 bytes. + +2017-12-05 Martin Liska + Jakub Jelinek + + * doc/invoke.texi: Document the options. + * flag-types.h (enum sanitize_code): Add + SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT. + * ipa-inline.c (sanitize_attrs_match_for_inline_p): Add handling + of SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT. + * opts.c: Define new sanitizer options. + * sanitizer.def (BUILT_IN_ASAN_POINTER_COMPARE): Likewise. + (BUILT_IN_ASAN_POINTER_SUBTRACT): Likewise. + +2017-12-05 Julia Koval + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET, + OPTION_MASK_ISA_AVX512VNNI_UNSET): New. + (ix86_handle_option): Handle -mavx512vnni. + * config/i386/cpuid.h (bit_AVX512VNNI): New bit. + * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit. + * config/i386/i386-c (__AVX512VNNI__): New. + * config/i386/i386.c (ix86_target_string): Handle new option. + (ix86_valid_target_attribute_inner_p): Handle new option. + * config/i386/i386.h (TARGET_AVX512VNNI, TARGET_AVX512VNNI_P): New. + * config/i386/i386.opt (mavx512vnni): New option. + +2017-12-01 Jan Hubicka + + PR target/81616 + * athlon.md: Disable for generic. + * haswell.md: Enable for generic. + * i386.c (ix86_sched_init_global): Add core hooks for generic. + * x86-tune-sched.c (ix86_issue_rate): Increase issue rate for generic + to 4. + (ix86_adjust_cost): Move generic to haswell path. + +2017-12-04 Eric Botcazou + + * config/sparc/sparc.c (sparc_do_work_around_errata): Use mem_ref + instead of MEM_P in a couple more places. Fix formatting issues. + +2017-12-04 Jim Wilson + + * config/riscv/riscv.c (riscv_for_each_saved_reg): Use GP_REG_LAST + instead of GP_REG_LAST-1. + (riscv_adjust_libcall_cfi_prologue): Likewise. + (riscv_adjust_libcall_cri_epilogue): Likewise. + * config/riscv/riscv.h (CALL_USED_REGISTERS): Change a6 to t6 in + comment. + +2017-12-04 Luis Machado + + * ipa-pure-const.c (check_decl): Add missing newline. + (state_from_flags): Likewise. + +2017-12-04 Jeff Law + + PR tree-optimizatin/78496 + * gimple-ssa-evrp-analyze.h + (evrp_range_analyzer::get_vr_values): Simplify. + * gimple-ssa-evrp-analyze.c: Corresponding changes. + * tree-ssa-dom.c: Include alloc-pool.h, tree-vrp.h, vr-values.h + and gimple-ssa-evrp-analyze.h. + (dom_opt_dom_walker class): Add evrp_range_analyzer member. + (simplify_stmt_for_jump_threading): Copy a blob of code from + tree-vrp.c to use ranges to simplify statements. + (dom_opt_dom_walker::before_dom_children): Call + evrp_range_analyzer::{enter,record_ranges_from_stmt} methods. + (dom_opt_dom_walker::after_dom_children): Similarly for + evrp_range_analyzer::leave. + (dom_opt_dom_walker::optimize_stmt): Use EVRP ranges to optimize + conditionals. + + * gimple-ssa-evrp-analyze.c + (evrp_range_analyzer::extract_range_from_stmt): Always use + vr_values::update_value_range so preexisting range info is + medged with new range info, even if the new range is VR_VARYING. + +2017-12-04 Segher Boessenkool + + * combine.c: Adjust comment. + (use_crosses_set_p): Delete. + (can_combine_p): Use modified_between_p instead of use_crosses_set_p. + (try_combine): Ditto. + +2017-12-04 Richard Biener + + PR tree-optimization/83255 + * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for): + Re-add zero-iteration check. + +2017-12-04 Segher Boessenkool + + PR rtl-optimization/83245 + * lra.c (collect_non_operand_hard_regs): Treat clobbers of non-operand + hard registers as earlyclobber, also if not in an asm. + +2017-12-04 Segher Boessenkool + + PR bootstrap/83265 + Revert + 2017-12-01 Segher Boessenkool + + PR target/43871 + * config/rs6000/rs6000.c (rs6000_option_override_internal): Set + rs6000_cpu based on cpu_index, not tune_index. + +2017-12-04 Richard Biener + + PR tree-optimization/83238 + * graphite-scop-detection.c (scop_detection::merge_sese): Make + code match comment, rejecting invalid SESE regions. + +2017-12-03 John David Anglin + + * config/pa/pa.c (pa_legitimate_address_p): For scaled indexing, + require base operand is a REG_POINTER prior to reload on targets + with non-equivalent space registers. + +2017-12-01 Jan Hubicka + + * ipa-cp.c (ipcp_lattice::print): Update dumping. + (update_specialized_profile): Fix updating of counts. + (perhaps_add_new_callers): Likewise. + +2017-12-01 Jan Hubicka + + PR target/81616 + * x86-tune.def: Remove obsolette FIXMEs. + (X86_TUNE_PARTIAL_FLAG_REG_STALL): Disable for generic + (X86_TUNE_FUSE_CMP_AND_BRANCH_32, X86_TUNE_FUSE_CMP_AND_BRANCH_64, + X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, X86_TUNE_FUSE_ALU_AND_BRANCH): + Enable for generic. + (X86_TUNE_PAD_RETURNS): Disable for generic. + +2017-12-02 Jakub Jelinek + + PR tree-optimization/83170 + PR tree-optimization/83241 + * gimple-ssa-store-merging.c + (imm_store_chain_info::try_coalesce_bswap): Update vuse field from + gimple_vuse (ins_stmt) in case it has changed. + (imm_store_chain_info::output_merged_store): Likewise. + + * tree-chkp.c (chkp_compute_bounds_for_assignment): Handle + POINTER_DIFF_EXPR. + + PR c++/81212 + * tree-cfg.c (pass_warn_function_return::execute): Handle + __builtin_ubsan_handle_missing_return like __builtin_unreachable + with BUILTINS_LOCATION. + + PR target/78643 + PR target/80583 + * expr.c (get_inner_reference): If DECL_MODE of a non-bitfield + is BLKmode for vector field with vector raw mode, use TYPE_MODE + instead of DECL_MODE. + + * config/i386/i386-protos.h (standard_sse_constant_opcode): Change + last argument to rtx pointer. + * config/i386/i386.c (standard_sse_constant_opcode): Replace X argument + with OPERANDS. For AVX+ 128-bit VEX encoded instructions over 256-bit + or 512-bit. If setting EXT_REX_SSE_REG_P, use EVEX encoded insn + depending on the chosen ISAs. + * config/i386/i386.md (*movxi_internal_avx512f, *movoi_internal_avx, + *movti_internal, *movdi_internal, *movsi_internal, *movtf_internal, + *movdf_internal, *movsf_internal): Adjust standard_sse_constant_opcode + callers. + * config/i386/sse.md (mov_internal): Likewise. + * config/i386/mmx.md (*mov_internal): Likewise. + +2017-12-01 Segher Boessenkool + + * doc/invoke.texi (-dp): Say that instruction cost is printed as well. + +2017-12-01 Segher Boessenkool + + * config/rs6000/rs6000-protos.h (emit_fusion_addis): Remove last two + parameters from prototype. + * config/rs6000/rs6000.c (emit_fusion_addis): Remove last two + parameters. Don't print a comment. + (emit_fusion_gpr_load): Adjust. + (emit_fusion_load_store): Adjust. + * config/rs6000/rs6000.md (*fusion_p9__constant): Adjust. + * config/rs6000/vsx.md (two peepholes): Print the "vector load fusion" + comment on the second line. + +2017-12-01 Segher Boessenkool + + PR target/43871 + * config/rs6000/rs6000.c (rs6000_option_override_internal): Set + rs6000_cpu based on cpu_index, not tune_index. + +2017-12-01 Segher Boessenkool + + * final.c (output_asm_name): Print insn_cost. Shorten output. Print + which_alternative instead of which_alternative + 1. + (output_asm_insn): Print an extra tab if the template is short. + +2017-12-01 Jim Wilson + + * common.opt (use_gnu_debug_info_extensions): Delete DWARF_DEBUG from + comment. + * config/vx-common.h (DWARF_DEBUGGING_INFO): Delete undef. + * doc/tm.texi.in (PREFERRED_DEBUGGING_TYPE): Delete DWARF_DEBUG + reference. + * doc/tm.texi: Regenerate. + +2017-12-01 Michael Meissner + + PR target/81959 + * config/rs6000/rs6000.c (rs6000_address_for_fpconvert): Check for + whether we can allocate pseudos before trying to fix an address. + * config/rs6000/rs6000.md (float_si2_hw): Make sure the + memory address is indexed or indirect. + (floatuns_si2_hw2): Likewise. + +2017-12-01 Jason Merrill + + * Makefile.in (TAGS): Add c-family/*.cc. + +2017-12-01 Wilco Dijkstra + + * config/aarch64/aarch64.md (call_insn): Use %c rather than %a. + (call_value_insn): Likewise. + (sibcall_insn): Likewise. + (sibcall_value_insn): Likewise. + (movsi_aarch64): Likewise. + (movdi_aarch64): Likewise. + (add_losym_): Likewise. + (ldr_got_small_): Likewise. + (ldr_got_small_sidi): Likewise. + (ldr_got_small_28k_): Likewise. + (ldr_got_small_28k_sidi): Likewise. + * config/aarch64/aarch64.c (aarch64_print_address_internal): + Move output_addr_const to symbolic case. Add error check. + +2017-12-01 Andreas Krebbel + + * config/s390/predicates.md (plus16_Q_operand): New predicate. + * config/s390/s390.md: Disable MVC merging peephole if it would + disable operand forwarding. + (new peephole2): Split MVCs if it would turn them into up to 2 + forwardable MVCs. + +2017-12-01 Richard Biener + + PR tree-optimization/83232 + * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix + detection of same access. Instead of breaking the group here + do not consider the duplicate. Add comment explaining real fix. + +2017-12-01 Jonathan Wakely + + * doc/md.texi (Insn Splitting): Fix "central flowgraph" typo. + +2017-12-01 Sudakshina Das + + * config/arm/vfp.md (*movhf_vfp_fp16): Add conds attribute. + +2017-12-01 Jakub Jelinek + + * function.h (struct function): Remove cilk_frame_decl, + is_cilk_function and calls_cilk_spawn fields. + * tree-inline.h (struct copy_body_data): Remove remap_var_for_cilk + field. + * omp-simd-clone.c (simd_clone_clauses_extract): Don't clear + cilk_elemental field. + * cgraph.h (struct cgraph_simd_clone): Remove cilk_elemental field. + * target.def: Adjust comment. + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + Don't test cilk_elemental. + + PR tree-optimization/83233 + * gimple-ssa-store-merging.c (nop_stats, bswap_stats): Use + bswap_stat name for the struct. + + PR c/79153 + * tree.h (SWITCH_BREAK_LABEL_P): Define. + * gimplify.c (collect_fallthrough_labels): Handle GIMPLE_BIND + starting with a GIMPLE_SWITCH and ending with GIMPLE_LABEL with + SWITCH_BREAK_LABEL_P set on the label. + (gimplify_switch_expr): Set SWITCH_BREAK_LABEL_P on the label + added for default case if it was missing and not all cases covered. + Wrap GIMPLE_SWITCH and the switch_body_seq into a GIMPLE_BIND if + switch_body_seq ends with a GIMPLE_LABEL with SWITCH_BREAK_LABEL_P + set on the label. + * tree-chrec.c (evolution_function_is_univariate_p): Add return true; + to avoid -Wimplicit-fallthrough warning. + * config/i386/i386.c (ix86_expand_special_args_builtin): Add + FALLTHRU comment to avoid -Wimplicit-fallthrough warning. + + PR tree-optimization/83221 + * tree-ssa-reassoc.c (sort_by_operand_rank): Shift bb_rank + down by 16. + (init_reassoc): Formatting fix. + + PR sanitizer/81275 + * tree-cfg.c (group_case_labels_stmt): Don't optimize away + C++ FE implicitly added __builtin_unreachable () until -Wreturn-type + is diagnosed. + + PR sanitizer/83219 + * tree-cfg.c: Include asan.h. + (gimple_seq_unreachable_p): Return false for -fsanitize=unreachable. + +2017-12-01 Sergey Shalnov + + * config/i386/i386.md: Fix AVX512 register width in AVX512 instruction. + +2017-12-01 Sergey Shalnov + + * config/i386/i386.c (standard_sse_constant_opcode): Fix wrong form for + vpcmpeqd instruction. + +2017-12-01 Sergey Shalnov + + * config/i386/i386.c (standard_sse_constant_opcode): Fix + registers type for 128bit mode. + +2017-11-30 Jakub Jelinek + + * spellcheck-tree.c (test_find_closest_identifier): Use ; instead + of ;;. + * gengtype-state.c (read_state_pair): Likewise. + * gimple-fold.c (gimple_fold_builtin_string_compare): Likewise. + * sel-sched-dump.c (dump_insn_rtx_1): Likewise. + * ipa-cp.c (intersect_aggregates_with_edge): Likewise. + * ifcvt.c (noce_try_store_flag_constants): Likewise. + * tree-ssa-ccp.c (ccp_finalize): Likewise. + * omp-grid.c (grid_process_kernel_body_copy): Likewise. + * builtins.c (fold_builtin_3): Likewise. + * graphite-scop-detection.c + (scop_detection::stmt_has_simple_data_refs_p): Likewise. + * hsa-gen.c (hsa_function_representation::hsa_function_representation): + Likewise. + +2017-12-01 Maxim Ostapenko + + PR sanitizer/81697 + * asan.c (asan_protect_global): Add new ignore_decl_rtl_set_p + parameter. Return true if ignore_decl_rtl_set_p is true and other + conditions are satisfied. + * asan.h (asan_protect_global): Add new parameter. + * varasm.c (categorize_decl_for_section): Pass true as second parameter + to asan_protect_global calls. + +2017-11-30 Jim Wilson + + * doc/invoke.texi (RISC-V Options): Delete nonexistent -mmemcpy and + -mno-memcpy options. For -mplt, -mfdiv, -mdiv, -msave-restore, and + -mstrict-align, add info on default value. Delete redundant lines for + -mabi. Add missing -mexplicit-relocs docs. + +2017-11-30 Claudiu Zissulescu + + * config/arc/arc.md (trap): New pattern. + +2017-11-30 Claudiu Zissulescu + + * config/arc/arc.c (hwloop_optimize): Prevent the last ZOL + instruction to end into a delay slot. + * config/arc/arc.md (cond_delay_insn): Check if the instruction + can be placed into a delay slot against reg_note. + +2017-11-30 Claudiu Zissulescu + + * config/arc/arc.c (hwloop_optimize): Update hw-loop's end/start + labels number of usages. + +2017-11-30 Claudiu Zissulescu + + * config/arc/arc.c (arc_cannot_substitue_mem_equiv_p): New + function. + (TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define. + +2017-11-30 Jakub Jelinek + + PR target/83210 + * internal-fn.c (expand_mul_overflow): Optimize unsigned + multiplication by power of 2 constant into two shifts + comparison. + +2017-11-30 Jan Hubicka + + PR target/81616 + * config/i386/x86-tune-costs.h (generic_cost): Revise for modern CPUs. + +2017-11-30 Richard Biener + + PR tree-optimization/83202 + * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add + allow_peel argument and guard peeling. + (canonicalize_loop_induction_variables): Likewise. + (canonicalize_induction_variables): Pass false. + (tree_unroll_loops_completely_1): Pass unroll_outer to disallow + peeling from cunrolli. + +2017-11-29 Segher Boessenkool + + * combine.c (try_combine): Print a message to dump file whenever + I0, I1, or I2 cannot be combined into I3. + +2017-11-29 Segher Boessenkool + + PR rtl-optimization/83156 + PR rtl-optimization/82621 + * combine.c (try_combine): Don't split an I2 if one of the dests is + set again before I3. Allow unused dests. + +2017-11-29 Segher Boessenkool + + * config/rs6000/rs6000.md (*add3_carry_in_internal2): New. + +2017-11-29 Vladimir Makarov + + PR rtl-optimization/80818 + * lra.c (collect_non_operand_hard_regs): New arg insn. Pass it + recursively. Use insn code for clobber. + (lra_set_insn_recog_data): Pass the new arg to + collect_non_operand_hard_regs. + (add_regs_to_insn_regno_info): Pass insn instead of uid. Use insn + code for clobber. + (lra_update_insn_regno_info): Pass insn to + add_regs_to_insn_regno_info. + +2017-11-29 Jim Wilson + Andrew Waterman + + * config/riscv/riscv.c (SINGLE_SHIFT_COST): New. + (riscv_rtx_costs): Case ZERO_EXTRACT, match new pattern, and return + SINGLE_SHIFT_COST. Case LT and ZERO_EXTEND, likewise. Case ASHIFT, + use SINGLE_SHIFT_COST. + * config/riscv/riscv.md (lshrsi3_zero_extend_1): New. + (lshrsi3_zero_extend_2, lshrsi3_zero_extend_3): New. + +2017-11-29 Julia Koval + + * config/i386/avx512vbmi2intrin.h (_mm512_shldv_epi16, + _mm512_mask_shldv_epi16, _mm512_maskz_shldv_epi16, _mm512_shldv_epi32, + _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32, _mm512_shldv_epi64, + _mm512_mask_shldv_epi64, _mm512_maskz_shldv_epi64): New intrinsics. + * config/i386/avx512vbmi2vlintrin.h (_mm256_shldv_epi16, + _mm256_mask_shldv_epi16, _mm256_maskz_shldv_epi16, _mm256_shldv_epi32, + _mm256_mask_shldv_epi32, _mm256_maskz_shldv_epi32, _mm256_shldv_epi64, + _mm256_mask_shldv_epi64, _mm256_maskz_shldv_epi64, _mm_shldv_epi16, + _mm_mask_shldv_epi16, _mm_maskz_shldv_epi16, _mm_shldv_epi32, + _mm_mask_shldv_epi32, _mm_maskz_shldv_epi32, _mm_shldv_epi64, + _mm_mask_shldv_epi64, _mm_maskz_shldv_epi64): Ditto. + * config/i386/i386-builtin.def (__builtin_ia32_vpshldv_v32hi, + __builtin_ia32_vpshldv_v32hi_mask, __builtin_ia32_vpshldv_v32hi_maskz, + __builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask, + __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi, + __builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz, + __builtin_ia32_vpshldv_v16si, __builtin_ia32_vpshldv_v16si_mask, + __builtin_ia32_vpshldv_v16si_maskz, __builtin_ia32_vpshldv_v8si, + __builtin_ia32_vpshldv_v8si_mask, __builtin_ia32_vpshldv_v8si_maskz, + __builtin_ia32_vpshldv_v4si, __builtin_ia32_vpshldv_v4si_mask, + __builtin_ia32_vpshldv_v4si_maskz, __builtin_ia32_vpshldv_v8di, + __builtin_ia32_vpshldv_v8di_mask, __builtin_ia32_vpshldv_v8di_maskz, + __builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask, + __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di, + __builtin_ia32_vpshldv_v2di_mask, + __builtin_ia32_vpshldv_v2di_maskz): New builtins. + * config/i386/sse.md (vpshldv_, vpshldv__mask, + vpshldv__maskz, vpshldv__maskz_1): New patterns. + +2017-11-29 Julia Koval + + * config/i386/avx512vbmi2intrin.h (_mm512_shrdv_epi16, + _mm512_mask_shrdv_epi16, _mm512_maskz_shrdv_epi16, _mm512_shrdv_epi32, + _mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64, + _mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64): New intrinsics. + * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdv_epi16, + _mm256_mask_shrdv_epi16, _mm256_maskz_shrdv_epi16, _mm256_shrdv_epi32, + _mm256_mask_shrdv_epi32, _mm256_maskz_shrdv_epi32, _mm256_shrdv_epi64, + _mm256_mask_shrdv_epi64, _mm256_maskz_shrdv_epi64, _mm_shrdv_epi16, + _mm_mask_shrdv_epi16, _mm_maskz_shrdv_epi16, _mm_shrdv_epi32, + _mm_mask_shrdv_epi32, _mm_maskz_shrdv_epi32, _mm_shrdv_epi64, + _mm_mask_shrdv_epi64, _mm_maskz_shrdv_epi64): Ditto. + * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_V32HI, + V32HI_FTYPE_V32HI_V32HI_V32HI_INT, V16HI_FTYPE_V16HI_V16HI_V16HI_INT, + V8HI_FTYPE_V8HI_V8HI_V8HI_INT, V8SI_FTYPE_V8SI_V8SI_V8SI_INT, + V4SI_FTYPE_V4SI_V4SI_V4SI_INT, V8DI_FTYPE_V8DI_V8DI_V8DI, + V8DI_FTYPE_V8DI_V8DI_V8DI_INT, V4DI_FTYPE_V4DI_V4DI_V4DI_INT, + V16SI_FTYPE_V16SI_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_V16SI_INT, + V2DI_FTYPE_V2DI_V2DI_V2DI_INT): New types. + * config/i386/i386.c (ix86_expand_args_builtin): Handle new types. + * config/i386/sse.md (vpshrdv_, vpshrdv__mask, + vpshrdv__maskz, vpshrdv__maskz_1): New pattern. + +2017-11-29 Daniel Cederman + + * config/sparc/sparc.c (sparc_do_work_around_errata): Treat the + movsi_pic_gotdata_op instruction as a load for the UT699 errata + workaround. + +2017-11-29 Martin Aberg + + * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length + to prevent b2bst errata sequence. + (sqrtdf2_fix): Likewise. + +2017-11-29 Daniel Cederman + + * config/sparc/sparc.c (fpop_reg_depend_p): New function. + (div_sqrt_insn_p): New function. + (sparc_do_work_around_errata): Insert NOP instructions to + prevent sequences that could trigger the TN-0013 errata for + certain LEON3 processors. + (pass_work_around_errata::gate): Also test sparc_fix_lost_divsqrt. + (sparc_option_override): Set sparc_fix_lost_divsqrt appropriately. + * config/sparc/sparc.md (fix_lost_divsqrt): New attribute. + (in_branch_delay): Prevent div and sqrt in delay slot if + fix_lost_divsqrt. + * config/sparc/sparc.opt (sparc_fix_lost_divsqrt): New variable. + +2017-11-29 Daniel Cederman + + * config/sparc/sparc.c (atomic_insn_p): New function. + (sparc_do_work_around_errata): Insert NOP instructions to + prevent sequences that could trigger the TN-0010 errata for + UT700. + * config/sparc/sync.md (atomic_compare_and_swap_leon3_1): Make + instruction referable in atomic_insns_p. + +2017-11-29 Daniel Cederman + + * config/sparc/sync.md (swapsi): 16-byte align if sparc_fix_gr712rc. + (atomic_compare_and_swap_leon3_1): Likewise. + (ldstub): Likewise. + +2017-11-29 Daniel Cederman + + * config/sparc/sparc.c (fpop_insn_p): New function. + (sparc_do_work_around_errata): Insert NOP instructions to + prevent sequences that could trigger the TN-0012 errata for + GR712RC. + (pass_work_around_errata::gate): Also test sparc_fix_gr712rc. + * config/sparc/sparc.md (fix_gr712rc): New attribute. + (in_branch_annul_delay): Prevent floating-point instructions + in delay slot of annulled integer branch. + +2017-11-29 Richard Biener + + PR tree-optimization/83202 + * tree-vect-slp.c (scalar_stmts_set_t): New typedef. + (bst_fail): Use it. + (vect_analyze_slp_cost_1): Add visited set, do not account SLP + nodes vectorized to the same stmts multiple times. + (vect_analyze_slp_cost): Allocate a visited set and pass it down. + (vect_analyze_slp_instance): Adjust. + (scalar_stmts_to_slp_tree_map_t): New typedef. + (vect_schedule_slp_instance): Add a map recording the SLP node + representing the vectorized stmts for a set of scalar stmts. + Avoid code-generating redundancies. + (vect_schedule_slp): Allocate map and pass it down. + +2017-11-29 Nathan Sidwell + + PR c++/83187 + * tree.c (build_complex_type): Fix canonicalization. Only fill in + type if it is new. + +2017-11-29 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_print_operand): Add new + cases for printing LDP/STP memory addresses. + (aarch64_print_address_internal): Renamed from + aarch64_print_operand_address, added parameter, add Pmode check. + (aarch64_print_ldpstp_address): New function for LDP/STP addresses. + (aarch64_print_operand_address): Indirect to + aarch64_print_address_internal. + * config/aarch64/aarch64-simd.md (store_pair_lanes): Use new + 'y' operand output specifier. + +2017-11-29 Jakub Jelinek + + PR middle-end/83185 + * tree.c (build_simple_mem_ref_loc): Handle + get_addr_base_and_unit_offset returning a MEM_REF. + + PR middle-end/80929 + * rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost. + + PR target/80819 + * config/i386/sse.md (vec_concatv2di): Remove * from (=Yr,0,*rm) + alternative. + +2017-11-28 David Malcolm + + * diagnostic-show-locus.c (layout::print_trailing_fixits): Handle + m_x_offset. + (layout::move_to_column): Likewise. + +2017-11-28 Jakub Jelinek + + PR sanitizer/81275 + * tree.c (block_may_fallthru): Return false if SWITCH_ALL_CASES_P + is set on SWITCH_EXPR and !block_may_fallthru (SWITCH_BODY ()). + +2017-11-28 Prathamesh Kulkarni + Martin Jambor + + PR ipa/82808 + * tree.h (expr_type_first_operand_type_p): Declare + * tree.c (expr_type_first_operand_type_p): New function. + * ipa-prop.h (ipa_get_type): Allow i to be out of bounds. + (ipa_value_from_jfunc): Adjust declaration. + * ipa-cp.c (ipa_get_jf_pass_through_result): New parameter RES_TYPE. + Use it as result type for arithmetics, unless it is NULL in which case + be more conservative. + (ipa_value_from_jfunc): New parameter PARM_TYPE, pass it to + ipa_get_jf_pass_through_result. + (propagate_vals_across_pass_through): Likewise. + (propagate_scalar_across_jump_function): New parameter PARM_TYPE, pass + is to propagate_vals_across_pass_through. + (propagate_constants_across_call): Pass PARM_TYPE to + propagate_scalar_across_jump_function. + (find_more_scalar_values_for_callers_subset): Pass parameter type to + ipa_value_from_jfunc. + (cgraph_edge_brings_all_scalars_for_node): Likewise. + * ipa-fnsummary.c (evaluate_properties_for_edge): Renamed parms_info + to caller_parms_info, pass parameter type to ipa_value_from_jfunc. + * ipa-prop.c (try_make_edge_direct_simple_call): New parameter + target_type, pass it to ipa_value_from_jfunc. + (update_indirect_edges_after_inlining): Pass parameter type to + try_make_edge_direct_simple_call. + +2017-11-28 Jeff Law + + * gimple-ssa-evrp-analyze.c + (evrp_range_analyzer::record_ranges_from_phis): Only use SCEV to + refine ranges if scev_initialized_p returns true. + * vr-values.c (vr_values::extract_range_from_phi_node): Likewise. + +2017-11-28 Julia Koval + + * config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16, + _mm512_mask_shrdi_epi16, _mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32, + _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32, _mm512_shrdi_epi64, + _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64): New intrinsics. + * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdi_epi16, + _mm256_mask_shrdi_epi16, _mm256_maskz_shrdi_epi16, + _mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32, _mm256_shrdi_epi32, + _mm256_mask_shrdi_epi64, _mm256_maskz_shrdi_epi64, _mm256_shrdi_epi64, + _mm_mask_shrdi_epi16, _mm_maskz_shrdi_epi16, _mm_shrdi_epi16, + _mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32, _mm_shrdi_epi32, + _mm_mask_shrdi_epi64, _mm_maskz_shrdi_epi64, _mm_shrdi_epi64): Ditto. + * config/i386/i386-builtin.def (__builtin_ia32_vpshrd_v32hi, + __builtin_ia32_vpshrd_v32hi_mask, __builtin_ia32_vpshrd_v16hi, + __builtin_ia32_vpshrd_v16hi_mask, __builtin_ia32_vpshrd_v8hi, + __builtin_ia32_vpshrd_v8hi_mask, __builtin_ia32_vpshrd_v16si, + __builtin_ia32_vpshrd_v16si_mask, __builtin_ia32_vpshrd_v8si, + __builtin_ia32_vpshrd_v8si_mask, __builtin_ia32_vpshrd_v4si, + __builtin_ia32_vpshrd_v4si_mask, __builtin_ia32_vpshrd_v8di, + __builtin_ia32_vpshrd_v8di_mask, __builtin_ia32_vpshrd_v4di, + __builtin_ia32_vpshrd_v4di_mask, __builtin_ia32_vpshrd_v2di, + __builtin_ia32_vpshrd_v2di_mask): New builtins. + * config/i386/sse.md (vpshrd_): New pattern. + +2017-11-28 Julia Koval + + * config/i386/avx512vbmi2intrin.h (_mm512_shldi_epi16, + _mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16, _mm512_shldi_epi32, + _mm512_mask_shldi_epi32, _mm512_maskz_shldi_epi32, _mm512_shldi_epi64, + _mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): New intrinsics. + * config/i386/avx512vbmi2vlintrin.h (_mm256_shldi_epi16, + _mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16, + _mm256_mask_shldi_epi32, _mm256_maskz_shldi_epi32, _mm256_shldi_epi32, + _mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64, _mm256_shldi_epi64, + _mm_mask_shldi_epi16, _mm_maskz_shldi_epi16, _mm_shldi_epi16, + _mm_mask_shldi_epi32, _mm_maskz_shldi_epi32, _mm_shldi_epi32, + _mm_mask_shldi_epi64, _mm_maskz_shldi_epi64, _mm_shldi_epi64): Ditto. + * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_INT, + V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT, V16SI_FTYPE_V16SI_V16SI_INT, + V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT, + V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT, V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT, + V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT, + V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT, + V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT, + V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT, + V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT): New types. + * config/i386/i386-builtin.def (__builtin_ia32_vpshld_v32hi, + __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshld_v16hi, + __builtin_ia32_vpshld_v16hi_mask, __builtin_ia32_vpshld_v8hi, + __builtin_ia32_vpshld_v8hi_mask, __builtin_ia32_vpshld_v16si, + __builtin_ia32_vpshld_v16si_mask, __builtin_ia32_vpshld_v8si, + __builtin_ia32_vpshld_v8si_mask, __builtin_ia32_vpshld_v4si, + __builtin_ia32_vpshld_v4si_mask, __builtin_ia32_vpshld_v8di, + __builtin_ia32_vpshld_v8di_mask, __builtin_ia32_vpshld_v4di, + __builtin_ia32_vpshld_v4di_mask, __builtin_ia32_vpshld_v2di, + __builtin_ia32_vpshld_v2di_mask): New builtins. + * config/i386/i386.c (ix86_expand_args_builtin): Handle new types. + * config/i386/sse.md (vpshld_): New pattern. + +2017-11-28 Richard Biener + + PR tree-optimization/80776 + * gimple-ssa-evrp-analyze.h (evrp_range_analyzer::set_ssa_range_info): + Declare. + * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::set_ssa_range_info): + New function. + (evrp_range_analyzer::record_ranges_from_incoming_edges): + If the incoming edge is an effective fallthru because the other + edge only reaches a __builtin_unreachable () then record ranges + derived from the controlling condition in SSA info. + (evrp_range_analyzer::record_ranges_from_phis): Use set_ssa_range_info. + (evrp_range_analyzer::record_ranges_from_stmt): Likewise. + +2017-11-28 Olivier Hainque + + * Makefile.in (SELFTEST_FLAGS): Use nul instead of /dev/null + on mingw build hosts. + +2017-11-28 Jakub Jelinek + + PR debug/81307 + * dbxout.c (dbx_block_with_cold_children): Fix function comment. + +2017-11-28 Richard Biener + + PR middle-end/83141 + * gimple-fold.c (gimple_fold_builtin_memory_op): For aggregate + copies generated from memcpy use a character array as reference + type. + +2017-11-28 Julia Koval + Sebastian Peryt + + * Makefile.in (cilkplus.def, cilk-builtins.def, c-family/cilk.o, + c-family/c-cilkplus.o, c-family/array-notation-common.o, + cilk-common.o, cilk.h, cilk-common.c): Remove. + * builtin-types.def + (BT_FN_INT_PTR_PTR_PTR_FTYPE_BT_INT_BT_PTR_BT_PTR_BT_PTR): Remove. + * builtins.c (is_builtin_name): Remove cilkplus condition. + (BUILT_IN_CILK_DETACH, BUILT_IN_CILK_POP_FRAME): Remove. + * builtins.def (DEF_CILK_BUILTIN_STUB, DEF_CILKPLUS_BUILTIN, + cilk-builtins.def, cilkplus.def): Remove. + * cif-code.def (CILK_SPAWN): Remove. + * cilk-builtins.def: Delete. + * cilk-common.c: Ditto. + * cilk.h: Ditto. + * cilkplus.def: Ditto. + * config/darwin.h (fcilkplus): Delete. + * cppbuiltin.c: Ditto. + * doc/extend.texi: Remove cilkplus doc. + * doc/generic.texi: Ditto. + * doc/invoke.texi: Ditto. + * doc/passes.texi: Ditto. + * gcc.c (fcilkplus): Remove. + * gengtype.c (cilk.h): Remove. + * gimple-pretty-print.c (dump_gimple_omp_for): Remove cilkplus + support. + * gimple.h (GF_OMP_FOR_KIND_CILKFOR, GF_OMP_FOR_KIND_CILKSIMD): + Remove. + * gimplify.c (gimplify_return_expr, maybe_fold_stmt, + gimplify_call_expr, + is_gimple_stmt, gimplify_modify_expr, gimplify_scan_omp_clauses, + gimplify_adjust_omp_clauses, gimplify_omp_for, gimplify_expr): Remove + cilkplus conditions. + * ipa-fnsummary.c (ipa_dump_fn_summary, compute_fn_summary, + inline_read_section): Ditto. + * ipa-inline-analysis.c (cilk.h): Remove. + * ira.c (ira_setup_eliminable_regset): Remove cilkplus support. + * lto-wrapper.c (merge_and_complain, append_compiler_options, + append_linker_options): Remove condition for fcilkplus. + * lto/lto-lang.c (cilk.h): Remove. + (lto_init): Remove condition for fcilkplus. + * omp-expand.c (expand_cilk_for_call): Delete. + (expand_omp_taskreg, expand_omp_for_static_chunk, + expand_omp_for): Remove cilkplus + conditions. + (expand_cilk_for): Delete. + * omp-general.c (omp_extract_for_data): Remove cilkplus support. + * omp-low.c (scan_sharing_clauses, create_omp_child_function, + execute_lower_omp, diagnose_sb_0): Ditto. + * omp-simd-clone.c (simd_clone_clauses_extract): Ditto. + * tree-core.h (OMP_CLAUSE__CILK_FOR_COUNT_): Delete. + * tree-nested.c: Ditto. + * tree-pretty-print.c (dump_omp_clause): Remove cilkplus support. + (dump_generic_node): Ditto. + * tree.c (OMP_CLAUSE__CILK_FOR_COUNT_): Delete. + * tree.def (cilk_simd, cilk_for, cilk_spawn_stmt, cilk_sync_stmt): + Delete. + * tree.h (CILK_SPAWN_FN, EXPR_CILK_SPAWN): Delete. + +2017-11-28 Ramana Radhakrishnan + + * config/aarch64/aarch64.md (div3): Change check to TARGET_FLOAT. + * config/aarch64/aarch64.c (aarch64_emit_approx_div): Add early exit + for vector mode and !TARGET_SIMD. + +2017-11-28 Jakub Jelinek + + * tree.def (SWITCH_EXPR): Change from 3 operand to 2 operand tree. + Adjust comment. + * tree.h (SWITCH_LABELS): Remove. + * gimplify.c (gimplify_switch_expr): Don't test SWITCH_LABELS, + assert SWITCH_BODY is non-NULL. + * tree-pretty-print.c (dump_generic_node): Remove SWITCH_LABELS + handling. + * tree.c (block_may_fallthru): Always return true; for SWITCH_EXPR. + + PR tree-optimization/80788 + * match.pd (X +- C1 CMP C2 -> X CMP C2 -+ C1): If res + has TREE_OVERFLOW set, call drop_tree_overflow. + +2017-11-28 Richard Biener + + PR tree-optimization/83158 + * tree-vrp.c (intersect_ranges): Prefer ~[0, 0] in a few more cases. + +2017-11-28 Segher Boessenkool + + PR 81288/target + * config/rs6000/rs6000.c (rs6000_rtx_costs): Do not handle + TARGET_ISEL && !TARGET_MFCRF differently. Simplify code. + +2017-11-27 Segher Boessenkool + + * config/rs6000/rs6000.md (2_isel): Change + LT/GT/LTU/GTU to LE/GE/LEU/GEU where possible. + +2017-11-27 Michael Meissner + + PR middle_end/82333 + * varasm.c (compare_constant): Take the mode of the constants into + account when comparing floating point constants. + +2017-11-27 Gerald Pfeifer + + * hash-set.h (DEFINE_DEBUG_HASH_SET): Remove static qualifier + from explicit instantiation of debug_helper. + * vec.h (DEFINE_DEBUG_VEC): Ditto. + +2017-11-27 Richard Biener + + * gimple-fold.c (gimple_fold_builtin_memory_op): Remove dead code, + refactor a bit. + +2017-11-27 Richard Biener + + * tree.c (wide_int_to_tree): Free discarded INTEGER_CST. + (type_hash_canon): Also clear int_cst_hash_table entry for + TYPE_MIN/MAX_VALUE. + (build_nonstandard_integer_type): Hash all TYPE_MAX_VALUEs. + +2017-11-27 Tamar Christina + + * doc/extend.texi: Add -A suffix (ARMv8*-A, ARMv7-A). + * doc/invoke.texi: Add -A suffix (ARMv8*-A, ARMv7-A). + * doc/sourcebuild.texi: Add -A suffix (ARMv8*-A, ARMv7-A). + +2017-11-27 Markus Trippelsdorf + + * hash-map.h (gt_cleare_cache): Avoid UB. + +2017-11-27 Eric Botcazou + + * cfgloop.h (struct loop): Document usage of USHRT_MAX for unroll. + * loop-unroll.c (decide_unroll_constant_iterations): Implement it. + (decide_unroll_runtime_iterations): Likewise. + (decide_unroll_stupid): Likewise. + +2017-11-27 Igor Tsimbalist + + PR target/83109 + * config/i386/i386.md: Add a loop with incssp. + +2017-11-27 Martin Jambor + + PR tree-optimization/81248 + * tree-sra.c (splice_param_accesses): Remove size check. + (decide_one_param_reduction): Fix size check. + * gimple-pretty-print.c (dump_profile): Silence warning. + * params.def (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Adjust description. + +2017-11-27 Jakub Jelinek + + PR debug/81307 + * dbxout.c (lastlineno): New variable. + (dbx_debug_hooks): Use dbxout_switch_text_section as + switch_text_section debug hook. + (dbxout_function_end): Switch to current_function_section + rather than function_section. If crtl->has_bb_partition, + output just one N_FUN, depending on in_cold_section_p. + (dbxout_source_line): Remember last lineno in lastlineno. + (dbxout_switch_text_section): New function. + (dbxout_function_decl): Adjust dbxout_block caller. + (dbx_block_with_cold_children): New function. + (dbxout_block): Return true if any LBRAC/RBRAC have been + emitted. Use dbx_block_with_cold_children at depth == 0 + in second partition. Add PARENT_BLOCKNUM argument, pass + it optionally adjusted to children. Output LBRAC/RBRAC + around recursive call only if the block is in the current + partition, if not and anything was output, emit empty + range LBRAC/RBRAC. + * final.c (final_scan_insn): Compute cold_function_name + before calling switch_text_section debug hook. Call + that hook even if dwarf2out_do_frame if not emitting + dwarf debug info. + + PR target/83100 + * varasm.c (bss_initializer_p): Return true for DECL_COMMON + TREE_READONLY decls. + +2017-11-27 Markus Trippelsdorf + + PR rtl-optimization/82488 + * expr.c (fixup_args_size_notes): Avoid signed integer overflow. + +2017-11-26 Julia Koval + + * config/i386/i386.c (processor_target_table): Add skylake_cost for + skylake-avx512. + * config/i386/x86-tune-costs.h (skylake_memcpy, skylake_memset, + skylake_cost): New. + +2017-11-26 Julia Koval + + * config/i386/driver-i386.c (host_detect_local_cpu): + Detect skylake-avx512. + +2017-11-26 Julia Koval + + * config.gcc: Add -march=cannonlake. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect cannonlake. + * config/i386/i386-c.c (ix86_target_macros_internal): Handle cannonlake. + * config/i386/i386.c (processor_costs): Add m_CANNONLAKE. + (PTA_CANNONLAKE): New. + (processor_target_table): Add cannonlake. + (ix86_option_override_internal): Ditto. + (fold_builtin_cpu): Ditto. + (get_builtin_code_for_version): Handle cannonlake. + (M_INTEL_COREI7_CANNONLAKE): New. + * config/i386/i386.h (TARGET_CANNONLAKE, PROCESSOR_CANNONLAKE): New. + * doc/invoke.texi: Add -march=cannonlake. + +2017-11-14 Boris Kolpackov + + * plugin.c (add_new_plugin): Use platform-specific library extensions. + (try_init_one_plugin): Alternative implementation for MinGW. + * Makefile.in (plugin_implib): New. + (gengtype-lex.c): Fix broken AIX workaround. + * configure: Regenerate. + * doc/plugins.texi: Document support for MinGW. + +2017-11-25 Jakub Jelinek + + PR rtl-optimization/81553 + * combine.c (simplify_if_then_else): In (if_then_else COND (OP Z C1) Z) + to (OP Z (mult COND (C1 * STORE_FLAG_VALUE))) optimization, if OP + is a shift where C1 has different mode than the whole shift, use C1's + mode for MULT rather than the shift's mode. + + PR target/82848 + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Don't fold + builtins not enabled in the currently selected ISA. + +2017-11-24 Jackson Woodruff + + 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. + +2017-11-24 Richard Biener + + PR tree-optimization/82402 + * tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Properly + set SSA_NAME_OCCURS_IN_ABNORMAL_PHI. + +2017-11-24 Marc Glisse + + * match.pd (0-ptr): New transformation. + +2017-11-24 Jan Hubicka + + PR bootstrap/83015 + * ipa-inline.c (inline_small_functions): Set current badnes correctly + when skipping checking. + +2017-11-24 Richard Biener + + PR tree-optimization/83128 + * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Handle STRING_CSTs. + (vn_reference_lookup_3): Likewise. + +2017-11-24 Jakub Jelinek + + 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. + + * 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. + +2017-11-24 Christophe Lyon + + * config/arm/arm_neon.h: Fix pragma GCC push_options before + vdot_u32. + +2017-11-23 Julia Koval + + * 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_mask, expand_maskz): New patterns. + +2017-11-23 Julia Koval + + * 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_mask, compressstore_mask): New patterns. + +2017-11-23 Jakub Jelinek + + * 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. + +2017-11-23 Marc Glisse + + * match.pd (ptr-0): New transformation. + +2017-11-23 Charles Baylis + + * 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. + +2017-11-23 Charles Baylis + + * config/arm/arm.c (arm_mem_costs): New function. + (arm_rtx_costs_internal): Use arm_mem_costs. + +2017-11-23 Mark Wielaard + + * 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. + +2017-11-23 Mike Stump + Eric Botcazou + + * 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) : Deal with unroll kind. + (gimplify_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) : + New case. + (replace_loop_annotate) : 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) : + 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. + +2017-11-23 Sergey Shalnov + + * config/i386/i386.h (TARGET_PREFER_AVX256): Also + enable when TARGET_PREFER_AVX128 is set. + +2017-11-23 Jan Hubicka + + * 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. + +2017-11-23 Jan Hubicka + + * ipa-fnsummary.c (record_modified_bb_info): Use sreal + frequencies. Fix estimation of aggregate parameters. + +2017-11-23 Jan Hubicka + + * cgraphclones.c (cgraph_node::create_clone): Fix updating of profile + when inlining. + +2017-11-23 Tom de Vries + + * config/sh/sh.h (ASM_OUTPUT_ADDR_VEC_ELT): Wrap in "do {} while (0)". + +2017-11-23 Tom de Vries + + * config/ft32/ft32.h (ASM_OUTPUT_ADDR_VEC_ELT): Remove semicolon after + macro. + +2017-11-23 Oleg Endo + + 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. + +2017-11-23 Jakub Jelinek + + 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. + +2017-11-23 Richard Biener + + 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. + +2017-11-23 Richard Biener + + 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. + +2017-11-22 Jeff Law + + * 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. + +2017-11-22 Eric Botcazou + + 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. + +2017-11-22 Jakub Jelinek + + * simplify-rtx.c (simplify_binary_operation_1) : + Handle the case where both arguments are using gen_const_vec_series. + +2017-11-22 David Malcolm + + 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. + +2017-11-22 Jeff Law + + * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer) + 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. + +2017-11-22 Richard Sandiford + + * 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. + +2017-11-22 Olivier Hainque + + * 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. + +2017-11-22 Marc Glisse + + PR tree-optimization/83104 + * vr-values.c (simplify_stmt_using_ranges): Check integral argument, + not result. + +2017-11-22 Marek Polacek + H.J. Lu + Jason Merrill + + PR c++/60336 + PR middle-end/67239 + PR target/68355 + * 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. + +2017-11-22 Thomas Preud'homme + + * 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. + +2017-11-22 Tamar Christina + + * 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. + + +2017-11-22 Richard Sandiford + + PR middle-end/82547 + * wide-int.cc (wi::add_large, wi::sub_large): Fix overflow detection + for unsigned values with fewer HWIs than the precision. + (test_overflow): New function. + (wide_int_cc_tests): Call it. + +2017-11-22 Richard Sandiford + + * emit-rtl.c (init_derived_machine_modes): Make sure ptr_mode + has the same mode class as Pmode. + +2017-11-22 Thomas Preud'homme + + * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of + padding_bits_to_clear_ptr. + (cmse_nonsecure_entry_clear_before_return): Likewise. + +2017-11-22 Thomas Preud'homme + + * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Use + auto_sbitap instead of integer bitfield to control register needing + clearing. + +2017-11-22 Jakub Jelinek + + PR tree-optimization/83044 + * tree-vrp.c (vrp_prop::check_array_ref): If eltsize is not + INTEGER_CST or is 0, clear up_bound{,_p1} and later ignore tests + that need the upper bound. Subtract offset from + get_addr_base_and_unit_offset only if positive and subtract it + before division by eltsize rather than after it. + + PR debug/83084 + * valtrack.c (propagate_for_debug_subst, propagate_for_debug): Reset + debug insns if they would contain UNSPEC_VOLATILE or volatile asm. + (dead_debug_insert_temp): Likewise, but also ignore even non-volatile + asm. + + PR middle-end/82875 + * optabs.c (expand_doubleword_mult, expand_binop): Before calling + expand_binop with *mul_widen_optab, make sure at least one of the + operands doesn't have VOIDmode. + + PR debug/83034 + * dwarf2out.c (mem_loc_descriptor): Handle VEC_SERIES. + + PR rtl-optimization/82044 + PR tree-optimization/82042 + * dse.c (record_store): Check for overflow. + (check_mem_read_rtx): Properly check for overflow if width == -1, call + add_wild_read instead of clear_rhs_from_active_local_stores on + overflow and log it into dump_file. + +2017-11-22 Richard Biener + + * gimple-iterator.c (gimple_find_edge_insert_loc): Ignore + fake edges to exit when looking for a place to insert. + * tree-ssa-pre.c (clear_expression_ids): Inline into callers + and remove. + (insert_into_preds_of_block): Commit edge insertion immediately, + assert that doesn't require new BBs. + (fini_pre): Release expressions. + (pass_pre::execute): Shuffle things around a bit, if the fn + is too large do not compute AVAIL either as this is really the + quadratic bit. + +2017-11-22 Richard Biener + + PR tree-optimization/83089 + * tree-if-conv.c (pass_if_conversion::execute): If anything + changed reset SCEV and free the number of iteration estimates. + +2017-11-21 Martin Sebor + + PR tree-optimization/82945 + * calls.h (warn_nonstring_bound): Remove unused function. + +2017-11-21 Martin Sebor + + PR tree-optimization/82945 + * builtins.c (expand_builtin_strlen): Call maybe_warn_nonstring_arg. + * calls.h (maybe_warn_nonstring_arg): Declare new function. + * calls.c (get_attr_nonstring_decl, maybe_warn_nonstring_arg): New + functions. + (initialize_argument_information): Call maybe_warn_nonstring_arg. + * calls.h (get_attr_nonstring_decl): Declare new function. + * doc/extend.texi (attribute nonstring): Update. + * gimple-fold.c (gimple_fold_builtin_strncpy): Call + get_attr_nonstring_decl and handle it. + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same. Improve + detection of nul-termination. + (strlen_to_stridx): Change to a pointer. + (handle_builtin_strlen, handle_builtin_stxncpy): Adjust. + (pass_strlen::execute): Same. + +2017-11-21 Sergey Shalnov + + * config/i386/i386-opts.h (enum prefer_vector_width): Added new enum + for the new option -mprefer-vector-width=[none|128|256|512]. + * config/i386/i386.c (ix86_target_string): remove old style options + -mprefer-avx256 and make -mprefer-avx128 as alias. + (ix86_option_override_internal): Apply defaults for the + -mprefer-vector-width=[128|256] option. + * config/i386/i386.h (TARGET_PREFER_AVX128, TARGET_PREFER_AVX256): + Implement macros to work with -mprefer-vector-width=. + * config/i386/i386.opt: Implemented option + -mprefer-vector-width=[none|128|256|512]. + * doc/invoke.texi: Documentation for + -mprefer-vector-width=[none|128|256|512]. + +2017-11-21 Pat Haugen + + * config/rs6000/ppc-asm.h (f50, vs50): Fix values. + +2017-11-21 Jonathan Wakely + + * doc/invoke.texi (-Wmaybe-uninitialized): Rephrase for clarity. + +2017-11-21 Marc Glisse + + * doc/generic.texi: Document POINTER_DIFF_EXPR, update + POINTER_PLUS_EXPR. + * cfgexpand.c (expand_debug_expr): Handle POINTER_DIFF_EXPR. + * expr.c (expand_expr_real_2): Likewise. + * fold-const.c (const_binop, fold_addr_of_array_ref_difference, + fold_binary_loc): Likewise. + * match.pd (X-X, P+(Q-P), &D-P, (P+N)-P, P-(P+N), (P+M)-(P+N), + P-Q==0, -(A-B), X-Z + + * config/i386/i386.md (*bswap2_movbe): Add + integer suffix to movbe mnemonic. + (*bswaphi2_movbe): Ditto. + (bswaphi_lowpart): Merge with *bswaphi_lowpart_1. + +2017-11-21 Jakub Jelinek + + PR c++/83045 + * tree-cfg.c (pass_warn_function_return::execute): Formatting fix. + Also warn if seen __builtin_unreachable () call with BUILTINS_LOCATION. + Use LOCATION_LOCUS when comparing against UNKNOWN_LOCATION. + +2017-11-21 Martin Liska + + * tree-inline.c (expand_call_inline): Remove not needed + xstrdup_for_dump. + +2017-11-21 James Cowgill + Jakub Jelinek + + PR target/82880 + * config/mips/frame-header-opt.c (mips_register_frame_header_opt): + Remove static keyword from f variable. + +2017-11-21 Jakub Jelinek + + PR tree-optimization/83086 + * gimple-ssa-store-merging.c + (imm_store_chain_info::try_coalesce_bswap): Test this_n.base_addr + rather than n.base_addr. + +2017-11-21 Martin Liska + + PR rtl-optimization/82044 + PR tree-optimization/82042 + * dse.c (check_mem_read_rtx): Check for overflow. + +2017-11-21 Aldy Hernandez + + * tree-ssa-threadbackward.c (find_jump_threads_backwards): Fix + typo in comment. + +2017-11-21 Claudiu Zissulescu + + * cfgrtl.c (force_nonfallthru_and_redirect): Don't split a call + and its corresponding call arg location note. + +2017-11-21 Claudiu Zissulescu + Andrew Burgess + + * config/arc/arc-protos.h (arc_compute_frame_size): Delete + declaration. + (arc_return_slot_offset): Likewise. + (arc_eh_return_address_location): New declaration. + * config/arc/arc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define. + (MUST_SAVE_REGISTER): Add exception handler case. + (MUST_SAVE_RETURN_ADDR): Likewise. + (arc_frame_pointer_required): Likewise. + (arc_frame_pointer_needed): New function. + (arc_compute_frame_size): Changed. + (arc_expand_prologue): Likewise. + (arc_expand_epilogue): Likewise. + (arc_initial_elimination_offset): Likewise. + (arc_return_slot_offset): Delete. + (arc_eh_return_address_location): New function. + (arc_builtin_setjmp_frame_value): Likewise. + * config/arc/arc.h (EH_RETURN_DATA_REGNO): Use 2 registers. + (EH_RETURN_STACKADJ_RTX): Define. + (EH_RETURN_HANDLER_RTX): Likewise. + * config/arc/arc.md (eh_return): Delete. + +2017-11-21 Aldy Hernandez + + * print-tree.h (debug_vec_tree): Remove prototype. + * gdbinit.in (pvt): Remove macro. + +2017-11-21 Jakub Jelinek + + PR tree-optimization/83047 + * gimple-ssa-store-merging.c + (imm_store_chain_info::output_merged_store): If the loads with the + same vuse are in different basic blocks, for load_gsi pick a load + location that is dominated by the other loads. + + PR c++/83059 + * config/i386/i386.c (ix86_memmodel_check): Start + -Winvalid-memory-model diagnostics with lowercase letter. + + PR debug/82718 + * dwarf2out.c (dw_loc_list): If crtl->has_bb_partition, temporarily + set in_cold_section_p to the partition containing loc_list->first. + When seeing loc_list->last_before_switch node, update secname and + perform range_across_switch second partition handling only after that. + + PR debug/82933 + * run-rtl-passes.c: Include debug.h. + (run_rtl_passes): Call debug_hooks->assembly_start. + * dwarf2out.c (dwarf2out_assembly_start): Return early if invoked + multiple times. + + PR target/82981 + * internal-fn.c (expand_mul_overflow): Use OPTAB_WIDEN instead of + OPTAB_DIRECT in calls to expand_simple_binop. + +2017-11-20 David Malcolm + + PR c/81404 + * Makefile.in (C_COMMON_OBJS): Add c-family/known-headers.o. + +2017-11-20 David Malcolm + + PR c++/72786 + * spellcheck.h (best_match::blithely_get_best_candidate): New + accessor. + +2017-11-20 Jakub Jelinek + + * config/i386/i386.c (parse_mtune_ctrl_str): Start diagnostics + with lower case letter. + +2017-11-20 Uros Bizjak + + * config/i386/i386.md (bswaphi2): New expander. + (*bswaphi2_movbe): New insn pattern. + (bswaphi -> rorhi pepehole2): New peephole pattern. + +2017-11-20 Jeff Law + + * Makefile.in (OBJS): Add gimple-ssa-evrp-analyze.o. + * gimple-ssa-evrp-analyze.c: New file pulled from gimple-ssa-evrp.c. + * gimple-ssa-evrp-analyze.h: New file pulled from gimple-ssa-evrp.c. + * gimple-ssa-evrp.c: Remove bits moved into new files. Include + gimple-ssa-evrp-analyze.h. + + * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Do not + set BB_VISITED here. + (evrp_range_analyzer::enter): Set BB_VISITED here instead. + +2017-11-20 Bin Cheng + + * tree-predcom.c: Add general comment on Store-Store chains. + (split_data_refs_to_components): Postpone clearing eliminate_store_p + flag in component. + (get_chain_last_ref_at): Rename into... + (get_chain_last_write_at): ...this. + (get_chain_last_write_before_load): New function. + (add_ref_to_chain): Promote type of chain from CT_STORE_LOAD to + CT_STORE_STORE when write reference is added. + (determine_roots_comp): Support load ref in CT_STORE_STORE chains. + (is_inv_store_elimination_chain): Update get_chain_last_write_at call. + (initialize_root_vars_store_elim_1): Ditto. + (initialize_root_vars_store_elim_2): Ditto. Replace rhs once default + definition is created. + (execute_pred_commoning_chain): Support load ref in CT_STORE_STORE + chain by replacing it with dominant stored value. + +2017-11-20 Bin Cheng + + * tree-predcom.c (add_ref_to_chain): Remove check on distance. + +2017-11-20 Marc Glisse + + * vr-values.c (extract_range_from_binary_expr): Use a full range + for VR_VARYING. + +2017-11-20 Thomas Preud'homme + + * config/arm/arm.md (R4_REGNUM): Define constant. + (nonsecure_call_internal): Remove r4 clobber. + (nonsecure_call_value_internal): Likewise. + * config/arm/thumb1.md (nonsecure_call_reg_thumb1_v5): Remove second + clobber and resequence match_operands. + (nonsecure_call_value_reg_thumb1_v5): Likewise. + * config/arm/thumb2.md (nonsecure_call_reg_thumb2): Likewise. + (nonsecure_call_value_reg_thumb2): Likewise. + +2017-11-20 Jakub Jelinek + + PR tree-optimization/78821 + * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Give up + if base is TARGET_MEM_REF. If base is not MEM_REF, set base_addr + to the address of the base rather than the base itself. + (find_bswap_or_nop_1): Just use pointer comparison for vuse check. + (find_bswap_or_nop_finalize): New function. + (find_bswap_or_nop): Use it. + (bswap_replace): Return a tree rather than bool, change first + argument from gimple * to gimple_stmt_iterator, allow inserting + into an empty sequence, allow ins_stmt to be NULL - then emit + all stmts into gsi. Fix up MEM_REF address gimplification. + (pass_optimize_bswap::execute): Adjust bswap_replace caller. + (struct store_immediate_info): Add N and INS_STMT non-static + data members. + (store_immediate_info::store_immediate_info): Initialize them + from newly added ctor args. + (merged_store_group::apply_stores): Formatting fixes. Sort by + bitpos at the end. + (stmts_may_clobber_ref_p): For stores call also + refs_anti_dependent_p. + (gather_bswap_load_refs): New function. + (imm_store_chain_info::try_coalesce_bswap): New method. + (imm_store_chain_info::coalesce_immediate_stores): Use it. + (split_group): Handle LROTATE_EXPR and NOP_EXPR rhs_code specially. + (imm_store_chain_info::output_merged_store): Fail if number of + new estimated stmts is bigger or equal than old. Handle LROTATE_EXPR + and NOP_EXPR rhs_code. + (pass_store_merging::process_store): Compute n and ins_stmt, if + ins_stmt is non-NULL and the store rhs is otherwise invalid, use + LROTATE_EXPR rhs_code. Pass n and ins_stmt to store_immediate_info + ctor. + (pass_store_merging::execute): Calculate dominators. + + * tree-ssa-math-opts.c (nop_stats, bswap_stats, struct symbolic_number, + BITS_PER_MARKER, MARKER_MASK, MARKER_BYTE_UNKNOWN, HEAD_MARKER, CMPNOP, + CMPXCHG, do_shift_rotate, verify_symbolic_number_p, + init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge, + find_bswap_or_nop_1, find_bswap_or_nop, pass_data_optimize_bswap, + class pass_optimize_bswap, bswap_replace, + pass_optimize_bswap::execute): Moved to ... + * gimple-ssa-store-merging.c: ... this file. + Include optabs-tree.h. + (nop_stats, bswap_stats, do_shift_rotate, verify_symbolic_number_p, + init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge, + find_bswap_or_nop_1, find_bswap_or_nop, bswap_replace): Put into + anonymous namespace, remove static keywords. + (pass_optimize_bswap::gate): Test BITS_PER_UNIT == 8 here... + (pass_optimize_bswap::execute): ... rather than here. Formatting fix. + +2017-11-20 Jan Hubicka + + PR bootstrap/83062 + * ipa-inline.c (can_inline_edge_p): Fix typo in previous patch. + +2017-11-20 Aldy Hernandez + + * vec.h (debug_helper): New function. + (DEFINE_DEBUG_VEC): New macro. + * hash-set.h (debug_helper): New function. + (DEFINE_DEBUG_HASH_SET): New macro. + * cfg.c (debug_slim (edge)): New function. + Call DEFINE_DEBUG_VEC for edges. + Call DEFINE_DEBUG_HASH_SET for edges. + * cfghooks.c (debug_slim (basic_block)): New function. + Call DEFINE_DEBUG_VEC for basic blocks. + Call DEFINE_DEBUG_HASH_SET for basic blocks. + * print-tree.c (debug_slim): New function to handle trees. + Call DEFINE_DEBUG_VEC for trees. + Call DEFINE_DEBUG_HASH_SET for trees. + (debug (vec) &): Remove. + (debug () *): Remove. + * print-rtl.c (debug_slim): New function to handle const_rtx. + Call DEFINE_DEBUG_VEC for rtx_def. + Call DEFINE_DEBUG_VEC for rtx_insn. + Call DEFINE_DEBUG_HASH_SET for rtx_def. + Call DEFINE_DEBUG_HASH_SET for rtx_insn. + * sel-sched-dump.c (debug (vec &): Remove. + (debug (vec *ptr): Remove. + (debug_insn_vector): Remove. + * stor-layout.c (debug_rli): Call debug() instead of debug_vec_tree. + +2017-11-20 Tom de Vries + + PR rtl-optimization/82020 + * simplify-rtx.c (simplify_ternary_operation): Fix comparison mode of + IF_THEN_ELSE condition. + +2017-11-19 Jeff Law + + * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling + of degenerates resulting from ignoring an edge. + +2017-11-19 Jan Hubicka + + PR ipa/81360 + * ipa-inline.c (can_inline_edge_p): Also check that caller is optimized + +2017-11-19 Jan Hubicka + + PR ipa/83001 + * profile-count.c (profile_count::to_sreal_scale): Fix return value + for uninitialied counts. + +2017-11-19 Jan Hubicka + + PR ipa/60243 + * tree-inline.c (estimate_num_insns): Set to 1 at least. + +2017-11-19 Jan Hubicka + + PR target/82713 + * i386.c (ix86_builtin_vectorization_cost): Be ready for insane types. + +2017-11-19 Tom de Vries + + * config/arc/arc.h (FUNCTION_PROFILER): Remove semicolon after + "do while (0)". + +2017-11-19 Tom de Vries + + * config/phoenix.h (TARGET_OS_CPP_BUILTINS): Remove semicolon after + "do {} while (0)". + +2017-11-19 Tom de Vries + + * config/visium/visium.h (ASM_OUTPUT_CASE_END): Remove semicolon after + macro body. + +2017-11-19 Tom de Vries + + * config/ft32/ft32.h (REGISTER_TARGET_PRAGMAS): Remove semicolon after + "do {} while (0)". + * config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Same. + +2017-11-19 Tom de Vries + + * config/mcore/mcore-elf.h (MCORE_EXPORT_NAME): Remove semicolon after + "do {} while (0)". + * config/mcore/mcore.h (ASM_OUTPUT_ALIGNED_COMMON): After missing + semicolon after MCORE_EXPORT_NAME call. + +2017-11-19 Tom de Vries + + PR target/82961 + * vmsdbgout.c (vmsdbgout_early_finish): New function. + (vmsdbg_debug_hooks): Set early_finish field to vmsdbgout_early_finish. + +2017-11-18 Jan Hubicka + + * cgraphclones.c (cgraph_edge::clone): Rename gcov_count to prof_count. + (cgraph_edge::clone): Cleanup updating of profile. + * ipa-cp.c (update_profiling_info): Likewise. + * ipa-inline-transform.c (inline_transform): Likewise. + * ipa-inline.c (inline_small_functions): Add missing space to dump. + * ipa-split.c (execute_split_functions): Do not split when function + is cold. + * predict.c (estimate_bb_frequencies): Cleanup updating of profile. + * profile-count.c (profile_count::dump): Add global0. + (profile_count::to_cgraph_frequency): Do not ICE when entry is + undefined. + (profile_count::to_sreal_scale): Likewise. + (profile_count::adjust_for_ipa_scaling): Fix typo in comment. + (profile_count::combine_with_ipa_count): New function. + * profile-count.h (profile_guessed_global0adjusted): New. + (profile_count::adjusted_zero): New. + (profile_count::global0adjusted): New. + (profile_count::combine_with_ipa_count): New. + * tree-inline.c (copy_edges_for_bb): Add NUM/DEN arugment; + correct profile of return block of split functions. + (copy_cfg_body): Remove unused profile_count. + (copy_body): Likewise. + (expand_call_inline): Update. + (tree_function_versioning): Update. + +2017-11-18 Aldy Hernandez + + * hash-set.h (hash_set::empty): New. + * tree-ssa-threadbackward.h: Delete. + * tree-ssa-threadbackward.c (class thread_jumps): New. + Move max_threaded_paths into class. + (fsm_find_thread_path): Remove arguments that are now in class. + (profitable_jump_thread_path): Rename to... + (thread_jumps::profitable_jump_thread_path): ...this. + (convert_and_register_jump_thread_path): Rename to... + (thread_jumps::convert_and_register_current_path): ...this. + (check_subpath_and_update_thread_path): Rename to... + (thread_jumps::check_subpath_and_update_thread_path): ...this. + (register_jump_thread_path_if_profitable): Rename to... + (thread_jumps::register_jump_thread_path_if_profitable): ...this. + (handle_phi): Rename to... + (thread_jumps::handle_phi): ...this. + (handle_assignment): Rename to... + (thread_jumps::handle_assignment): ...this. + (fsm_find_control_statement_thread_paths): Rename to... + (thread_jumps::fsm_find_control_statement_thread_paths): ...this. + (find_jump_threads_backwards): Rename to... + (thread_jumps::find_jump_threads_backwards): ...this. + Initialize path local data. + (pass_thread_jumps::execute): Call find_jump_threads_backwards + from within thread_jumps class. + (pass_early_thread_jumps::execute): Same. + +2017-11-17 Jan Hubicka + + * cgraph.c (cgraph_node::dump): Do IPA sanity checking on IPA counts. + +2017-11-17 Steve Ellcey + + * config/aarch64/aarch64-simd.md (fnma4): Move neg operator + to canonical location. + +2017-11-17 Steve Ellcey + + PR target/81356 + * config/aarch64/aarch64.c (aarch64_use_by_pieces_infrastructure_p): + Remove. + (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Remove define. + +2017-11-17 H.J. Lu + + * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Use + rcrt1.o%s/grcrt1.o%s for -static-pie. + +2017-11-17 Jan Hubicka + + * i386.c (ix86_multiplication_cost, ix86_division_cost, + ix86_shift_rotate_cost): Break out from ... + (ix86_rtx_costs): ... here. + (ix86_add_stmt_cost): Use rtx cost machinery to compute cost of + vector operations. + +2017-11-17 Jan Hubicka + + * predict.c (determine_unlikely_bbs): Set cgraph node count to 0 + when entry block was promoted unlikely. + (estimate_bb_frequencies): Increase frequency scale. + * profile-count.h (profile_count): Export precision info. + +2017-11-17 Jan Hubicka + + * tree-tailcall.c (eliminate_tail_call): Be more careful about not + disturbin profile of entry block. + +2017-11-17 Jan Hubicka + + * ipa-fnsummary.c (estimate_node_size_and_time): Be more tolerant for + roundoff errors. + +2017-11-17 Jan Hubicka + + * ipa-cp.c (update_profiling_info): Handle conversion to local profile. + * tree-cfg.c (execute_fixup_cfg): Do fixup same way as inliner does. + +2017-11-17 Jeff Law + + * gimple-ssa-evrp.c (class evrp_range_analyzer): New class extracted + from evrp_dom_walker class. Various methods moved into new class. + (evrp_range_analyzer::evrp_range_analyzer): Constructor for new class. + (evrp_range_analyzer::enter): New method. + (evrp_range_analyzer::leave): New method. + (evrp_dom_walker): Remove delegators no longer needed by this class. + Replace vr_values data member with evrp_range_analyzer + + * gimple-ssa-evrp.c (evrp_dom_walker::record_ranges_from_phis): New + method extracted from evrp_dom_walker::before_dom_children. + (evrp_dom_walker::record_ranges_from_stmt): Likewise. + (evrp_dom_walker::record_ranges_from_incoming_edge): Likewise. + + * gimple-ssa-evrp.c (evrp_dom_walker): Add cleanup method. + Add private copy constructor and move assignment operators. + Privatize methods and class data where trivially possible. + (evrp_dom_walker::cleanup): New function, extracted from + execute_early_vrp. Simplify access to class data. + + * vr-values.h (get_output_for_vrp): Prototype. + * vr-values.c (get_output_for_vrp): New function extracted from + vrp_visit_assignment_or_call and extract_range_from_stmt. + (vrp_visit_assignment_or_call): Use get_output_for_vrp. Simplify. + +2017-11-17 Luis Machado + + * config/aarch64/aarch64.c + (qdf24xx_prefetch_tune) : Set to -1. + (qdf24xx_tunings) : Set to + tune_params::AUTOPREFETCHER_WEAK. + +2017-11-17 Tamar Christina + + PR target/82641 + * config/arm/arm.c (arm_valid_target_attribute_rec): + Parse "arch=" and "+". + (arm_valid_target_attribute_tree): Re-init global options. + (arm_option_override): Make non-static. + (arm_options_perform_arch_sanity_checks): Make errors fatal. + * gcc/config/arm/arm-c.c (__ARM_FEATURE_CMSE): Support undef. + (__ARM_FEATURE_CRC32): Support undef. + * config/arm/arm_acle.h (__ARM_FEATURE_CRC32): Replace with pragma. + * doc/extend.texi (ARM Function Attributes): Add pragma and target. + +2017-11-17 David Malcolm + + * gdbinit.in (break-on-diagnostic): New command. + +2017-11-17 Igor Tsimbalist + + * config/i386/i386.c (ix86_expand_epilogue): Change simple + return to indirect jump for EH return if control-flow + protection is enabled. Change explicit 'false' argument in + pro_epilogue_adjust_stack with a value of + flag_cf_protection. + * config/i386/i386.md (simple_return_indirect_internal): + Remove SImode restriction to support 64-bit. + +2017-11-17 Segher Boessenkool + + * combine.c (added_notes_insn): New. + (try_combine): Handle added_notes_insn like added_links_insn. + Rewrite return value code. + (distribute_notes): Set added_notes_insn to the earliest insn we added + a note to. + +2017-11-17 Segher Boessenkool + + PR rtl-optimization/82621 + * combine.c (try_combine): Do not split PARALLELs of two SETs if the + dest of one of those SETs is unused. + +2017-11-17 Richard Biener + + PR fortran/83017 + * tree-core.h (enum annot_expr_kind): Add annot_expr_parallel_kind. + * tree-pretty-print.c (dump_generic_node): Handle + annot_expr_parallel_kind. + * tree-cfg.c (replace_loop_annotate_in_block): Likewise. + * gimplify.c (gimple_boolify): Likewise. + +2017-11-17 Igor Tsimbalist + + * config.gcc (extra_headers): Add cet.h for x86 targets. + * config/i386/cet.h: New file. + * doc/install.texi: Add --enable-cet/--disable-cet. + +2017-11-17 Richard Biener + + PR tree-optimization/83017 + * tree-parloops.c (MIN_PER_THREAD): Use --param parloops-min-per-thread. + (gen_parallel_loop): Properly count iterations. + (parallelize_loops): Handle loop->can_be_parallel independent + of flag_loop_parallelize_all. Make static profitability test match + the runtime one. + * params.def (PARAM_PARLOOPS_MIN_PER_THREAD): New. + * invoke.texi (parloops-min-per-thread): Document. + +2017-11-17 Vineet Gupta + + * config/arc/linux.h: GLIBC_DYNAMIC_LINKER update per glibc + upstreaming review comments. + +2017-11-17 Tamar Christina + + * expr.c (copy_blkmode_to_reg): Fix bitsize for targets + with fast unaligned access. + * doc/sourcebuild.texi (word_mode_no_slow_unalign): New. + +2017-11-17 Thomas Preud'homme + + * config/arm/arm.c (cmse_nonsecure_entry_clear_before_return): Allocate + to_clear_arg_regs_bitmap to the same size as to_clear_bitmap. + +2017-11-17 Richard Biener + + * tree-ssa-pre.c (phi_translate_1): Remove redundant constant + folding of references. + +2017-11-17 Qing Zhao + + PR middle-end/78809 + * gimple-fold.c (gimple_fold_builtin_string_compare): Add handling + of replacing call to strncmp with corresponding call to strcmp when + meeting conditions. + +2017-11-17 Sergey Shalnov + + * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Add tuning + option prefer-avx256 for skylake-avx512 configuration. + * config/i386/i386.c (ix86_option_override_internal): Ditto. + (get_builtin_code_for_version): Ditto. + +2017-11-17 Chung-Ju Wu + Monk Chiang + + * config/nds32/nds32.h (FIRST_PSEUDO_REGISTER): Modify. + (FIXED_REGISTERS): Reserve more register numbers. + (CALL_USED_REGISTERS): Likewise. + (REG_ALLOC_ORDER): Likewise. + (REG_CLASS_CONTENTS): Likewise. + (REGISTER_NAMES): Likewise. + +2017-11-17 Chung-Ju Wu + Kito Cheng + + * config/nds32/nds32-modes.def: Add vector mode V4QI V2HI V8QI V4HI + V2SI. + * config/nds32/iterators.md: Add vector mode iterators and attributes. + +2017-11-16 Steven Munroe + + * config/rs6000/mmintrin.h (_mm_add_pi32[_ARCH_PWR]): Correct + parameter list for vec_splats. + +2017-11-16 Joseph Myers + + * doc/invoke.texi (-std=c17): Refer to 2018 expected publication + date of C17. + (-std=c18, -std=iso9899:2018, -std=gnu18): Document option aliases. + +2017-11-16 Thomas Koenig + + PR bootstrap/82856 + * doc/install.texi: Document incompatibility of Perl >=5.6.26 + with the required version of automake 1.11.6. + +2017-11-16 Pat Haugen + + * rs6000/power9.md (power9fpdiv): New automaton and cpu_unit defined + for it. + (DU_C2_3_power9): Correct reservation combinations. + (FP_DIV_power9, VEC_DIV_power9): New. + (power9-alu): Split out rotate/shift... + (power9-rot): ...to here, correct dispatch resource. + (power9-cracked-alu, power9-mul, power9-mul-compare): Correct dispatch + resource. + (power9-fp): Correct latency. + (power9-sdiv): Add div/sqrt resource. + (power9-ddiv): Correct latency, add div/sqrt resource. + (power9-sqrt, power9-dsqrt): Add div/sqrt resource. + (power9-vecfdiv, power9-vecdiv): Correct latency, add div/sqrt + resource. + (power9-qpdiv, power9-qpmul): Adjust resource usage. + +2017-11-15 Michael Meissner + + * config/rs6000/rs6000.c (rs6000_expand_builtin): Do not do the + switch statement mapping KF built-ins to TF built-ins if we don't + have the proper ISA 3.0 assembler support. + +2017-11-16 Jan Hubicka + + * tree-emutls.c (lower_emutls_data): Remove unused bb_freq. + (lower_emutls_function_body): Do not compute it. + +2017-11-16 Jan Hubicka + + * ipa-split.c (split_bb_info): Turn time to sreal. + (split_point): Likewise. + (dump_split_point): Likewise. + (fine_split_points): Likewise. + (execute_split_functions): Only zero split_bbs; turn time to sreals. + +2017-11-16 Jan Hubicka + + * ipa-fnsummary.c (analyze_function_body): Accumulate time consistently + in sreal. + +2017-11-16 Jan Hubicka + + * predict.c (combine_predictions_for_bb): Preserve zero predicted + edges. + (expensive_function_p): Remove useless assert. + (determine_unlikely_bbs): Propagate also forward; determine cold blocks + +2017-11-16 Martin Sebor + + PR tree-optimization/82588 + PR tree-optimization/82583 + * tree-vrp.c (check_array_ref): Handle flexible array members, + string literals, and inner indices. + (search_for_addr_array): Add detail to diagnostics. + +2017-11-16 Nathan Sidwell + + PR c++/82836 + PR c++/82737 + * tree.h (COPY_DECL_RTL): Rename parms for clarity. + (SET_DECL_ASSEMBLER_NAME): Forward to + overwrite_decl_assembler_name. + (COPY_DECL_ASSEMBLER_NAME): Rename parms for clarity. + (overwrite_decl_assembler_name): Declare. + * tree.c (overwrite_decl_assembler_name): New. + * langhooks-def.h (lhd_overwrite_decl_assembler_name): Declare. + (LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME): Provide default. + (LANG_HOOKS_INITIALIZER): Add it. + * langhooks.h (struct lang_hooks): Add overwrite_decl_assembler_name. + * langhooks.c (lhd_set_decl_assembler_name): Use + SET_DECL_ASSEMBLER_NAME. + (lhd_overwrite_decl_assembler_name): Default implementation. + +2017-11-16 Wilco Dijkstra + Jackson Woodruff + + PR tree-optimization/71026 + * match.pd: Canonicalize constant multiplies in division. + +2017-11-16 Wilco Dijkstra + + * opts.c (default_options_table): Add OPT_fomit_frame_pointer entry. + * common/config/alpha/alpha-common.c (TARGET_OPTION_OPTIMIZATION_TABLE): + Remove OPT_fomit_frame_pointer entry. + * common/config/arc/arc-common.c: Likewise. + * common/config/arm/arm-common.c: Likewise. + * common/config/avr/avr-common.c: Likewise. + * common/config/c6x/c6x-common.c: Likewise. + * common/config/cr16/cr16-common.c: Likewise. + * common/config/cris/cris-common.c: Likewise. + * common/config/epiphany/epiphany-common.c: Likewise. + * common/config/fr30/fr30-common.c: Likewise. + * common/config/frv/frv-common.c: Likewise. + * common/config/ia64/ia64-common.c: Likewise. + * common/config/iq2000/iq2000-common.c: Likewise. + * common/config/lm32/lm32-common.c: Likewise. + * common/config/m32r/m32r-common.c: Likewise. + * common/config/mcore/mcore-common.c: Likewise. + * common/config/microblaze/microblaze-common.c: Likewise. + * common/config/mips/mips-common.c: Likewise. + * common/config/mmix/mmix-common.c: Likewise. + * common/config/mn10300/mn10300-common.c: Likewise. + * common/config/nios2/nios2-common.c: Likewise. + * common/config/pa/pa-common.c: Likewise. + * common/config/pdp11/pdp11-common.c: Likewise. + * common/config/powerpcspe/powerpcspe-common.c: Likewise. + * common/config/riscv/riscv-common.c: Likewise. + * common/config/rs6000/rs6000-common.c: Likewise. + * common/config/rx/rx-common.c: Likewise. + * common/config/s390/s390-common.c: Likewise. + * common/config/sh/sh-common.c: Likewise. + * common/config/sparc/sparc-common.c: Likewise. + * common/config/tilegx/tilegx-common.c: Likewise. + * common/config/tilepro/tilepro-common.c: Likewise. + * common/config/v850/v850-common.c: Likewise. + * common/config/visium/visium-common.c: Likewise. + * common/config/xstormy16/xstormy16-common.c: Likewise. + * common/config/xtensa/xtensa-common.c: Likewise. + * invoke.texi (-fomit-frame-pointer): Update documentation. + +2017-11-16 Jan Hubicka + + * tree-cfg.c (gimple_find_sub_bbs): Do not compute freq. + +2017-11-14 Jan Hubicka + + * cfg.c (scale_bbs_frequencies_int, + cale_bbs_frequencies_gcov_type): Remove. + * cfg.h (scale_bbs_frequencies_int, + cale_bbs_frequencies_gcov_type): Remove. + +2017-11-14 Jan Hubicka + + * tree-ssa-loop-manip.c + (scale_dominated_blocks_in_loop): Update to profile counts. + (tree_transform_and_unroll_loop): Likewise. + +2017-11-14 Jan Hubicka + + * tree-vect-loop-manip.c (vect_do_peeling): Do not use + scale_bbs_frequencies_int. + +2017-11-14 Jan Hubicka + + * final.c (compute_alignments): Use counts rather than frequencies. + +2017-11-14 Jan Hubicka + + * cfgloopanal.c: Include sreal.h + (average_num_loop_insns): Use counts and sreal for accounting. + +2017-11-14 Jan Hubicka + + * cfgloopmanip.c (duplicate_loop_to_header_edge): Cleanup profile + manipulation. + +2017-11-16 Chung-Ju Wu + Kito Cheng + + * config/nds32/constraints.md: Provide more constraints. + * config/nds32/nds32.h (enum reg_class, REG_CLASS_NAMES, + REG_CLASS_CONTENTS): Define R5_REG, R8_REG, and FRAME_POINTER_REG to + support constraints usage. + +2017-11-16 Chung-Ju Wu + + * config/nds32/constants.md (UNSPEC_VOLATILE_FUNC_RETURN): Remove. + +2017-11-16 Chung-Ju Wu + Kito Cheng + + * config/nds32/nds32.opt: Add mext-perf, mext-perf2, mext-string. + * config/nds32/nds32.opt: Refine the layout. + * config/nds32/nds32.c (TARGET_EXT_PERF, TARGET_EXT_PERF2, + TARGET_EXT_STRING): Support new options. + * config/nds32/nds32.h: Likewise. + * config/nds32/nds32.md: Likewise. + * config/nds32/nds32-predicates.c: Likewise. + * config/nds32/constraints.md: Likewise. + * common/config/nds32/nds32-common.c: Likewise. + +2017-11-16 Julia Koval + + PR target/82983 + * config/i386/gfniintrin.h: Add sse check. + * config/i386/i386.c (ix86_expand_builtin): Fix gfni check. + +2017-11-16 Julia Koval + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET, + OPTION_MASK_ISA_AVX512VBMI2_UNSET): New. + (ix86_handle_option): Handle -mavx512vbmi2. + * config/i386/cpuid.h: Add bit_AVX512VBMI2. + * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit. + * config/i386/i386-c.c (__AVX512VBMI2__): New. + * config/i386/i386.c (ix86_target_string): Handle -mavx512vbmi2. + (ix86_valid_target_attribute_inner_p): Ditto. + * config/i386/i386.h (TARGET_AVX512VBMI2, TARGET_AVX512VBMI2_P): New. + * config/i386/i386.opt (mavx512vbmi2): New option. + * doc/invoke.texi: Add new option. + +2017-11-16 Julia Koval + + * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8, _mm256_gf2p8mul_epi8, + _mm_mask_gf2p8mul_epi8, _mm_maskz_gf2p8mul_epi8, + _mm256_mask_gf2p8mul_epi8, _mm256_maskz_gf2p8mul_epi8, + _mm512_mask_gf2p8mul_epi8, _mm512_maskz_gf2p8mul_epi8, + _mm512_gf2p8mul_epi8): New intrinsics. + * config/i386/i386-builtin-types.def + (V64QI_FTYPE_V64QI_V64QI): New type. + * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8mulb_v64qi, + __builtin_ia32_vgf2p8mulb_v64qi_mask, __builtin_ia32_vgf2p8mulb_v32qi, + __builtin_ia32_vgf2p8mulb_v32qi_mask, __builtin_ia32_vgf2p8mulb_v16qi, + __builtin_ia32_vgf2p8mulb_v16qi_mask): New builtins. + * config/i386/sse.md (vgf2p8mulb_*): New pattern. + * config/i386/i386.c (ix86_expand_args_builtin): Handle new type. + +2017-11-15 Uros Bizjak + + * config/i386/i386.c (x86_print_call_or_nop): Emit 5 byte nop + explicitly as a stream of bytes. + +2017-11-15 Bill Schmidt + + * config/rs6000/altivec.h (vec_xst_be): New #define. + * config/rs6000/altivec.md (altivec_vperm__direct): Rename + and externalize from *altivec_vperm__internal. + * config/rs6000/rs6000-builtin.def (XL_BE_V16QI): Remove macro + instantiation. + (XL_BE_V8HI): Likewise. + (XL_BE_V4SI): Likewise. + (XL_BE_V4SI): Likewise. + (XL_BE_V2DI): Likewise. + (XL_BE_V4SF): Likewise. + (XL_BE_V2DF): Likewise. + (XST_BE): Add BU_VSX_OVERLOAD_X macro instantiation. + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Correct + all array entries with these keys: VSX_BUILTIN_VEC_XL, + VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_VEC_XST. Add entries for key + VSX_BUILTIN_VEC_XST_BE. + * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Remove. + (altivec_expand_builtin): Remove handling for VSX_BUILTIN_XL_BE_* + built-ins. + (altivec_init_builtins): Replace conditional calls to def_builtin + for __builtin_vsx_ld_elemrev_{v8hi,v16qi} and + __builtin_vsx_st_elemrev_{v8hi,v16qi} based on TARGET_P9_VECTOR + with unconditional calls. Remove calls to def_builtin for + __builtin_vsx_le_be_. Add a call to def_builtin for + __builtin_vec_xst_be. + * config/rs6000/vsx.md (vsx_ld_elemrev_v8hi): Convert define_insn + to define_expand, and add alternate RTL generation for P8. + (*vsx_ld_elemrev_v8hi_internal): New define_insn based on + vsx_ld_elemrev_v8hi. + (vsx_ld_elemrev_v16qi): Convert define_insn to define_expand, and + add alternate RTL generation for P8. + (*vsx_ld_elemrev_v16qi_internal): New define_insn based on + vsx_ld_elemrev_v16qi. + (vsx_st_elemrev_v8hi): Convert define_insn + to define_expand, and add alternate RTL generation for P8. + (*vsx_st_elemrev_v8hi_internal): New define_insn based on + vsx_st_elemrev_v8hi. + (vsx_st_elemrev_v16qi): Convert define_insn to define_expand, and + add alternate RTL generation for P8. + (*vsx_st_elemrev_v16qi_internal): New define_insn based on + vsx_st_elemrev_v16qi. + +2017-11-15 H.J. Lu + + PR target/82990 + * config/i386/i386.c (pass_insert_vzeroupper::gate): Remove + TARGET_AVX512ER check. + (ix86_option_override_internal): Set MASK_VZEROUPPER if + neither -mzeroupper nor -mno-zeroupper is used and + TARGET_EMIT_VZEROUPPER is set. + * config/i386/i386.h (TARGET_EMIT_VZEROUPPER): New. + * config/i386/x86-tune.def: Add X86_TUNE_EMIT_VZEROUPPER. + +2017-11-15 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for + folding of vector compares. + (fold_build_vec_cmp): New helper function. + (fold_compare_helper): New helper function. + (builtin_function_type): Add compare builtins to the list of functions + having unsigned arguments. Cosmetic updates to comment indentation. + * config/rs6000/vsx.md (vcmpneb, vcmpneh, vcmpnew): Update to specify + the not+eq combination. + +2017-11-15 Bin Cheng + + PR tree-optimization/82726 + PR tree-optimization/70754 + * tree-predcom.c (order_drefs_by_pos): New function. + (combine_chains): Move code setting has_max_use_after to... + (try_combine_chains): ...here. New parameter. Sort combined chains + according to position information. + (tree_predictive_commoning_loop): Update call to above function. + (update_pos_for_combined_chains, pcom_stmt_dominates_stmt_p): New. + +2017-11-15 Bin Cheng + + PR tree-optimization/82726 + Revert + 2017-01-23 Bin Cheng + + PR tree-optimization/70754 + * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE. + (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE. Insert + combined stmt before it if not NULL. + (combine_chains): Process refs reversely and compute dominance point + for root ref. + + Revert + 2017-02-23 Bin Cheng + + PR tree-optimization/79663 + * tree-predcom.c (combine_chains): Process refs in reverse order + only for ZERO length chains, and add explaining comment. + +2017-11-15 Tamar Christina + + * config/arm/arm-cpus.in (armv8_3, ARMv8_3a, armv8.3-a): New + * config/arm/arm-tables.opt (armv8.3-a): Regenerated. + * doc/invoke.texi (ARM Options): Add armv8.3-a. + +2017-11-15 Tamar Christina + + * config/arm/arm.h (TARGET_DOTPROD): Add arm_arch8_2. + +2017-11-15 Martin Liska + + * tree-cfg.c (pass_warn_function_return::execute): + Compare warn_return_type for greater than zero. + +2017-11-15 Sebastian Peryt + + PR target/82941 + PR target/82942 + * config/i386/i386.c (pass_insert_vzeroupper): Modify gate condition + to return true on Xeon and not on Xeon Phi. + (ix86_check_avx256_register): Changed to ... + (ix86_check_avx_upper_register): ... this. Add extra check for + VALID_AVX512F_REG_OR_XI_MODE. + (ix86_avx_u128_mode_needed): Changed + ix86_check_avx256_register to ix86_check_avx_upper_register. + (ix86_check_avx256_stores): Changed to ... + (ix86_check_avx_upper_stores): ... this. Changed + ix86_check_avx256_register to ix86_check_avx_upper_register. + (ix86_avx_u128_mode_after): Changed + avx_reg256_found to avx_upper_reg_found. Changed + ix86_check_avx256_stores to ix86_check_avx_upper_stores. + (ix86_avx_u128_mode_entry): Changed + ix86_check_avx256_register to ix86_check_avx_upper_register. + (ix86_avx_u128_mode_exit): Ditto. + * config/i386/i386.h: (host_detect_local_cpu): New define. + +2017-11-15 Dominik Infuehr + + * config/arm/xgene1.md (xgene1): Split into automatons + xgene1_main, xgene1_decoder, xgene1_div, xgene1_simd. + (xgene1_f_load): Adjust reservations and/or types. + (xgene1_f_store): Likewise. + (xgene1_load_pair): Likewise. + (xgene1_store_pair): Likewise. + (xgene1_fp_load1): Likewise. + (xgene1_load1): Likewise. + (xgene1_store1): Likewise. + (xgene1_move): Likewise. + (xgene1_alu): Likewise. + (xgene1_simd): Likewise. + (xgene1_bfm): Likewise. + (xgene1_neon_load1): Likewise. + (xgene1_neon_store1): Likewise. + (xgene1_neon_logic): Likewise. + (xgene1_neon_st1): Likewise. + (xgene1_neon_ld1r): Likewise. + (xgene1_alu_cond): Added. + (xgene1_shift_reg): Likwise. + (xgene1_bfx): Likewise. + (xgene1_mul): Split into xgene1_mul32, xgene1_mul64. + +2017-11-15 Jakub Jelinek + + PR target/82981 + * internal-fn.c: Include gimple-ssa.h, tree-phinodes.h and + ssa-iterators.h. + (can_widen_mult_without_libcall): New function. + (expand_mul_overflow): If only checking unsigned mul overflow, + not result, and can do efficiently MULT_HIGHPART_EXPR, emit that. + Don't use WIDEN_MULT_EXPR if it would involve a libcall, unless + no other way works. Add MULT_HIGHPART_EXPR + MULT_EXPR support. + (expand_DIVMOD): Formatting fix. + * expmed.h (expand_mult): Add NO_LIBCALL argument. + * expmed.c (expand_mult): Likewise. Use OPTAB_WIDEN rather + than OPTAB_LIB_WIDEN if NO_LIBCALL is true, and allow it to fail. + + PR tree-optimization/82977 + * tree-ssa-strlen.c (strlen_optimize_stmt): Pass a reference to a copy + constructed temporary to strlen_to_stridx.put. + +2017-11-15 Martin Liska + + * configure.ac: Remove -fkeep-inline-functions from coverage_flags. + * configure: Regenerate. + +2017-11-15 Martin Liska + + PR target/82927 + * config/sh/sh-mem.cc: Use proper probability for + REG_BR_PROB_NOTE. + +2017-11-14 Jeff Law + + * explow.c (anti_adjust_stack_and_probe_stack_clash): Avoid probing + the red zone for stack_clash_protection_final_dynamic_probe targets + when the total dynamic stack size is zero bytes. + + * tree-ssa-threadupdate.c (thread_through_all_blocks): Thread + blocks is post order. + +2017-11-15 Alexandre Oliva + + * dumpfile.h (TDF_COMPARE_DEBUG): New. + * final.c (rest_of_clean_state): Set it for the + -fcompare-debug dump. + * tree-pretty-print.c (dump_generic_node): Omit OBJ_TYPE_REF + class when TDF_COMPARE_DEBUG is set. + + * dwarf2out.c (gen_producer_string): Discard + OPT_fcompare_debug. + +2017-11-15 Joseph Myers + + PR c/81156 + * doc/extend.texi (Other Builtins): Document __builtin_tgmath. + * ginclude/tgmath.h (__tg_cplx, __tg_ldbl, __tg_dbl, __tg_choose) + (__tg_choose_2, __tg_choose_3, __TGMATH_REAL_1_2) + (__TGMATH_REAL_2_3): Remove macros. + (__TGMATH_CPLX, __TGMATH_CPLX_2, __TGMATH_REAL, __TGMATH_REAL_2) + (__TGMATH_REAL_3, __TGMATH_CPLX_ONLY): Define using + __builtin_tgmath. + (frexp, ldexp, nexttoward, scalbn, scalbln): Define using + __TGMATH_REAL_2. + (remquo): Define using __TGMATH_REAL_3. + +2017-11-14 Jeff Law + + * vr-values.c: New file with contents extracted from tree-vrp.c. + * Makefile.in (OBJS): Add vr-values.o + * tree-vrp.h (set_value_range_to_nonnull): Prototype. + (set_value_range, set_and_canonicalize_value_range): Likewise. + (vrp_bitmap_equal_p, range_is_nonnull): Likewise. + (value_range_constant_singleton, symbolic_range_p): Likewise. + (compare_values, compare_values_warnv, vrp_val_is_min): Likewise. + (vrp_val_is_max, copy_value_range, set_value_range_to_value): Likewise. + (extract_range_from_binary_expr_1, vrp_val_min, vrp_val_max): Likewise. + (set_value_range_to_null, range_int_cst_p, opreand_less_p): Likewise. + (find_case_label_range, find_case_label_index): Likewise. + (zero_nonzero_bits_from_vr, overflow_comparison_p): Likewise. + (range_int_cst_singleton_p, value_inside_range): Likewise. + (get_single_symbol): Likewise. + (switch_update): Move structure definition here. + (to_remove_edges, to_update_switch_stmts): Provide externs. + * tree-vrp.c: Move all methods for vr-values class to vr-values.c + (vrp_val_max, vrp_val_min, vrp_val_is_max): Make externally visible. + (vrp_val_is_min, set_value_range): Likewise. + (set_and_canonicalize_value_range, copy_value_range): Likewise. + (set_value_range_to_value, set_value_range_to_nonnull): Likewise. + (set_value_range_to_null, vrp_bitmap_equal_p): Likewise. + (range_is_nonnull, range_int_cst_p): Likewwise. + (range_int_cst_singleton_p, symbolic_range_p): Likewise. + (get_single_symbol, operand_less_p): Likewise + (compare_values_warnv, compare_values): Likewise. + (value_inside_range, value_range_constant_singleton): Likewise. + (zero_nonzero_bitgs_from_vr): Likewise. + (extract_range_from_binary_expr_1): Likewise. + (overflow_comparison_p): Likewise. + (to_remove_edges, to_update_switch_stmts): Likewise. + (find_case_label-index, find_case_label_range): Likewise. + (switch_update, set_value_range_to_nonnegative): Remove. + (set_value_range_to_truthvalue): Likewise. + (symbolic_range_based_on_p, gimple_assign_nonzero_p): Likewise. + (gimple_stmt_nonzero_p, compare_ranges): Likewise. + (compare_range_with_value, vrp_valueize, vrp_valueize_1): Likewise. + (find_case_label_ranges, test_for_singularity): Likewise. + (range_fits_type_p, simplify_conversion_using_ranges): LIkewise. + (x_vr_values): Move to its remaining use site. + +2017-11-10 Jeff Law + + * vr-values.h (VR_INITIALIZER): Move #define here. + * gimple-ssa-evrp.c: New file with contents extracted from tree-vrp.c + * Makefile.in (OBJS): Add tree-evrp.o + * tree-vrp.h (assert_info): Move structure definition here. + (set_value_range_to_varying): Prototype. + (vrp_operand_equal_p, range_includes_zero_p): Likewise. + (infer_value_range, register_edge_assert_for): Likewise. + (stmt_interesting_for_vrp): Likewise. + * tree-vrp.c: Move all methods for evrp class into gimple-ssa-evrp.c. + (set_value_range_to_varying): No longer static. + (vrp_operand_equal_p, range_includes_zero_p): Likewise. + (infer_value_range, register_edge_assert_for): Likewise. + +2017-11-14 Michael Meissner + + * config/rs6000/rs6000.md (bswapdi2): On 32-bit ISA 3.0, don't + generate the XXBRD instruction. + + * config/rs6000/rs6000-c.c (is_float128_p): New helper function. + (rs6000_builtin_type_compatible): Treat _Float128 and long double + as being compatible if -mabi=ieeelongdouble. + * config/rs6000/rs6000-builtin.def (BU_FLOAT128_HW_1): New macros + to setup float128 built-ins with hardware support. + (BU_FLOAT128_HW_2): Likewise. + (BU_FLOAT128_HW_3): Likewise. + (BU_FLOAT128_HW_VSX_1): Likewise. + (BU_FLOAT128_HW_VSX_2): Likewise. + (scalar_extract_expq): Change float128 built-in functions to + accommodate having both KFmode and TFmode functions. Use the + KFmode variant as the default. + (scalar_extract_sigq): Likewise. + (scalar_test_neg_qp): Likewise. + (scalar_insert_exp_q): Likewise. + (scalar_insert_exp_qp): Likewise. + (scalar_test_data_class_qp): Likewise. + (sqrtf128_round_to_odd): Delete processing the round to odd + built-in functions as special built-in functions, and define them + as float128 built-ins. Use the KFmode variant as the default. + (truncf128_round_to_odd): Likewise. + (addf128_round_to_odd): Likewise. + (subf128_round_to_odd): Likewise. + (mulf128_round_to_odd): Likewise. + (divf128_round_to_odd): Likewise. + (fmaf128_round_to_odd): Likewise. + * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add + support for KFmode and TFmode xststdcqp calls. + (rs6000_expand_builtin): If long double is IEEE 128-bit floating + point, switch the built-in handlers for the get/set float128 + exponent, get float128 mantissa, float128 test built-ins, and the + float128 round to odd built-in functions. Eliminate creating the + float128 round to odd built-in functions as special built-ins. + (rs6000_init_builtins): Eliminate special creation of the float128 + round to odd built-in functions. + * config/rs6000/vsx.md (xsxexpqp_): Change float128 built-in + function insns to support both TFmode and KFmode variants. + (xsxsigqp_): Likewise. + (xsiexpqpf_): Likewise. + (xsiexpqp_): Likewise. + (xststdcqp_): Likewise. + (xststdcnegqp_): Likewise. + (xststdcqp_): Likewise. + +2017-11-14 Jan Hubicka + + * tree-ssa-threadupdate.c (compute_path_counts): Remove + unused path_in_freq_ptr parameter. + (ssa_fix_duplicate_block_edges): Do not pass around path_in_freq + +2017-11-14 Jan Hubicka + + * ipa-inline.c (edge_badness): Dump sreal frequency. + (compute_inlined_call_time): Match natural implementaiton ... + * ipa-fnsummary.c (estimate_edge_size_and_time): ... here; remove + forgotten division by CGRAPH_FREQ_BASE. + +2017-11-14 Rainer Orth + + * config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit since + Solaris 11. Update comment. + * configure.ac (gcc_cv_ld_pid): Adapt comment for Solaris 12 + renaming. + * config/sol2.h (STARTFILE_SPEC): Likewise. + * configure: Regenerate. + +2017-11-14 Carl Love + + * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Remove + le_ and be_ prefixes to swap* variables. Remove + if (VECTOR_ELT_ORDER_BIG) statement. Remove E_V16QImode case + statements. + +2017-11-14 Jason Merrill + + Support GTY((cache)) on hash_map. + * hash-traits.h (ggc_remove): Add ggc_maybe_mx member function. + (ggc_cache_remove): Override it instead of ggc_mx. + * hash-table.h (gt_ggc_mx): Call it instead of ggc_mx. + (gt_cleare_cache): Call ggc_mx instead of gt_ggc_mx. + * hash-map-traits.h (simple_hashmap_traits): Add maybe_mx member. + (simple_cache_map_traits): Override maybe_mx. + * hash-map.h (hash_entry): Add ggc_maybe_mx and keep_cache_entry. + (hash_map): Friend gt_cleare_cache. + (gt_cleare_cache): New. + * tree.h (tree_cache_traits): New hash_map traits class. + (tree_cache_map): New typedef. + +2017-11-14 Richard Biener + + * tree-cfgcleanup.c (cleanup_control_expr_graph): Remove first_p + paramter and handling. + (cleanup_control_flow_bb): Likewise. + (cleanup_control_flow_pre): New helper performing a DFS walk + to call cleanup_control_flow_bb in PRE order. + (cleanup_tree_cfg_1): Do the first phase of cleanup_control_flow_bb + via cleanup_control_flow_pre. + +2017-11-14 James Greenhalgh + + * config/aarch64/aarch64-simd.md + (aarch64_simd_bsl_internal): Remove DImode. + (*aarch64_simd_bsl_alt): Likewise. + (aarch64_simd_bsldi_internal): New. + (aarch64_simd_bsldi_alt): Likewise. + +2017-11-13 Jan Hubicka + + * tracer.c (better_p): Do not compare frequencies. + * reg-stack.c (better_edge): Likewise. + * shrink-wrap.c (try_shrink_wrapping): Do not convert to gcov counts + and back. + +2017-11-13 Jan Hubicka + + * auto-profile.c (afdo_annotate_cfg): Use update_max_bb_count. + * cgraphunit.c (cgraph_node::expand_thunk): Use update_max_bb_count. + * ipa-utils.c (ipa_merge_profiles): Use update_max_bb_count. + * lto-streamer-in.c (input_function): Use update_max_bb_count. + * omp-expand.c (expand_omp_taskreg): Use update_max_bb_count. + * predict.c (maybe_hot_frequency_p): Inline to ... + (maybe_hot_count_p): ... here; rewrite to counts. + (counts_to_freqs): Rename to ... + (update_max_bb_count): ... this one. + (expensive_function_p): Use counts. + (estimate_bb_frequencies): Update. + (rebuild_frequencies): Update. + * predict.h (counts_to_freqs): Rename to ... + (update_max_bb_count): ... this one. + * profile.c (compute_branch_probabilities): Add debug info + * tree-inline.c (expand_call_inline): Update debug info. + (optimize_inline_calls): Use update_max_bb_count.. + (tree_function_versioning): Use update_max_bb_count.. + * value-prof.c (gimple_value_profile_transformations): + Do not use update_max_bb_count. + +2017-11-13 Jan Hubicka + + * ipa-inline.c (compute_uninlined_call_time, compute_inlined_call_time): + always use frequencies. + +2017-11-13 Jan Hubicka + + * bb-reorder.c: Remove frequencies from comments. + (better_edge_p): Use profile counts. + (find_traces): Dump profile counts. + (rotate_loop): Use profile counts. + (find_traces_1_round): Likewise. + (connect_better_edge_p): Use counts instead of probabilities for + reverse walk. + (copy_bb_p): Drop early check for non-0 frequency. + (sanitize_hot_paths): Update comments. + +2017-11-13 Jan Hubicka + + * ipa-split.c (struct split_point): Add count. + (consider_split): Do not compute incoming frequency; compute incoming + count and store it to split_point. + (split_function): Set count of the call to split part correctly. + +2017-11-13 Carl Love + + * config/rs6000/altivec.md (altivec_vsumsws_be): Add define_expand. + +2017-11-13 Tom Tromey + + * doc/cpp.texi (Variadic Macros): Document __VA_OPT__. + +2017-11-13 Carl Love + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): + Add support for builtins: + unsigned int vec_first_{,miss}_match_{,or_eos}index, + vector {un,}signed {char,int,short}, + vector {un,}signed {char,int,short}) arguments. + * config/rs6000/rs6000-builtin.def (VFIRSTMATCHINDEX, + VFIRSTMATCHOREOSINDEX, VFIRSTMISMATCHINDEX, VFIRSTMISMATCHOREOSINDEX): + Add BU_P9V_AV_2 expansions for the builtins. + * config/rs6000/altivec.h (vec_first_match_index, + vec_first_mismatch_index, vec_first_match_or_eos_index, + vec_first_mismatch_or_eos_index): Add #defines for the builtins. + * config/rs6000/rs6000-protos.h (bytes_in_mode): Add + new extern declaration. + * config/rs6000/rs6000.c (bytes_in_mode): Add new function. + * config/rs6000/vsx.md (first_match_index_, + first_match_or_eos_index_, first_mismatch_index_, + first_mismatch_or_eos_index_): Add define expand. + (vctzlsbb_): Add mode field to define_insn for vctzlsbb. + * doc/extend.texi: Update the built-in documenation file for the new + built-in functions. + +2017-11-13 Michael Meissner + + * match.pd: Convert fminf, fminfx, fmax, and fmaxx + into the min/max operations for _Float and _FloatX types. + +2017-11-13 Eric Botcazou + + PR lto/81351 + * dwarf2out.c (do_eh_frame): New static variable. + (dwarf2out_begin_prologue): Set it. + (dwarf2out_frame_finish): Test it instead of dwarf2out_do_eh_frame. + +2017-11-13 Jan Hubicka + + * tree-ssa-coalesce.c (coalesce_cost): Fix formating. + + * tree-ssa-sink.c (select_best_block): Do not use frequencies. + +2017-11-13 Eric Botcazou + + PR lto/81351 + * debug.h (dwarf2out_do_eh_frame): Declare. + * dwarf2cfi.c (dwarf2out_do_eh_frame): New predicate. + (dwarf2out_do_frame): Use it. + (dwarf2out_do_cfi_asm): Likewise. + * dwarf2out.c (dwarf2out_frame_finish): Likewise. + (dwarf2out_assembly_start): Likewise. + (dwarf2out_begin_prologue): Fix comment. + * toplev.c (compile_file): Always call dwarf2out_frame_finish + if the target needs either debug or unwind DWARF2 info. + * lto-opts.c (lto_write_options): Do not save -fexceptions, + -fnon-call-exceptions, -ffp-contract, -fmath-errno, -fsigned-zeros, + -ftrapping-math, -ftrapv and -fwrapv. + +2017-11-13 Jan Hubicka + + * cgraph.c (cgraph_edge::sreal_frequency): New function. + * cgraph.h (cgraph_edge::sreal_frequency): Declare. + * ipa-fnsummary.c (dump_ipa_call_summary): Use sreal_frequency. + (estimate_edge_size_and_time): Likewise. + (ipa_merge_fn_summary_after_inlining): Likewise. + * ipa-inline.c (cgraph_freq_base_rec): Remove. + (compute_uninlined_call_time): Use sreal_frequency. + (compute_inlined_call_time): Likewise. + (ipa_inline): Do not initialize cgraph_freq_base_rec. + * profile-count.c: Include sreal.h. + (profile_count::to_sreal_scale): New. + * profile-count.h: Forward declare sreal. + (profile_count::to_sreal_scale): Declare. + +2017-11-13 Nathan Sidwell + + * diagnostic.c (maybe_line_and_column): New. + (diagnostic_get_location_text): Use it. + (diagnostic_report_current_module): Likewise. + (test_diagnostic_get_location_text): Add tests. + +2017-11-13 Luis Machado + + * doc/md.texi (Specifying processor pipeline description): Fix + incorrect latency for the div instruction example. + +2017-11-13 Jakub Jelinek + + PR tree-optimization/78821 + * gimple-ssa-store-merging.c (compatible_load_p): Don't require + that bit_not_p is the same. + (imm_store_chain_info::coalesce_immediate_stores): Likewise. + (split_group): Count precisely bit_not_p bits in each statement. + (invert_op): New function. + (imm_store_chain_info::output_merged_store): Use invert_op to + emit BIT_XOR_EXPR with a xor_mask instead of BIT_NOT_EXPR if some + but not all orig_stores have BIT_NOT_EXPR in the corresponding spots. + +2017-11-13 Martin Liska + + * gcov.c (struct coverage_info): Remove typedef of coverage_t. + (struct source_info): Likewise. + (add_branch_counts): Likewise. + (add_line_counts): Likewise. + (function_summary): Likewise. + (output_intermediate_line): Likewise. + (generate_results): Likewise. + +2017-11-13 Martin Liska + + * gcov.c (struct block_info): Remove typedef for block_t. + (struct line_info): Likewise. + (line_info::has_block): Likewise. + (EXIT_BLOCK): Likewise. + (unblock): Likewise. + (circuit): Likewise. + (get_cycles_count): Likewise. + (process_file): Likewise. + (read_graph_file): Likewise. + (solve_flow_graph): Likewise. + (find_exception_blocks): Likewise. + (add_line_counts): Likewise. + (accumulate_line_info): Likewise. + (output_line_details): Likewise. + +2017-11-13 Martin Liska + + * gcov.c (struct arc_info): Remove typedef for arc_t. + (struct line_info): Likewise. + (add_branch_counts): Likewise. + (output_branch_count): Likewise. + (function_info::~function_info): Likewise. + (circuit): Likewise. + (output_intermediate_line): Likewise. + (read_graph_file): Likewise. + (solve_flow_graph): Likewise. + (find_exception_blocks): Likewise. + (add_line_counts): Likewise. + (accumulate_line_info): Likewise. + (output_line_details): Likewise. + (output_function_details): Likewise. + +2017-11-13 Martin Liska + + * gcov.c (struct function_info): Remove typedef for function_t. + (struct source_info): Likewise. + (source_info::get_functions_at_location): Likewise. + (solve_flow_graph): Likewise. + (find_exception_blocks): Likewise. + (add_line_counts): Likewise. + (output_intermediate_file): Likewise. + (process_file): Likewise. + (generate_results): Likewise. + (release_structures): Likewise. + (read_graph_file): Likewise. + (read_count_file): Likewise. + (accumulate_line_counts): Likewise. + (output_lines): Likewise. + +2017-11-13 Martin Liska + + * gcov.c (function_info::function_info): Remove num_counts + and add vector. + (function_info::~function_info): Use the vector. + (process_file): Likewise. + (read_graph_file): Likewise. + (read_count_file): Likewise. + (solve_flow_graph): Likewise. + +2017-11-13 Martin Liska + + * gcov.c (function_info::is_artificial): New function. + (process_file): Erase all artificial early. + (generate_results): Skip as all artificial are already + removed. + +2017-11-13 Martin Liska + + * gcov.c (read_graph_file): Store to global vector of functions. + (read_count_file): Iterate the vector. + (process_file): Likewise. + (generate_results): Likewise. + (release_structures): Likewise. + +2017-11-13 Jakub Jelinek + + PR tree-optimization/82954 + * gimple-ssa-store-merging.c + (imm_store_chain_info::coalesce_immediate_stores): If + !infof->ops[N].base_addr, split group if info->ops[N].base_addr. + +2017-11-13 Richard Sandiford + + * config/aarch64/aarch64-simd.md (aarch64_store_lane0): + Upddate call to ENDIAN_LANE_N. + (aarch64_dot_lane): Use aarch64_endian_lane_rtx. + (aarch64_dot_laneq): Likewise. + (*aarch64_simd_vec_copy_lane): Update calls to ENDIAN_LANE_N + and use aarch64_endian_lane_rtx. + (*aarch64_simd_vec_copy_lane_): Likewise. + +2017-11-12 Tom de Vries + + * config/riscv/riscv.h (ASM_OUTPUT_LABELREF): Wrap in do {} while (0). + +2017-11-12 Tom de Vries + + * config/elfos.h (ASM_OUTPUT_ASCII): Remove semicolon after macro body. + +2017-11-12 Tom de Vries + + * config/cr16/cr16.h (ASM_OUTPUT_LABELREF): Remove semicolon after macro + body. + * config/powerpcspe/xcoff.h (ASM_OUTPUT_LABELREF): Same. + * config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Same. + * defaults.h (ASM_OUTPUT_LABELREF): Same. + +2017-11-11 Martin Sebor + + PR c/81117 + * doc/extend.texi (attribute nonstring): Remove spurious argument. + + PR bootstrap/82948 + * prefic.c (translate_name): Replace strncpy with memcpy to + avoid -Wstringop-truncation. + +2017-11-10 Jan Hubicka + + * tree-ssa-loop-im.c (execute_sm_if_changed): Do not compute freq_sum. + +2017-11-10 Jan Hubicka + + * predict.c (maybe_hot_frequency_p): Do not use cfun. + +2017-11-10 Jan Hubicka + + * tree-ssa-tail-merge.c (replace_block_by): Fix and re-enable profile + merging. + +2017-11-10 Michael Meissner + + * config/rs6000/rs6000.md (bswaphi2_reg): On ISA 3.0 systems, + enable generating XXBRH if the value is in a vector register. + (bswapsi2_reg): On ISA 3.0 systems, enable generating XXBRW if the + value is in a vector register. + (bswapdi2_reg): On ISA 3.0 systems, always use XXBRD to do + register to register bswap64's instead of doing the GPR sequence + used on previous machines. + (bswapdi2_xxbrd): New insn. + (bswapdi2_reg): Disallow on ISA 3.0. + (register to register bswap64 splitter): Do not split the insn on + ISA 3.0 systems that use XXBRD. + +2017-11-10 Martin Sebor + + PR c/81117 + * config/darwin-c.c (framework_construct_pathname): Replace strncpy + with memcpy. + (find_subframework_file): Same. + +2017-11-10 Jan Hubicka + + * auto-profile.c (afdo_indirect_call): Drop frequency. + * cgraph.c (symbol_table::create_edge): Drop frequency argument. + (cgraph_node::create_edge): Drop frequency argument. + (cgraph_node::create_indirect_edge): Drop frequency argument. + (cgraph_edge::make_speculative): Drop frequency arguments. + (cgraph_edge::resolve_speculation): Do not update frequencies + (cgraph_edge::dump_edge_flags): Do not dump frequency. + (cgraph_node::dump): Check consistency in IPA mode. + (cgraph_edge::maybe_hot_p): Use IPA counter. + (cgraph_edge::verify_count_and_frequency): Rename to ... + (cgraph_edge::verify_count): ... this one; drop frequency checking. + (cgraph_node::verify_node): Update. + * cgraph.h (struct cgraph_edge): Drop frequency. + (cgraph_edge::frequency): New function. + * cgraphbuild.c (pass_build_cgraph_edges::execute): Donot pass + frequencies. + (cgraph_edge::rebuild_edges): Likewise. + * cgraphclones.c (cgraph_edge::clone): Scale only counts. + (duplicate_thunk_for_node): Do not pass frequency. + (cgraph_node::create_clone): Scale only counts. + (cgraph_node::create_virtual_clone): Do not pass frequency. + (cgraph_node::create_edge_including_clones): Do not pass frequency. + (cgraph_node::create_version_clone): Do not pass frequency. + * cgraphunit.c (cgraph_node::analyze): Do not pass frequency. + (cgraph_node::expand_thunk): Do not pass frequency. + (cgraph_node::create_wrapper): Do not pass frequency. + * gimple-iterator.c (update_call_edge_frequencies): Do not pass + frequency. + * gimple-streamer-in.c (input_bb): Scale only IPA counts. + * ipa-chkp.c (chkp_produce_thunks): Do not pass frequency. + * ipa-cp.c (ipcp_lattice::print): Use frequency function. + (gather_caller_stats): Use frequency function. + (ipcp_cloning_candidate_p): Use frequency function. + (ipcp_propagate_stage): Use frequency function. + (get_info_about_necessary_edges): Use frequency function. + (update_profiling_info): Update only IPA profile. + (update_specialized_profile): Use frequency functoin. + (perhaps_add_new_callers): Update only IPA profile. + * ipa-devirt.c (ipa_devirt): Use IPA profile. + * ipa-fnsummary.c (redirect_to_unreachable): Do not set frequrency. + (dump_ipa_call_summary): Use frequency function. + (estimate_edge_size_and_time): Use frequency function. + (ipa_merge_fn_summary_after_inlining): Use frequency function. + * ipa-inline-analysis.c (do_estimate_edge_time): Use IPA profile. + * ipa-inline-transform.c (update_noncloned_frequencies): Rename to .. + (update_noncloned_counts): ... ths one; scale counts only. + (clone_inlined_nodes): Do not scale frequency. + (inline_call): Do not pass frequency. + * ipa-inline.c (compute_uninlined_call_time): Use IPA profile. + (compute_inlined_call_time): Use IPA profile. + (want_inline_small_function_p): Use IPA profile. + (want_inline_self_recursive_call_p): Use IPA profile. + (edge_badness): Use IPA profile. + (lookup_recursive_calls): Use IPA profile. + (recursive_inlining): Do not pass frequency. + (resolve_noninline_speculation): Do not update frequency. + (inline_small_functions): Collect max of IPA profile. + (dump_overall_stats): Dump IPA porfile. + (dump_inline_stats): Dump IPA porfile. + (ipa_inline): Collect IPA stats. + * ipa-inline.h (clone_inlined_nodes): Update prototype. + * ipa-profile.c (ipa_propagate_frequency_1): Use frequency function. + (ipa_propagate_frequency): Use frequency function. + (ipa_profile): Cleanup. + * ipa-prop.c (ipa_make_edge_direct_to_target): Do not pass frequency + * ipa-utils.c (ipa_merge_profiles): Merge all profiles. + * lto-cgraph.c (lto_output_edge): Do not stream frequency. + (input_node): Do not stream frequency. + (input_edge): Do not stream frequency. + (merge_profile_summaries): Scale only IPA profiles. + * omp-simd-clone.c (simd_clone_adjust): Do not pass frequency. + * predict.c (drop_profile): Do not recompute frequency. + * trans-mem.c (ipa_tm_insert_irr_call): Do not pass frequency. + (ipa_tm_insert_gettmclone_call): Do not pass frequency. + * tree-cfg.c (execute_fixup_cfg): Drop profile to global0 if needed. + * tree-chkp.c (chkp_copy_bounds_for_assign): Do not pass frequency. + * tree-emutls.c (gen_emutls_addr): Do not pass frequency. + * tree-inline.c (copy_bb): Do not scale frequency. + (expand_call_inline): Do not scale frequency. + (tree_function_versioning): Do not scale frequency. + * ubsan.c (ubsan_create_edge): Do not pass frequency. + +2017-11-10 Julia Koval + + * config/i386/gfniintrin.h (_mm_gf2p8affine_epi64_epi8) + (_mm256_gf2p8affine_epi64_epi8, _mm_mask_gf2p8affine_epi64_epi8) + (_mm_maskz_gf2p8affine_epi64_epi8, _mm256_mask_gf2p8affine_epi64_epi8) + (_mm256_maskz_gf2p8affine_epi64_epi8) + (_mm512_mask_gf2p8affine_epi64_epi8, _mm512_gf2p8affine_epi64_epi8) + (_mm512_maskz_gf2p8affine_epi64_epi8): New intrinsics. + * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineqb_v64qi) + (__builtin_ia32_vgf2p8affineqb_v32qi) + (__builtin_ia32_vgf2p8affineqb_v16qi): New builtins. + * config/i386/sse.md (vgf2p8affineqb_): New pattern. + +2017-11-10 Tamar Christina + + PR target/82641 + * config/arm/arm.c + (arm_option_override): Refactor. + (arm_option_reconfigure_globals): New. + (arm_options_perform_arch_sanity_checks): New. + * config/arm/arm-protos.h (arm_option_reconfigure_globals): + New prototype. + (arm_options_perform_arch_sanity_checks): Likewise + +2017-11-10 Pat Haugen + + * rs6000/power9.md (power9-qpdiv): Correct DFU pipe usage. + (power9-qpmul): New. + * rs6000/rs6000.md ("type" attr): Add qmul. + (mul3, fma4_hw, *fms4_hw, *nfma4_hw, + *nfms4_hw, mul3_odd, fma4_odd, *fms4_odd, + *nfma4_odd, *nfms4_odd): Change type to qmul. + +2017-11-10 Martin Sebor + + PR c/81117 + * builtins.c (compute_objsize): Handle arrays that + compute_builtin_object_size likes to fail for. Make extern. + * builtins.h (compute_objsize): Declare. + (check_strncpy_sizes): New function. + (expand_builtin_strncpy): Call check_strncpy_sizes. + * gimple-fold.c (gimple_fold_builtin_strncpy): Implement + -Wstringop-truncation. + (gimple_fold_builtin_strncat): Same. + * gimple.c (gimple_build_call_from_tree): Set call location. + * tree-ssa-strlen.c (strlen_to_stridx): New global variable. + (maybe_diag_bound_equal_length, is_strlen_related_p): New functions. + (handle_builtin_stxncpy, handle_builtin_strncat): Same. + (handle_builtin_strlen): Use strlen_to_stridx. + (strlen_optimize_stmt): Handle flavors of strncat, strncpy, and + stpncpy. + Use strlen_to_stridx. + (pass_strlen::execute): Release strlen_to_stridx. + * doc/invoke.texi (-Wsizeof-pointer-memaccess): Document enhancement. + (-Wstringop-truncation): Document new option. + +2017-11-10 Martin Liska + + PR gcov-profile/82702 + * gcov.c (main): Handle intermediate files in a different + way. + (get_gcov_intermediate_filename): New function. + (output_gcov_file): Remove support of intermediate files. + (generate_results): Allocate intermediate file. + (release_structures): Clean-up properly fn_end. + (output_intermediate_file): Start iterating with line 1. + +2017-11-10 Jakub Jelinek + + PR tree-optimization/82929 + * gimple-ssa-store-merging.c (struct store_immediate_info): Add + ops_swapped_p non-static data member. + (store_immediate_info::store_immediate_info): Clear it. + (imm_store_chain_info::coalesce_immediate_stores): If swapping + ops set ops_swapped_p. + (count_multiple_uses): Handle ops_swapped_p. + +2017-11-10 Martin Liska + + * coverage.c (coverage_init): Stream information about + support of has_unexecuted_blocks. + * doc/gcov.texi: Document that. + * gcov-dump.c (dump_gcov_file): Support it in gcov_dump tool. + * gcov.c (read_graph_file): Likewise. + (output_line_beginning): Fix a small issue with + color output. + +2017-11-10 Bin Cheng + + * tree-predcom.c (determine_roots_comp): Avoid memory leak by freeing + reference of trivial component. + +2017-11-10 Jakub Jelinek + + PR bootstrap/82916 + * gimple-ssa-store-merging.c + (pass_store_merging::terminate_all_aliasing_chains): For + gimple_store_p stmts also call refs_output_dependent_p. + + PR rtl-optimization/82913 + * compare-elim.c (try_merge_compare): Punt if def_insn is not + single set. + +2017-11-09 Jeff Law + + * vr-values.h: New file with vr_values class. + * tree-vrp.c: Include vr-values.h + (vrp_value_range_pool, vrp_equiv_obstack, num_vr_values): Move static + data objects into the vr_values class. + (vr_value, values_propagated, vr_phi_edge_counts): Likewise. + (get_value_range): Make it a member function within vr_values class. + (set_defs_to_varying, update_value_range, add_equivalence): Likewise. + (vrp_stmt_computes_nonzero_p, op_with_boolean_value_range_p): Likewise. + (op_with_constant_singleton_value_range): Likewise. + (extract_range_for_var_from_comparison_expr): Likewise. + (extract_range_from_assert, extract_range_from_ssa_name): Likewise. + (extract_range_from_binary_expr): Likewise. + (extract_range_from_unary_expr): Likewise. + (extract_range_from_cond_expr, extrat_range_from_comparison): Likewise. + (check_for_binary_op_overflow, extract_range_basic): Likewise. + (extract_range_from_assignment, adjust_range_with_scev): Likewise. + (dump_all_value_ranges, get_vr_for_comparison): Likewise. + (compare_name_with_value, compare_names): Likewise. + (vrp_evaluate_conditional_warnv_with_ops_using_ranges): Likewise. + (vrp_evaluate_conditional_warnv_with_ops): Likewise. Remove prototype. + (vrp_evaluate_conditional, vrp_visit_cond_stmt): Likewise. + (vrp_visit_switch_stmt, extract_range_from_stmt): Likewise. + (extract_range_from_phi_node): Likewise. + (simplify_truth_ops_using_ranges): Likewise. + (simplify_div_or_mod_using_ranges): Likewise. + (simplify_min_or_max_using_ranges, simplify_abs_using_ranges): Likewise. + (simplify_bit_ops_using_ranges, simplify_cond_using_ranges_1): Likewise. + (simplify_cond_using_ranges_2, simplify_switch_using_ranges): Likewise. + (simplify_float_conversion_using_ranges): Likewise. + (simplify_internal_call_using_ranges): Likewise. + (two_valued_val_range_p, simplify_stmt_using_ranges): Likewise. + (vrp_visit_assignment_or_call): Likewise. Smuggle class instance + poitner via x_vr_values for calls into gimple folder. + (vrp_initialize_lattice): Make this the vr_values ctor. + (vrp_free_lattice): Make this the vr_values dtor. + (set_vr_value): New function. + (class vrp_prop): Add vr_values data member. Add various member + functions as well as member functions that delegate to vr_values. + (check_array_ref): Make a member function within vrp_prop class. + (search_for_addr_array, vrp_initialize): Likewise. + (vrp_finalize): Likewise. Revamp to avoid direct access to + vr_value, values_propagated, etc. + (check_array_bounds): Extract vrp_prop class instance pointer from + walk info structure. Use it to call member functions. + (check_all_array_refs): Make a member function within vrp_prop class. + Smuggle class instance pointer via walk info structure. + (x_vr_values): New local static. + (vrp_valueize): Use x_vr_values to get class instance. + (vr_valueize_1): Likewise. + (class vrp_folder): Add vr_values data member. Add various member + functions as well as member functions that delegate to vr_values. + (fold_predicate_in): Make a mber fucntion within vrp_folder class. + (simplify_stmt_for_jump_threading): Extract smuggled vr_values + class instance from vr_values. Use it to call member functions. + (vrp_dom_walker): Add vr_values data member. + (vrp_dom_walker::after_dom_children): Smuggle vr_values class + instance via x_vr_values. + (identify_jump_threads): Accept vr_values as argument. Store + it into the walker structure. + (evrp_dom_walker): Add vr_values class data member. Add various + delegators. + (evrp_dom_walker::try_find_new_range): Use vr_values data + member to access the memory allocator. + (evrp_dom_walker::before_dom_children): Store vr_values class + instance into the vrp_folder class. + (evrp_dom_walker::push_value_range): Rework to avoid direct + access to num_vr_values and vr_value. + (evrp_dom_walker::pop_value_range): Likewise. + (execute_early_vrp): Remove call to vrp_initialize_lattice. + Use vr_values to get to dump_all_value_ranges member function. + Remove call to vrp_free_lattice. Call vrp_initialize, vrp_finalize, + and simplify_cond_using_ranges_2 via vrp_prop class instance. + Pass vr_values class instance down to identify_jump_threads. + Remove call to vrp_free_lattice. + (debug_all_value_ranges): Remove. + + * tree-vrp.c (vrp_prop): Move class to earlier point in the file. + (vrp_folder): Likewise. + + * tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack. + Get it from the existing bitmap instead. + (vrp_intersect_ranges_1): Likewise. + +2017-11-09 Jakub Jelinek + + * gimple-ssa-store-merging.c (struct store_immediate_info): Add + bit_not_p field. + (store_immediate_info::store_immediate_info): Add bitnotp argument, + set bit_not_p to it. + (imm_store_chain_info::coalesce_immediate_stores): Break group + if bit_not_p is different. + (count_multiple_uses, split_group, + imm_store_chain_info::output_merged_store): Handle info->bit_not_p. + (handled_load): Avoid multiple chained BIT_NOT_EXPRs. + (pass_store_merging::process_store): Handle BIT_{AND,IOR,XOR}_EXPR + result inverted using BIT_NOT_EXPR, compute bit_not_p, pass it + to store_immediate_info ctor. + +2017-11-09 Jim Wilson + + * collect2.c (OBJECT_FORMAT_COFF): Remove EXTENDED_COFF support. + (scan_prog_file): Likewise. + +2017-11-09 Jan Hubicka + + * bb-reorder.c (max_entry_frequency): Remove. + (find_traces, rotate_loop, mark_bb_visited, connect_better_edge_p, + connect_traces, push_to_next_round_p): Remove prototypes. + (find_traces_1_round): Use counts only. + (push_to_next_round_p): Likewise. + (find_traces): Likewise. + (rotate_loop): Likewise. + (find_traces_1_round): Likewise. + (connect_traces): Likewise. + (edge_order): Likewise. + +2017-11-09 Thomas Preud'homme + + * config/arm/arm.c (output_return_instruction): Add comments to + indicate requirement for cmse_nonsecure_entry return to account + for the size of clearing instruction output here. + (thumb_exit): Likewise. + * config/arm/thumb2.md (thumb2_cmse_entry_return): Fix length for + return in hardfloat mode. + +2017-11-09 Segher Boessenkool + + * config/rs6000/rs6000.c (machine_function): Add a bool, + "toc_is_wrapped_separately". + (rs6000_option_override_internal): Enable OPTION_MASK_SAVE_TOC_INDIRECT + if it wasn't explicitly set or unset, we are optimizing for speed, and + doing separate shrink-wrapping. + (rs6000_get_separate_components): Enable the TOC component if + saving the TOC register in the prologue. + (rs6000_components_for_bb): Handle the TOC component. + (rs6000_emit_prologue_components): Store the TOC register where needed. + (rs6000_set_handled_components): Mark TOC as handled, if handled. + (rs6000_emit_prologue): Don't save the TOC if that is already done. + +2017-11-09 Martin Jambor + + * ipa-param-manipulation.c: New file. + * ipa-param-manipulation.h: Likewise. + * Makefile.in (OBJS): Add ipa-param-manipulation.o. + (PLUGIN_HEADERS): Addded ipa-param-manipulation.h + * ipa-param.h (ipa_parm_op): Moved to ipa-param-manipulation.h. + (ipa_parm_adjustment): Likewise. + (ipa_parm_adjustment_vec): Likewise. + (ipa_get_vector_of_formal_parms): Moved declaration to + ipa-param-manipulation.h. + (ipa_get_vector_of_formal_parm_types): Likewise. + (ipa_modify_formal_parameters): Likewise. + (ipa_modify_call_arguments): Likewise. + (ipa_combine_adjustments): Likewise. + (ipa_dump_param_adjustments): Likewise. + (ipa_modify_expr): Likewise. + (ipa_get_adjustment_candidate): Likewise. + * ipa-prop.c (ipa_get_vector_of_formal_parms): Moved to + ipa-param-manipulation.c. + (ipa_get_vector_of_formal_parm_types): Likewise. + (ipa_modify_formal_parameters): Likewise. + (ipa_modify_call_arguments): Likewise. + (ipa_modify_expr): Likewise. + (get_ssa_base_param): Likewise. + (ipa_get_adjustment_candidate): Likewise. + (index_in_adjustments_multiple_times_p): Likewise. + (ipa_combine_adjustments): Likewise. + (ipa_dump_param_adjustments): Likewise. + * tree-sra.c: Also include ipa-param-manipulation.h + * omp-simd-clone.c: Include ipa-param-manipulation.h instead of + ipa-param.h. + +2017-11-09 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/sourcebuild.texi (vect_masked_store): Document. + +2017-11-09 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/sourcebuild.texi (vect_align_stack_vars): Document. + +2017-11-09 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/sourcebuild.texi (vect_variable_length): Document. + +2017-11-09 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/sourcebuild.texi (vect_unaligned_possible): Document. + +2017-11-09 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/sourcebuild.texi (vect_element_align_preferred): Document. + +2017-11-09 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/sourcebuild.texi (vect_perm_short, vect_perm_byte): Document + previously undocumented selectors. + (vect_perm3_byte, vect_perm3_short, vect_perm3_int): Document. + +2017-11-09 Richard Sandiford + + * doc/rtl.texi (const_vector): Say that elements can be + const_wide_ints too. + * emit-rtl.h (valid_for_const_vec_duplicate_p): Declare. + * emit-rtl.c (valid_for_const_vec_duplicate_p): New function. + (gen_vec_duplicate): Use it instead of CONSTANT_P. + * optabs.c (expand_vector_broadcast): Likewise. + +2017-11-09 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-ssa-loop-ivopts.c (get_address_cost): Try using a + scaled index even if the unscaled address was invalid. + Don't increase the complexity of using a scale in that case. + +2017-11-09 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/rtl.texi: Rewrite the subreg rules so that they partition + the inner register into REGMODE_NATURAL_SIZE bytes rather than + UNITS_PER_WORD bytes. + * emit-rtl.c (validate_subreg): Divide subregs into blocks + based on REGMODE_NATURAL_SIZE of the inner mode. + (gen_lowpart_common): Split the SCALAR_FLOAT_MODE_P and + !SCALAR_FLOAT_MODE_P cases. Use REGMODE_NATURAL_SIZE for the latter. + * expmed.c (lowpart_bit_field_p): Divide the value up into + chunks of REGMODE_NATURAL_SIZE rather than UNITS_PER_WORD. + * expr.c (store_constructor): Use REGMODE_NATURAL_SIZE to test + whether something is likely to occupy more than one register. + +2017-11-09 Jan Hubicka + + PR ipa/82879 + * ipa-inline-transform.c (update_noncloned_frequencies): Use + profile_count::adjust_for_ipa_scaling. + * tree-inline.c (copy_bb, copy_cfg_body): Likewise. + * profile-count.c (profile_count::adjust_for_ipa_scaling): New member + function. + * profile-count.h (profile_count::adjust_for_ipa_scaling): Declare. + +2017-11-09 Jakub Jelinek + + * gimple-ssa-store-merging.c (count_multiple_uses): New function. + (split_group): Add total_orig and total_new arguments, estimate the + number of statements related to the store group without store merging + and with store merging. + (imm_store_chain_info::output_merged_store): Adjust split_group + callers, punt if estimated number of statements with store merging + is not smaller than estimated number of statements without it. + Formatting fix. + (handled_load): Remove has_single_use checks. + (pass_store_merging::process_store): Likewise. + +2017-11-09 Richard Biener + + PR tree-optimization/82902 + * tree-ssa-phiprop.c (propagate_with_phi): Test proper type. + +2017-11-09 Martin Liska + + PR target/82863 + * emit-rtl.c (init_emit_regs): Initialize split_branch_probability to + uninitialized. + +2017-11-09 Martin Liska + + PR tree-optimization/82669 + * sbitmap.h (bmp_iter_set_init): Remove non needed check. + +2017-11-09 Martin Liska + + PR gcov-profile/48463 + * coverage.c (coverage_begin_function): Output also end locus + of a function and information whether the function is + artificial. + * gcov-dump.c (tag_function): Parse and print the information. + * gcov.c (INCLUDE_MAP): Add include. + (INCLUDE_SET): Likewise. + (struct line_info): Move earlier in the source file because + of vector in function_info structure. + (line_info::line_info): Likewise. + (line_info::has_block): Likewise. + (struct source_info): Add new member index. + (source_info::get_functions_at_location): New function. + (function_info::group_line_p): New function. + (output_intermediate_line): New function. + (output_intermediate_file): Use the mentioned function. + (struct function_start): New. + (struct function_start_pair_hash): Likewise. + (process_file): Add code that identifies group functions. + Assign lines either to global or function scope. + (generate_results): Skip artificial functions. + (find_source): Assign index for each source file. + (read_graph_file): Read new flag artificial and end_line. + (add_line_counts): Assign it either to global of function scope. + (accumulate_line_counts): Isolate core of the function to + accumulate_line_info and call it for both function and global + scope lines. + (accumulate_line_info): New function. + (output_line_beginning): Fix GNU coding style. + (print_source_line): New function. + (output_line_details): Likewise. + (output_function_details): Likewise. + (output_lines): Iterate both source (global) scope and function + scope. + (struct function_line_start_cmp): New class. + * doc/gcov.texi: Reflect changes in documentation. + +2017-11-09 Jakub Jelinek + + PR debug/82837 + * dwarf2out.c (const_ok_for_output_1): Reject NEG in addition to NOT. + (mem_loc_descriptor): Handle (const (neg (...))) as (neg (const (...))) + and similarly for not instead of neg. + +2017-11-08 Andi Kleen + + * config/i386/i386.opt: Add -mforce-indirect-call. + * config/i386/predicates.md: Check for flag_force_indirect_call. + * doc/invoke.texi: Document -mforce-indirect-call + +2017-11-08 Kito Cheng + + * config/riscv/riscv-protos.h (riscv_slow_unaligned_access_p): + New extern. + (MOVE_RATIO): Use riscv_slow_unaligned_access_p. + config/riscv/riscv.c (predict.h): New include. + (riscv_slow_unaligned_access_p): No longer static. + (riscv_block_move_straight): Add require. + * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete. + +2017-11-08 Jakub Jelinek + + PR target/82855 + * config/i386/sse.md (_eq3, + _eq3_1): Use + nonimmediate_operand predicate for operand 1 instead of + register_operand. + +2017-11-08 Kyrylo Tkachov + + * config/aarch64/aarch64-simd.md (store_pair_lanes): + New pattern. + * config/aarch64/constraints.md (Uml): New constraint. + * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): New + predicate. + +2017-11-08 Kyrylo Tkachov + + * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge + of two vec_duplicates into a vec_concat. + +2017-11-08 Kyrylo Tkachov + + * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE): + Simplify vec_merge of vec_duplicate and vec_concat. + * config/aarch64/constraints.md (Utq): New constraint. + * config/aarch64/aarch64-simd.md (load_pair_lanes): New + define_insn. + +2017-11-08 Kyrylo Tkachov + + * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE): + Simplify vec_merge of vec_duplicate and const_vector. + * config/aarch64/predicates.md (aarch64_simd_or_scalar_imm_zero): + New predicate. + * config/aarch64/aarch64-simd.md (*aarch64_combinez): Use VDC + mode iterator. Update predicate on operand 1 to + handle non-const_vec constants. Delete constraints. + (*aarch64_combinez_be): Likewise for operand 2. + +2017-11-08 Jakub Jelinek + + PR tree-optimization/78821 + * gimple-ssa-store-merging.c (struct store_operand_info): Add bit_not_p + data member. + (store_operand_info::store_operand_info): Initialize it to false. + (pass_store_merging::terminate_all_aliasing_chains): Rewritten to use + ref_maybe_used_by_stmt_p and stmt_may_clobber_ref_p on lhs of each + store in the group, and if chain_info is non-NULL, to ignore altogether + that chain. + (compatible_load_p): Fail if bit_not_p does not match. + (imm_store_chain_info::output_merged_store): Handle bit_not_p loads. + (handled_load): Fill in bit_not_p. Handle BIT_NOT_EXPR. + (pass_store_merging::process_store): Adjust + terminate_all_aliasing_chains calls to pass NULL in all current spots, + call terminate_all_aliasing_chains newly when adding a store into + a chain with non-NULL chain_info. + +2017-11-08 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic. + +2017-11-08 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_frame_pointer_required) + Remove. + (aarch64_layout_frame): Initialise emit_frame_chain. + (aarch64_can_eliminate): Remove omit leaf frame pointer code. + (TARGET_FRAME_POINTER_REQUIRED): Remove define. + +2017-11-08 Martin Liska + + * gimplify.c (expand_FALLTHROUGH_r): Simplify usage + of gimple_call_internal_p. + +2017-11-07 Tom de Vries + + * config/mips/mips.h (ASM_OUTPUT_LABELREF): Wrap in "do {} while (0)". + +2017-11-07 Tom de Vries + + * config/mips/mips.h (ASM_OUTPUT_CASE_END): Remove semicolon after + "do {} while (0)". + +2017-11-08 Martin Liska + + PR sanitizer/82792 + * gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK. + +2017-11-07 Eric Botcazou + + * gimple-pretty-print.c (dump_profile): Return "" instead of NULL. + +2017-11-07 Jakub Jelinek + + PR target/82855 + * config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator. + (*cmp_ccz_1): New insn with $k alternative. + + PR target/82855 + * config/i386/i386.c (ix86_swap_binary_operands_p): Treat + RTX_COMM_COMPARE as commutative as well. + (ix86_binary_operator_ok): Formatting fix. + * config/i386/sse.md (*mul3, + *3, + *3, *tf3, *mul3, + *mul3_highpart, + *vec_widen_umult_even_v16si, + *vec_widen_umult_even_v8si, + *vec_widen_umult_even_v4si, + *vec_widen_smult_even_v16si, + *vec_widen_smult_even_v8si, *sse4_1_mulv2siv2di3, + *avx2_pmaddwd, *sse2_pmaddwd, *_mul3, + *avx2_3, *avx512f_3, + *sse4_1_3, *v8hi3, + *sse4_1_3, *v16qi3, *avx2_eq3, + _eq3_1, *sse4_1_eqv2di3, + *sse2_eq3, 3, + *3, *_uavg3, + *_pmulhrsw3, *ssse3_pmulhrswv4hi3): Use + !(MEM_P (operands[1]) && MEM_P (operands[2])) condition instead of + ix86_binary_operator_ok. Formatting fixes. + (*3, + *3, *3_m): Formatting + fixes. + +2017-11-07 Segher Boessenkool + + * config/rs6000/rs6000.md (GPR2): New mode_iterator. + ("cstore4"): Don't always expand with rs6000_emit_int_cmove for + eq and ne if TARGET_ISEL. + (cmp): New code_iterator. + (UNS, UNSU_, UNSIK): New code_attrs. + (2_isel): New define_insn_and_split. + ("eq3"): New define_expand, rename the define_insn_and_split + to... + ("eq3"): ... this. + ("ne3"): New define_expand, rename the define_insn_and_split + to... + ("ne3"): ... this. + +2017-11-07 Julia Koval + + PR target/82812 + * common/config/i386/i386-common.c + (OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): Remove MPX from flag. + (ix86_handle_option): Move MPX to isa_flags2 and GFNI to isa_flags. + * config/i386/i386-c.c (ix86_target_macros_internal): Ditto. + * config/i386/i386.opt: Ditto. + * config/i386/i386.c (ix86_target_string): Ditto. + (ix86_option_override_internal): Ditto. + (ix86_init_mpx_builtins): Move MPX to args2. + (ix86_expand_builtin): Special handling for OPTION_MASK_ISA_GFNI. + * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineinvqb_v64qi, + __builtin_ia32_vgf2p8affineinvqb_v64qi_mask, + __builtin_ia32_vgf2p8affineinvqb_v32qi, + __builtin_ia32_vgf2p8affineinvqb_v32qi_mask, + __builtin_ia32_vgf2p8affineinvqb_v16qi, + __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): Move to ARGS array. + +2017-11-07 Uros Bizjak + + PR target/80425 + * config/i386.i386.md (*zero_extendsidi2): Change (?r,*Yj), (?*Yi,r) + and (*x,m) to ($r,Yj), ($Yi,r) and ($x,m). + (zero-extendsidi peephole2): Remove peephole. + +2017-11-07 Eric Botcazou + + PR c/53037 + * stor-layout.c: Include attribs.h. + (handle_warn_if_not_align): Replace test on TYPE_USER_ALIGN with + explicit lookup of "aligned" attribute. + +2017-11-07 Andrew Waterman + + * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): New prototype. + (riscv_expand_block_move): Likewise. + * config/riscv/riscv.h (MOVE_RATIO): Tune cost to movmemsi + implementation. + (RISCV_MAX_MOVE_BYTES_PER_LOOP_ITER): New define. + (RISCV_MAX_MOVE_BYTES_STRAIGHT): New define. + * config/riscv/riscv.c (riscv_block_move_straight): New function. + (riscv_adjust_block_mem): Likewise. + (riscv_block_move_loop): Likewise. + (riscv_expand_block_move): Likewise. + * config/riscv/riscv.md (movmemsi): New pattern. + +2017-11-07 Michael Clark + + * config/riscv/linux.h (MUSL_ABI_SUFFIX): New define. + (MUSL_DYNAMIC_LINKER): Likewise. + +2017-11-07 Richard Sandiford + + * config/aarch64/aarch64.md (ashl3, ashr3, lshr3) + (rotr3, rotl3): Use aarch64_reg_or_imm instead of + nonmmory_operand. + +2017-11-07 Richard Biener + + * match.pd: Fix build. + +2017-11-07 Wilco Dijkstra + Jackson Woodruff + + PR tree-optimization/71026 + * match.pd: Canonicalize negate in division. + +2017-11-07 Sudakshina Das + + PR middle-end/80131 + * match.pd: Simplify 1 << (C - x) where C = precision (x) - 1. + +2017-11-07 Marc Glisse + + * match.pd ((a&~b)|(a^b),(a&~b)^~a,(a|b)&~(a^b),a|~(a^b), + (a|b)|(a&^b),(a&b)|~(a^b),~(~a&b),~X^Y): New transformations. + +2017-11-07 Marc Glisse + + * fold-const.c (negate_expr_p) [PLUS_EXPR, MINUS_EXPR]: Handle + non-scalar integral types. + * match.pd (negate_expr_p): Handle MINUS_EXPR. + (-(A-B), -(~A)): New transformations. + +2017-11-07 Tom de Vries + + * config/powerpcspe/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove + semicolon after "do {} while (0)". + * config/powerpcspe/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same. + * config/powerpcspe/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same. + * config/powerpcspe/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same. + * config/powerpcspe/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same. + * config/powerpcspe/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same. + +2017-11-07 Tom de Vries + + * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove semicolon + after "do {} while (0)". + * config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same. + * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same. + * config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same. + * config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same. + * config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same. + +2017-11-07 Tom de Vries + + PR other/82784 + * config/arm/arm.c (HANDLE_NARROW_SHIFT_ARITH): Remove semicolon after + "while {} do (0)". + (arm_rtx_costs_internal): Add missing semicolon after + HANDLE_NARROW_SHIFT_ARITH call. + +2017-11-06 Segher Boessenkool + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't + disable isel if it was not set explicitly. + +2017-11-06 James Bowman + + * gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE qualifiers. + (add_type_attribute) likewise. + +2017-11-06 H.J. Lu + + * config/i386/i386.c (ix86_can_use_return_insn_p): Use reference + of struct ix86_frame. + (ix86_initial_elimination_offset): Likewise. + (ix86_expand_split_stack_prologue): Likewise. + +2017-11-06 Marc Glisse + + * tree-vrp.h (enum value_range_type): Update stale comment. + +2017-11-06 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm) + (aarch64_expand_vec_perm_const): Take the number of units too. + * config/aarch64/aarch64.c (aarch64_expand_vec_perm) + (aarch64_expand_vec_perm_const): Likewise. + * config/aarch64/aarch64-simd.md (vec_perm_const) + (vec_perm): Update accordingly. + +2017-11-06 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-protos.h (aarch64_simd_vect_par_cnst_half): + Take the number of units too. + * config/aarch64/aarch64.c (aarch64_simd_vect_par_cnst_half): Likewise. + (aarch64_simd_check_vect_par_cnst_half): Update call accordingly, + but check for a vector mode before rather than after the call. + * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov) + (move_hi_quad_, vec_unpack_hi_) + (vec_unpack_lo_mult_lo_) + (vec_widen_mult_hi_, vec_unpacks_lo_) + (vec_unpacks_hi_, aarch64_saddl2, aarch64_uaddl2) + (aarch64_ssubl2, aarch64_usubl2, widen_ssum3) + (widen_usum3, aarch64_saddw2, aarch64_uaddw2) + (aarch64_ssubw2, aarch64_usubw2, aarch64_sqdmlal2) + (aarch64_sqdmlsl2, aarch64_sqdmlal2_lane) + (aarch64_sqdmlal2_laneq, aarch64_sqdmlsl2_lane) + (aarch64_sqdmlsl2_laneq, aarch64_sqdmlal2_n) + (aarch64_sqdmlsl2_n, aarch64_sqdmull2) + (aarch64_sqdmull2_lane, aarch64_sqdmull2_laneq) + (aarch64_sqdmull2_n): Update accordingly. + +2017-11-06 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-protos.h (aarch64_reverse_mask): Take + the number of units too. + * config/aarch64/aarch64.c (aarch64_reverse_mask): Likewise. + * config/aarch64/aarch64-simd.md (vec_load_lanesoi) + (vec_store_lanesoi, vec_load_lanesci) + (vec_store_lanesci, vec_load_lanesxi) + (vec_store_lanesxi): Update accordingly. + +2017-11-06 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-protos.h (aarch64_endian_lane_rtx): Declare. + * config/aarch64/aarch64.c (aarch64_endian_lane_rtx): New function. + * config/aarch64/aarch64.h (ENDIAN_LANE_N): Take the number + of units rather than the mode. + * config/aarch64/iterators.md (nunits): New mode attribute. + * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): + Use aarch64_endian_lane_rtx instead of GEN_INT (ENDIAN_LANE_N ...). + * config/aarch64/aarch64-simd.md (aarch64_dup_lane) + (aarch64_dup_lane_, *aarch64_mul3_elt) + (*aarch64_mul3_elt_): Likewise. + (*aarch64_mul3_elt_to_64v2df, *aarch64_mla_elt): Likewise. + (*aarch64_mla_elt_, *aarch64_mls_elt) + (*aarch64_mls_elt_, *aarch64_fma4_elt) + (*aarch64_fma4_elt_):: Likewise. + (*aarch64_fma4_elt_to_64v2df, *aarch64_fnma4_elt): Likewise. + (*aarch64_fnma4_elt_): Likewise. + (*aarch64_fnma4_elt_to_64v2df, reduc_plus_scal_): Likewise. + (reduc_plus_scal_v4sf, reduc__scal_): Likewise. + (reduc__scal_): Likewise. + (*aarch64_get_lane_extend): Likewise. + (*aarch64_get_lane_zero_extendsi): Likewise. + (aarch64_get_lane, *aarch64_mulx_elt_) + (*aarch64_mulx_elt, *aarch64_vgetfmulx): Likewise. + (aarch64_sqdmulh_lane, aarch64_sqdmulh_laneq) + (aarch64_sqrdmlh_lane): Likewise. + (aarch64_sqrdmlh_laneq): Likewise. + (aarch64_sqdmll_lane): Likewise. + (aarch64_sqdmll_laneq): Likewise. + (aarch64_sqdmll2_lane_internal): Likewise. + (aarch64_sqdmll2_laneq_internal): Likewise. + (aarch64_sqdmull_lane, aarch64_sqdmull_laneq): Likewise. + (aarch64_sqdmull2_lane_internal): Likewise. + (aarch64_sqdmull2_laneq_internal): Likewise. + (aarch64_vec_load_lanesoi_lane): Likewise. + (aarch64_vec_store_lanesoi_lane): Likewise. + (aarch64_vec_load_lanesci_lane): Likewise. + (aarch64_vec_store_lanesci_lane): Likewise. + (aarch64_vec_load_lanesxi_lane): Likewise. + (aarch64_vec_store_lanesxi_lane): Likewise. + (aarch64_simd_vec_set): Update use of ENDIAN_LANE_N. + (aarch64_simd_vec_setv2di): Likewise. + +2017-11-06 Carl Love + + * config/rs6000/rs6000-c.c (P8V_BUILTIN_VEC_REVB): Add power 8 + definitions. + (P9V_BUILTIN_VEC_REVB): Remove the power 9 instance definitions. + * config/rs6000/altivec.h (vec_revb): Change the #define from power 9 + to power 8. + * config/rs6000/r6000-protos.h (swap_endian_selector_for_mode): Add new + extern declaration. + * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Add function. + * config/rs6000/rs6000-builtin.def (BU_P8V_VSX_1, BU_P8V_OVERLOAD_1): + Add power 8 macro expansions. + (BU_P9V_OVERLOAD_1): Remove power 9 overload expansion. + * config/rs6000/vsx.md (revb_): Add define_expand to generate + power 8 instructions. (VSX_XXBR): Add iterator. + +2017-11-06 Wilco Dijkstra + + * config/arm/arm.md (predicable_short_it): Change default to "no", + improve documentation, remove uses that are identical to the default. + (enabled_for_depr_it): Rename to enabled_for_short_it. + * gcc/config/arm/arm-fixed.md (predicable_short_it): + Remove default uses. + * gcc/config/arm/ldmstm.md (predicable_short_it): Likewise. + * gcc/config/arm/sync.md (predicable_short_it): Likewise. + * gcc/config/arm/thumb2.md (predicable_short_it): Likewise. + * gcc/config/arm/vfp.md (predicable_short_it): Likewise. + +2017-11-06 Michael Meissner + + PR target/82748 + * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1): Delete + float128 helper macros, which are no longer used after deleting + the old 'q' built-in functions, and moving the round to odd + built-in functions to being special built-in functions. + (BU_FLOAT128_2): Likewise. + (BU_FLOAT128_1_HW): Likewise. + (BU_FLOAT128_2_HW): Likewise. + (BU_FLOAT128_3_HW): Likewise. + (FABSQ): Delete old 'q' built-in functions. + (COPYSIGNQ): Likewise. + (SQRTF128_ODD): Move round to odd built-in functions to be + special built-in functions, so that we can handle + -mabi=ieeelongdouble. + (TRUNCF128_ODD): Likewise. + (ADDF128_ODD): Likewise. + (SUBF128_ODD): Likewise. + (MULF128_ODD): Likewise. + (DIVF128_ODD): Likewise. + (FMAF128_ODD): Likewise. + * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Map old 'q' + built-in names to 'f128'. + * config/rs6000/rs6000.c (rs6000_fold_builtin): Remove folding the + old 'q' built-in functions, as the machine independent code for + 'f128' built-in functions handles this. + (rs6000_expand_builtin): Add expansion for float128 round to odd + functions, keying off on -mabi=ieeelongdouble of whether to use + the KFmode or TFmode variant. + (rs6000_init_builtins): Initialize the _Float128 round to odd + built-in functions. + * doc/extend.texi (PowerPC Built-in Functions): Document the old + _Float128 'q' built-in functions are now mapped into the new + 'f128' built-in functions. + +2017-11-06 David Edelsohn + + * collect2.c (add_lto_object): Compile for OBJECT_COFF. + (scan_prog_file): Don't skip PASS_LTOINFO. Scan for LTO objects. + +2017-11-06 David Malcolm + + PR jit/82826 + * ipa-fnsummary.c (ipa_fnsummary_c_finalize): New function. + * ipa-fnsummary.h (ipa_fnsummary_c_finalize): New decl. + * toplev.c: Include "ipa-fnsummary.h". + (toplev::finalize): Call ipa_fnsummary_c_finalize. + +2017-11-06 Jakub Jelinek + + PR tree-optimization/82838 + * gimple-ssa-store-merging.c + (imm_store_chain_info::output_merged_store): Call force_gimple_operand_1 + on a separate gimple_seq which is then appended to seq. + +2017-11-06 Jeff Law + + PR target/82788 + * config/i386/i386.c (PROBE_INTERVAL): Remove. + (get_probe_interval): New functions. + (ix86_adjust_stack_and_probe_stack_clash): Use get_probe_interval. + (ix86_adjust_stack_and_probe): Likewise. + (output_adjust_stack_and_probe): Likewise. + (ix86_emit_probe_stack_range): Likewise. + (ix86_expand_prologue): Likewise. + +2017-11-06 Richard Sandiford + + PR tree-optimization/82816 + * tree-ssa-math-opts.c (convert_mult_to_widen): Return false + if the modes of the two types are the same. + (convert_plusminus_to_widen): Likewise. + +2017-11-06 Bill Schmidt + + * config/rs6000/altivec.md (*p9_vadu3) Rename to + p9_vadu3. + (usadv16qi): New define_expand. + (usadv8hi): New define_expand. + +2017-11-06 Jan Hubicka + + PR bootstrap/82832 + * ipa-inline-transform.c (update_noncloned_frequencies): Always + scale. + (inline_transform): Likewise. + * predict.c (counts_to_freqs): Remove useless conditional. + * profile-count.h (profile_count::apply_scale): Move sanity check. + * tree-inline.c (copy_bb): Always scale. + (copy_cfg_body): Likewise. + +2017-11-06 Christophe Lyon + + PR target/67591 + * config/arm/arm.md (*sub_shiftsi): Add predicable_short_it + attribute. + (*cmp_ite0): Add enabled_for_depr_it attribute. + (*cmp_ite1): Likewise. + +2017-11-06 Segher Boessenkool + + * config/rs6000/rs6000.c (rs6000_insn_cost): Handle TYPE_MFCR and + TYPE_MFCRF. + +2017-11-06 Richard Sandiford + + * tree-vrp.c (vrp_int_const_binop): Return true on success and + return the value by pointer. + (extract_range_from_multiplicative_op_1): Update accordingly. + Return as soon as an operation fails. + +2017-11-05 Tom de Vries + + PR other/82784 + * asan.c (DEF_SANITIZER_BUILTIN_1): Factor out of ... + (DEF_SANITIZER_BUILTIN): ... here. + (initialize_sanitizer_builtins): Use DEF_SANITIZER_BUILTIN_1 instead of + DEF_SANITIZER_BUILTIN in if stmt. Add missing semicolon. + +2017-11-05 Tom de Vries + + PR other/82784 + * config/elfos.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon after + macro body. + (ASM_OUTPUT_CASE_LABEL): Add semicolon after + ASM_OUTPUT_BEFORE_CASE_LABEL call. + * config/arc/arc.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon + after macro body. + * config/m68k/m68kelf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same. + * config/mips/mips.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same. + * config/v850/v850.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same. + +2017-11-05 Tom de Vries + + PR other/82784 + * graphite-scop-detection.c (DEBUG_PRINT): Remove semicolon after + "do {} while (0)". + +2017-11-04 Michael Clark + + * config/riscv/riscv.c (riscv_print_operand): Add a 'i' format. + config/riscv/riscv.md (addsi3): Use 'i' for immediates. + (adddi3): Likewise. + (*addsi3_extended): Likewise. + (*addsi3_extended2): Likewise. + (si3): Likewise. + (di3): Likewise. + (3): Likewise. + (<*optabe>si3_internal): Likewise. + (zero_extendqi2): Likewise. + (*addhi3): Likewise. + (*xorhi3): Likewise. + (di3): Likewise. + (*si3_extend): Likewise. + (*sge_): Likewise. + (*slt_): Likewise. + (*sle_): Likewise. + +2017-11-04 Andrew Waterman + + * config/riscv/riscv.c (riscv_option_override): Conditionally set + TARGET_STRICT_ALIGN based upon -mtune argument. + +2017-11-04 Andrew Waterman + + * config/riscv/riscv.h (SLOW_BYTE_ACCESS): Change to 1. + +2017-11-04 Daniel Santos + + * config/i386/i386.c (choose_basereg): Use optional scratch + register and add assertion. + (x86_emit_outlined_ms2sysv_save): Use scratch register when + needed, and don't allocate stack. + (ix86_expand_prologue): Rearrange where SSE saves/stub call is + emitted, correct wrong allocation with -mcall-ms2sysv-xlogues. + (ix86_emit_outlined_ms2sysv_restore): Fix non-immediate offsets. + +2017-11-03 Jeff Law + + * config/i386/i386.c (ix86_emit_restore_reg_using_pop): Prototype. + (ix86_adjust_stack_and_probe_stack_clash): Use a push/pop sequence + to probe at the start of a noreturn function. + +2017-11-03 Jakub Jelinek + + PR tree-optimization/78821 + * gimple-ssa-store-merging.c: Update the file comment. + (MAX_STORE_ALIAS_CHECKS): Define. + (struct store_operand_info): New type. + (store_operand_info::store_operand_info): New constructor. + (struct store_immediate_info): Add rhs_code and ops data members. + (store_immediate_info::store_immediate_info): Add rhscode, op0r + and op1r arguments to the ctor, initialize corresponding data members. + (struct merged_store_group): Add load_align_base and load_align + data members. + (merged_store_group::merged_store_group): Initialize them. + (merged_store_group::do_merge): Update them. + (merged_store_group::apply_stores): Pick the constant for + encode_tree_to_bitpos from one of the two operands, or skip + encode_tree_to_bitpos if neither operand is a constant. + (class pass_store_merging): Add process_store method decl. Remove + bool argument from terminate_all_aliasing_chains method decl. + (pass_store_merging::terminate_all_aliasing_chains): Remove + var_offset_p argument and corresponding handling. + (stmts_may_clobber_ref_p): New function. + (compatible_load_p): New function. + (imm_store_chain_info::coalesce_immediate_stores): Terminate group + if there is overlap and rhs_code is not INTEGER_CST. For + non-overlapping stores terminate group if rhs is not mergeable. + (get_alias_type_for_stmts): Change first argument from + auto_vec & to vec &. Add IS_LOAD, CLIQUEP and + BASEP arguments. If IS_LOAD is true, look at rhs1 of the stmts + instead of lhs. Compute *CLIQUEP and *BASEP in addition to the + alias type. + (get_location_for_stmts): Change first argument from + auto_vec & to vec &. + (struct split_store): Remove orig_stmts data member, add orig_stores. + (split_store::split_store): Create orig_stores rather than orig_stmts. + (find_constituent_stmts): Renamed to ... + (find_constituent_stores): ... this. Change second argument from + vec * to vec *, push pointers + to info structures rather than the statements. + (split_group): Rename ALLOW_UNALIGNED argument to + ALLOW_UNALIGNED_STORE, add ALLOW_UNALIGNED_LOAD argument and handle + it. Adjust find_constituent_stores caller. + (imm_store_chain_info::output_merged_store): Handle rhs_code other + than INTEGER_CST, adjust split_group, get_alias_type_for_stmts and + get_location_for_stmts callers. Set MR_DEPENDENCE_CLIQUE and + MR_DEPENDENCE_BASE on the MEM_REFs if they are the same in all stores. + (mem_valid_for_store_merging): New function. + (handled_load): New function. + (pass_store_merging::process_store): New method. + (pass_store_merging::execute): Use process_store method. Adjust + terminate_all_aliasing_chains caller. + +2017-11-03 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): + Return true for more constants, symbols and label references. + (aarch64_valid_floating_const): Remove unused function. + +2017-11-03 Wilco Dijkstra + + PR target/82786 + * config/aarch64/aarch64.c (aarch64_layout_frame): + Undo forcing of LR at bottom of frame. + +2017-11-03 Jeff Law + + PR target/82823 + * config/i386/i386.c (ix86_expand_prologue): Tighten assert + for int_registers_saved. + + * cfganal.c (single_pred_edge_ignoring_loop_edges): New function + extracted from tree-ssa-dom.c. + * cfganal.h (single_pred_edge_ignoring_loop_edges): Prototype. + * tree-ssa-dom.c (single_incoming_edge_ignoring_loop_edges): Remove. + (record_equivalences_from_incoming_edge): Add additional argument + to single_pred_edge_ignoring_loop_edges call. + * tree-ssa-uncprop.c (single_incoming_edge_ignoring_loop_edges): Remove. + (uncprop_dom_walker::before_dom_children): Add additional argument + to single_pred_edge_ignoring_loop_edges call. + * tree-ssa-sccvn.c (sccvn_dom_walker::before_dom_children): Use + single_pred_edge_ignoring_loop_edges rather than open coding. + * tree-vrp.c (evrp_dom_walker::before_dom_children): Similarly. + +2017-11-03 Marc Glisse + + * match.pd (-(-A)): Rewrite. + +2017-11-03 Segher Boessenkool + + * config/rs6000/rs60000-protos.h (rs6000_emit_sISEL): Delete. + (rs6000_emit_int_cmove): New declaration. + * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Delete declaration. + (rs6000_emit_sISEL): Delete. + (rs6000_emit_int_cmove): Make non-static. + * config/rs6000/rs6000.md (cstore4): Use rs6000_emit_int_cmove + instead of rs6000_emit_sISEL. + +2017-11-03 Jan Hubicka + + * asan.c (create_cond_insert_point): Maintain profile. + * ipa-utils.c (ipa_merge_profiles): Be sure only IPA profiles are + merged. + * basic-block.h (struct basic_block_def): Remove frequency. + (EDGE_FREQUENCY): Use to_frequency + * bb-reorder.c (push_to_next_round_p): Use only IPA counts for global + heuristics. + (find_traces): Update to use to_frequency. + (find_traces_1_round): Likewise; use only IPA counts. + (bb_to_key): Likewise. + (connect_traces): Use IPA counts only. + (copy_bb_p): Update to use to_frequency. + (fix_up_crossing_landing_pad): Likewise. + (sanitize_hot_paths): Likewise. + * bt-load.c (basic_block_freq): Likewise. + * cfg.c (init_flow): Set count_max to uninitialized. + (check_bb_profile): Remove frequencies; check counts. + (dump_bb_info): Do not dump frequencies. + (update_bb_profile_for_threading): Update counts only. + (scale_bbs_frequencies_int): Likewise. + (MAX_SAFE_MULTIPLIER): Remove. + (scale_bbs_frequencies_gcov_type): Update counts only. + (scale_bbs_frequencies_profile_count): Update counts only. + (scale_bbs_frequencies): Update counts only. + * cfg.h (struct control_flow_graph): Add count-max. + (update_bb_profile_for_threading): Update prototype. + * cfgbuild.c (find_bb_boundaries): Do not update frequencies. + (find_many_sub_basic_blocks): Likewise. + * cfgcleanup.c (try_forward_edges): Likewise. + (try_crossjump_to_edge): Likewise. + * cfgexpand.c (expand_gimple_cond): Likewise. + (expand_gimple_tailcall): Likewise. + (construct_init_block): Likewise. + (construct_exit_block): Likewise. + * cfghooks.c (verify_flow_info): Check consistency of counts. + (dump_bb_for_graph): Do not dump frequencies. + (split_block_1): Do not update frequencies. + (split_edge): Do not update frequencies. + (make_forwarder_block): Do not update frequencies. + (duplicate_block): Do not update frequencies. + (account_profile_record): Do not update frequencies. + * cfgloop.c (find_subloop_latch_edge_by_profile): Use IPA counts + for global heuristics. + * cfgloopanal.c (average_num_loop_insns): Update to use to_frequency. + (expected_loop_iterations_unbounded): Use counts only. + * cfgloopmanip.c (scale_loop_profile): Simplify. + (create_empty_loop_on_edge): Simplify + (loopify): Simplify + (duplicate_loop_to_header_edge): Simplify + * cfgrtl.c (force_nonfallthru_and_redirect): Update profile. + (update_br_prob_note): Take care of removing note when profile + becomes undefined. + (relink_block_chain): Do not dump frequency. + (rtl_account_profile_record): Use to_frequency. + * cgraph.c (symbol_table::create_edge): Convert count to ipa count. + (cgraph_edge::redirect_call_stmt_to_calle): Conver tcount to ipa count. + (cgraph_update_edges_for_call_stmt_node): Likewise. + (cgraph_edge::verify_count_and_frequency): Update. + (cgraph_node::verify_node): Temporarily disable frequency verification. + * cgraphbuild.c (compute_call_stmt_bb_frequency): Use + to_cgraph_frequency. + (cgraph_edge::rebuild_edges): Convert to ipa counts. + * cgraphunit.c (init_lowered_empty_function): Do not initialize + frequencies. + (cgraph_node::expand_thunk): Update profile. + * except.c (dw2_build_landing_pads): Do not update frequency. + * final.c (compute_alignments): Use to_frequency. + (dump_basic_block_info): Do not dump frequency. + * gimple-pretty-print.c (dump_profile): Do not dump frequency. + (dump_gimple_bb_header): Do not dump frequency. + * gimple-ssa-isolate-paths.c (isolate_path): Do not update frequency; + do update count. + * gimple-streamer-in.c (input_bb): Do not stream frequency. + * gimple-streamer-out.c (output_bb): Do not stream frequency. + * haifa-sched.c (sched_pressure_start_bb): Use to_freuqency. + (init_before_recovery): Do not update frequency. + (sched_create_recovery_edges): Do not update frequency. + * hsa-gen.c (convert_switch_statements): Do not update frequency. + * ipa-cp.c (ipcp_propagate_stage): Update search for max_count. + (ipa_cp_c_finalize): Set max_count to uninitialized. + * ipa-fnsummary.c (get_minimal_bb): Use counts. + (param_change_prob): Use counts. + * ipa-profile.c (ipa_profile_generate_summary): Do not summarize + local profiles. + * ipa-split.c (consider_split): Use to_frequency. + (split_function): Use to_frequency. + * ira-build.c (loop_compare_func): Likewise. + (mark_loops_for_removal): Likewise. + (mark_all_loops_for_removal): Likewise. + * loop-doloop.c (doloop_modify): Do not update frequency. + * loop-unroll.c (unroll_loop_runtime_iterations): Do not update + frequency. + * lto-streamer-in.c (input_function): Update count_max. + * omp-expand.c (expand_omp_taskreg): Update count_max. + * omp-simd-clone.c (simd_clone_adjust): Update profile. + * predict.c (maybe_hot_frequency_p): Use to_frequency. + (maybe_hot_count_p): Use ipa counts only. + (maybe_hot_bb_p): Simplify. + (maybe_hot_edge_p): Simplify. + (probably_never_executed): Do not take frequency argument. + (probably_never_executed_bb_p): Do not pass frequency. + (probably_never_executed_edge_p): Likewise. + (combine_predictions_for_bb): Check that profile is nonzero. + (propagate_freq): Do not set frequency. + (drop_profile): Simplify. + (counts_to_freqs): Simplify. + (expensive_function_p): Use to_frequency. + (propagate_unlikely_bbs_forward): Simplify. + (determine_unlikely_bbs): Simplify. + (estimate_bb_frequencies): Add hack to silence graphite issues. + (compute_function_frequency): Use ipa counts. + (pass_profile::execute): Update. + (rebuild_frequencies): Use counts only. + (force_edge_cold): Use counts only. + * profile-count.c (profile_count::dump): Dump new count types. + (profile_count::differs_from_p): Check compatiblity. + (profile_count::to_frequency): New function. + (profile_count::to_cgraph_frequency): New function. + * profile-count.h (struct function): Declare. + (enum profile_quality): Add profile_guessed_local and + profile_guessed_global0. + (class profile_proability): Decrease number of bits to 29; + update from_reg_br_prob_note and to_reg_br_prob_note. + (class profile_count: Update comment; decrease number of bits + to 61. Check compatibility. + (profile_count::compatible_p): New private member function. + (profile_count::ipa_p): New member function. + (profile_count::operator<): Handle global zero correctly. + (profile_count::operator>): Handle global zero correctly. + (profile_count::operator<=): Handle global zero correctly. + (profile_count::operator>=): Handle global zero correctly. + (profile_count::nonzero_p): New member function. + (profile_count::force_nonzero): New member function. + (profile_count::max): New member function. + (profile_count::apply_scale): Handle IPA scalling. + (profile_count::guessed_local): New member function. + (profile_count::global0): New member function. + (profile_count::ipa): New member function. + (profile_count::to_frequency): Declare. + (profile_count::to_cgraph_frequency): Declare. + * profile.c (OVERLAP_BASE): Delete. + (compute_frequency_overlap): Delete. + (compute_branch_probabilities): Do not use compute_frequency_overlap. + * regs.h (REG_FREQ_FROM_BB): Use to_frequency. + * sched-ebb.c (rank): Use counts only. + * shrink-wrap.c (handle_simple_exit): Use counts only. + (try_shrink_wrapping): Use counts only. + (place_prologue_for_one_component): Use counts only. + * tracer.c (find_best_predecessor): Use to_frequency. + (find_trace): Use to_frequency. + (tail_duplicate): Use to_frequency. + * trans-mem.c (expand_transaction): Do not update frequency. + * tree-call-cdce.c: Do not update frequency. + * tree-cfg.c (gimple_find_sub_bbs): Likewise. + (gimple_merge_blocks): Likewise. + (gimple_split_edge): Likewise. + (gimple_duplicate_sese_region): Likewise. + (gimple_duplicate_sese_tail): Likewise. + (move_sese_region_to_fn): Likewise. + (gimple_account_profile_record): Likewise. + (insert_cond_bb): Likewise. + * tree-complex.c (expand_complex_div_wide): Likewise. + * tree-eh.c (lower_resx): Update profile. + * tree-inline.c (copy_bb): Simplify count scaling; do not scale + frequencies. + (initialize_cfun): Do not initialize frequencies + (freqs_to_counts): Delete. + (copy_cfg_body): Ignore count parameter. + (copy_body): Update. + (expand_call_inline): Update count_max. + (optimize_inline_calls): Update count_max. + (tree_function_versioning): Update count_max. + * tree-ssa-coalesce.c (coalesce_cost_bb): Use to_frequency. + * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Do not update + frequency. + * tree-ssa-loop-im.c (execute_sm_if_changed): Use counts only. + * tree-ssa-loop-ivcanon.c (unloop_loops): Do not update freuqency. + (try_peel_loop): Likewise. + * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Use + to_frequency. + * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Pass -1. + (tree_transform_and_unroll_loop): Do not use frequencies + * tree-ssa-loop-niter.c (estimate_numbers_of_iterations): + Use reliable prediction only. + * tree-ssa-loop-unswitch.c (hoist_guard): Do not use frequencies. + * tree-ssa-sink.c (select_best_block): Use to_frequency. + * tree-ssa-tail-merge.c (replace_block_by): Temporarily disable + probability scaling. + * tree-ssa-threadupdate.c (create_block_for_threading): Do + not update frequency + (any_remaining_duplicated_blocks): Likewise. + (update_profile): Likewise. + (estimated_freqs_path): Delete. + (freqs_to_counts_path): Delete. + (clear_counts_path): Delete. + (ssa_fix_duplicate_block_edges): Likewise. + (duplicate_thread_path): Likewise. + * tree-switch-conversion.c (gen_inbound_check): Use counts. + * tree-tailcall.c (decrease_profile): Do not update frequency. + (eliminate_tail_call): Likewise. + * tree-vect-loop-manip.c (vect_do_peeling): Likewise. + * tree-vect-loop.c (scale_profile_for_vect_loop): Likewise. + (optimize_mask_stores): Likewise. + * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise. + * ubsan.c (ubsan_expand_null_ifn): Update profile. + (ubsan_expand_ptr_ifn): Update profile. + * value-prof.c (gimple_ic): Simplify. + * value-prof.h (gimple_ic): Update prototype. + * ipa-inline-transform.c (inline_transform): Fix scaling conditoins. + * ipa-inline.c (compute_uninlined_call_time): Be sure that + counts are nonzero. + (want_inline_self_recursive_call_p): Likewise. + (resolve_noninline_speculation): Only cummulate defined counts. + (inline_small_functions): Use nonzero_p. + (ipa_inline): Do not access freed node. + +2017-11-03 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_override_options_internal): + Set PARAM_SCHED_PRESSURE_ALGORITHM to SCHED_PRESSURE_MODEL. + +2017-11-03 Kito Cheng + + * config/riscv/riscv.c (riscv_legitimize_move): Handle + non-legitimate address. + +2017-11-03 Segher Boessenkool + + * config/rs6000/rs6000.md (*lt0_disi): Delete. + (*lt0_di, *lt0_si): New. + +2017-11-03 Segher Boessenkool + + * config/rs6000/rs6000.md (move_from_CR_ov_bit): Change condition to + TARGET_PAIRED_FLOAT. + +2017-11-03 Siddhesh Poyarekar + Jim Wilson + + * config/aarch64/aarch64-cores.def (saphira): New CPU. + * config/aarch64/aarch64-tune.md: Regenerated. + * doc/invoke.texi (AArch64 Options/-mtune): Add "saphira". + * gcc/config/aarch64/aarch64.c (saphira_tunings): New tuning table. + +2017-11-03 Cupertino Miranda + + * config/arc/arc.c (arc_save_restore): Corrected CFA note. + (arc_expand_prologue): Restore blink for millicode. + * config/arc/linux.h (LINK_EH_SPEC): Defined. + +2017-11-03 Richard Sandiford + + PR target/82809 + * config/i386/i386.c (ix86_vector_duplicate_value): Use + gen_vec_duplicate after forcing the scalar into a register. + +2017-11-02 Segher Boessenkool + + * combine (try_combine): Print the insns input to try_combine to the + dump file. + +2017-11-02 Steve Ellcey + + PR target/79868 + * config/aarch64/aarch64-c.c (aarch64_pragma_target_parse): + Remove second argument from aarch64_process_target_attr call. + * config/aarch64/aarch64-protos.h (aarch64_process_target_attr): + Ditto. + * config/aarch64/aarch64.c (aarch64_attribute_info): Change + field type. + (aarch64_handle_attr_arch): Remove second argument. + (aarch64_handle_attr_cpu): Ditto. + (aarch64_handle_attr_tune): Ditto. + (aarch64_handle_attr_isa_flags): Ditto. + (aarch64_process_one_target_attr): Ditto. + (aarch64_process_target_attr): Ditto. + (aarch64_option_valid_attribute_p): Remove second argument. + on aarch64_process_target_attr call. + +2017-11-02 David Malcolm + + * diagnostic.c: Include "selftest-diagnostic.h". + (selftest::assert_location_text): New function. + (selftest::test_diagnostic_get_location_text): New function. + (selftest::diagnostic_c_tests): Call it. + +2017-11-02 David Malcolm + + * Makefile.in (OBJS-libcommon): Add selftest-diagnostic.o. + * diagnostic-show-locus.c: Include "selftest-diagnostic.h". + (class selftest::test_diagnostic_context): Move to... + * selftest-diagnostic.c: New file. + * selftest-diagnostic.h: New file. + +2017-11-02 James Bowman + + * config/ft32/ft32.c (ft32_addr_space_legitimate_address_p): increase + offset range for FT32B. + * config/ft32/ft32.h: option "mcompress" enables relaxation. + * config/ft32/ft32.md: Add TARGET_NOPM. + * config/ft32/ft32.opt: Add mft32b, mcompress, mnopm. + * gcc/doc/invoke.texi: Add mft32b, mcompress, mnopm. + +2017-11-02 Wilco Dijkstra + + * config/aarch64/aarch64.h (MALLOC_ABI_ALIGNMENT): New define. + +2017-11-02 Jeff Law + + * gimple-ssa-sprintf.c (sprintf_dom_walker): Remove + virtual keyword on FINAL OVERRIDE members. + + * tree-ssa-propagate.h (ssa_propagation_engine): Group + virtuals together. Add virtual destructor. + (substitute_and_fold_engine): Similarly. + +2017-11-02 Jan Hubicka + + * x86-tune.def (X86_TUNE_USE_INCDEC): Enable for Haswell+. + +2017-11-02 Richard Biener + + PR tree-optimization/82795 + * tree-if-conv.c (predicate_mem_writes): Remove bogus assert. + +2017-11-02 Rainer Orth + + * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Don't require + gcc_SUN_LD_VERSION. + (gcc_GAS_CHECK_FEATURE): Remove. + * configure.ac (ld_vers) <*-*-solaris2*>: Move comments from + gcc_AC_INITFINI_ARRAY here. Update for Solaris 11.4 changes. + * configure: Regenerate. + +2017-11-02 Claudiu Zissulescu + + * config/arc/arc.c (hwloop_optimize): Account for empty + body loops. + +2017-11-02 Richard Biener + + PR middle-end/82765 + * varasm.c (decode_addr_const): Make offset HOST_WIDE_INT. + Truncate ARRAY_REF index and element size. + +2017-11-01 Palmer Dabbelt + + * doc/invoke.texi (RISC-V Options): Use "@minus{}2 GB", not "-2 GB". + +2017-11-01 Jeff Law + + * tree-ssa-ccp.c (ccp_folder): New class derived from + substitute_and_fold_engine. + (ccp_folder::get_value): New member function. + (ccp_folder::fold_stmt): Renamed from ccp_fold_stmt. + (ccp_fold_stmt): Remove prototype. + (ccp_finalize): Call substitute_and_fold from the ccp_class. + * tree-ssa-copy.c (copy_folder): New class derived from + substitute_and_fold_engine. + (copy_folder::get_value): Renamed from get_value. + (fini_copy_prop): Call substitute_and_fold from copy_folder class. + * tree-vrp.c (vrp_folder): New class derived from + substitute_and_fold_engine. + (vrp_folder::fold_stmt): Renamed from vrp_fold_stmt. + (vrp_folder::get_value): New member function. + (vrp_finalize): Call substitute_and_fold from vrp_folder class. + (evrp_dom_walker::before_dom_children): Similarly for replace_uses_in. + * tree-ssa-propagate.h (substitute_and_fold_engine): New class to + provide a class interface to folder/substitute routines. + (ssa_prop_fold_stmt_fn): Remove typedef. + (ssa_prop_get_value_fn): Likewise. + (subsitute_and_fold): Remove prototype. + (replace_uses_in): Likewise. + * tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in): + Renamed from replace_uses_in. Call the virtual member function + (substitute_and_fold_engine::replace_phi_args_in): Similarly. + (substitute_and_fold_dom_walker): Remove initialization of + data member entries for calbacks. Add substitute_and_fold_engine + member and initialize it. + (substitute_and_fold_dom_walker::before_dom_children0: Use the + member functions for get_value, replace_phi_args_in c + replace_uses_in, and fold_stmt calls. + (substitute_and_fold_engine::substitute_and_fold): Renamed from + substitute_and_fold. Remove assert. Update ctor call. + + * tree-ssa-propagate.h (ssa_prop_visit_stmt_fn): Remove typedef. + (ssa_prop_visit_phi_fn): Likewise. + (class ssa_propagation_engine): New class to provide an interface + into ssa_propagate. + * tree-ssa-propagate.c (ssa_prop_visit_stmt): Remove file scoped + variable. + (ssa_prop_visit_phi): Likewise. + (ssa_propagation_engine::simulate_stmt): Moved into class. + Call visit_phi/visit_stmt from the class rather than via + file scoped static variables. + (ssa_propagation_engine::simulate_block): Moved into class. + (ssa_propagation_engine::process_ssa_edge_worklist): Similarly. + (ssa_propagation_engine::ssa_propagate): Similarly. No longer + set file scoped statics for the visit_stmt/visit_phi callbacks. + * tree-complex.c (complex_propagate): New class derived from + ssa_propagation_engine. + (complex_propagate::visit_stmt): Renamed from complex_visit_stmt. + (complex_propagate::visit_phi): Renamed from complex_visit_phi. + (tree_lower_complex): Call ssa_propagate via the complex_propagate + class. + * tree-ssa-ccp.c: (ccp_propagate): New class derived from + ssa_propagation_engine. + (ccp_propagate::visit_phi): Renamed from ccp_visit_phi_node. + (ccp_propagate::visit_stmt): Renamed from ccp_visit_stmt. + (do_ssa_ccp): Call ssa_propagate from the ccp_propagate class. + * tree-ssa-copy.c (copy_prop): New class derived from + ssa_propagation_engine. + (copy_prop::visit_stmt): Renamed from copy_prop_visit_stmt. + (copy_prop::visit_phi): Renamed from copy_prop_visit_phi_node. + (execute_copy_prop): Call ssa_propagate from the copy_prop class. + * tree-vrp.c (vrp_prop): New class derived from ssa_propagation_engine. + (vrp_prop::visit_stmt): Renamed from vrp_visit_stmt. + (vrp_prop::visit_phi): Renamed from vrp_visit_phi_node. + (execute_vrp): Call ssa_propagate from the vrp_prop class. + +2017-11-01 Jakub Jelinek + + PR rtl-optimization/82778 + PR rtl-optimization/82597 + * compare-elim.c (struct comparison): Add in_a_setter field. + (find_comparison_dom_walker::before_dom_children): Remove killed + bitmap and df_simulate_find_defs call, instead walk the defs. + Compute last_setter and initialize in_a_setter. Merge definitions + with first initialization for a few variables. + (try_validate_parallel): Use insn_invalid_p instead of + recog_memoized. Return insn rather than just the pattern. + (try_merge_compare): Fix up comment. Don't uselessly test if + in_a is a REG_P. Use cmp->in_a_setter instead of walking UD + chains. + (execute_compare_elim_after_reload): Remove df_chain_add_problem + call. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64.c (aarch64_rtx_costs): Use + aarch64_hard_regno_nregs to get the number of registers + in a mode. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/constraints.md (Upl): Rename to... + (Uaa): ...this. + * config/aarch64/aarch64.md + (*zero_extend2_aarch64, *addsi3_aarch64_uxtw): + Update accordingly. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64.c (aarch64_add_constant_internal) + (aarch64_add_constant, aarch64_add_sp, aarch64_sub_sp): Move + earlier in file. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64.c (aarch64_evpc_trn, aarch64_evpc_uzp) + (aarch64_evpc_zip, aarch64_evpc_ext, aarch64_evpc_rev) + (aarch64_evpc_dup): Generate rtl direcly, rather than using + named expanders. + (aarch64_expand_vec_perm_const_1): Explicitly check for permutes + of a single element. + * config/aarch64/iterators.md: Add a comment above the permute + unspecs to say that they are generated directly by + aarch64_expand_vec_perm_const. + * config/aarch64/aarch64-simd.md: Likewise the permute instructions. + +2017-11-01 Nathan Sidwell + + * tree-dump.c (dequeue_and_dump): Use HAS_DECL_ASSEMBLER_NAME_P. + +2017-11-01 Palmer Dabbelt + + * doc/invoke.texi (RISC-V Options): Explicitly name the medlow + and medany code models, and describe what they do. + +2017-11-01 Richard Sandiford + + Revert accidental duplicate: + + * combine.c (can_change_dest_mode): Reject changes in + REGMODE_NATURAL_SIZE. + +2017-11-01 Segher Boessenkool + + PR rtl-optimization/64682 + PR rtl-optimization/69567 + PR rtl-optimization/69737 + PR rtl-optimization/82683 + * combine.c (distribute_notes) : If the new I2 sets the same + register mentioned in the note, drop the note, unless it came from I3, + in which case it should go to I3 again. + +2017-11-01 Richard Sandiford + + * tree-ssa-dse.c (normalize_ref): Check whether the ranges overlap + and return false if not. + (clear_bytes_written_by, live_bytes_read): Update accordingly. + +2017-11-01 Richard Sandiford + + * tree-ssa-alias.h (ranges_overlap_p): Return false if either + range is known to be empty. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * simplify-rtx.c (simplify_const_unary_operation): Use GET_MODE_NUNITS + and CONST_VECTOR_NUNITS instead of computing the number of units from + the byte sizes of the vector and element. + (simplify_binary_operation_1): Likewise. + (simplify_const_binary_operation): Likewise. + (simplify_ternary_operation): Likewise. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * var-tracking.c (INT_MEM_OFFSET): Replace with... + (int_mem_offset): ...this new function. + (var_mem_set, var_mem_delete_and_set, var_mem_delete) + (find_mem_expr_in_1pdv, dataflow_set_preserve_mem_locs) + (same_variable_part_p, use_type, add_stores, vt_get_decl_and_offset): + Update accordingly. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * lower-subreg.c (interesting_mode_p): New function. + (compute_costs, find_decomposable_subregs, decompose_register) + (simplify_subreg_concatn, can_decompose_p, resolve_simple_move) + (resolve_clobber, dump_choices): Use it. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * rtlhash.c (add_rtx): Use add_hwi for 'w' and add_int for 'i'. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * alias.c (find_base_value, find_base_term): Only process integer + truncations. Check the precision rather than the size. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (is_narrower_int_mode): New function + * optabs.c (expand_float, expand_fix): Use it. + * dwarf2out.c (rotate_loc_descriptor): Likewise. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * rtl.h (narrower_subreg_mode): New function. + * ira-color.c (update_costs_from_allocno): Use it. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * optabs-query.h (convert_optab_p): New function, split out from... + (convert_optab_handler): ...here. + (widening_optab_handler): Delete. + (find_widening_optab_handler): Remove permit_non_widening parameter. + (find_widening_optab_handler_and_mode): Likewise. Provide an + override that operates on mode class wrappers. + * optabs-query.c (widening_optab_handler): Delete. + (find_widening_optab_handler_and_mode): Remove permit_non_widening + parameter. Assert that the two modes are the same class and that + the "from" mode is narrower than the "to" mode. Use + convert_optab_handler instead of widening_optab_handler. + * expmed.c (expmed_mult_highpart_optab): Use convert_optab_handler + instead of widening_optab_handler. + * expr.c (expand_expr_real_2): Update calls to + find_widening_optab_handler. + * optabs.c (expand_widen_pattern_expr): Likewise. + (expand_binop_directly): Take the insn_code as a parameter. + (expand_binop): Only call find_widening_optab_handler for + conversion optabs; use optab_handler otherwise. Update calls + to find_widening_optab_handler and expand_binop_directly. + Use convert_optab_handler instead of widening_optab_handler. + * tree-ssa-math-opts.c (convert_mult_to_widen): Update calls to + find_widening_optab_handler and use scalar_mode rather than + machine_mode. + (convert_plusminus_to_widen): Likewise. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (fixed_size_mode): New class. + * rtl.h (get_pool_mode): Return fixed_size_mode. + * gengtype.c (main): Add fixed_size_mode. + * target.def (get_raw_result_mode): Return a fixed_size_mode. + (get_raw_arg_mode): Likewise. + * doc/tm.texi: Regenerate. + * targhooks.h (default_get_reg_raw_mode): Return a fixed_size_mode. + * targhooks.c (default_get_reg_raw_mode): Likewise. + * config/ia64/ia64.c (ia64_get_reg_raw_mode): Likewise. + * config/mips/mips.c (mips_get_reg_raw_mode): Likewise. + * config/msp430/msp430.c (msp430_get_raw_arg_mode): Likewise. + (msp430_get_raw_result_mode): Likewise. + * config/avr/avr-protos.h (regmask): Use as_a + * dbxout.c (dbxout_parms): Require fixed-size modes. + * expr.c (copy_blkmode_from_reg, copy_blkmode_to_reg): Likewise. + * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise. + * omp-low.c (lower_oacc_reductions): Likewise. + * simplify-rtx.c (simplify_immed_subreg): Take fixed_size_modes. + (simplify_subreg): Update accordingly. + * varasm.c (constant_descriptor_rtx::mode): Change to fixed_size_mode. + (force_const_mem): Update accordingly. Return NULL_RTX for modes + that aren't fixed-size. + (get_pool_mode): Return a fixed_size_mode. + (output_constant_pool_2): Take a fixed_size_mode. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/rtl.texi (vec_series): Document. + (const): Say that the operand can be a vec_series. + * rtl.def (VEC_SERIES): New rtx code. + * rtl.h (const_vec_series_p_1): Declare. + (const_vec_series_p): New function. + * emit-rtl.h (gen_const_vec_series): Declare. + (gen_vec_series): Likewise. + * emit-rtl.c (const_vec_series_p_1, gen_const_vec_series) + (gen_vec_series): Likewise. + * optabs.c (expand_mult_highpart): Use gen_const_vec_series. + * simplify-rtx.c (simplify_unary_operation): Handle negations + of vector series. + (simplify_binary_operation_series): New function. + (simplify_binary_operation_1): Use it. Handle VEC_SERIES. + (test_vector_ops_series): New function. + (test_vector_ops): Call it. + * config/powerpcspe/altivec.md (altivec_lvsl): Use + gen_const_vec_series. + (altivec_lvsr): Likewise. + * config/rs6000/altivec.md (altivec_lvsl, altivec_lvsr): Likewise. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * doc/rtl.texi (const): Update description of address constants. + Say that vector constants are allowed too. + * common.md (E, F): Use CONSTANT_P instead of checking for + CONST_VECTOR. + * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of + checking for CONST_VECTOR. + * expmed.c (make_tree): Use build_vector_from_val for a CONST + VEC_DUPLICATE. + * expr.c (expand_expr_real_2): Check for vector modes instead + of checking for CONST_VECTOR. + * rtl.h (const_vec_p): New function. + (const_vec_duplicate_p): Check for a CONST VEC_DUPLICATE. + (unwrap_const_vec_duplicate): Handle them here too. + +2017-11-01 Richard Sandiford + David Malcolm + Alan Hayward + David Sherwood + + * rtl.h (vec_duplicate_p): New function. + * selftest-rtl.c (assert_rtx_eq_at): New function. + * selftest-rtl.h (ASSERT_RTX_EQ): New macro. + (assert_rtx_eq_at): Declare. + * selftest.h (selftest::simplify_rtx_c_tests): Declare. + * selftest-run-tests.c (selftest::run_tests): Call it. + * simplify-rtx.c: Include selftest.h and selftest-rtl.h. + (simplify_unary_operation_1): Recursively handle vector duplicates. + (simplify_binary_operation_1): Likewise. Handle VEC_SELECTs of + vector duplicates. + (simplify_subreg): Handle subregs of vector duplicates. + (make_test_reg, test_vector_ops_duplicate, test_vector_ops) + (selftest::simplify_rtx_c_tests): New functions. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * emit-rtl.h (gen_const_vec_duplicate): Declare. + (gen_vec_duplicate): Likewise. + * emit-rtl.c (gen_const_vec_duplicate_1): New function, split + out from... + (gen_const_vector): ...here. + (gen_const_vec_duplicate, gen_vec_duplicate): New functions. + (gen_rtx_CONST_VECTOR): Use gen_const_vec_duplicate for constants + whose elements are all equal. + * optabs.c (expand_vector_broadcast): Use gen_const_vec_duplicate. + * simplify-rtx.c (simplify_const_unary_operation): Likewise. + (simplify_relational_operation): Likewise. + * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup): + Likewise. + (aarch64_simd_dup_constant): Use gen_vec_duplicate. + (aarch64_expand_vector_init): Likewise. + * config/arm/arm.c (neon_vdup_constant): Likewise. + (neon_expand_vector_init): Likewise. + (arm_expand_vec_perm): Use gen_const_vec_duplicate. + (arm_block_set_unaligned_vect): Likewise. + (arm_block_set_aligned_vect): Likewise. + * config/arm/neon.md (neon_copysignf): Likewise. + * config/i386/i386.c (ix86_expand_vec_perm): Likewise. + (expand_vec_perm_even_odd_pack): Likewise. + (ix86_vector_duplicate_value): Use gen_vec_duplicate. + * config/i386/sse.md (one_cmpl2): Use CONSTM1_RTX. + * config/ia64/ia64.c (ia64_expand_vecint_compare): Use + gen_const_vec_duplicate. + * config/ia64/vect.md (addv2sf3, subv2sf3): Use CONST1_RTX. + * config/mips/mips.c (mips_gen_const_int_vector): Use + gen_const_vec_duplicate. + (mips_expand_vector_init): Use CONST0_RTX. + * config/powerpcspe/altivec.md (abs2, nabs2): Likewise. + (define_split): Use gen_const_vec_duplicate. + * config/rs6000/altivec.md (abs2, nabs2): Use CONST0_RTX. + (define_split): Use gen_const_vec_duplicate. + * config/s390/vx-builtins.md (vec_genmask): Likewise. + (vec_ctd_s64, vec_ctd_u64, vec_ctsl, vec_ctul): Likewise. + * config/spu/spu.c (spu_const): Likewise. + +2017-11-01 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (can_change_dest_mode): Reject changes in + REGMODE_NATURAL_SIZE. + +2017-10-31 Sandra Loosemore + + * configure.ac (--enable-libssp): New. + (gcc_cv_libc_provides_ssp): Check for explicit setting before + trying to determine target-specific default. Adjust indentation. + * configure: Regenerated. + * doc/install.texi (Configuration): Expand --disable-libssp + documentation. + +2017-10-31 Daniel Santos + + config/i386/i386.c (ix86_expand_epilogue): Correct stack + calculation. + +2017-10-31 Martin Jambor + + PR c++/81702 + * gimple-fold.c (gimple_get_virt_method_for_vtable): Remove assert. + +2017-10-31 David Malcolm + + * auto-profile.c (autofdo_source_profile::read): Use + UNKNOWN_LOCATION rather than 0. + * diagnostic-core.h (warning_at_rich_loc): Rename to... + (warning_at): ...this overload. + (warning_at_rich_loc_n): Rename to... + (warning_n): ...this overload. + (error_at_rich_loc): Rename to... + (error_at): ...this overload. + (pedwarn_at_rich_loc): Rename to... + (pedwarn): ...this overload. + (permerror_at_rich_loc): Rename to... + (permerror): ...this overload. + (inform_at_rich_loc): Rename to... + (inform): ...this overload. + * diagnostic.c: (diagnostic_n_impl): Delete location_t-based decl. + (diagnostic_n_impl_richloc): Rename to... + (diagnostic_n_impl): ...this rich_location *-based decl. + (inform_at_rich_loc): Rename to... + (inform): ...this, and add an assertion. + (inform_n): Update for removal of location_t-based diagnostic_n_impl. + (warning_at_rich_loc): Rename to... + (warning_at): ...this, and add an assertion. + (warning_at_rich_loc_n): Rename to... + (warning_n): ...this, and add an assertion. + (warning_n): Update location_t-based implementation for removal of + location_t-based diagnostic_n_impl. + (pedwarn_at_rich_loc): Rename to... + (pedwarn): ...this, and add an assertion. + (permerror_at_rich_loc): Rename to... + (permerror): ...this, and add an assertion. + (error_n): Update for removal of location_t-based diagnostic_n_impl. + (error_at_rich_loc): Rename to... + (error_at): ...this, and add an assertion. + * gcc.c (do_spec_1): Use UNKNOWN_LOCATION rather than 0. + (driver::do_spec_on_infiles): Likewise. + * substring-locations.c (format_warning_va): Update for renaming + of inform_at_rich_loc. + +2017-10-31 Michael Meissner + + * builtins.def (DEF_FLOATN_BUILTIN): Change most _Float and + _FloatX built-in functions so that the variant without the + "__builtin_" prefix is only enabled for the GNU C and Objective C + languages when they are in non-strict ANSI/ISO mode. + (DEF_EXT_LIB_FLOATN_NX_BUILTINS): Likewise. + * target.def (floatn_builtin_p): Add a target hook to control + whether _Float and _FloatX built-in functions without the + "__builtin_" prefix are enabled, and return true for C and + Objective C in the default hook. Include langhooks.h in + targhooks.c. + * targhooks.h (default_floatn_builtin_p): Likewise. + * targhooks.c (default_floatn_builtin_p): Likewise. + * doc/tm.texi.in (TARGET_FLOATN_BUILTIN_P): Document the + floatn_builtin_p target hook. + * doc/tm.texi (TARGET_FLOATN_BUILTIN_P): Likewise. + +2017-10-31 Matthew Fortune + Eric Botcazou + + PR rtl-optimization/81803 + * lra-constraints.c (curr_insn_transform): Also reload the whole + register for a strict subreg no wider than a word if this is for + a WORD_REGISTER_OPERATIONS target. + +2017-10-31 Jason Merrill + + * gdbinit.in: Skip over inlines from timevar.h. + +2017-10-31 Martin Liska + + * doc/gcov.texi: Document new option. + * gcov.c (print_usage): Likewise print it. + (process_args): Support the argument. + (format_count): New function. + (format_gcov): Use the function. + +2017-10-31 Martin Liska + + * gcov.c (struct name_map): do not use typedef. + Define operator== and operator<. + (name_search): Remove. + (name_sort): Remove. + (main): Do not allocate names. + (process_file): Add vertical space. + (generate_results): Use std::find. + (release_structures): Do not release memory. + (find_source): Use std::find. + +2017-10-31 Martin Liska + + * gcov.c (struct line_info): Remove it's typedef. + (line_info::line_info): Add proper ctor. + (line_info::has_block): Do not use a typedef. + (struct source_info): Do not use typedef. + (circuit): Likewise. + (get_cycles_count): Likewise. + (output_intermediate_file): Iterate via vector iterator. + (add_line_counts): Use std::vector methods. + (accumulate_line_counts): Likewise. + (output_lines): Likewise. + +2017-10-31 Martin Liska + + * gcov.c (struct source_info): Remove typedef. + (source_info::source_info): Add proper ctor. + (accumulate_line_counts): Use struct, not it's typedef. + (output_gcov_file): Likewise. + (output_lines): Likewise. + (main): Do not allocate an array. + (output_intermediate_file): Use size of vector container. + (process_file): Resize the vector. + (generate_results): Do not preallocate, use newly added vector + lines. + (release_structures): Do not release sources. + (find_source): Use vector methods. + (add_line_counts): Do not use typedef. + +2017-10-31 Martin Liska + + * doc/gcov.texi: Document that. + * gcov.c (add_line_counts): Mark lines with a non-executed + statement. + (output_line_beginning): Handle such lines. + (output_lines): Pass new argument. + (output_intermediate_file): Print it in intermediate format. + +2017-10-31 Martin Liska + + * color-macros.h: New file. + * diagnostic-color.c: Factor out color related to macros to + color-macros.h. + * doc/gcov.texi: Document -k option. + * gcov.c (INCLUDE_STRING): Include string.h. + (print_usage): Add -k option. + (process_args): Parse it. + (pad_count_string): New function. + (output_line_beginning): Likewise. + (DEFAULT_LINE_START): New macro. + (output_lines): Support color output. + +2017-10-31 Martin Liska + + PR gcov-profile/82633 + * doc/gcov.texi: Document -fkeep-{static,inline}-functions and + their interaction with GCOV infrastructure. + * configure.ac: Add -fkeep-{inline,static}-functions to + coverage_flags. + * configure: Regenerate. + +2017-10-31 Uros Bizjak + + PR target/82772 + * config/alpha/sync.md (fetchop_constr) : Change to "rINM". + +2017-10-31 Segher Boessenkool + + PR target/82674 + * config/rs6000/rs6000.md (allocate_stack): Force update interval + into a register if it does not fit into an immediate offset field. + +2017-10-31 Olivier Hainque + + * gcc/Makefile.in (FLAGS_TO_PASS): Pass libsubdir as well. + +2017-10-31 Julia Koval + + * config.gcc: Add gfniintrin.h. + * config/i386/gfniintrin.h: New. + * config/i386/i386-builtin-types.def + (__builtin_ia32_vgf2p8affineinvqb_v64qi, + __builtin_ia32_vgf2p8affineinvqb_v64qi_mask, + __builtin_ia32_vgf2p8affineinvqb_v32qi, + __builtin_ia32_vgf2p8affineinvqb_v32qi_mask, + __builtin_ia32_vgf2p8affineinvqb_v16qi, + __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): New builtins. + * config/i386/i386-builtin.def (V64QI_FTYPE_V64QI_V64QI_INT_V64QI_UDI, + V32QI_FTYPE_V32QI_V32QI_INT_V32QI_USI, + V16QI_FTYPE_V16QI_V16QI_INT_V16QI_UHI, + V64QI_FTYPE_V64QI_V64QI_INT): New types. + * config/i386/i386.c (ix86_expand_args_builtin): Handle new types. + * config/i386/immintrin.h: Include gfniintrin.h. + * config/i386/sse.md (vgf2p8affineinvqb_*) New pattern. + +2017-10-30 Eric Botcazou + + * gcc.c (HAVE_TARGET_EXECUTABLE_SUFFIX): Remove old kludge. + +2017-10-30 Wilco Dijkstra + + * config/arm/arm.md (ashldi3): Remove shift by 1 expansion. + (arm_ashldi3_1bit): Remove pattern. + (ashrdi3): Remove shift by 1 expansion. + (arm_ashrdi3_1bit): Remove pattern. + (lshrdi3): Remove shift by 1 expansion. + (arm_lshrdi3_1bit): Remove pattern. + * config/arm/arm.c (arm_rtx_costs_internal): Slightly increase + cost of ashldi3 by 1. + * config/arm/neon.md (ashldi3_neon): Remove shift by 1 expansion. + (di3_neon): Likewise. + +2017-10-30 Dominik Infuehr + + * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): Rename + both identically named patterns to (*aarch64_simd_mov) + and (*aarch64_simd_mov). + (*aarch64_simd_mov): Change type attribute to match + pattern alternative. + (*aarch64_simd_mov): Re-order and change type + attributes to match pattern alternative. + +2017-10-30 Steven Munroe + + * config.gcc (powerpc*-*-*): Add emmintrin.h. + * config/rs6000/emmintrin.h: New file. + * config/rs6000/x86intrin.h [__ALTIVEC__]: Include emmintrin.h. + +2017-10-30 Wilco Dijkstra + + * config/arm/vfp.md (movdi_vfp): Merge changes from movdi_vfp_cortexa8. + * (movdi_vfp_cortexa8): Remove pattern. + +2017-10-30 Rainer Orth + + * doc/install.texi (Specific, alpha*-*-*): Remove DEC OSF/1 + etc. reference. + (Specific, alpha*-dec-osf5.1): Remove. + (Specific, mips-sgi-irix5): Remove. + (Specific, mips-sgi-irix6): Remove. + +2017-10-30 Jakub Jelinek + + PR middle-end/22141 + * gimple-ssa-store-merging.c (merged_store_group::apply_stores): Fix + arguments to clear_bit_region_be. + +2017-10-30 Jim Wilson + + * gimplify.c: Include memmodel.h. + +2017-10-30 Martin Jambor + + * omp-grid.c (grid_attempt_target_gridification): Also insert a + condition whether loop should be executed at all. + +2017-10-30 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for + gimple folding of vec_madd() intrinsics. + * config/rs6000/altivec.md (mulv8hi3): Rename altivec_vmladduhm to + fmav8hi4. (altivec_vmladduhm): Rename to fmav8hi4. + * config/rs6000/rs6000-builtin.def: Rename vmladduhm to fmav8hi4 + +2017-10-30 Richard Biener + + PR tree-optimization/82762 + Revert + 2017-10-23 Richard Biener + + PR tree-optimization/82129 + Revert + 2017-08-01 Richard Biener + + PR tree-optimization/81181 + * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ... + (compute_antic): ... end of iteration here. + +2017-10-30 Joseph Myers + + * doc/invoke.texi (C Dialect Options): Document -std=c17, + -std=iso9899:2017 and -std=gnu17. + * doc/standards.texi (C Language): Document C17 support. + * doc/cpp.texi (Overview): Mention -std=c17. + (Standard Predefined Macros): Document C11 and C17 values of + __STDC_VERSION__. Do not refer to C99 support as incomplete. + * doc/extend.texi (Inline): Do not list individual options for + standards newer than C99. + * dwarf2out.c (highest_c_language, gen_compile_unit_die): Handle + "GNU C17". + * config/rl78/rl78.c (rl78_option_override): Handle "GNU C17" + language name. + +2017-10-30 Maxim Ostapenko + + * asan.c (asan_finish_file): Align asan globals array by shadow + granularity. + +2017-10-30 Jakub Jelinek + + PR middle-end/22141 + * gimple-ssa-store-merging.c: Include rtl.h and expr.h. + (struct store_immediate_info): Add bitregion_start and bitregion_end + fields. + (store_immediate_info::store_immediate_info): Add brs and bre + arguments and initialize bitregion_{start,end} from those. + (struct merged_store_group): Add bitregion_start, bitregion_end, + align_base and mask fields. Drop unnecessary struct keyword from + struct store_immediate_info. Add do_merge method. + (clear_bit_region_be): Use memset instead of loop storing zeros. + (merged_store_group::do_merge): New method. + (merged_store_group::merge_into): Use do_merge. Allow gaps in between + stores as long as the surrounding bitregions have no gaps. + (merged_store_group::merge_overlapping): Use do_merge. + (merged_store_group::apply_stores): Test that bitregion_{start,end} + is byte aligned, rather than requiring that start and width are + byte aligned. Drop unnecessary struct keyword from + struct store_immediate_info. Allocate and populate also mask array. + Make start of the arrays relative to bitregion_start rather than + start and size them according to bitregion_{end,start} difference. + (struct imm_store_chain_info): Drop unnecessary struct keyword from + struct store_immediate_info. + (pass_store_merging::gate): Punt if BITS_PER_UNIT or CHAR_BIT is not 8. + (pass_store_merging::terminate_all_aliasing_chains): Drop unnecessary + struct keyword from struct store_immediate_info. + (imm_store_chain_info::coalesce_immediate_stores): Allow gaps in + between stores as long as the surrounding bitregions have no gaps. + Formatting fixes. + (struct split_store): Add orig non-static data member. + (split_store::split_store): Initialize orig to false. + (find_constituent_stmts): Return store_immediate_info *, non-NULL + if there is exactly a single original stmt. Change stmts argument + to pointer from reference, if NULL, don't push anything to it. Add + first argument, use it to optimize skipping over orig stmts that + are known to be before bitpos already. Simplify. + (split_group): Return unsigned int count how many stores are or + would be needed rather than a bool. Add allow_unaligned argument. + Change split_stores argument from reference to pointer, if NULL, + only do a dry run computing how many stores would be produced. + Rewritten algorithm to use both alignment and misalign if + !allow_unaligned and handle bitfield stores with gaps. + (imm_store_chain_info::output_merged_store): Set start_byte_pos + from bitregion_start instead of start. Compute allow_unaligned + here, if true, do 2 split_group dry runs to compute which one + produces fewer stores and prefer aligned if equal. Punt if + new count is bigger or equal than original before emitting any + statements, rather than during that. Remove no longer needed + new_ssa_names tracking. Replace num_stmts with + split_stores.length (). Use 32-bit stack allocated entries + in split_stores auto_vec. Try to reuse original store lhs/rhs1 + if possible. Handle bitfields with gaps. + (pass_store_merging::execute): Ignore bitsize == 0 stores. + Compute bitregion_{start,end} for the stores and construct + store_immediate_info with that. Formatting fixes. + +2017-10-30 Uros Bizjak + + PR target/82725 + * config/i386/i386.c (legitimate_pic_address_disp_p): Allow + UNSPEC_DTPOFF and UNSPEC_NTPOFF with SImode immediate offset. + +2017-10-29 Jim Wilson + + * gimplify.c: Include tm_p.h. + + * common.opt (gcoff): Re-add as ignored option. + (gcoff1, gcoff2, gcoff3): Likewise. + + * Makefile.in (OBJS): Delete sdbout.o. + (GTFILES): Delete $(srcdir)/sdbout.c. + * debug.h: Delete sdb_debug_hooks. + * final.c: Delete sdbout.h include. + (final_scan_insn): Delete SDB_DEBUG check. + (rest_of_clean_state): Likewise. + * output.h: Delete sdb_begin_function_line. + * sdbout.c: Delete. + * sdbout.h: Delete. + * toplev.c: Delete sdbout.h include. + (process_options): Delete SDB_DEBUG check. + * tree-core.h (tree_type_common): Delete pointer field of + tree_type_symtab. + * tree.c (copy_node): Clear TYPE_SYMTAB_DIE instead of + TYPE_SYMTAB_POINTER. + * tree.h (TYPE_SYMTAB_POINTER): Delete. + (TYPE_SYMTAB_IS_POINTER): Delete. + (TYPE_SYMTAB_IS_DIE): Renumber. + * xcoffout.c: Refer to former sdbout.c file. + (xcoffout_begin_prologue): Use past tense for sdbout.c reference. + + * doc/install.texi (--with-stabs): Delete COFF and ECOFF info. + * doc/invoke.texi (SEEALSO): Delete adb and sdb references. + (Debugging Options): Delete -gcoff. + (-gstabs): Delete SDB reference. + (-gcoff): Delete. + (-gcoff@var{level}): Delete. + * doc/passes.texi (Debugging information output): Delete SDB and + sdbout.c references. + * doc/tm.texi: Regenerate. + * doc/tm.texi.in (DWARF_CIE_DATA_ALIGNMENT): Delete SDB from xref. + (SDB and DWARF): Change node name to DWARF and delete SDB and COFF + references. + (DEBUGGER_AUTO_OFFSET): Delete COFF and SDB references. + (PREFERRED_DEBUGGING_TYPE): Delete SDB_DEBUG and -gcoff references. + (SDB_DEBUGGING_INFO): Delete. + (PUT_SDB_@dots{}, SDB_DELIM, SDB_ALLOW_UNKNOWN_REFERENCES) + SDB_ALLOW_FORWARD_REFERENCES, SDB_OUTPUT_SOURCE_LINE): Delete. + * target.def (output_source_filename): Delete COFF reference. + + * common.opt (gcoff): Delete. + (gxcoff+): Update Negative chain. + * defaults.h: Delete all references to SDB_DEBUGGING_INFO and + SDB_DEBUG. + * dwarf2out.c (gen_array_type_die): Change SDB to debuggers. + * flag-types.h (enum debug_info_type): Delete SDB_DEBUG. + * function.c (number_blocks): Delete SDB_DEBUGGING_INFO, SDB_DEBUG, + and SDB references. + (expand_function_start): Change sdb reference to past tense. + (expand_function_end): Change sdb reference to past tense. + * gcc.c (cpp_unique_options): Delete gcoff3 reference. + * opts.c (debug_type_names): Delete coff entry. + (common_handle_option): Delete OPT_gcoff case. + * system.h (SDB_DEBUG, SDB_DEBUGGING_INFO): Poison. + + * config/dbxcoff.h (PREFERRED_DEBUGGING_TYPE): Set to DBX_DEBUG. + * config/cris/cris.h: Delete SDB reference in comment. + * config/i386/cygming.h: Don't define SDB_DEBUGGING_INFO. + (ASM_DECLARE_FUNCTION_NAME): Delete SDB reference from comment. + * config/i386/gas.h: Don't define SDB_DEBUGGING_INFO. + * config/i386/i386.c (svr4_dbx_register_map): Change SDB references + to past tense. + (ix86_expand_prologue): Likewise. + * config/i386/winnt.c (i386_pe_start_function): Don't check SDB_DEBUG. + * config/ia64/ia64.h: Likewise. + * config/m68k/m68kelf.h (DBX_REGISTER_NUMBER): Delete SDB reference. + * config/mips/mips.h (SUBTARGET_ASM_DEBUGGING_SPEC): Delete gcoff* + support. + * config/mmix/mmix.h: Likewise. + * config/nds32/nds32.c: Likewise. + * config/stormy/storym16.h: Likewise. + * config/visium/visium.h: Likewise. + * config/vx-common.h (SDB_DEBUGGING_INFO): Delete undef. + +2017-10-28 Sandra Loosemore + + * config/nios2/nios2.h (FRAME_GROWS_DOWNWARD): Define to 1. + * config/nios2/nios2.c (nios2_initial_elimination_offset): Make + FRAME_POINTER_REGNUM point at high end of local var area. + +2017-10-27 Eric Botcazou + + * bb-reorder.c (find_traces_1_round): Fix off-by-one index. + Move comment around. Do not reset best_edge for a copiable + destination if the copy would cause a partition change. + (better_edge_p): Remove redundant check. + +2017-10-27 Uros Bizjak + + * config/i386/i386-protos.h (ix86_fp_compare_mode): Remove prototype. + +2017-10-27 Michael Meissner + + * builtins.c (CASE_MATHFN_FLOATN): New helper macro to add cases + for math functions that have _Float and _FloatX variants. + (mathfn_built_in_2): Add support for math functions that have + _Float and _FloatX variants. + (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro. + (expand_builtin_mathfn_ternary): Add support for fma with + _Float and _FloatX variants. + (expand_builtin): Likewise. + (fold_builtin_3): Likewise. + * builtins.def (DEF_EXT_LIB_FLOATN_NX_BUILTINS): New macro to + create math function _Float and _FloatX variants as external + library builtins. + (BUILT_IN_COPYSIGN _Float and _FloatX variants) Use + DEF_EXT_LIB_FLOATN_NX_BUILTINS to make built-in functions using + the __builtin_ prefix and if not strict ansi, without the prefix. + (BUILT_IN_FABS _Float and _FloatX variants): Likewise. + (BUILT_IN_FMA _Float and _FloatX variants): Likewise. + (BUILT_IN_FMAX _Float and _FloatX variants): Likewise. + (BUILT_IN_FMIN _Float and _FloatX variants): Likewise. + (BUILT_IN_NAN _Float and _FloatX variants): Likewise. + (BUILT_IN_SQRT _Float and _FloatX variants): Likewise. + * builtin-types.def (BT_FN_FLOAT16_FLOAT16_FLOAT16_FLOAT16): New + function signatures for fma _Float and _FloatX variants. + (BT_FN_FLOAT32_FLOAT32_FLOAT32_FLOAT32): Likewise. + (BT_FN_FLOAT64_FLOAT64_FLOAT64_FLOAT64): Likewise. + (BT_FN_FLOAT128_FLOAT128_FLOAT128_FLOAT128): Likewise. + (BT_FN_FLOAT32X_FLOAT32X_FLOAT32X_FLOAT32X): Likewise. + (BT_FN_FLOAT64X_FLOAT64X_FLOAT64X_FLOAT64X): Likewise. + (BT_FN_FLOAT128X_FLOAT128X_FLOAT128X_FLOAT128X): Likewise. + * gencfn-macros.c (print_case_cfn): Add support for math functions + that have _Float and _FloatX variants. + (print_define_operator_list): Likewise. + (fltfn_suffixes): Likewise. + (main): Likewise. + * internal-fn.def (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro + for math functions that have _Float and _FloatX variants. + (SQRT): Add support for sqrt, copysign, fmin and fmax _Float + and _FloatX variants. + (COPYSIGN): Likewise. + (FMIN): Likewise. + (FMAX): Likewise. + * fold-const.c (tree_call_nonnegative_warnv_p): Add support for + copysign, fma, fmax, fmin, and sqrt _Float and _FloatX + variants. + (integer_valued_read_call_p): Likewise. + * fold-const-call.c (fold_const_call_ss): Likewise. + (fold_const_call_sss): Add support for copysign, fmin, and fmax + _Float and _FloatX variants. + (fold_const_call_ssss): Add support for fma _Float and + _FloatX variants. + * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Add + support for copysign and fma _Float and _FloatX variants. + (backprop::process_builtin_call_use): Likewise. + * tree-call-cdce.c (can_test_argument_range); Add support for + sqrt _Float and _FloatX variants. + (edom_only_function): Likewise. + (get_no_error_domain): Likewise. + * tree-ssa-math-opts.c (internal_fn_reciprocal): Likewise. + * tree-ssa-reassoc.c (attempt_builtin_copysign): Add support for + copysign _Float and _FloatX variants. + * config/rs6000/rs6000-builtin.def (SQRTF128): Delete, this is now + handled by machine independent code. + (FMAF128): Likewise. + * doc/cpp.texi (Common Predefined Macros): Document defining + __FP_FAST_FMAF and __FP_FAST_FMAFX if the backend supports + fma _Float and _FloatX variants. + +2017-10-27 Uros Bizjak + + PR target/82692 + * config/i386/i386-modes.def (CCFPU): Remove definition. + * config/i386/i386.c (put_condition_mode): Remove CCFPU mode handling. + (ix86_cc_modes_compatible): Ditto. + (ix86_expand_carry_flag_compare): Ditto. + (ix86_expand_int_movcc): Ditto. + (ix86_expand_int_addcc): Ditto. + (ix86_reverse_condition): Ditto. + (ix86_unordered_fp_compare): Rename from ix86_fp_compare_mode. + Return true/false for unordered/ordered fp comparisons. + (ix86_cc_mode): Always return CCFPmode for float mode comparisons. + (ix86_prepare_fp_compare_args): Update for rename. + (ix86_expand_fp_compare): Update for rename. Generate unordered + compare RTXes wrapped with UNSPEC_NOTRAP unspec. + (ix86_expand_sse_compare_and_jump): Ditto. + * config/i386/predicates.md (fcmov_comparison_operator): + Remove CCFPU mode handling. + (ix86_comparison_operator): Ditto. + (ix86_carry_flag_operator): Ditto. + * config/i386/i386.md (UNSPEC_NOTRAP): New unspec. + (*cmpu_i387): Wrap compare RTX with UNSPEC_NOTRAP unspec. + (*cmpu_cc_i387): Ditto. + (FPCMP): Remove mode iterator. + (unord): Remove mode attribute. + (unord_subst): New define_subst transformation + (unord): New define_subst attribute. + (unordered): Ditto. + (*cmpi): Rewrite using unord_subst transformation. + (*cmpixf_i387): Ditto. + * config/i386/sse.md (_comi): Merge + from _comi and _ucomi + using unord_subst transformation. + * config/i386/subst.md (SUBST_A): Remove CCFP and CCFPU modes. + (round_saeonly): Also handle CCFP mode. + * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_NOTRAP unspec. + Remove UNSPEC_SAHF unspec handling. + +2017-10-27 Jan Hubicka + + * x86-tune.def (X86_TUNE_INTER_UNIT_MOVES_TO_VEC): Disable for Zen. + +2017-10-27 Jeff Law + + * gimple-ssa-sprintf.c: Include domwalk.h. + (class sprintf_dom_walker): New class, derived from dom_walker. + (sprintf_dom_walker::before_dom_children): New function. + (struct call_info): Moved into sprintf_dom_walker class + (compute_formath_length, handle_gimple_call): Likewise. + (sprintf_length::execute): Call the dominator walker rather + than walking the statements. + + * tree-vrp.c (check_all_array_refs): Do not use wi->info to smuggle + gimple statement locations. + (check_array_bounds): Corresponding changes. Get the statement's + location directly from wi->stmt. + +2017-10-27 Palmer Dabbelt + + PR target/82717 + * doc/invoke.texi (RISC-V) <-mabi>: Correct and improve. + +2017-10-27 Jan Hubicka + + * config/i386/x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY, + X86_TUNE_MOVX): Disable for Haswell and newer CPUs. + +2017-10-27 Jakub Jelinek + + PR target/82703 + * config/i386/i386-protos.h (maybe_get_pool_constant): Removed. + * config/i386/i386.c (maybe_get_pool_constant): Removed. + (ix86_split_to_parts): Use avoid_constant_pool_reference instead of + maybe_get_pool_constant. + * config/i386/predicates.md (zero_extended_scalar_load_operand): + Likewise. + +2017-10-27 Rainer Orth + + * doc/install.texi (Specific, i?86-*-solaris2.10): Simplify gas + 2.26 caveat. Update gas and gld versions. + (Specific, *-*-solaris2*): Update binutils version. Remove caveat + reference. + +2017-10-27 Prathamesh Kulkarni + + * cgraph.h (set_malloc_flag): Declare. + * cgraph.c (set_malloc_flag_1): New function. + (set_malloc_flag): Likewise. + * ipa-fnsummary.h (ipa_call_summary): Add new field is_return_callee. + * ipa-fnsummary.c (ipa_call_summary::reset): Set is_return_callee to + false. + (read_ipa_call_summary): Add support for reading is_return_callee. + (write_ipa_call_summary): Stream is_return_callee. + * ipa-inline.c (ipa_inline): Remove call to ipa_free_fn_summary. + * ipa-pure-const.c: Add headers ssa.h, alloc-pool.h, symbol-summary.h, + ipa-prop.h, ipa-fnsummary.h. + (pure_const_names): Change to static. + (malloc_state_e): Define. + (malloc_state_names): Define. + (funct_state_d): Add field malloc_state. + (varying_state): Set malloc_state to STATE_MALLOC_BOTTOM. + (check_retval_uses): New function. + (malloc_candidate_p): Likewise. + (analyze_function): Add support for malloc attribute. + (pure_const_write_summary): Stream malloc_state. + (pure_const_read_summary): Add support for reading malloc_state. + (dump_malloc_lattice): New function. + (propagate_malloc): New function. + (warn_function_malloc): New function. + (ipa_pure_const::execute): Call propagate_malloc and + ipa_free_fn_summary. + (pass_local_pure_const::execute): Add support for malloc attribute. + * ssa-iterators.h (RETURN_FROM_IMM_USE_STMT): New macro. + * doc/invoke.texi: Document Wsuggest-attribute=malloc. + +2017-10-27 Martin Liska + + PR gcov-profile/82457 + * doc/invoke.texi: Document that one needs a non-strict ISO mode + for fork-like functions to be properly instrumented. + +2017-10-27 Richard Biener + + PR middle-end/81659 + * tree-eh.c (pass_lower_eh_dispatch::execute): Free dominator + info when we redirected EH. + +2017-10-26 Michael Collison + + * config/aarch64/aarch64.md(_trunc>2): + New pattern. + (_trunchf2: New pattern. + (_trunc2: New pattern. + * config/aarch64/iterators.md (wv): New mode attribute. + (vf, VF): New mode attributes. + (vgp, VGP): New mode attributes. + (s): Update attribute with SImode and DImode prefixes. + +2017-10-26 Sandra Loosemore + + * config/nios2/constraints.md ("S"): Match r0rel_constant_p too. + * config/nios2/nios2-protos.h (r0rel_constant_p): Declare. + * config/nios2/nios2.c: (nios2_r0rel_sec_regex): New. + (nios2_option_overide): Initialize it. Don't allow R0-relative + addressing with PIC. + (nios2_rtx_costs): Handle r0rel_constant_p like gprel_constant_p. + (nios2_symbolic_constant_p): Likewise. + (nios2_legitimate_address_p): Likewise. + (nios2_r0rel_section_name_p): New. + (nios2_symbol_ref_in_r0rel_data_p): New. + (nios2_emit_move_sequence): Handle r0rel_constant_p. + (r0rel_constant_p): New. + (nios2_print_operand_address): Handle r0rel_constant_p. + (nios2_cdx_narrow_form_p): Likewise. + * config/nios2/nios2.opt (mr0rel-sec=): New option. + * doc/invoke.texi (Option Summary): Add -mr0rel-sec. + (Nios II Options): Document -mr0rel-sec. + +2017-10-26 Sandra Loosemore + + * config/nios2/nios2.c: Include xregex.h. + (nios2_gprel_sec_regex): New. + (nios2_option_overide): Initialize it. Don't allow GP-relative + addressing with PIC. + (nios2_small_section_name_p): Check for regex match. + * config/nios2/nios2.opt (mgprel-sec=): New option. + * doc/invoke.texi (Option Summary): Add -mgprel-sec. + (Nios II Options): Document -mgprel-sec. + +2017-10-26 Jim Wilson + + * doc/invoke.texi (-fdebug-prefix-map): Expand documentation. + +2017-10-26 Tom de Vries + + PR tree-optimization/82707 + * gimple.c (gimple_copy): Fix unsharing of + GIMPLE_OMP_{SINGLE,TARGET,TEAMS}. + +2017-10-26 Olga Makhotina + + * config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask, + _mm512_cmple_pd_mask, _mm512_cmplt_pd_mask, + _mm512_cmpneq_pd_mask, _mm512_cmpnle_pd_mask, + _mm512_cmpnlt_pd_mask, _mm512_cmpord_pd_mask, + _mm512_cmpunord_pd_mask, _mm512_mask_cmpeq_pd_mask, + _mm512_mask_cmple_pd_mask, _mm512_mask_cmplt_pd_mask, + _mm512_mask_cmpneq_pd_mask, _mm512_mask_cmpnle_pd_mask, + _mm512_mask_cmpnlt_pd_mask, _mm512_mask_cmpord_pd_mask, + _mm512_mask_cmpunord_pd_mask, _mm512_cmpeq_ps_mask, + _mm512_cmple_ps_mask, _mm512_cmplt_ps_mask, + _mm512_cmpneq_ps_mask, _mm512_cmpnle_ps_mask, + _mm512_cmpnlt_ps_mask, _mm512_cmpord_ps_mask, + _mm512_cmpunord_ps_mask, _mm512_mask_cmpeq_ps_mask, + _mm512_mask_cmple_ps_mask, _mm512_mask_cmplt_ps_mask, + _mm512_mask_cmpneq_ps_mask, _mm512_mask_cmpnle_ps_mask, + _mm512_mask_cmpnlt_ps_mask, _mm512_mask_cmpord_ps_mask, + _mm512_mask_cmpunord_ps_mask): New intrinsics. + +2017-10-26 Michael Meissner + + * config/rs6000/aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double + default to IBM. + * config/rs6000/darwin.h (TARGET_IEEEQUAD_DEFAULT): Likewise. + * config/rs6000/rs6000.opt (-mabi=ieeelongdouble): Move the + warning to rs6000.c. Remove the Undocumented flag, since it has + been documented. + (-mabi=ibmlongdouble): Likewise. + * config/rs6000/rs6000.c (TARGET_IEEEQUAD_DEFAULT): If it is not + already set, set the default format for long double. + (rs6000_debug_reg_global): Print whether long double is IBM or + IEEE. + (rs6000_option_override_internal): Rework setting long double + format. Only warn if the user is changing the long double default + and they did not use -Wno-psabi. + * doc/invoke.texi (PowerPC options): Update the documentation for + -mabi=ieeelongdouble and -mabi=ibmlongdouble. + +2017-10-26 Richard Sandiford + Alan Hayward + David Sherwood + + * rtl.h (wider_subreg_mode): New function. + * ira.h (ira_sort_regnos_for_alter_reg): Take a machine_mode * + rather than an unsigned int *. + * ira-color.c (regno_max_ref_width): Replace with... + (regno_max_ref_mode): ...this new variable. + (coalesced_pseudo_reg_slot_compare): Update accordingly. + Use wider_subreg_mode. + (ira_sort_regnos_for_alter_reg): Likewise. Take a machine_mode * + rather than an unsigned int *. + * lra-constraints.c (uses_hard_regs_p): Use wider_subreg_mode. + (process_alt_operands): Likewise. + (invariant_p): Likewise. + * lra-spills.c (assign_mem_slot): Likewise. + (add_pseudo_to_slot): Likewise. + * lra.c (collect_non_operand_hard_regs): Likewise. + (add_regs_to_insn_regno_info): Likewise. + * reload1.c (regno_max_ref_width): Replace with... + (regno_max_ref_mode): ...this new variable. + (reload): Update accordingly. Update call to + ira_sort_regnos_for_alter_reg. + (alter_reg): Update to use regno_max_ref_mode. Call wider_subreg_mode. + (init_eliminable_invariants): Update to use regno_max_ref_mode. + (scan_paradoxical_subregs): Likewise. + +2017-10-26 Wilco Dijkstra + + * config/aarch64/aarch64.h (EXIT_IGNORE_STACK): Set if alloca is used. + (aarch64_frame): Add emit_frame_chain boolean. + * config/aarch64/aarch64.c (aarch64_frame_pointer_required) + Move eh_return case to aarch64_layout_frame. + (aarch64_layout_frame): Initialize emit_frame_chain. + (aarch64_expand_prologue): Use emit_frame_chain. + +2017-10-26 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_layout_frame): + Ensure LR is always stored at the bottom of the callee-saves. + Remove rarely used frame layout which saves callee-saves at top of + frame, so the store of LR can be used as a valid probe in all cases. + +2017-10-26 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement): + Improve unaligned TImode/TFmode base/offset split. + +2017-10-26 Richard Sandiford + Alan Hayward + David Sherwood + + * caller-save.c (mark_referenced_regs): Use read_modify_subreg_p. + * combine.c (find_single_use_1): Likewise. + (expand_field_assignment): Likewise. + (move_deaths): Likewise. + * lra-constraints.c (simplify_operand_subreg): Likewise. + (curr_insn_transform): Likewise. + * lra.c (collect_non_operand_hard_regs): Likewise. + (add_regs_to_insn_regno_info): Likewise. + * rtlanal.c (reg_referenced_p): Likewise. + (covers_regno_no_parallel_p): Likewise. + +2017-10-26 Richard Sandiford + + * wide-int-print.cc (print_hex): Loop based on extract_uhwi. + Don't print any bits outside the precision of the value. + * wide-int.cc (test_printing): Add some new tests. + +2017-10-26 Rainer Orth + + * configure.ac (gcc_cv_as_ix86_xbrace_comment): Check if assembler + supports -xbrace_comment option. + * configure: Regenerate. + * config.in: Regenerate. + * config/i386/sol2.h (ASM_XBRACE_COMMENT_SPEC): Define. + (ASM_CPU_SPEC): Use it. + +2017-10-26 Richard Sandiford + + * target.def (static_rtx_alignment): New hook. + * targhooks.h (default_static_rtx_alignment): Declare. + * targhooks.c (default_static_rtx_alignment): New function. + * doc/tm.texi.in (TARGET_STATIC_RTX_ALIGNMENT): New hook. + * doc/tm.texi: Regenerate. + * varasm.c (force_const_mem): Use targetm.static_rtx_alignment + instead of targetm.constant_alignment. Remove call to + set_mem_attributes. + * config/cris/cris.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine. + (cris_preferred_mininum_alignment): New function, split out from... + (cris_constant_alignment): ...here. + (cris_static_rtx_alignment): New function. + * config/i386/i386.c (ix86_static_rtx_alignment): New function, + split out from... + (ix86_constant_alignment): ...here. + (TARGET_STATIC_RTX_ALIGNMENT): Redefine. + * config/mmix/mmix.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine. + (mmix_static_rtx_alignment): New function. + * config/spu/spu.c (spu_static_rtx_alignment): New function. + (TARGET_STATIC_RTX_ALIGNMENT): Redefine. + +2017-10-26 Tamar Christina + + PR target/81800 + * config/aarch64/aarch64.md (lrint2): + Add flag_trapping_math and flag_fp_int_builtin_inexact. + +2017-10-25 Palmer Dabbelt + + * config/riscv/riscv.md (ZERO_EXTEND_LOAD): Define. + * config/riscv/pic.md (local_pic_load): Rename to local_pic_load_s, + mark as a sign-extending load. + (local_pic_load_u): Define. + +2017-10-25 Eric Botcazou + + PR middle-end/82062 + * fold-const.c (operand_equal_for_comparison_p): Also return true + if ARG0 is a simple variant of ARG1 with narrower precision. + (fold_ternary_loc): Always pass unstripped operands to the predicate. + +2017-10-25 Jan Hubicka + + * i386.c (ix86_builtin_vectorization_cost): Compute scatter/gather + cost correctly. + * i386.h (processor_costs): Add gather_static, gather_per_elt, + scatter_static, scatter_per_elt. + * x86-tune-costs.h: Add new cost entries. + +2017-10-25 Richard Biener + + * tree-ssa-sccvn.h (vn_eliminate): Declare. + * tree-ssa-pre.c (class eliminate_dom_walker, eliminate, + class pass_fre): Move to ... + * tree-ssa-sccvn.c (class eliminate_dom_walker, vn_eliminate, + class pass_fre): ... here and adjust for statistics. + +2017-10-25 Jakub Jelinek + + PR libstdc++/81706 + * attribs.c (attribute_value_equal): Use omp_declare_simd_clauses_equal + for comparison of OMP_CLAUSEs regardless of flag_openmp{,_simd}. + (duplicate_one_attribute, copy_attributes_to_builtin): New functions. + * attribs.h (duplicate_one_attribute, copy_attributes_to_builtin): New + declarations. + +2017-10-25 Richard Biener + + * tree-ssa-pre.c (need_eh_cleanup, need_ab_cleanup, el_to_remove, + el_to_fixup, el_todo, el_avail, el_avail_stack, eliminate_avail, + eliminate_push_avail, eliminate_insert): Move inside... + (class eliminate_dom_walker): ... this class in preparation + of move. + (fini_eliminate): Remove by merging with ... + (eliminate): ... this function. Adjust for class changes. + (pass_pre::execute): Remove fini_eliminate call. + (pass_fre::execute): Likewise. + +2017-10-24 Jakub Jelinek + + PR target/82460 + * config/i386/sse.md (UNSPEC_VPERMI2, UNSPEC_VPERMI2_MASK): Remove. + (VPERMI2, VPERMI2I): New mode iterators. + (_vpermi2var3_maskz): Remove 3 define_expand patterns. + (_vpermi2var3): Remove 3 define_insn + patterns. + (_vpermi2var3_mask): New define_expand using VPERMI2 + mode iterator. Remove 3 old define_insn patterns. + (*_vpermi2var3_mask): 2 new define_insn patterns. + (_vpermt2var3_maskz): Adjust 1 define_expand to use + VPERMI2 mode iterator, remove the other two expanders. + (_vpermt2var3): Adjust 1 define_insn + to use VPERMI2 mode iterator, add another alternative for vpermi2* + instructions, remove the other two patterns. + (_vpermt2var3_mask): Adjust 1 define_insn to use VPERMI2 + mode iterator, remove the other two patterns. + * config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Renamed to ... + (ix86_expand_vec_perm_vpermt2): ... this. Swap mask and op0 + arguments, use gen_*vpermt2* expanders instead of gen_*vpermi2* + and adjust argument order accordingly. + (ix86_expand_vec_perm): Adjust caller. + (expand_vec_perm_1): Likewise. + (expand_vec_perm_vpermi2_vpshub2): Rename to ... + (expand_vec_perm_vpermt2_vpshub2): ... this. + (ix86_expand_vec_perm_const_1): Adjust caller. + (ix86_vectorize_vec_perm_const_ok): Adjust comments. + + PR target/82370 + * config/i386/sse.md (VIMAX_AVX2): Remove V4TImode. + (VIMAX_AVX2_AVX512BW, VIMAX_AVX512VL): New mode iterators. + (vec_shl_): Remove unused expander. + (avx512bw_3): New define_insn. + (_ashl3, _lshr3): Replaced by ... + (_3): ... this. New define_insn. + +2017-10-24 Paolo Carlini + + PR c++/82466 + * doc/invoke.texi ([Wbuiltin-declaration-mismatch]): Extend + description. + +2017-10-24 Wilco Dijkstra + + PR rtl-optimization/82396 + * gcc/haifa-sched.c (ready_sort_real): Remove qsort workaround. + (autopref_multipass_init): Simplify initialization. + (autopref_rank_data): Simplify sort order. + * gcc/sched-int.h (autopref_multipass_data_): Remove + multi_mem_insn_p, min_offset and max_offset. + +2017-10-24 Wilco Dijkstra + + PR middle-end/60580 + * config/aarch64/aarch64.c (aarch64_frame_pointer_required) + Check special value of flag_omit_frame_pointer. + (aarch64_can_eliminate): Likewise. + (aarch64_override_options_after_change_1): Simplify handling of + -fomit-frame-pointer and -fomit-leaf-frame-pointer. + +2017-10-24 Richard Biener + + PR tree-optimization/82697 + * tree-ssa-phiopt.c (cond_store_replacement): Use alias-set + zero for conditional load and unconditional store. + +2017-10-24 H.J. Lu + + * doc/install.texi: Document bootstrap-cet. + +2017-10-24 H.J. Lu + + PR target/82659 + * config/i386/i386.c (rest_of_insert_endbranch): Don't insert + ENDBR instruction at function entrance if function is only + called directly. + +2017-10-24 Jakub Jelinek + + PR target/82628 + * config/i386/i386.md (addcarry, subborrow): Change + patterns to better describe from which operation the CF is computed. + (addcarry_0, subborrow_0): New patterns. + * config/i386/i386.c (ix86_expand_builtin) : Pass + one LTU with [DT]Imode and another one with [SD]Imode. If arg0 + is 0, use _0 suffixed expanders instead of emitting a comparison + before it. + +2017-10-06 Sergey Shalnov + + * config/i386/i386.md(*movsf_internal, *movdf_internal): + Avoid 512-bit AVX modes for TARGET_PREFER_AVX256. + +2017-10-24 Eric Botcazou + + PR middle-end/82569 + * tree-outof-ssa.h (always_initialized_rtx_for_ssa_name_p): Delete. + * expr.c (expand_expr_real_1) : Revert latest change. + * loop-iv.c (iv_get_reaching_def): Likewise. + * cfgexpand.c (expand_one_ssa_partition): Initialize the RTX if the + variable is promoted and the partition contains undefined values. + +2017-10-23 Sandra Loosemore + + * config/nios2/nios2.c (nios2_rtx_costs): Make costs better + reflect reality. + (nios2_address_cost): Define. + (nios2_legitimize_address): Recognize (exp + constant) directly. + (TARGET_ADDRESS_COST): Define. + +2017-10-23 Sandra Loosemore + + * config/nios2/nios2-protos.h (nios2_large_constant_p): Declare. + (nios2_symbolic_memory_operand_p): Declare. + (nios2_split_large_constant): Declare. + (nios2_split_symbolic_memory_operand): Declare. + * config/nios2/nios2.c: Adjust includes. + (nios2_symbolic_constant_allowed): New. + (nios2_symbolic_constant_p): New. + (nios2_plus_symbolic_constant_p): New. + (nios2_valid_addr_expr_p): Recognize addresses involving + symbolic constants. + (nios2_legitimate_address_p): Likewise, also LO_SUM. + (nios2_symbolic_memory_operand_p): New. + (nios2_large_constant_p): New. + (nios2_split_large_constant): New. + (nios2_split_plus_large_constant): New. + (nios2_split_symbolic_memory_operand): New. + (nios2_legitimize_address): Code refactoring. Handle addresses + involving symbolic constants. + (nios2_emit_move_sequence): Likewise. + (nios2_print_operand): Improve error output. + (nios2_print_operand_address): Handle LO_SUM. + (nios2_cdx_narrow_form_p): Likewise. + * config/nios2/nios2.md (movqi_internal): Add splitter for memory + operands involving symbolic constants. + (movhi_internal, movsi_internal): Likewise. + (zero_extendhisi2, zero_extendqi2): Likewise. + (extendhisi2, extendqi2): Likewise. + +2017-10-23 Sandra Loosemore + + * tree-pass.h (PROP_rtl_split_insns): Define. + * recog.c (pass_data_split_all_insns): Provide PROP_rtl_split_insns. + +2017-10-23 Sandra Loosemore + + * config/nios2/nios2.c (TARGET_LRA_P): Don't override. + +2017-10-23 Jakub Jelinek + + PR debug/82630 + * target.def (const_not_ok_for_debug_p): Default to + default_const_not_ok_for_debug_p instead of hook_bool_rtx_false. + * targhooks.h (default_const_not_ok_for_debug_p): New declaration. + * targhooks.c (default_const_not_ok_for_debug_p): New function. + * dwarf2out.c (const_ok_for_output_1): Only reject UNSPECs for + which targetm.const_not_ok_for_debug_p returned true. + * config/arm/arm.c (arm_const_not_ok_for_debug_p): Return true + for UNSPECs. + * config/powerpcspe/powerpcspe.c (rs6000_const_not_ok_for_debug_p): + Likewise. + * config/rs6000/rs6000.c (rs6000_const_not_ok_for_debug_p): Likewise. + * config/i386/i386.c (ix86_delegitimize_address_1): Don't delegitimize + UNSPEC_GOTOFF with addend into addend - _GLOBAL_OFFSET_TABLE_ + symbol + if !base_term_p. + (ix86_const_not_ok_for_debug_p): New function. + (i386_asm_output_addr_const_extra): Handle UNSPEC_GOTOFF. + (TARGET_CONST_NOT_OK_FOR_DEBUG_P): Redefine. + +2017-10-23 David Malcolm + + PR bootstrap/82610 + * system.h: Conditionally include "unique-ptr.h" if + INCLUDE_UNIQUE_PTR is defined. + * unique-ptr-tests.cc: Remove include of "unique-ptr.h" in favor + of defining INCLUDE_UNIQUE_PTR before including "system.h". + +2017-10-23 Sebastian Perta + + * config/rl78/rl78.md: New define_expand "subdi3". + +2017-10-23 H.J. Lu + + PR target/82673 + * config/i386/i386.c (ix86_finalize_stack_frame_flags): Skip + DF_REF_INSN if DF_REF_INSN_INFO is false. + +2017-10-23 Jan Hubicka + + * i386.c (dimode_scalar_chain::compute_convert_gain): Use + xmm_move instead of sse_move. + (sse_store_index): New function. + (ix86_register_move_cost): Be more sensible about mismatch stall; + model AVX moves correctly; make difference between sse->integer and + integer->sse. + (ix86_builtin_vectorization_cost): Model correctly aligned and unaligned + moves; make difference between SSE and AVX. + * i386.h (processor_costs): Remove sse_move; add xmm_move, ymm_move + and zmm_move. Increase size of sse load and store tables; + add unaligned load and store tables; add ssemmx_to_integer. + * x86-tune-costs.h: Update all entries according to real + move latencies from Agner Fog's manual and chip documentation. + +2017-10-23 Jakub Jelinek + + PR target/82628 + * config/i386/predicates.md (x86_64_dwzext_immediate_operand): New. + * config/i386/constraints.md (Wf): New constraint. + * config/i386/i386.md (UNSPEC_SBB): New unspec. + (cmp_doubleword): Removed. + (sub3_carry_ccc, *sub3_carry_ccc_1): New patterns. + (sub3_carry_ccgz): Use unspec instead of compare. + * config/i386/i386.c (ix86_expand_branch) : Don't + expand with cmp_doubleword. For LTU and GEU use + sub3_carry_ccc instead of sub3_carry_ccgz and use CCCmode. + + * common.opt (gcolumn-info): Enable by default. + * doc/invoke.texi (gcolumn-info): Document new default. + +2017-10-23 Richard Biener + + PR tree-optimization/82672 + * graphite-isl-ast-to-gimple.c (graphite_copy_stmts_from_block): + Fold the stmt if we propagated into it. + +2017-10-23 Richard Biener + + * tree-ssa-pre.c (bitmap_remove_from_set): Rename to... + (bitmap_remove_expr_from_set): ... this. All callers call this + for non-constant values. + (bitmap_set_subtract): Rename to... + (bitmap_set_subtract_expressions): ... this. Adjust and + optimize. + (bitmap_set_contains_value): Remove superfluous check. + (bitmap_set_replace_value): Inline into single caller ... + (bitmap_value_replace_in_set): ... here and simplify. + (dependent_clean): Merge into ... + (clean): ... this using an overload. Adjust. + (prune_clobbered_mems): Adjust. + (compute_antic_aux): Likewise. + (compute_partial_antic_aux): Likewise. + +2017-10-23 Richard Biener + + PR tree-optimization/82129 + Revert + 2017-08-01 Richard Biener + + PR tree-optimization/81181 + * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ... + (compute_antic): ... end of iteration here. + +2017-10-23 Richard Sandiford + + * target.def (starting_frame_offset): New hook. + * doc/tm.texi (STARTING_FRAME_OFFSET): Remove in favor of... + (TARGET_STARTING_FRAME_OFFSET): ...this new hook. + * doc/tm.texi.in: Regenerate. + * hooks.h (hook_hwi_void_0): Declare. + * hooks.c (hook_hwi_void_0): New function. + * doc/rtl.texi: Refer to TARGET_STARTING_FRAME_OFFSET instead of + STARTING_FRAME_OFFSET. + * builtins.c (expand_builtin_setjmp_receiver): Likewise. + * reload1.c (reload): Likewise. + * cfgexpand.c (expand_used_vars): Use targetm.starting_frame_offset + instead of STARTING_FRAME_OFFSET. + * function.c (try_fit_stack_local): Likewise. + (assign_stack_local_1): Likewise + (instantiate_virtual_regs): Likewise. + * rtlanal.c (rtx_addr_can_trap_p_1): Likewise. + * config/avr/avr.md (nonlocal_goto_receiver): Likewise. + * config/aarch64/aarch64.h (STARTING_FRAME_OFFSET): Delete. + * config/alpha/alpha.h (STARTING_FRAME_OFFSET): Likewise. + * config/arc/arc.h (STARTING_FRAME_OFFSET): Likewise. + * config/arm/arm.h (STARTING_FRAME_OFFSET): Likewise. + * config/bfin/bfin.h (STARTING_FRAME_OFFSET): Likewise. + * config/c6x/c6x.h (STARTING_FRAME_OFFSET): Likewise. + * config/cr16/cr16.h (STARTING_FRAME_OFFSET): Likewise. + * config/cris/cris.h (STARTING_FRAME_OFFSET): Likewise. + * config/fr30/fr30.h (STARTING_FRAME_OFFSET): Likewise. + * config/frv/frv.h (STARTING_FRAME_OFFSET): Likewise. + * config/ft32/ft32.h (STARTING_FRAME_OFFSET): Likewise. + * config/h8300/h8300.h (STARTING_FRAME_OFFSET): Likewise. + * config/i386/i386.h (STARTING_FRAME_OFFSET): Likewise. + * config/ia64/ia64.h (STARTING_FRAME_OFFSET): Likewise. + * config/m32c/m32c.h (STARTING_FRAME_OFFSET): Likewise. + * config/m68k/m68k.h (STARTING_FRAME_OFFSET): Likewise. + * config/mcore/mcore.h (STARTING_FRAME_OFFSET): Likewise. + * config/mn10300/mn10300.h (STARTING_FRAME_OFFSET): Likewise. + * config/moxie/moxie.h (STARTING_FRAME_OFFSET): Likewise. + * config/msp430/msp430.h (STARTING_FRAME_OFFSET): Likewise. + * config/nds32/nds32.h (STARTING_FRAME_OFFSET): Likewise. + * config/nios2/nios2.h (STARTING_FRAME_OFFSET): Likewise. + * config/nvptx/nvptx.h (STARTING_FRAME_OFFSET): Likewise. + * config/pdp11/pdp11.h (STARTING_FRAME_OFFSET): Likewise. + * config/riscv/riscv.h (STARTING_FRAME_OFFSET): Likewise. + * config/rl78/rl78.h (STARTING_FRAME_OFFSET): Likewise. + * config/rx/rx.h (STARTING_FRAME_OFFSET): Likewise. + * config/s390/s390.h (STARTING_FRAME_OFFSET): Likewise. + * config/sh/sh.h (STARTING_FRAME_OFFSET): Likewise. + * config/sparc/sparc.c (sparc_compute_frame_size): Likewise. + * config/sparc/sparc.h (STARTING_FRAME_OFFSET): Likewise. + * config/spu/spu.h (STARTING_FRAME_OFFSET): Likewise. + * config/stormy16/stormy16.h (STARTING_FRAME_OFFSET): Likewise. + * config/tilegx/tilegx.h (STARTING_FRAME_OFFSET): Likewise. + * config/tilepro/tilepro.h (STARTING_FRAME_OFFSET): Likewise. + * config/v850/v850.h (STARTING_FRAME_OFFSET): Likewise. + * config/visium/visium.h (STARTING_FRAME_OFFSET): Likewise. + * config/avr/avr.h (STARTING_FRAME_OFFSET): Likewise. + * config/avr/avr-protos.h (avr_starting_frame_offset): Likewise. + * config/avr/avr.c (avr_starting_frame_offset): Make static and + return a HOST_WIDE_INT. + (avr_builtin_setjmp_frame_value): Use it instead of + STARTING_FRAME_OFFSET. + (TARGET_STARTING_FRAME_OFFSET): Redefine. + * config/epiphany/epiphany.h (STARTING_FRAME_OFFSET): Delete. + * config/epiphany/epiphany.c (epiphany_starting_frame_offset): + New function. + (TARGET_STARTING_FRAME_OFFSET): Redefine. + * config/iq2000/iq2000.h (STARTING_FRAME_OFFSET): Delete. + * config/iq2000/iq2000.c (iq2000_starting_frame_offset): New function. + (TARGET_CONSTANT_ALIGNMENT): Redefine. + * config/lm32/lm32.h (STARTING_FRAME_OFFSET): Delete. + * config/lm32/lm32.c (lm32_starting_frame_offset): New function. + (TARGET_STARTING_FRAME_OFFSET): Redefine. + * config/m32r/m32r.h (STARTING_FRAME_OFFSET): Delete. + * config/m32r/m32r.c (m32r_starting_frame_offset): New function. + (TARGET_STARTING_FRAME_OFFSET): Redefine. + * config/microblaze/microblaze.h (STARTING_FRAME_OFFSET): Delete. + * config/microblaze/microblaze.c (microblaze_starting_frame_offset): + New function. + (TARGET_STARTING_FRAME_OFFSET): Redefine. + * config/mips/mips.h (STARTING_FRAME_OFFSET): Delete. + * config/mips/mips.c (mips_compute_frame_info): Refer to + TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET. + (mips_starting_frame_offset): New function. + (TARGET_STARTING_FRAME_OFFSET): Redefine. + * config/mmix/mmix.h (STARTING_FRAME_OFFSET): Delete. + * config/mmix/mmix-protos.h (mmix_starting_frame_offset): Delete. + * config/mmix/mmix.c (mmix_starting_frame_offset): Make static + and return a HOST_WIDE_INT. + (TARGET_STARTING_FRAME_OFFSET): Redefine. + (mmix_initial_elimination_offset): Refer to + TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET. + * config/pa/pa.h (STARTING_FRAME_OFFSET): Delete. + * config/pa/pa.c (pa_starting_frame_offset): New function. + (pa_compute_frame_size): Use it instead of STARTING_FRAME_OFFSET. + (pa_expand_prologue): Likewise. + (TARGET_STARTING_FRAME_OFFSET): Redefine. + * config/powerpcspe/aix.h (STARTING_FRAME_OFFSET): Split out + !FRAME_GROWS_DOWNWARD handling to... + (RS6000_STARTING_FRAME_OFFSET): ...this new macro. + * config/powerpcspe/darwin.h (STARTING_FRAME_OFFSET): Split out + !FRAME_GROWS_DOWNWARD handling to... + (RS6000_STARTING_FRAME_OFFSET): ...this new macro. + * config/powerpcspe/powerpcspe.h (STARTING_FRAME_OFFSET): Split out + !FRAME_GROWS_DOWNWARD handling to... + (RS6000_STARTING_FRAME_OFFSET): ...this new macro. + * config/powerpcspe/powerpcspe.c (TARGET_STARTING_FRAME_OFFSET): + Redefine. + (rs6000_starting_frame_offset): New function. + * config/rs6000/aix.h (STARTING_FRAME_OFFSET): Split out + !FRAME_GROWS_DOWNWARD handling to... + (RS6000_STARTING_FRAME_OFFSET): ...this new macro. + * config/rs6000/darwin.h (STARTING_FRAME_OFFSET): Split out + !FRAME_GROWS_DOWNWARD handling to... + (RS6000_STARTING_FRAME_OFFSET): ...this new macro. + * config/rs6000/rs6000.h (STARTING_FRAME_OFFSET): Split out + !FRAME_GROWS_DOWNWARD handling to... + (RS6000_STARTING_FRAME_OFFSET): ...this new macro. + * config/rs6000/rs6000.c (TARGET_STARTING_FRAME_OFFSET): Refine. + (rs6000_starting_frame_offset): New function. + * config/vax/elf.h (STARTING_FRAME_OFFSET): Delete. + * config/vax/vax.h (STARTING_FRAME_OFFSET): Delete. + * config/vax/vax.c (vax_starting_frame_offset): New function. + (vax_expand_prologue): Use it instead of STARTING_FRAME_OFFSET. + (TARGET_STARTING_FRAME_OFFSET): Redefine. + * config/xtensa/xtensa.h (STARTING_FRAME_OFFSET): Delete. + * config/xtensa/xtensa.c (xtensa_starting_frame_offset): New function. + (TARGET_STARTING_FRAME_OFFSET): Redefine. + * system.h (STARTING_FRAME_OFFSET): Poison. + +2017-10-23 Richard Sandiford + + * tree-vect-loop.c (vect_create_epilog_for_reduction): Use + SCALAR_TYPE_MODE instead of TYPE_MODE. + +2017-10-23 Richard Sandiford + Alan Hayward + David Sherwood + + * dwarf2out.c (loc_list_from_tree_1): Use SCALAR_INT_TYPE_MODE + +2017-10-23 Richard Sandiford + Alan Hayward + David Sherwood + + * expmed.c (expand_shift_1): Use scalar_mode for scalar_mode. + +2017-10-23 Richard Biener + + PR tree-optimization/82129 + * tree-ssa-pre.c (bitmap_set_and): Remove. + (compute_antic_aux): Compute ANTIC_OUT intersection in a way + canonicalizing expressions in the set to those with lowest + ID rather than taking that from the first edge. + +2017-10-23 Richard Sandiford + + * combine.c (rtx_equal_for_field_assignment_p): Use + byte_lowpart_offset. + +2017-10-22 Richard Sandiford + Alan Hayward + David Sherwood + + * internal-fn.c (expand_direct_optab_fn): Don't assign directly + to a SUBREG_PROMOTED_VAR. + +2017-10-22 Richard Sandiford + Alan Hayward + David Sherwood + + * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_PRECISION. + (expand_debug_source_expr): Likewise. + * combine.c (combine_simplify_rtx): Likewise. + * cse.c (fold_rtx): Likewise. + * optabs.c (expand_float): Likewise. + * simplify-rtx.c (simplify_unary_operation_1): Likewise. + (simplify_binary_operation_1): Likewise. + +2017-10-22 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (simplify_comparison): Use HWI_COMPUTABLE_MODE_P. + (record_promoted_value): Likewise. + * expr.c (expand_expr_real_2): Likewise. + * ree.c (update_reg_equal_equiv_notes): Likewise. + (combine_set_extension): Likewise. + * rtlanal.c (low_bitmask_len): Likewise. + * simplify-rtx.c (neg_const_int): Likewise. + (simplify_binary_operation_1): Likewise. + +2017-10-22 Richard Sandiford + Alan Hayward + David Sherwood + + * lra-spills.c (assign_mem_slot): Use subreg_size_lowpart_offset. + * regcprop.c (maybe_mode_change): Likewise. + * reload1.c (alter_reg): Likewise. + +2017-10-22 Richard Sandiford + + * inchash.h (inchash::hash::add_wide_int): New function. + * lto-streamer-out.c (hash_tree): Use it. + +2017-10-22 Richard Sandiford + + * inchash.h (inchash::hash::add_wide_int): Rename to... + (inchash::hash::add_hwi): ...this. + * ipa-devirt.c (hash_odr_vtable): Update accordingly. + (polymorphic_call_target_hasher::hash): Likewise. + * ipa-icf.c (sem_function::get_hash, sem_function::init): Likewise. + (sem_item::add_expr, sem_item::add_type, sem_variable::get_hash) + (sem_item_optimizer::update_hash_by_addr_refs): Likewise. + * lto-streamer-out.c (hash_tree): Likewise. + * optc-save-gen.awk: Likewise. + * tree.c (add_expr): Likewise. + +2017-10-22 Uros Bizjak + + PR target/52451 + * config/i386/i386.c (ix86_fp_compare_mode): Return CCFPmode + for ordered inequality comparisons even with TARGET_IEEE_FP. + +2017-10-22 Uros Bizjak + + PR target/82628 + * config/i386/i386.md (cmp_doubleword): New pattern. + * config/i386/i386.c (ix86_expand_branch) : + Expand with cmp_doubleword. + +2017-10-21 Igor Tsimbalist + + * extend.texi: Add x86 specific to 'nocf_check' attribute. + List CET intrinsics. + * invoke.texi: Add -mcet, -mibt, -mshstk options. Add x86 + specific to -fcf-protection option. + +2017-10-21 Igor Tsimbalist + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET): New. + (OPTION_MASK_ISA_SHSTK_SET): Likewise. + (OPTION_MASK_ISA_IBT_UNSET): Likewise. + (OPTION_MASK_ISA_SHSTK_UNSET): Likewise. + (ix86_handle_option): Add -mibt, -mshstk, -mcet handling. + * config.gcc (extra_headers): Add cetintrin.h for x86 targets. + (extra_objs): Add cet.o for Linux/x86 targets. + (tmake_file): Add i386/t-cet for Linux/x86 targets. + * config/i386/cet.c: New file. + * config/i386/cetintrin.h: Likewise. + * config/i386/t-cet: Likewise. + * config/i386/cpuid.h (bit_SHSTK): New. + (bit_IBT): Likewise. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect and + pass IBT and SHSTK bits. + * config/i386/i386-builtin-types.def + (VOID_FTYPE_UNSIGNED_PVOID): New. + (VOID_FTYPE_UINT64_PVOID): Likewise. + * config/i386/i386-builtin.def: Add CET intrinsics. + * config/i386/i386-c.c (ix86_target_macros_internal): Add + OPTION_MASK_ISA_IBT, OPTION_MASK_ISA_SHSTK handling. + * config/i386/i386-passes.def: Add pass_insert_endbranch pass. + * config/i386/i386-protos.h (make_pass_insert_endbranch): New + prototype. + * config/i386/i386.c (rest_of_insert_endbranch): New. + (pass_data_insert_endbranch): Likewise. + (pass_insert_endbranch): Likewise. + (make_pass_insert_endbranch): Likewise. + (ix86_notrack_prefixed_insn_p): Likewise. + (ix86_target_string): Add -mibt, -mshstk flags. + (ix86_option_override_internal): Add flag_cf_protection + processing. + (ix86_valid_target_attribute_inner_p): Set OPT_mibt, OPT_mshstk. + (ix86_print_operand): Add 'notrack' prefix output. + (ix86_init_mmx_sse_builtins): Add CET intrinsics. + (ix86_expand_builtin): Expand CET intrinsics. + (x86_output_mi_thunk): Add 'endbranch' instruction. + * config/i386/i386.h (TARGET_IBT): New. + (TARGET_IBT_P): Likewise. + (TARGET_SHSTK): Likewise. + (TARGET_SHSTK_P): Likewise. + * config/i386/i386.md (unspecv): Add UNSPECV_NOP_RDSSP, + UNSPECV_INCSSP, UNSPECV_SAVEPREVSSP, UNSPECV_RSTORSSP, + UNSPECV_WRSS, UNSPECV_WRUSS, UNSPECV_SETSSBSY, UNSPECV_CLRSSBSY. + (builtin_setjmp_setup): New pattern. + (builtin_longjmp): Likewise. + (rdssp): Likewise. + (incssp): Likewise. + (saveprevssp): Likewise. + (rstorssp): Likewise. + (wrss): Likewise. + (wruss): Likewise. + (setssbsy): Likewise. + (clrssbsy): Likewise. + (nop_endbr): Likewise. + * config/i386/i386.opt: Add -mcet, -mibt, -mshstk and -mcet-switch + options. + * config/i386/immintrin.h: Include . + * config/i386/linux-common.h + (file_end_indicate_exec_stack_and_cet): New prototype. + (TARGET_ASM_FILE_END): New. + +2017-10-20 Jan Hubicka + + * i386.c (ix86_builtin_vectorization_cost): Use existing rtx_cost + latencies instead of having separate table; make difference between + integer and float costs. + * i386.h (processor_costs): Remove scalar_stmt_cost, + scalar_load_cost, scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost, + scalar_to_vec_cost, vec_align_load_cost, vec_unalign_load_cost, + vec_store_cost. + * x86-tune-costs.h: Remove entries which has been removed in + procesor_costs from all tables; make cond_taken_branch_cost + and cond_not_taken_branch_cost COST_N_INSNS based. + +2017-10-20 Jan Hubicka + + * x86-tune-costs.h (intel_cost, generic_cost): Fix move costs. + +2017-10-20 Jakub Jelinek + + * config/i386/i386.md (isa): Remove fma_avx512f. + * config/i386/sse.md (_fmadd__mask, + _fmadd__mask3, + _fmsub__mask, + _fmsub__mask3, + _fnmadd__mask, + _fnmadd__mask3, + _fnmsub__mask, + _fnmsub__mask3, + _fmaddsub__mask, + _fmaddsub__mask3, + _fmsubadd__mask, + _fmsubadd__mask3): Remove isa attribute. + (*vec_widen_umult_even_v16si, + *vec_widen_smult_even_v16si): Likewise. + (avx512bw_dbpsadbw): Likewise. + +2017-10-20 Igor Tsimbalist + + * extend.texi: Add 'nocf_check' documentation. + * gimple.texi: Add second parameter to + gimple_build_call_from_tree. + * invoke.texi: Add -fcf-protection documentation. + * rtl.texi: Add REG_CALL_NOTRACK documenation. + +2017-10-20 Richard Biener + + PR tree-optimization/82473 + * tree-vect-loop.c (vectorizable_reduction): Properly get at + the largest input type. + +2017-10-20 Igor Tsimbalist + + * c-attribs.c (handle_nocf_check_attribute): New function. + (c_common_attribute_table): Add 'nocf_check' handling. + * gimple-parser.c: Add second argument NULL to + gimple_build_call_from_tree. + * attrib.c (comp_type_attributes): Check nocf_check attribute. + * cfgexpand.c (expand_call_stmt): Set REG_CALL_NOCF_CHECK for + call insn. + * combine.c (distribute_notes): Add REG_CALL_NOCF_CHECK handling. + * common.opt: Add fcf-protection flag. + * emit-rtl.c (try_split): Add REG_CALL_NOCF_CHECK handling. + * flag-types.h: Add enum cf_protection_level. + * gimple.c (gimple_build_call_from_tree): Add second parameter. + Add 'nocf_check' attribute propagation to gimple call. + * gimple.h (gf_mask): Add GF_CALL_NOCF_CHECK. + (gimple_build_call_from_tree): Update prototype. + (gimple_call_nocf_check_p): New function. + (gimple_call_set_nocf_check): Likewise. + * gimplify.c: Add second argument to gimple_build_call_from_tree. + * ipa-icf.c: Add nocf_check attribute in statement hash. + * recog.c (peep2_attempt): Add REG_CALL_NOCF_CHECK handling. + * reg-notes.def: Add REG_NOTE (CALL_NOCF_CHECK). + * toplev.c (process_options): Add flag_cf_protection handling. + +2017-10-19 Jan Hubicka + + * x86-tune-costs.h (core_cost): Fix div, move and sqrt latencies. + +2017-10-20 Richard Biener + + PR tree-optimization/82603 + * tree-if-conv.c (predicate_mem_writes): Make sure to only + remove false predicated stores. + +2017-10-20 Richard Biener + + * graphite-isl-ast-to-gimple.c + (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): + Remove return value and simplify, dump copied stmt after lhs + adjustment. + (translate_isl_ast_to_gimple::translate_isl_ast_node_user): + Reduce dump verbosity. + (gsi_insert_earliest): Likewise. + (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Adjust. + * graphite.c (print_global_statistics): Adjust dumping. + (print_graphite_scop_statistics): Likewise. + (print_graphite_statistics): Do not dump loops here. + (graphite_transform_loops): But here. + +2017-10-20 Nicolas Roche + + * configure.ac (ACX_PROG_GNAT): Append "libgnat" to include search dir. + * configure: Regenerate. + +2017-10-20 Jakub Jelinek + + PR target/82158 + * tree-cfg.c (pass_warn_function_return::execute): In noreturn + functions when optimizing replace GIMPLE_RETURN stmts with + calls to __builtin_unreachable (). + + PR sanitizer/82595 + * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Add libtsan_preinit.o + for -fsanitize=thread link of executables. + (LIBLSAN_EARLY_SPEC): Add liblsan_preinit.o for -fsanitize=leak + link of executables. + + PR target/82370 + * config/i386/sse.md (VI248_AVX2, VI248_AVX512BW, VI248_AVX512BW_2): + New mode iterators. + (3): Change the last of the 3 + define_insns for logical vector shifts to use VI248_AVX512BW + iterator instead of VI48_AVX512, remove + condition, useless isa and prefix attributes. Change the first + 2 of these define_insns to ... + (3): ... this, new + define_insn for avx512vl. + (3): ... and this, new define_insn without + masking for non-avx512vl. + + PR target/82370 + * config/i386/sse.md (*andnot3, + 3, *3): Split + (=v,v,vm) alternative into (=x,x,xm) and (=v,v,vm), for 128-bit + and 256-bit vectors, the (=x,x,xm) alternative and when mask is + not applied use empty suffix even for TARGET_AVX512VL. + * config/i386/subst.md (mask_prefix3, mask_prefix4): When mask + is applied, supply evex,evex or evex,evex,evex instead of just + evex. + +2017-10-20 Julia Koval + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_GFNI_SET, + (OPTION_MASK_ISA_GFNI_UNSET): New. + (ix86_handle_option): Handle OPT_mgfni. + * config/i386/cpuid.h (bit_GFNI): New. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect gfni. + * config/i386/i386-c.c (ix86_target_macros_internal): Define __GFNI__. + * config/i386/i386.c (ix86_target_string): Add -mgfni. + (ix86_valid_target_attribute_inner_p): Add OPT_mgfni. + * config/i386/i386.h (TARGET_GFNI, TARGET_GFNI_P): New. + * config/i386/i386.opt: Add mgfni. + +2017-10-20 Orlando Arias + + * config/msp430/msp430.c (msp430_option_override): Disable + -fdelete-null-pointer-checks. + * doc/invoke.text (-fdelete-null-pointer-checks): Document that. + +2017-10-19 Jan Hubicka + + * x86-tune-costs.h (generic_cost, core_cost): Correct costs + of x87 and SSE instructions. + +2017-10-19 Jan Hubicka + + * asan.c (create_cond_insert_point): Do not update edge count. + * auto-profile.c (afdo_propagate_edge): Update for edge count removal. + (afdo_propagate_circuit): Likewise. + (afdo_calculate_branch_prob): Likewise. + (afdo_annotate_cfg): Likewise. + * basic-block.h (struct edge_def): Remove count. + (edge_def::count): New accessor. + * bb-reorder.c (rotate_loop): Update. + (find_traces_1_round): Update. + (connect_traces): Update. + (sanitize_hot_paths): Update. + * cfg.c (unchecked_make_edge): Update. + (make_single_succ_edge): Update. + (check_bb_profile): Update. + (dump_edge_info): Update. + (update_bb_profile_for_threading): Update. + (scale_bbs_frequencies_int): Update. + (scale_bbs_frequencies_gcov_type): Update. + (scale_bbs_frequencies_profile_count): Update. + (scale_bbs_frequencies): Update. + * cfganal.c (connect_infinite_loops_to_exit): Update. + * cfgbuild.c (compute_outgoing_frequencies): Update. + (find_many_sub_basic_blocks): Update. + * cfgcleanup.c (try_forward_edges): Update. + (try_crossjump_to_edge): Update + * cfgexpand.c (expand_gimple_cond): Update + (expand_gimple_tailcall): Update + (construct_exit_block): Update + * cfghooks.c (verify_flow_info): Update + (redirect_edge_succ_nodup): Update + (split_edge): Update + (make_forwarder_block): Update + (duplicate_block): Update + (account_profile_record): Update + * cfgloop.c (find_subloop_latch_edge_by_profile): Update. + * cfgloopanal.c (expected_loop_iterations_unbounded): Update. + * cfgloopmanip.c (scale_loop_profile): Update. + (loopify): Update. + (lv_adjust_loop_entry_edge): Update. + * cfgrtl.c (try_redirect_by_replacing_jump): Update. + (force_nonfallthru_and_redirect): Update. + (purge_dead_edges): Update. + (rtl_flow_call_edges_add): Update. + * cgraphunit.c (init_lowered_empty_function): Update. + (cgraph_node::expand_thunk): Update. + * gimple-pretty-print.c (dump_probability): Update. + (dump_edge_probability): Update. + * gimple-ssa-isolate-paths.c (isolate_path): Update. + * haifa-sched.c (sched_create_recovery_edges): Update. + * hsa-gen.c (convert_switch_statements): Update. + * ifcvt.c (dead_or_predicable): Update. + * ipa-inline-transform.c (inline_transform): Update. + * ipa-split.c (split_function): Update. + * ipa-utils.c (ipa_merge_profiles): Update. + * loop-doloop.c (add_test): Update. + * loop-unroll.c (unroll_loop_runtime_iterations): Update. + * lto-streamer-in.c (input_cfg): Update. + (input_function): Update. + * lto-streamer-out.c (output_cfg): Update. + * modulo-sched.c (sms_schedule): Update. + * postreload-gcse.c (eliminate_partially_redundant_load): Update. + * predict.c (maybe_hot_edge_p): Update. + (unlikely_executed_edge_p): Update. + (probably_never_executed_edge_p): Update. + (dump_prediction): Update. + (drop_profile): Update. + (propagate_unlikely_bbs_forward): Update. + (determine_unlikely_bbs): Update. + (force_edge_cold): Update. + * profile.c (compute_branch_probabilities): Update. + * reg-stack.c (better_edge): Update. + * shrink-wrap.c (handle_simple_exit): Update. + * tracer.c (better_p): Update. + * trans-mem.c (expand_transaction): Update. + (split_bb_make_tm_edge): Update. + * tree-call-cdce.c: Update. + * tree-cfg.c (gimple_find_sub_bbs): Update. + (gimple_split_edge): Update. + (gimple_duplicate_sese_region): Update. + (gimple_duplicate_sese_tail): Update. + (gimple_flow_call_edges_add): Update. + (insert_cond_bb): Update. + (execute_fixup_cfg): Update. + * tree-cfgcleanup.c (cleanup_control_expr_graph): Update. + * tree-complex.c (expand_complex_div_wide): Update. + * tree-eh.c (lower_resx): Update. + (unsplit_eh): Update. + (cleanup_empty_eh_move_lp): Update. + * tree-inline.c (copy_edges_for_bb): Update. + (freqs_to_counts): Update. + (copy_cfg_body): Update. + * tree-ssa-dce.c (remove_dead_stmt): Update. + * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update. + * tree-ssa-loop-im.c (execute_sm_if_changed): Update. + * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update. + (unloop_loops): Update. + * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update. + * tree-ssa-loop-split.c (connect_loops): Update. + (split_loop): Update. + * tree-ssa-loop-unswitch.c (hoist_guard): Update. + * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update. + * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update. + * tree-ssa-reassoc.c (branch_fixup): Update. + * tree-ssa-tail-merge.c (replace_block_by): Update. + * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update. + (compute_path_counts): Update. + (update_profile): Update. + (recompute_probabilities): Update. + (update_joiner_offpath_counts): Update. + (estimated_freqs_path): Update. + (freqs_to_counts_path): Update. + (clear_counts_path): Update. + (ssa_fix_duplicate_block_edges): Update. + (duplicate_thread_path): Update. + * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update. + (case_bit_test_cmp): Update. + (collect_switch_conv_info): Update. + (gen_inbound_check): Update. + (do_jump_if_equal): Update. + (emit_cmp_and_jump_insns): Update. + * tree-tailcall.c (decrease_profile): Update. + (eliminate_tail_call): Update. + * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update. + (vect_do_peeling): Update. + * tree-vect-loop.c (scale_profile_for_vect_loop): Update. + * ubsan.c (ubsan_expand_null_ifn): Update. + (ubsan_expand_ptr_ifn): Update. + * value-prof.c (gimple_divmod_fixed_value): Update. + (gimple_mod_pow2): Update. + (gimple_mod_subtract): Update. + (gimple_ic): Update. + (gimple_stringop_fixed_value): Update. + +2017-10-19 Uros Bizjak + + PR target/82618 + * config/i386/i386.md (sub to cmp): New peephole2 pattern. + +2017-10-19 Alexander Monakov + + PR rtl-optimization/82395 + * ira-color.c (allocno_priority_compare_func): Fix comparison step + based on non_spilled_static_chain_regno_p. + +2017-10-19 Uros Bizjak + + * config/i386/i386.c (output_387_binary_op): Rewrite SSE part. + (ix86_emit_mode_set): Rewrite insn mnemonic construction. + (ix86_prepare_fp_compare_args): Redefine is_sse as bool. + +2017-10-19 Martin Sebor + + PR tree-optimization/82596 + * tree.c (array_at_struct_end_p): Handle STRING_CST. + +2017-10-19 Eric Botcazou + + * asan.c (handle_builtin_alloca): Deal with all alloca variants. + (get_mem_refs_of_builtin_call): Likewise. + * builtins.c (expand_builtin_apply): Adjust call to + allocate_dynamic_stack_space. + (expand_builtin_alloca): For __builtin_alloca_with_align_and_max, pass + the third argument to allocate_dynamic_stack_space, otherwise -1. + (expand_builtin): Deal with all alloca variants. + (is_inexpensive_builtin): Likewise. + * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX): New. + * calls.c (special_function_p): Deal with all alloca variants. + (initialize_argument_information): Adjust call to + allocate_dynamic_stack_space. + (expand_call): Likewise. + * cfgexpand.c (expand_call_stmt): Deal with all alloca variants. + * doc/extend.texi (Built-ins): Add __builtin_alloca_with_align_and_max + * explow.c (allocate_dynamic_stack_space): Add MAX_SIZE parameter and + use it for the stack usage computation. + * explow.h (allocate_dynamic_stack_space): Adjust prototype. + * function.c (gimplify_parameters): Call build_alloca_call_expr. + * gimple-ssa-warn-alloca.c (alloca_call_type): Simplify control flow. + Take into account 3rd argument of __builtin_alloca_with_align_and_max. + (in_loop_p): Remove first argument and useless check. + (pass_walloca::execute): Remove useless test and adjust call to above. + * gimple.c (gimple_build_call_from_tree): Deal with all alloc variants + * gimplify.c (gimplify_vla_decl): Call build_alloca_call_expr. + (gimplify_call_expr): Deal with all alloca variants. + * hsa-gen.c (gen_hsa_alloca): Likewise. + (gen_hsa_insns_for_call): Likewise. + * ipa-pure-const.c (special_builtin_state): Likewise. + * tree-chkp.c (chkp_build_returned_bound): Likewise. + * tree-object-size.c (alloc_object_size): Likewise. + * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise. + (call_may_clobber_ref_p_1): Likewise. + * tree-ssa-ccp.c (evaluate_stmt): Likewise. + (ccp_fold_stmt): Likewise. + (optimize_stack_restore): Likewise. + * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise. + (mark_all_reaching_defs_necessary_1): Likewise. + (propagate_necessity): Likewise. + (eliminate_unnecessary_stmts): Likewise. + * tree.c (build_common_builtin_nodes): Build + BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX. + (build_alloca_call_expr): New function. + * tree.h (ALLOCA_FUNCTION_CODE_P): New macro. + (CASE_BUILT_IN_ALLOCA): Likewise. + (build_alloca_call_expr): Declare. + * varasm.c (incorporeal_function_p): Deal with all alloca variants. + +2017-10-19 Eric Botcazou + + PR debug/82509 + * dwarf2out.c (new_die_raw): New static inline function. + (new_die): Use it to create the DIE. + (add_AT_external_die_ref): Likewise. + (clone_die): Likewise. + (clone_as_declaration): Likewise. + (dwarf2out_vms_debug_main_pointer): Likewise. + (base_type_die): Likewise. Remove early return for corner cases. + Do not call add_pubtype on the DIE here. + (is_base_type): Remove ERROR_MARK and return 0 for VOID_TYPE. + (modified_type_die): Adjust the lookup for reverse order DIEs. Skip + typedefs for base types with DW_AT_endianity. Make sure a DIE with + native order exists for base types, attach the DIE manually and call + add_pubtype on it. Do not equate a reverse order DIE to the type. + +2017-10-19 Richard Earnshaw + + * config/arm/arm.c (align_ok_ldrd_strd): New function. + (mem_ok_for_ldrd_strd): New parameter align. Extract the alignment of + the mem into it. + (gen_operands_ldrd_strd): Validate the alignment of the accesses. + +2017-10-19 Jakub Jelinek + + * flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN. Or + SANITIZE_BUILTIN into SANITIZE_UNDEFINED. + * sanitizer.def (BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN, + BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN_ABORT): New builtins. + * opts.c (sanitizer_opts): Add builtin. + * ubsan.c (instrument_builtin): New function. + (pass_ubsan::execute): Call it. + (pass_ubsan::gate): Enable even for SANITIZE_BUILTIN. + * doc/invoke.texi: Document -fsanitize=builtin. + + * ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch + builtins, store max (log2 (align), 0) into uchar field instead of + align into uptr field. + (ubsan_expand_objsize_ifn): Use _v1 suffixed type mismatch builtins, + store uchar 0 field instead of uptr 0 field. + (instrument_nonnull_return): Use _v1 suffixed nonnull return builtin, + instead of passing one address of struct with 2 locations pass + two addresses of structs with 1 location each. + * sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH, + BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT, + BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN, + BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): Removed. + (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1, + BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1_ABORT, + BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1, + BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1_ABORT): New builtins. + +2017-10-19 Martin Liska + + PR driver/81829 + * file-find.c (remove_prefix): Remove. + * file-find.h (remove_prefix): Likewise. + * gcc-ar.c: Remove smartness of lookup. + +2017-10-19 Segher Boessenkool + + * config/rs6000/rs6000.md (*call_indirect_aix, + *call_value_indirect_aix, *call_indirect_elfv2, + *call_value_indirect_elfv2): Add correct mode to the unspec. + +2017-10-19 Jakub Jelinek + + PR target/82580 + * config/i386/i386.md (setcc + movzbl to xor + setcc): New peephole2. + (setcc + and to xor + setcc): New peephole2. + +2017-10-19 Tom de Vries + + * doc/sourcebuild.texi (Test Directives, Variants of + dg-require-support): Add dg-require-stack-size. + +2017-10-19 Martin Liska + + PR sanitizer/82517 + * gimplify.c (gimplify_decl_expr): Do not instrument variables + that have a large alignment. + (gimplify_target_expr): Likewise. + +2017-10-18 Segher Boessenkool + + PR rtl-optimization/82602 + * ira.c (rtx_moveable_p): Return false for volatile asm. + +2017-10-18 Uros Bizjak + + PR target/82580 + * config/i386/i386-modes.def (CCGZ): New CC mode. + * config/i386/i386.md (sub3_carry_ccgz): New insn pattern. + * config/i386/predicates.md (ix86_comparison_operator): + Handle CCGZmode. + * config/i386/i386.c (ix86_expand_branch) : + Emulate LE, LEU, GT, GTU, LT, LTU, GE and GEU double-word comparisons + with double-word subtraction. + (put_condition_code): Handle CCGZmode. + +2017-10-18 Aldy Hernandez + + * wide-int.cc (debug (const wide_int &)): New. + (debug (const wide_int *)): New. + (debug (const widest_int &)): New. + (debug (const widest_int *)): New. + +2017-10-18 Vladimir Makarov + + PR middle-end/82556 + * lra-constraints.c (curr_insn_transform): Use non-input operand + instead of output one for matched reload. + +2017-10-18 Bin Cheng + + * tree-loop-distribution.c (INCLUDE_ALGORITHM): New header file. + (tree-ssa-loop-ivopts.h): New header file. + (struct builtin_info): New fields. + (classify_builtin_1): Compute and record base and offset parts for + memset builtin partition by calling strip_offset. + (offset_cmp, fuse_memset_builtins): New functions. + (finalize_partitions): Fuse adjacent memset partitions by calling + above function. + * tree-ssa-loop-ivopts.c (strip_offset): Delete static declaration. + Expose the interface. + * tree-ssa-loop-ivopts.h (strip_offset): New declaration. + +2017-10-18 Bin Cheng + + PR tree-optimization/82574 + * tree-loop-distribution.c (find_single_drs): New parameter. Check + that data reference must be executed exactly once per iteration + against the outermost loop in nest. + (classify_partition): Update call to above function. + +2017-10-18 Richard Biener + + PR tree-optimization/82591 + * graphite.c (graphite_transform_loops): Move code gen message + printing ... + * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): + Here. Handle scop_to_isl_ast failing. + (scop_to_isl_ast): Limit the number of ISL operations. + +2017-10-18 Richard Biener + + * graphite-isl-ast-to-gimple.c + (translate_isl_ast_to_gimple::set_rename): Simplify. + (translate_isl_ast_to_gimple::set_rename_for_each_def): Inline... + (graphite_copy_stmts_from_block): ... here. + (copy_bb_and_scalar_dependences): Simplify. + (add_parameters_to_ivs_params): Canonicalize. + (generate_entry_out_of_ssa_copies): Simplify. + * graphite-sese-to-poly.c (extract_affine_name): Simplify + by passing in ISL dimension. + (parameter_index_in_region_1): Rename to ... + (parameter_index_in_region): ... this. + (extract_affine): Adjust assert, pass down parameter index. + (add_param_constraints): Use range-info when available. + (build_scop_context): Adjust. + * sese.c (new_sese_info): Adjust. + (free_sese_info): Likewise. + * sese.h (bb_map_t, rename_map_t, phi_rename, init_back_edge_pair_t): + Remove unused typedefs. + (struct sese_info_t): Simplify rename_map, remove incomplete_phis. + +2017-10-18 Martin Liska + + * combine.c (simplify_compare_const): Add gcc_fallthrough. + +2017-10-18 Robin Dapp + + * config/s390/s390.c (s390_bb_fallthru_entry_likely): New function. + (s390_sched_init): Do not reset s390_sched_state if we entered the + current basic block via a fallthru edge and all others are unlikely. + +2017-10-18 Robin Dapp + + * config/s390/s390.c (NUM_SIDES): New variable. + (LONGRUNNING_THRESHOLD): New variable. + (LATENCY_FACTOR): New variable. + (s390_sched_score): Decrease score for long-running instructions on + wrong side. + (s390_sched_variable_issue): Perform bookkeeping for long-running + instructions. + +2017-10-18 Richard Biener + + * graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id): + Simplify with removal of the parameter rename map. + (set_rename): Likewise. + (should_copy_to_new_region): Likewise. + (graphite_copy_stmts_from_block): Likewise. + (copy_bb_and_scalar_dependences): Remove initialization of + unused copied_bb_map. + (copy_def): Remove. + (copy_internal_parameters): Likewise. + (graphite_regenerate_ast_isl): Do not call copy_internal_parameters. + * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p): + Use INTEGRAL_TYPE_P. + (parameter_index_in_region_1): Rename to ... + (assign_parameter_index_in_region): ... this. Assert we have + a parameter we handle. + (scan_tree_for_params): Adjust. + * sese.h (parameter_rename_map_t): Remove. + (struct sese_info_t): Remove unused parameter_rename_map and + copied_bb_map members. + * sese.c (new_sese_info): Adjust. + (free_sese_info): Likewise. + +2017-10-18 Martin Liska + + PR sanitizer/82545 + * asan.c (asan_expand_poison_ifn): Do not put gimple stmt + on an abnormal edge. + +2017-10-18 Sebastian Huber + + * doc/invoke.texi (ffunction-sections and fdata-sections): + Update. + +2017-10-17 Eric Botcazou + + * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if + the use statement can throw internally. + +2017-10-17 Eric Botcazou + + * config/visium/visium.c (visium_select_cc_mode): Return CCmode for + any RTX present on the RHS of a SET. + * compare-elim.c (try_eliminate_compare): Restore comment. + +2017-10-17 Jakub Jelinek + + * langhooks.h (struct lang_hooks): Document that tree_size langhook + may be also called on tcc_type nodes. + * langhooks.c (lhd_tree_size): Likewise. + +2017-10-17 David Malcolm + + * gimple-ssa-sprintf.c (fmtwarn): Update for changed signature of + format_warning_at_substring. + (maybe_warn): Convert source_range * param to a location_t. Pass + UNKNOWN_LOCATION rather than NULL to fmtwarn. + (format_directive): Remove code to extract source_ranges and + source_range * in favor of just a location_t. + (parse_directive): Pass UNKNOWN_LOCATION rather than NULL to + fmtwarn. + * substring-locations.c (format_warning_va): Convert + source_range * param to a location_t. + (format_warning_at_substring): Likewise. + * substring-locations.h (format_warning_va): Likewise. + (format_warning_at_substring): Likewise. + +2017-10-17 Jan Hubicka + + * target.h (enum vect_cost_for_stmt): Add vec_gather_load and + vec_scatter_store + * tree-vect-stmts.c (record_stmt_cost): Make difference between normal + and scatter/gather ops. + + * aarch64/aarch64.c (aarch64_builtin_vectorization_cost): Add + vec_gather_load and vec_scatter_store. + * arm/arm.c (arm_builtin_vectorization_cost): Likewise. + * powerpcspe/powerpcspe.c (rs6000_builtin_vectorization_cost): Likewise. + * rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Likewise. + * s390/s390.c (s390_builtin_vectorization_cost): Likewise. + * spu/spu.c (spu_builtin_vectorization_cost): Likewise. + * i386/i386.c (x86_builtin_vectorization_cost): Likewise. + +2017-10-17 Uros Bizjak + + * reg-stack.c (compare_for_stack_reg): Add bool argument. + Detect FTST instruction and handle its register pops. Only pop + second operand if can_pop_second_op is true. + (subst_stack_regs_pat) : Detect FCOMI instruction to + set can_pop_second_op to false in the compare_for_stack_reg call. + + * config/i386/i386.md (*cmpi): Only call + output_fp_compare for stack register operands. + * config/i386/i386.c (output_fp_compare): Do not output SSE compare + instructions here. Do not emit stack register pops here. Assert + that FCOMPP pops next to top stack register. Rewrite function. + +2017-10-17 Nathan Sidwell + + PR middle-end/82577 + * alias.c (compare_base_decls): Check HAS_DECL_ASSEMBLER_NAME_P, + use DECL_ASSEMBLER_NAME_RAW. + + PR middle-end/82546 + * tree.c (tree_code_size): Reformat. Punt to lang hook for unknown + TYPE nodes. + +2017-10-17 Qing Zhao + Wilco Dijkstra + + * builtins.c (expand_builtin_update_setjmp_buf): Add a + converstion to Pmode from the buf_addr. + +2017-10-17 Richard Biener + + * graphite-dependences.c (scop_get_reads_and_writes): Change + output parameters to references. + +2017-10-17 Jackson Woodruff + + PR 71026/tree-optimization + * fold-const.c (distribute_real_division): Removed. + (fold_binary_loc): Remove calls to distribute_real_divison. + +2017-10-17 Richard Biener + + * graphite-scop-detection.c + (scop_detection::stmt_has_simple_data_refs_p): Always use + the full nest as region. + (try_generate_gimple_bb): Likewise. + * sese.c (scalar_evolution_in_region): Simplify now that + SCEV can handle instantiation in regions. + * tree-scalar-evolution.c (instantiate_scev_name): Also instantiate + in the non-loop part of a function if requested. + +2017-10-17 Richard Biener + + PR tree-optimization/82563 + * graphite-isl-ast-to-gimple.c (generate_entry_out_of_ssa_copies): + New function. + (graphite_regenerate_ast_isl): Call it. + * graphite-scop-detection.c (build_scops): Remove entry edge split. + +2017-10-17 Jakub Jelinek + + PR tree-optimization/82549 + * fold-const.c (optimize_bit_field_compare, fold_truth_andor_1): + Formatting fixes. Instead of calling make_bit_field_ref with negative + bitpos return 0. + +2017-10-17 Olga Makhotina + + * config/i386/avx512dqintrin.h (_mm_mask_reduce_sd, + _mm_maskz_reduce_sd, _mm_mask_reduce_ss,=20 + _mm_maskz_reduce_ss): New. + * config/i386/i386-builtin.def (__builtin_ia32_reducesd_mask, + __builtin_ia32_reducess_mask): Ditto.. + (__builtin_ia32_reducesd, __builtin_ia32_reducess): Remove. + * config/i386/sse.md (reduces): Renamed to ... + (reduces): ... this. + (vreduce\t{%3, %2, %1, %0|%0, %1, %2, %3}): + Changed to ... + (vreduce\t{%3, %2, %1, %0| + %0, %1, %2, %3}): ... this. + +2017-10-16 David Malcolm + + * Makefile.in (OBJS): Add unique-ptr-tests.o. + * selftest-run-tests.c (selftest::run_tests): Call + selftest::unique_ptr_tests_cc_tests. + * selftest.h (selftest::unique_ptr_tests_cc_tests): New decl. + * unique-ptr-tests.cc: New file. + +2017-10-16 Vladimir Makarov + + PR sanitizer/82353 + * lra.c (collect_non_operand_hard_regs): Don't ignore operator + locations. + * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up. + (make_hard_regno_born, make_hard_regno_dead): Update + bb_killed_pseudos and bb_gen_pseudos for fixed regs. + +2017-10-16 Jeff Law + + * tree-ssa-dse.c (live_bytes_read): Fix thinko. + +2017-10-16 Jan Hubicka + + * x86-tune-costs.h (znver1_cost): Fix move cost tables. + +2017-10-16 Olivier Hainque + + * gcc/config.gcc (powerpc*-*-*spe*): Pick 8548 as the default + with_cpu if we were configured for an e500v2 target cpu name. + +2017-10-16 Thomas Preud'homme + + * config/arm/arm-cpus.in (cortex-m33): Add nodsp option. + * doc/invoke.texi: Document +nodsp as a valid extension for + -mcpu=cortex-m33. + +2017-10-16 Martin Liska + + * sbitmap.c (bitmap_bit_in_range_p_checking): New function. + (test_set_range): Likewise. + (test_range_functions): Rename to ... + (test_bit_in_range): ... this. + (sbitmap_c_tests): Add new test. + +2017-10-16 Tamar Christina + + * config/aarch64/arm_neon.h (vdot_u32, vdotq_u32, vdot_s32, vdotq_s32): + New. + (vdot_lane_u32, vdot_laneq_u32, vdotq_lane_u32, vdotq_laneq_u32): New. + (vdot_lane_s32, vdot_laneq_s32, vdotq_lane_s32, vdotq_laneq_s32): New. + +2017-10-16 Tamar Christina + + * config/aarch64/aarch64-builtins.c + (aarch64_types_quadopu_lane_qualifiers): New. + (TYPES_QUADOPU_LANE): New. + * config/aarch64/aarch64-simd.md (aarch64_dot): New. + (dot_prod, aarch64_dot_lane): New. + (aarch64_dot_laneq): New. + * config/aarch64/aarch64-simd-builtins.def (sdot, udot): New. + (sdot_lane, udot_lane, sdot_laneq, udot_laneq): New. + * config/aarch64/iterators.md (sur): Add UNSPEC_SDOT, UNSPEC_UDOT. + (Vdottype, DOTPROD): New. + (sur): Add SDOT and UDOT. + +2017-10-16 Tamar Christina + + * config/aarch64/aarch64.h (AARCH64_FL_DOTPROD): New. + (AARCH64_ISA_DOTPROD, TARGET_DOTPROD): New. + * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): + Add TARGET_DOTPROD. + * config/aarch64/aarch64-option-extensions.def (dotprod): New. + * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75): + Enable TARGET_DOTPROD. + (cortex-a75.cortex-a55): Likewise. + * doc/invoke.texi (aarch64-feature-modifiers): Document dotprod. + +2017-10-16 Tamar Christina + + * config/arm/arm-builtins.c (arm_unsigned_uternop_qualifiers): New. + (UTERNOP_QUALIFIERS, arm_umac_lane_qualifiers, UMAC_LANE_QUALIFIERS): + New. + * config/arm/arm_neon_builtins.def (sdot, udot, sdot_lane, udot_lane): + New. + * config/arm/iterators.md (DOTPROD, VSI2QI, vsi2qi): New. + (UNSPEC_DOT_S, UNSPEC_DOT_U, opsuffix): New. + * config/arm/neon.md (neon_dot): New. + (neon_dot_lane, dot_prod): New. + * config/arm/types.md (neon_dot, neon_dot_q): New. + * config/arm/unspecs.md (sup): Add UNSPEC_DOT_S, UNSPEC_DOT_U. + +2017-10-16 Tamar Christina + + * config/arm/arm.h (TARGET_DOTPROD): New. + * config/arm/arm.c (arm_arch_dotprod): New. + (arm_option_reconfigure_globals): Add arm_arch_dotprod. + * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New. + * config/arm/arm-cpus.in (armv8.2-a): Enabled +dotprod. + (feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New. + (ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL. + * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod. + * doc/invoke.texi (armv8.2-a): Document dotprod + +2017-10-14 Jan Hubicka + + * i386.c (ix86_vec_cost): New function. + (ix86_rtx_costs): Handle vector operations better. + * i386.h (struct processor_costs): Add sse_op, fmasd, fmass. + * x86-tune-costs.h: Add new costs to all tables. + +2017-10-14 Jan Hubicka + + * i386.c (ix86_rtx_costs): Make difference between x87 and SSE + operations. + * i386.h (struct processor_costs): Add addss, mulss, mulsd, divss, + divsd, sqrtss and sqrtsd + * x86-tune-costs.h: Add new entries to all costs. + (znver1_cost): Fix to match real instruction latencies. + +2017-10-14 Kyrylo Tkachov + Michael Collison + + * compare-elim.c: Include emit-rtl.h. + (can_merge_compare_into_arith): New function. + (try_validate_parallel): Likewise. + (try_merge_compare): Likewise. + (try_eliminate_compare): Call the above when no previous clobber + is available. + (execute_compare_elim_after_reload): Add DF_UD_CHAIN and DF_DU_CHAIN + dataflow problems. + +2017-10-14 Jakub Jelinek + + PR middle-end/62263 + PR middle-end/82498 + * tree-ssa-phiopt.c (value_replacement): Comment fix. Handle + up to 2 preparation statements for ASSIGN in MIDDLE_BB. + + PR middle-end/62263 + PR middle-end/82498 + * tree-ssa-forwprop.c (simplify_rotate): Allow def_arg1[N] + to be any operand_equal_p operands. For & (B - 1) require + B to be power of 2. Recognize + (X << (Y & (B - 1))) | (X >> ((-Y) & (B - 1))) and similar patterns. + +2017-10-14 Uros Bizjak + + PR bootstrap/82553 + * optabs.c (expand_memory_blockage): Fix call of + targetm.have_memory_blockage. + +2017-10-14 Jakub Jelinek + + PR bootstrap/82548 + * config.gcc (*-*-solaris2*, i[34567]86-*-cygwin*, + x86_64-*-cygwin*, i[34567]86-*-mingw* | x86_64-*-mingw*): Append + objects to extra_objs instead of overwriting it. + +2017-10-14 Uros Bizjak + + * config/i386/sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2): + Use any_fp_register_operand as operand[3] predicate. Simplify + equality test for operands[2] and operands[4] memory location. + (LDX_ATOMIC/STX_ATOMIC FP load peephole2): Ditto. + (FILD_ATOMIC/FIST_ATOMIC FP load peephole2 with mem blockage): New. + (LDX_ATOMIC/LDX_ATOMIC FP load peephole2 with mem blockage): Ditto. + (FILD_ATOMIC/FIST_ATOMIC FP store peephole2): Use + any_fp_register_operand as operand[1] predicate. Simplify + equality test for operands[0] and operands[3] memory location. + (LDX_ATOMIC/STX_ATOMIC FP store peephole2): Ditto. + (FILD_ATOMIC/FIST_ATOMIC FP store peephole2 with mem blockage): New. + (LDX_ATOMIC/LDX_ATOMIC FP storepeephole2 with mem blockage): Ditto. + +2017-10-14 Uros Bizjak + + * target-insns.def: Add memory_blockage. + * optabs.c (expand_memory_blockage): New function. + (expand_asm_memory_barrier): Rename ... + (expand_asm_memory_blockage): ... to this. + (expand_mem_thread_fence): Call expand_memory_blockage + instead of expand_asm_memory_barrier. + (expand_mem_singnal_fence): Ditto. + (expand_atomic_load): Ditto. + (expand_atomic_store): Ditto. + * doc/md.texi (Standard Pattern Names For Generation): + Document memory_blockage instruction pattern. + +2017-10-13 Sebastian Perta + + * config/rl78/rl78.c (rl78_emit_libcall): New function. + * config/rl78/rl78-protos.h (rl78_emit_libcall): New function. + * config/rl78/rl78.md: New define_expand "adddi3". + +2017-10-13 Jan Hubicka + + * cfghooks.c (verify_flow_info): Disable check that all probabilities + are set correctly. + +2017-10-13 Jeff Law + + * tree-ssa-reassoc.c (reassociate_bb): Clarify code slighly. + +2017-10-13 Jakub Jelinek + + PR target/82274 + * internal-fn.c (expand_mul_overflow): If both operands have + the same highpart of -1 or 0 and the topmost bit of lowpart + is different, overflow is if res <= 0 rather than res < 0. + +2017-10-13 Pat Haugen + + * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Remove + TARGET_P9_VECTOR code for unaligned_load case. + +2017-10-13 Jan Hubicka + + * cfghooks.c (verify_flow_info): Check that edge probabilities are set. + +2017-10-13 Nathan Sidwell + + * tree-core.h (tree_contains_struct): Make bool. + * tree.c (tree_contains_struct): Likewise. + * tree.h (MARK_TS_BASE): Remove do ... while (0) idiom. + (MARK_TS_TYPED, MARK_TS_COMMON, MARK_TS_TYPE_COMMON, + MARK_TS_TYPE_WITH_LANG_SPECIFIC, MARK_TS_DECL_MINIMAL, + MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL, MARK_TS_DECL_WITH_VIS, + MARK_TS_DECL_NON_COMMON): Likewise, use comma operator. + +2017-10-13 Richard Biener + + * graphite-isl-ast-to-gimple.c + (translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused + parameters and dominance check. + (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust. + (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise. + (translate_isl_ast_to_gimple::graphite_regenerate_ast_isl): + Do not update SSA form here or do intermediate IL verification. + * graphite.c: Include tree-ssa.h and tree-into-ssa.h. + (graphite_initialize): Remove check on the number of loops in + the function and inline into graphite_transform_loops. + (graphite_finalize): Inline into graphite_transform_loops. + (graphite_transform_loops): Perform SSA update and IL verification + here. + * params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove. + +2017-10-13 Richard Biener + + * graphite-isl-ast-to-gimple.c (max_mode_int_precision, + graphite_expression_type_precision): Avoid global constructor + by moving ... + (translate_isl_ast_to_gimple::translate_isl_ast_to_gimple): Here. + (translate_isl_ast_to_gimple::graphite_expr_type): Add type member. + (translate_isl_ast_to_gimple::translate_isl_ast_node_for): Use it. + (translate_isl_ast_to_gimple::build_iv_mapping): Likewise. + (translate_isl_ast_to_gimple::graphite_create_new_guard): Likewise. + * graphite-sese-to-poly.c (build_original_schedule): Return nothing. + +2017-10-13 H.J. Lu + + PR target/82499 + * config/i386/i386.h (ix86_red_zone_size): New. + * config/i386/i386.md (push peephole2s): Replace + "!ix86_using_red_zone ()" with "ix86_red_zone_size == 0". + +2017-10-13 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (can_change_dest_mode): Reject changes in + REGMODE_NATURAL_SIZE. + +2017-10-13 Richard Sandiford + Alan Hayward + David Sherwood + + * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_BITSIZE. + (expand_debug_source_expr): Likewise. + * combine.c (combine_simplify_rtx): Likewise. + * cse.c (fold_rtx): Likewise. + * fwprop.c (canonicalize_address): Likewise. + * targhooks.c (default_shift_truncation_mask): Likewise. + +2017-10-13 Richard Sandiford + Alan Hayward + David Sherwood + + * optabs.c (add_equal_note): Use GET_MODE_UNIT_SIZE. + (widened_mode): Likewise. + (expand_unop): Likewise. + * ree.c (transform_ifelse): Likewise. + (merge_def_and_ext): Likewise. + (combine_reaching_defs): Likewise. + * simplify-rtx.c (simplify_unary_operation_1): Likewise. + +2017-10-13 Richard Sandiford + Alan Hayward + David Sherwood + + * caller-save.c (replace_reg_with_saved_mem): Use byte_lowpart_offset. + * combine.c (gen_lowpart_for_combine): Likewise. + * dwarf2out.c (rtl_for_decl_location): Likewise. + * final.c (alter_subreg): Likewise. + * rtlhooks.c (gen_lowpart_general): Likewise. + (gen_lowpart_if_possible): Likewise. + +2017-10-13 Richard Sandiford + Alan Hayward + David Sherwood + + * calls.c (expand_call): Use subreg_lowpart_offset. + * cse.c (cse_insn): Likewise. + * regcprop.c (copy_value): Likewise. + (copyprop_hardreg_forward_1): Likewise. + +2017-10-13 Jakub Jelinek + + PR target/82524 + * config/i386/i386.md (addqi_ext_1, andqi_ext_1, + *andqi_ext_1_cc, *qi_ext_1, *xorqi_ext_1_cc): Change + =Q constraints to +Q and into insn condition add check + that operands[0] and operands[1] are equal. + (*addqi_ext_2, *andqi_ext_2, *qi_ext_2): Change + =Q constraints to +Q and into insn condition add check + that operands[0] is equal to either operands[1] or operands[2]. + + PR target/82498 + * fold-const.c (fold_binary_loc) : Code cleanups, + instead of handling MINUS_EXPR twice (once for each argument), + canonicalize operand order and handle just once, use rtype where + possible. Handle (A << B) | (A >> (-B & (Z - 1))). + + PR target/82498 + * config/i386/ia32intrin.h (__rold, __rord, __rolq, __rorq): Allow + any values of __C while still being pattern recognizable as a simple + rotate instruction. + +2017-10-13 Richard Biener + + PR tree-optimization/82451 + Revert + 2017-10-02 Richard Biener + + PR tree-optimization/82355 + * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build + a mapping for the enclosing loop but avoid generating one for + the loop tree root. + (copy_bb_and_scalar_dependences): Remove premature codegen + error on PHIs in blocks duplicated into multiple places. + * graphite-scop-detection.c + (scop_detection::stmt_has_simple_data_refs_p): For a loop not + in the region use it as loop and nest to analyze the DR in. + (try_generate_gimple_bb): Likewise. + * graphite-sese-to-poly.c (extract_affine_chrec): Adjust. + (add_loop_constraints): For blocks in a loop not in the region + create a dimension with a single iteration. + * sese.h (gbb_loop_at_index): Remove assert. + + * cfgloop.c (loop_preheader_edge): For the loop tree root + return the single successor of the entry block. + * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): + Reset the SCEV hashtable and niters. + * graphite-scop-detection.c + (scop_detection::graphite_can_represent_scev): Add SCOP parameter, + assert that we only have POLYNOMIAL_CHREC that vary in loops + contained in the region. + (scop_detection::graphite_can_represent_expr): Adjust. + (scop_detection::stmt_has_simple_data_refs_p): For loops + not in the region set loop to NULL. The nest is now the + entry edge to the region. + (try_generate_gimple_bb): Likewise. + * sese.c (scalar_evolution_in_region): Adjust for + instantiate_scev change. + * tree-data-ref.h (graphite_find_data_references_in_stmt): + Make nest parameter the edge into the region. + (create_data_ref): Likewise. + * tree-data-ref.c (dr_analyze_indices): Make nest parameter an + entry edge into a region and adjust instantiate_scev calls. + (create_data_ref): Likewise. + (graphite_find_data_references_in_stmt): Likewise. + (find_data_references_in_stmt): Pass the loop preheader edge + from the nest argument. + * tree-scalar-evolution.h (instantiate_scev): Make instantiate_below + parameter the edge into the region. + (instantiate_parameters): Use the loop preheader edge as entry. + * tree-scalar-evolution.c (analyze_scalar_evolution): Handle + NULL loop. + (get_instantiated_value_entry): Make instantiate_below parameter + the edge into the region. + (instantiate_scev_name): Likewise. Adjust dominance checks, + when we cannot use loop-based instantiation instantiate by + walking use-def chains. + (instantiate_scev_poly): Adjust. + (instantiate_scev_binary): Likewise. + (instantiate_scev_convert): Likewise. + (instantiate_scev_not): Likewise. + (instantiate_array_ref): Remove. + (instantiate_scev_3): Likewise. + (instantiate_scev_2): Likewise. + (instantiate_scev_1): Likewise. + (instantiate_scev_r): Do not blindly handle N-operand trees. + Do not instantiate array-refs. Handle all constants and invariants. + (instantiate_scev): Make instantiate_below parameter + the edge into the region. + (resolve_mixers): Use the loop preheader edge for the region + parameter to instantiate_scev_r. + * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Adjust. + +2017-10-13 Richard Biener + + PR tree-optimization/82525 + * graphite-isl-ast-to-gimple.c + (translate_isl_ast_to_gimple::widest_int_from_isl_expr_int): Split + out from ... + (translate_isl_ast_to_gimple::gcc_expression_from_isl_expr_int): Here. + Fail code generation when we cannot represent the isl integer. + (binary_op_to_tree): Elide modulo operations that are no-ops + in the type we code generate. Remove now superfluous code + generation errors. + +2017-10-13 Richard Biener + + * graphite-scop-detection.c (loop_ivs_can_be_represented): Remove. + (scop_detection::harmful_loop_in_region): Remove premature + IV type restriction. + (scop_detection::graphite_can_represent_scev): We can handle + pointer IVs just fine. + +2017-10-13 Alan Modra + + * doc/extend.texi (Extended Asm ): Rename to + "Clobbers and Scratch Registers". Add paragraph on + alternative to clobbers for scratch registers and OpenBLAS + example. + +2017-10-13 Alan Modra + + * doc/extend.texi (Clobbers): Correct vax example. Delete old + example of a memory input for a string of known length. Move + commentary out of table. Add a number of new examples + covering array memory inputs. + +2017-10-12 Martin Liska + + PR tree-optimization/82493 + * sbitmap.c (bitmap_bit_in_range_p): Fix the implementation. + (test_range_functions): New function. + (sbitmap_c_tests): Likewise. + * selftest-run-tests.c (selftest::run_tests): Run new tests. + * selftest.h (sbitmap_c_tests): New function. + + * tree-ssa-dse.c (live_bytes_read): Fix thinko. + +2017-10-12 Michael Meissner + + * config/rs6000/amo.h: Fix spacing issue. + +2017-10-12 Jakub Jelinek + + PR target/82498 + * config/i386/i386.md (*ashl3_mask_1, + *3_mask_1, *3_mask_1, + *_mask_1, *btr_mask_1): New define_insn_and_split + patterns. + +2017-10-12 Jan Hubicka + + * profile-count.h (safe_scale_64bit): Fix GCC4.x path. + (profile_probability): Set max_probability + to (uint32_t) 1 << (n_bits - 2) and update accessors to avoid overlfows + in temporaries. + * profile-count.c (profile_probability::differs_from_p): Do not + rely on max_probaiblity == 10000 + +2017-10-12 Jeff Law + + * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with + negative offsets. + +2017-10-12 Martin Sebor + + PR other/82301 + PR c/82435 + * cgraphunit.c (maybe_diag_incompatible_alias): New function. + (handle_alias_pairs): Call it. + * common.opt (-Wattribute-alias): New option. + * doc/extend.texi (ifunc attribute): Discuss C++ specifics. + * doc/invoke.texi (-Wattribute-alias): Document. + +2017-10-12 Vladimir Makarov + + Revert + 2017-10-11 Vladimir Makarov + PR sanitizer/82353 + * lra.c (collect_non_operand_hard_regs): Don't ignore operator + locations. + * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up. + (make_hard_regno_born, make_hard_regno_dead): Update + bb_killed_pseudos and bb_gen_pseudos. + +2017-10-12 Jan Hubicka + + * config/i386/x86-tune-sched.c (ix86_adjust_cost): Fix Zen support. + +2017-10-12 Uros Bizjak + + * config/alpha/alpha.c (alpha_split_conditional_move): + Use std::swap instead of manually swapping. + (alpha_stdarg_optimize_hook): Ditto. + (alpha_canonicalize_comparison): Ditto. + +2017-10-12 Bin Cheng + + * tree-loop-distribution.c (struct builtin_info): New struct. + (struct partition): Refactor fields into struct builtin_info. + (partition_free): Free struct builtin_info. + (build_size_arg_loc, build_addr_arg_loc): Delete. + (generate_memset_builtin, generate_memcpy_builtin): Get memory range + information from struct builtin_info. + (find_single_drs): New function refactored from classify_partition. + Also moved builtin validity checks to this function. + (compute_access_range, alloc_builtin): New functions. + (classify_builtin_st, classify_builtin_ldst): New functions. + (classify_partition): Refactor code into functions find_single_drs, + classify_builtin_st and classify_builtin_ldst. + (distribute_loop): Don't do runtime alias check when distributing + loop nest. + (find_seed_stmts_for_distribution): New function. + (pass_loop_distribution::execute): Refactor code finding seed + stmts into above function. Support distribution for the innermost + two-level loop nest. Adjust dump information. + +2017-10-12 Bin Cheng + + * tree-loop-distribution.c: Adjust the general comment. + (NUM_PARTITION_THRESHOLD): New macro. + (ssa_name_has_uses_outside_loop_p): Support loop nest distribution. + (classify_partition): Skip builtin pattern of loop nest's inner loop. + (merge_dep_scc_partitions): New parameter ignore_alias_p and use it + in call to build_partition_graph. + (finalize_partitions): New parameter. Make loop distribution more + conservative by fusing more partitions. + (distribute_loop): Don't do runtime alias check in case of loop nest + distribution. + (find_seed_stmts_for_distribution): New function. + (prepare_perfect_loop_nest): New function. + (pass_loop_distribution::execute): Refactor code finding seed stmts + and loop nest into above functions. Support loop nest distribution. + Adjust dump information accordingly. + +2017-10-12 Bin Cheng + + * tree-loop-distribution.c (break_alias_scc_partitions): Add comment + and set PTYPE_SEQUENTIAL for merged partition. + +2017-10-12 Richard Biener + + PR tree-optimization/69728 + Revert + 2017-09-19 Richard Biener + + PR tree-optimization/69728 + * graphite-sese-to-poly.c (schedule_error): New global. + (add_loop_schedule): Handle empty domain by failing the + schedule. + (build_original_schedule): Handle schedule_error. + + * graphite-sese-to-poly.c (add_loop_schedule): Handle empty + domain by returning an unchanged schedule. + +2017-10-12 Jakub Jelinek + + * genrecog.c (validate_pattern): For VEC_SELECT verify that + CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1. + +2017-10-12 Aldy Hernandez + + * Makefile.in (TAGS): Merge all the *.def files into one pattern. + Handle params.def. + +2017-10-12 Jakub Jelinek + + PR c++/82159 + * expr.c (store_field): Don't optimize away bitsize == 0 store + from CALL_EXPR with addressable return type. + +2017-10-11 Segher Boessenkool + + * config/rs6000/rs6000.h (TARGET_ISEL64): Delete. + * config/rs6000/rs6000.md (sel): Delete mode attribute. + (movcc, isel_signed_, isel_unsigned_, + *isel_reversed_signed_, *isel_reversed_unsigned_): Use + TARGET_ISEL instead of TARGET_ISEL. + +2017-10-11 David Edelsohn + + * config/rs6000/rs6000.c + (rs6000_xcoff_asm_output_aligned_decl_common): Test for NULL decl. + +2017-10-11 Segher Boessenkool + + * config/rs6000/predicates.md (zero_constant, all_ones_constant): + Move up in file. + (reg_or_cint_operand): Fix comment. + (reg_or_zero_operand): New predicate. + * config/rs6000/rs6000-protos.h (output_isel): Delete. + * config/rs6000/rs6000.c (output_isel): Delete. + * config/rs6000/rs6000.md (isel_signed_): Use reg_or_zero_operand + instead of reg_or_cint_operand. Output instruction directly (not via + output_isel). + (isel_unsigned_): Ditto. + (*isel_reversed_signed_): Use reg_or_zero_operand instead of + gpc_reg_operand. Add an instruction alternative for this. Output + instruction directly. + (*isel_reversed_unsigned_): Ditto. + +2017-10-11 Uros Bizjak + + * config/i386/i386.c (ix86_canonicalize_comparison): New function. + (TARGET_CANONICALIZE_COMPARISON): Define. + +2017-10-11 Qing Zhao + + PR target/81422 + * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): + Check whether the dest is REG before adding REG_EQUIV note. + +2017-10-11 Vladimir Makarov + + PR sanitizer/82353 + * lra.c (collect_non_operand_hard_regs): Don't ignore operator + locations. + * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up. + (make_hard_regno_born, make_hard_regno_dead): Update + bb_killed_pseudos and bb_gen_pseudos. + +2017-10-11 Nathan Sidwell + + * incpath.h (enum incpath_kind): Name enum, prefix values. + (add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_kind. + * incpath.c (heads, tails): Use INC_MAX. + (add_env_var_paths, add_standard_paths): Use incpath_kind. + (merge_include_chains, split_quote_chain, + register_include_chains): Update incpath_kind names. + (add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_kind. + * config/darwin-c.c (add_system_framework_path): Update incpath_kind + names. + (add_framework_path, darwin_register_objc_includes): Likewise. + * config/vms/vms-c.c (vms_c_register_includes): Likewise. + +2017-10-11 Uros Bizjak + + * config/i386/i386.md (*cmp__i387): + Do not use float_operator operator predicate. + (*cmp__cc_i387): Ditto. + * config/i386/predicates.md (float_operator): Remove predicate. + +2017-10-11 Uros Bizjak + + * config/i386/i386.md (*jcc_0_i387): Remove insn pattern. + (*jccxf_i387): Ditto. + (*jcc_i387): Ditto. + (*jccu_i387): Ditto. + (*jcc__i387): Ditto. + (*jcc_*_i387 splitters): Remove. + * config/i386/i386-protos.h (ix86_split_fp_branch): Remove prototype. + * config/i386/i386.c (ix86_split_fp_branch): Remove. + * config/i386/predicates.md (ix86_swapped_fp_comparison_operator): + Remove predicate. + +2017-10-11 Jan Hubicka + + * profile-count.h (slow_safe_scale_64bit): New function. + (safe_scale_64bit): New inline. + (profile_count::max_safe_multiplier): Remove; use safe_scale_64bit. + * profile-count.c: Include wide-int.h + (slow_safe_scale_64bit): New. + +2017-10-11 Nathan Sidwell + + * tree.h (DECL_ASSEMBLER_NAME_SET_P): Don't check + HAS_DECL_ASSEMBLER_NAME_P. + * gimple-expr.c (gimple_decl_printable_name: Check + HAS_DECL_ASSEMBLER_NAME_P too. + * ipa-utils.h (type_in_anonymous_namespace_p): Check + DECL_ASSEMBLER_NAME_SET_P of TYPE_NAME. + (odr_type_p): No need to assert TYPE_NAME is a TYPE_DECL. + * passes.c (rest_of_decl_compilation): Check + HAS_DECL_ASSEMBLER_NAME_P too. + * recog.c (verify_changes): Likewise. + * tree-pretty-print.c (dump_decl_name): Likewise. + * tree-ssa-structalias.c (alias_get_name): Likewise. Reimplement. + + * tree.h (DECL_ASSEMBLER_NAME_RAW): New. + (SET_DECL_ASSEMBLER_NAME): Use it. + (DECL_ASSEMBLER_NAME_SET_P): Likewise. + (COPY_DECL_ASSEMBLER_NAME): Likewise. + * tree.c (decl_assembler_name): Use DECL_ASSEMBLER_NAME_RAW. + +2017-10-11 Jan Hubicka + + * config.gcc (i386, x86_64): Add extra objects. + * config/i386/i386-protos.h (ix86_rip_relative_addr_p): Declare. + (ix86_min_insn_size): Declare. + (ix86_issue_rate): Declare. + (ix86_adjust_cost): Declare. + (ia32_multipass_dfa_lookahead): Declare. + (ix86_macro_fusion_p): Declare. + (ix86_macro_fusion_pair_p): Declare. + (ix86_bd_has_dispatch): Declare. + (ix86_bd_do_dispatch): Declare. + (ix86_core2i7_init_hooks): Declare. + (ix86_atom_sched_reorder): Declare. + * config/i386/i386.c Move all CPU cost tables to x86-tune-costs.h. + (COSTS_N_BYTES): Move to x86-tune-costs.h. + (DUMMY_STRINGOP_ALGS):Move to x86-tune-costs.h. + (rip_relative_addr_p): Rename to ... + (ix86_rip_relative_addr_p): ... this one; export. + (memory_address_length): Update. + (ix86_issue_rate): Move to x86-tune-sched.c. + (ix86_flags_dependent): Move to x86-tune-sched.c. + (ix86_agi_dependent): Move to x86-tune-sched.c. + (exact_dependency_1): Move to x86-tune-sched.c. + (exact_store_load_dependency): Move to x86-tune-sched.c. + (ix86_adjust_cost): Move to x86-tune-sched.c. + (ia32_multipass_dfa_lookahead): Move to x86-tune-sched.c. + (ix86_macro_fusion_p): Move to x86-tune-sched.c. + (ix86_macro_fusion_pair_p): Move to x86-tune-sched.c. + (do_reorder_for_imul): Move to x86-tune-sched-atom.c. + (swap_top_of_ready_list): Move to x86-tune-sched-atom.c. + (ix86_sched_reorder): Move to x86-tune-sched-atom.c. + (core2i7_first_cycle_multipass_init): Move to x86-tune-sched-core.c. + (core2i7_dfa_post_advance_cycle): Move to x86-tune-sched-core.c. + (min_insn_size): Rename to ... + (ix86_min_insn_size): ... this one; export. + (core2i7_first_cycle_multipass_begin): Move to x86-tune-sched-core.c. + (core2i7_first_cycle_multipass_issue): Move to x86-tune-sched-core.c. + (core2i7_first_cycle_multipass_backtrack): Move to + x86-tune-sched-core.c. + (core2i7_first_cycle_multipass_end): Move to x86-tune-sched-core.c. + (core2i7_first_cycle_multipass_fini): Move to x86-tune-sched-core.c. + (ix86_sched_init_global): Break up logic to ix86_core2i7_init_hooks. + (ix86_avoid_jump_mispredicts): Update. + (TARGET_SCHED_DISPATCH): Move to ix86-tune-sched-bd.c. + (TARGET_SCHED_DISPATCH_DO): Move to ix86-tune-sched-bd.c. + (TARGET_SCHED_REORDER): Move to ix86-tune-sched-bd.c. + (DISPATCH_WINDOW_SIZE): Move to ix86-tune-sched-bd.c. + (MAX_DISPATCH_WINDOWS): Move to ix86-tune-sched-bd.c. + (MAX_INSN): Move to ix86-tune-sched-bd.c. + (MAX_IMM): Move to ix86-tune-sched-bd.c. + (MAX_IMM_SIZE): Move to ix86-tune-sched-bd.c. + (MAX_IMM_32): Move to ix86-tune-sched-bd.c. + (MAX_IMM_64): Move to ix86-tune-sched-bd.c. + (MAX_LOAD): Move to ix86-tune-sched-bd.c. + (MAX_STORE): Move to ix86-tune-sched-bd.c. + (BIG): Move to ix86-tune-sched-bd.c. + (enum dispatch_group): Move to ix86-tune-sched-bd.c. + (enum insn_path): Move to ix86-tune-sched-bd.c. + (get_mem_group): Move to ix86-tune-sched-bd.c. + (is_cmp): Move to ix86-tune-sched-bd.c. + (dispatch_violation): Move to ix86-tune-sched-bd.c. + (is_branch): Move to ix86-tune-sched-bd.c. + (is_prefetch): Move to ix86-tune-sched-bd.c. + (init_window): Move to ix86-tune-sched-bd.c. + (allocate_window): Move to ix86-tune-sched-bd.c. + (init_dispatch_sched): Move to ix86-tune-sched-bd.c. + (is_end_basic_block): Move to ix86-tune-sched-bd.c. + (process_end_window): Move to ix86-tune-sched-bd.c. + (allocate_next_window): Move to ix86-tune-sched-bd.c. + (find_constant): Move to ix86-tune-sched-bd.c. + (get_num_immediates): Move to ix86-tune-sched-bd.c. + (has_immediate): Move to ix86-tune-sched-bd.c. + (get_insn_path): Move to ix86-tune-sched-bd.c. + (get_insn_group): Move to ix86-tune-sched-bd.c. + (count_num_restricted): Move to ix86-tune-sched-bd.c. + (fits_dispatch_window): Move to ix86-tune-sched-bd.c. + (add_insn_window): Move to ix86-tune-sched-bd.c. + (add_to_dispatch_window): Move to ix86-tune-sched-bd.c. + (debug_dispatch_window_file): Move to ix86-tune-sched-bd.c. + (debug_dispatch_window): Move to ix86-tune-sched-bd.c. + (debug_insn_dispatch_info_file): Move to ix86-tune-sched-bd.c. + (debug_ready_dispatch): Move to ix86-tune-sched-bd.c. + (do_dispatch): Move to ix86-tune-sched-bd.c. + (has_dispatch): Move to ix86-tune-sched-bd.c. + * config/i386/t-i386: Add new object files. + * config/i386/x86-tune-costs.h: New file. + * config/i386/x86-tune-sched-atom.c: New file. + * config/i386/x86-tune-sched-bd.c: New file. + * config/i386/x86-tune-sched-core.c: New file. + * config/i386/x86-tune-sched.c: New file. + +2017-10-11 Liu Hao + + * pretty-print.c [_WIN32] (colorize_init): Remove. Use + the generic version below instead. + (should_colorize): Recognize Windows consoles as terminals + for MinGW targets. + * pretty-print.c [__MINGW32__] (write_all): New function. + [__MINGW32__] (find_esc_head): Likewise. + [__MINGW32__] (find_esc_terminator): Likewise. + [__MINGW32__] (eat_esc_sequence): Likewise. + [__MINGW32__] (mingw_ansi_fputs): New function that handles + ANSI escape codes. + (pp_write_text_to_stream): Use mingw_ansi_fputs instead of fputs + for MinGW targets. + +2017-10-11 Richard Biener + + * tree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith): + Properly call analyze_scalar_evolution with the loop of the stmt. + +2017-10-11 Richard Biener + + * tree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand. + * tree-core.h (tree_base): Add chrec_var union member. + * tree.h (CHREC_VAR): Remove. + (CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE): Adjust. + * tree-chrec.h (build_polynomial_chrec): Adjust. + * tree-chrec.c (reset_evolution_in_loop): Use build_polynomial_chrec. + * tree-pretty-print.c (dump_generic_node): Use CHREC_VARIABLE. + +2017-10-11 Marc Glisse + + * fold-const.c (fold_binary_loc) [X +- Y CMP X]: Move ... + * match.pd: ... here. + ((T) X == (T) Y): Relax condition. + +2017-10-11 Bin Cheng + + PR tree-optimization/82472 + * tree-loop-distribution.c (sort_partitions_by_post_order): Refine + comment. + (break_alias_scc_partitions): Update postorder number. + +2017-10-11 Martin Liska + + PR sanitizer/82490 + * opts.c (parse_no_sanitize_attribute): Do not use error_value + variable. + * opts.h (parse_no_sanitize_attribute): Remove last argument. + +2017-10-11 Martin Liska + + * print-rtl.c (print_insn): Move declaration of idbuf + to same scope as name. + +2017-10-11 Martin Liska + + Revert r253637: + + PR sanitizer/82484 + * sanopt.c (sanitize_rewrite_addressable_params): Do not handle + volatile arguments. + +2017-10-11 Martin Liska + + PR sanitizer/82484 + * sanopt.c (sanitize_rewrite_addressable_params): Do not handle + volatile arguments. + +2017-10-11 Adhemerval Zanella + + * config.gcc (default_gnu_indirect_function): Default to yes for + arm*-*-linux* with glibc. + +2017-10-11 Richard Biener + + * tree-scalar-evolution.c (get_scalar_evolution): Handle + default-defs and types we do not want to analyze. + (interpret_loop_phi): Replace unreachable code with an assert. + (compute_scalar_evolution_in_loop): Remove and inline ... + (analyze_scalar_evolution_1): ... here, replacing condition with + what makes the intent clearer. Remove handling of cases + get_scalar_evolution now handles. + +2017-10-10 Jim Wilson + + PR rtl-optimization/81434 + * haifa-sched.c (prune_ready_list): Init min_cost_group to 0. Update + comment for main loop. In sched_group_found if, also add checks for + pass and min_cost_group. + +2017-10-10 Segher Boessenkool + + * config/rs6000/rs6000.c (TARGET_INSN_COST): New. + (rs6000_insn_cost): New function. + * config/rs6000/rs6000.md (cost): New attribute. + +2017-10-10 Jakub Jelinek + H.J. Lu + + PR target/79565 + PR target/82483 + * config/i386/i386.c (ix86_init_mmx_sse_builtins): Add + OPTION_MASK_ISA_MMX for __builtin_ia32_maskmovq, + __builtin_ia32_vec_ext_v4hi and __builtin_ia32_vec_set_v4hi. + (ix86_expand_builtin): Treat OPTION_MASK_ISA_MMX similarly + to OPTION_MASK_ISA_AVX512VL - builtins that have both + OPTION_MASK_ISA_MMX and some other bit set require both + mmx and the ISAs without the mmx bit. + * config/i386/i386-builtin.def (__builtin_ia32_cvtps2pi, + __builtin_ia32_cvttps2pi, __builtin_ia32_cvtpi2ps, + __builtin_ia32_pavgb, __builtin_ia32_pavgw, __builtin_ia32_pmulhuw, + __builtin_ia32_pmaxub, __builtin_ia32_pmaxsw, __builtin_ia32_pminub, + __builtin_ia32_pminsw, __builtin_ia32_psadbw, __builtin_ia32_pmovmskb, + __builtin_ia32_pshufw, __builtin_ia32_cvtpd2pi, + __builtin_ia32_cvttpd2pi, __builtin_ia32_cvtpi2pd, + __builtin_ia32_pmuludq, __builtin_ia32_pabsb, __builtin_ia32_pabsw, + __builtin_ia32_pabsd, __builtin_ia32_phaddw, __builtin_ia32_phaddd, + __builtin_ia32_phaddsw, __builtin_ia32_phsubw, __builtin_ia32_phsubd, + __builtin_ia32_phsubsw, __builtin_ia32_pmaddubsw, + __builtin_ia32_pmulhrsw, __builtin_ia32_pshufb, __builtin_ia32_psignb, + __builtin_ia32_psignw, __builtin_ia32_psignd, __builtin_ia32_movntq, + __builtin_ia32_paddq, __builtin_ia32_psubq, __builtin_ia32_palignr): + Add OPTION_MASK_ISA_MMX. + +2017-10-10 Andreas Tobler + + * config.gcc (armv7*-*-freebsd*): New target. + (armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define. + +2017-10-10 Jan Hubicka + + * x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, + X86_TUNE_ADJUST_UNROLL, X86_TUNE_ONE_IF_CONV_INSN): Move to right + spot in the file. + +2017-10-10 Richard Sandiford + + * wide-int.h (wide_int_ref_storage): Make host_dependent_precision + a template parameter. + (WIDE_INT_REF_FOR): Update accordingly. + * tree.h (wi::int_traits ): Delete. + (wi::tree_to_widest_ref, wi::tree_to_offset_ref): New typedefs. + (wi::to_widest, wi::to_offset): Use them. Expand commentary. + (wi::tree_to_wide_ref): New typedef. + (wi::to_wide): New function. + * calls.c (get_size_range): Use wi::to_wide when operating on + trees as wide_ints. + * cgraph.c (cgraph_node::create_thunk): Likewise. + * config/i386/i386.c (ix86_data_alignment): Likewise. + (ix86_local_alignment): Likewise. + * dbxout.c (stabstr_O): Likewise. + * dwarf2out.c (add_scalar_info, gen_enumeration_type_die): Likewise. + * expr.c (const_vector_from_tree): Likewise. + * fold-const-call.c (host_size_t_cst_p, fold_const_call_1): Likewise. + * fold-const.c (may_negate_without_overflow_p, negate_expr_p) + (fold_negate_expr_1, int_const_binop_1, const_binop) + (fold_convert_const_int_from_real, optimize_bit_field_compare) + (all_ones_mask_p, sign_bit_p, unextend, extract_muldiv_1) + (fold_div_compare, fold_single_bit_test, fold_plusminus_mult_expr) + (pointer_may_wrap_p, expr_not_equal_to, fold_binary_loc) + (fold_ternary_loc, multiple_of_p, fold_negate_const, fold_abs_const) + (fold_not_const, round_up_loc): Likewise. + * gimple-fold.c (gimple_fold_indirect_ref): Likewise. + * gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Likewise. + (alloca_call_type): Likewise. + * gimple.c (preprocess_case_label_vec_for_gimple): Likewise. + * godump.c (go_output_typedef): Likewise. + * graphite-sese-to-poly.c (tree_int_to_gmp): Likewise. + * internal-fn.c (get_min_precision): Likewise. + * ipa-cp.c (ipcp_store_vr_results): Likewise. + * ipa-polymorphic-call.c + (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise. + * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise. + (ipa_modify_call_arguments): Likewise. + * match.pd: Likewise. + * omp-low.c (scan_omp_1_op, lower_omp_ordered_clauses): Likewise. + * print-tree.c (print_node_brief, print_node): Likewise. + * stmt.c (expand_case): Likewise. + * stor-layout.c (layout_type): Likewise. + * tree-affine.c (tree_to_aff_combination): Likewise. + * tree-cfg.c (group_case_labels_stmt): Likewise. + * tree-data-ref.c (dr_analyze_indices): Likewise. + (prune_runtime_alias_test_list): Likewise. + * tree-dump.c (dequeue_and_dump): Likewise. + * tree-inline.c (remap_gimple_op_r, copy_tree_body_r): Likewise. + * tree-predcom.c (is_inv_store_elimination_chain): Likewise. + * tree-pretty-print.c (dump_generic_node): Likewise. + * tree-scalar-evolution.c (iv_can_overflow_p): Likewise. + (simple_iv_with_niters): Likewise. + * tree-ssa-address.c (addr_for_mem_ref): Likewise. + * tree-ssa-ccp.c (ccp_finalize, evaluate_stmt): Likewise. + * tree-ssa-loop-ivopts.c (constant_multiple_of): Likewise. + * tree-ssa-loop-niter.c (split_to_var_and_offset) + (refine_value_range_using_guard, number_of_iterations_ne_max) + (number_of_iterations_lt_to_ne, number_of_iterations_lt) + (get_cst_init_from_scev, record_nonwrapping_iv) + (scev_var_range_cant_overflow): Likewise. + * tree-ssa-phiopt.c (minmax_replacement): Likewise. + * tree-ssa-pre.c (compute_avail): Likewise. + * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise. + (vn_reference_maybe_forwprop_address, valueized_wider_op): Likewise. + * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise. + * tree-ssa-uninit.c (is_pred_expr_subset_of): Likewise. + * tree-ssanames.c (set_nonzero_bits, get_nonzero_bits): Likewise. + * tree-switch-conversion.c (collect_switch_conv_info, array_value_type) + (dump_case_nodes, try_switch_expansion): Likewise. + * tree-vect-loop-manip.c (vect_gen_vector_loop_niters): Likewise. + (vect_do_peeling): Likewise. + * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise. + * tree-vect-stmts.c (vectorizable_load): Likewise. + * tree-vrp.c (compare_values_warnv, vrp_int_const_binop): Likewise. + (zero_nonzero_bits_from_vr, ranges_from_anti_range): Likewise. + (extract_range_from_binary_expr_1, adjust_range_with_scev): Likewise. + (overflow_comparison_p_1, register_edge_assert_for_2): Likewise. + (is_masked_range_test, find_switch_asserts, maybe_set_nonzero_bits) + (vrp_evaluate_conditional_warnv_with_ops, intersect_ranges): Likewise. + (range_fits_type_p, two_valued_val_range_p, vrp_finalize): Likewise. + (evrp_dom_walker::before_dom_children): Likewise. + * tree.c (cache_integer_cst, real_value_from_int_cst, integer_zerop) + (integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2) + (tree_floor_log2, tree_ctz, mem_ref_offset, tree_int_cst_sign_bit) + (tree_int_cst_sgn, get_unwidened, int_fits_type_p): Likewise. + (get_type_static_bounds, num_ending_zeros, drop_tree_overflow) + (get_range_pos_neg): Likewise. + * ubsan.c (ubsan_expand_ptr_ifn): Likewise. + * config/darwin.c (darwin_mergeable_constant_section): Likewise. + * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise. + * config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise. + * config/avr/avr.c (avr_fold_builtin): Likewise. + * config/bfin/bfin.c (bfin_local_alignment): Likewise. + * config/msp430/msp430.c (msp430_attr): Likewise. + * config/nds32/nds32.c (nds32_insert_attributes): Likewise. + * config/powerpcspe/powerpcspe-c.c + (altivec_resolve_overloaded_builtin): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate) + (rs6000_expand_ternop_builtin): Likewise. + * config/rs6000/rs6000-c.c + (altivec_resolve_overloaded_builtin): Likewise. + * config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise. + (rs6000_expand_ternop_builtin): Likewise. + * config/s390/s390.c (s390_handle_hotpatch_attribute): Likewise. + +2017-10-10 Bin Cheng + + * tree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes + when copying loop nest with only one inner loop. + +2017-10-10 Richard Biener + + * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting + blocks if SCEV is active. + * tree-scalar-evolution.c (analyze_scalar_evolution_1): Remove + dead code. + (analyze_scalar_evolution): Handle cached evolutions the obvious way. + (scev_initialize): Assert we are not yet initialized. + +2017-10-10 Bin Cheng + + * tree-loop-distribution.c (generate_loops_for_partition): Remove + inner loop's exit stmt by making it always exit the loop, otherwise + we would generate an infinite empty loop. + +2017-10-10 Bin Cheng + + * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip + renaming variables in new preheader if it's deleted. + +2017-10-10 Bin Cheng + + * tree-loop-distribution.c (struct partition): Remove unused field + loops of the structure. + (partition_alloc, partition_free): Ditto. + (build_rdg_partition_for_vertex): Ditto. + +2017-10-09 Jeff Law + + * targhooks.c (default_stack_clash_protection_final_dynamic_probe): Fix + return type to match prototype and documentation. + +2010-10-09 Segher Boessenkool + + * config/rs6000/rs6000.c (processor_costs): Move to ... + * config/rs6000/rs6000.h: ... here. + (rs6000_cost): Declare. + +2017-10-09 Eric Botcazou + + * except.c (setjmp_fn): New global variable. + (init_eh): Initialize it if DONT_USE_BUILTIN_SETJMP is defined. + (sjlj_emit_function_enter): Call it instead of BUILTIN_SETJMP + if DONT_USE_BUILTIN_SETJMP is defined. + +2017-10-09 Segher Boessenkool + + * target.def (insn_cost): New hook. + * doc/tm.texi.in (TARGET_INSN_COST): New hook. + * doc/tm.texi: Regenerate. + * rtlanal.c (insn_cost): Use the new hook. + +2017-10-09 Segher Boessenkool + + * combine.c (combine_validate_cost): Compute the new insn_cost, + not just pattern_cost. + (try_combine): Adjust comment. + +2017-10-09 Segher Boessenkool + + * cfgrtl.c (rtl_account_profile_record): Replace insn_rtx_cost with + insn_cost. + * combine.c (uid_insn_cost): Adjust comment. + (combine_validate_cost): Adjust comment. Use pattern_cost instead + of insn_rtx_cost + (combine_instructions): Use insn_cost instead of insn_rtx_cost. + * dse.c (find_shift_sequence): Ditto. + * ifcvt.c (cheap_bb_rtx_cost_p): Ditto. + (bb_valid_for_noce_process_p): Use pattern_cost. + * rtl.h (insn_rtx_cost): Delete. + (pattern_cost): New prototype. + (insn_cost): New prototype. + * rtlanal.c (insn_rtx_cost): Rename to... + (pattern_cost): ... this. + (insn_cost): New. + +2017-10-09 Uros Bizjak + + * config/i386/i386.md (*jcc_2): Remove insn pattern. + (*jcc_0_r_i387): Ditto. + (*jccxf_r_i387): Ditto. + (*jcc_r_i387): Ditto. + (*jccu_r_i387): Ditto. + (*jcc__r_i387): Ditto. + (*jcc): Rename from *jcc_1. + +2017-10-09 Bill Schmidt + + * config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Process + deferred rescans after the lvx/stvx recombination pre-pass. + +2017-10-09 Michael Meissner + + * config/rs6000/amo.h: New include file to provide ISA 3.0 atomic + memory operation instruction support. + * config.gcc (powerpc*-*-*): Include amo.h as an extra header. + (rs6000-ibm-aix[789]*): Likewise. + * doc/extend.texi (PowerPC Atomic Memory Operation Functions): + Document new functions. + +2017-10-09 Richard Biener + + PR tree-optimization/82397 + * tree-data-ref.c (data_ref_compare_tree): Make sure to return + equality only for semantically equal trees. + +2017-10-09 Richard Biener + + PR tree-optimization/82449 + * sese.c (scev_analyzable_p): Check whether the SCEV is linear. + * tree-chrec.h (evolution_function_is_constant_p): Adjust to + allow constant addresses. + * tree-chrec.c (scev_is_linear_expression): Constant evolutions + are linear. + +2017-10-09 Andreas Krebbel + + * config/s390/s390-builtins.def (vec_nabs, vec_vfi): Fix builtin + flags. + +2017-10-09 Andreas Krebbel + + PR target/82463 + * config/s390/vecintrin.h (vec_madd, vec_msub): Fix macro + definitions. + +2017-10-09 Andreas Krebbel + + PR target/82465 + * config/s390/s390-builtins.def (vec_sqrt): Fix builtin flags. + +2017-10-09 Jakub Jelinek + + PR target/82464 + * config/s390/s390-builtins.def (s390_vec_xor_flt_a, + s390_vec_xor_flt_b, s390_vec_xor_flt_c): New. + +2017-10-09 Richard Sandiford + + * wide-int.h (WI_BINARY_OPERATOR_RESULT): New macro. + (WI_BINARY_PREDICATE_RESULT): Likewise. + (wi::binary_traits::operator_result): New type. + (wi::binary_traits::predicate_result): Likewise. + (generic_wide_int::operator~, unary generic_wide_int::operator-) + (generic_wide_int::operator==, generic_wide_int::operator!=) + (generic_wide_int::operator&, generic_wide_int::and_not) + (generic_wide_int::operator|, generic_wide_int::or_not) + (generic_wide_int::operator^, generic_wide_int::operator+ + (binary generic_wide_int::operator-, generic_wide_int::operator*): + Delete. + (operator~, unary operator-, operator==, operator!=, operator&) + (operator|, operator^, operator+, binary operator-, operator*): New + functions. + * expr.c (get_inner_reference): Use wi::bit_and_not. + * fold-const.c (fold_binary_loc): Likewise. + * ipa-prop.c (ipa_compute_jump_functions_for_edge): Likewise. + * tree-ssa-ccp.c (get_value_from_alignment): Likewise. + (bit_value_binop): Likewise. + * tree-ssa-math-opts.c (find_bswap_or_nop_load): Likewise. + * tree-vrp.c (zero_nonzero_bits_from_vr): Likewise. + (extract_range_from_binary_expr_1): Likewise. + (masked_increment): Likewise. + (simplify_bit_ops_using_ranges): Likewise. + +2017-10-09 Martin Jambor + + PR hsa/82416 + * hsa-common.h (hsa_op_with_type): New method extend_int_to_32bit. + * hsa-gen.c (hsa_extend_inttype_to_32bit): New function. + (hsa_type_for_scalar_tree_type): Use it. Always force min32int for + COMPLEX types. + (hsa_fixup_mov_insn_type): New function. + (hsa_op_with_type::get_in_type): Use it. + (hsa_build_append_simple_mov): Likewise. Allow sub-32bit + immediates in an assert. + (hsa_op_with_type::extend_int_to_32bit): New method. + (gen_hsa_insns_for_bitfield): Fixup instruction and intermediary + types. Convert to dest type if necessary. + (gen_hsa_insns_for_bitfield_load): Fixup load type if necessary. + (reg_for_gimple_ssa): Pass false as min32int to + hsa_type_for_scalar_tree_type. + (gen_hsa_addr): Fixup type when creating addresable temporary. + (gen_hsa_cmp_insn_from_gimple): Extend operands if necessary. + (gen_hsa_unary_operation): Extend operands and convert to dest type if + necessary. Call hsa_fixup_mov_insn_type. + (gen_hsa_binary_operation): Changed operand types to hsa_op_with_type, + extend operands and convert to dest type if necessary. + (gen_hsa_insns_for_operation_assignment): Extend operands and convert + to dest type if necessary. + (set_output_in_type): Call hsa_fixup_mov_insn_type. Just ude dest + if conversion nt necessary and size matches. + (gen_hsa_insns_for_load): Call hsa_fixup_mov_insn_type, convert + to dest type if necessary. + (gen_hsa_insns_for_store): Call hsa_fixup_mov_insn_type. + (gen_hsa_insns_for_switch_stmt): Likewise. Also extend operands if + necessary. + (gen_hsa_clrsb): Likewise. + (gen_hsa_ffs): Likewise. + (gen_hsa_divmod): Extend operands and convert to dest type if + necessary. + (gen_hsa_atomic_for_builtin): Change type of op to hsa_op_with_type. + +2017-10-08 Segher Boessenkool + + * config/rs6000/rs6000.md (conditional branch): Clean up formatting. + Remove empty default arguments. Use a brace block as output + statement. + (conditional return): Ditto. + (jump): Ditto. + (indirect_jump): Ditto. Use b%T0 instead of bctr/blr. + (tablejump, tablejumpsi, tablejumpdi, *tablejump_internal1): + Ditto. + (group_ending_nop): Ditto. + (doloop_end): Ditto. + (ctr, ctr_internal1, ctr_internal2): Ditto. + (splitters for those): Ditto. + +2017-10-08 Segher Boessenkool + + * config/rs6000/rs6000-string.c (expand_strncmp_align_check): Invert + a conditional jump (and the compare for it) so that pc_rtx is the + last operand. + * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Adjust + for the deleted and renamed ctr_internal[234] patterns. + * config/rs6000/rs6000.md: Delete second conditional branch pattern. + Delete second conditional return pattern. + (ctr_internal2): Delete this second bdnz pattern. + (ctr_internal3): Rename to ctr_internal2. + (ctr_internal4): Delete this second bdz pattern. + +2017-10-08 Eric Botcazou + + * tree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values. + (always_initialized_rtx_for_ssa_name_p): New predicate. + * tree-outof-ssa.c (remove_ssa_form): Initialize new field of SA. + (finish_out_of_ssa): Free new field of SA. + * tree-ssa-coalesce.h (get_undefined_value_partitions): Declare. + * tree-ssa-coalesce.c: Include tree-ssa.h. + (get_parm_default_def_partitions): Remove extern keyword. + (get_undefined_value_partitions): New function. + * expr.c (expand_expr_real_1) : For a SSA_NAME, do + not set SUBREG_PROMOTED_VAR_P on the sub-register if it may contain + uninitialized bits. + * loop-iv.c (iv_get_reaching_def): Disqualify all subregs. + +2017-10-08 Eric Botcazou + + * builtins.def (BUILT_IN_SETJMP): Revert latest change. + +2017-10-08 Jan Hubicka + + * config/i386/i386.c (ix86_expand_set_or_movmem): Disable 512bit loops + for targets that preffer 128bit. + +2017-10-08 Jan Hubicka + + * config/i386/i386.c (has_dispatch): Disable for Ryzen. + +2017-10-08 Olivier Hainque + + * config/arm/arm.c (arm_set_return_address): Use MEM_VOLATILE_P + on the target mem instead of RTX_FRAME_RELATED_P on the insn to + prevent DSE. + (thumb_set_return_address): Likewise. + +2017-10-08 Olivier Hainque + + * common/config/arm/arm-common.c (arm_except_unwind_info): + Handle DWARF2_UNWIND_INFO. + +2017-10-07 Michael Collison + + * config/aarch64/aarch64.md (*aarch64_reg__minus3): + New pattern. + +2017-10-07 Eric Botcazou + + * builtins.def (BUILT_IN_SETJMP): Declare as library builtin instead + of GCC builtin if DONT_USE_BUILTIN_SETJMP is defined. + * except.c (sjlj_emit_function_enter): If DONT_USE_BUILTIN_SETJMP is + defined, force the creation of a new block for a dispatch label. + +2017-10-07 Jan Hubicka + + * invoke.texi (Wsuggest-attribute=cold): Document. + * common.opt (Wsuggest-attribute=cold): New + * ipa-pure-const.c (warn_function_cold): New function. + * predict.c (compute_function_frequency): Use it. + * predict.h (warn_function_cold): Declare. + +2017-10-06 Jan Hubicka + + * tree-switch-conversion.c (do_jump_if_equal, emit_cmp_and_jump_insns): + Update profile. + +2017-10-06 Martin Liska + + * sanopt.c (struct sanopt_tree_triplet_hash): Remove inline + keyword for member functions. + (struct sanopt_tree_couple): New struct. + (struct sanopt_tree_couple_hash): New function. + (struct sanopt_ctx): Add new hash_map. + (has_dominating_ubsan_ptr_check): New function. + (record_ubsan_ptr_check_stmt): Likewise. + (maybe_optimize_ubsan_ptr_ifn): Likewise. + (sanopt_optimize_walker): Handle IFN_UBSAN_PTR. + (pass_sanopt::execute): Handle also SANITIZE_POINTER_OVERFLOW. + +2017-10-06 Sudakshina Das + + PR target/82440 + * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Only call + aarch64_simd_valid_immediate on CONST_VECTORs. + (aarch64_reg_or_bic_imm): Likewise. + +2017-10-06 Wilco Dijkstra + + PR rtl-optimization/82396 + * haifa-sched.c (ready_sort_real): Disable qsort checking. + +2017-10-06 Sebastian Pop + + * graphite-dependences.c (scop_get_reads): Move code to... + (scop_get_must_writes): Move code to... + (scop_get_may_writes): Move code to... + (scop_get_reads_and_writes): ... here. + (scop_get_dependences): Call scop_get_reads_and_writes. + +2017-10-06 Jakub Jelinek + + PR tree-optimization/82434 + * fold-const.h (can_native_encode_type_p, + can_native_encode_string_p): Remove. + * fold-const.c (native_encode_int): Formatting fixes. If ptr is NULL, + don't encode anything, just return what would be otherwise returned. + (native_encode_fixed, native_encode_complex, native_encode_vector): + Likewise. + (native_encode_string): Likewise. Inline by hand + can_native_encode_string_p. + (can_native_encode_type_p): Remove. + (can_native_encode_string_p): Remove. + * tree-vect-stmts.c (vectorizable_store): Instead of testing just + STRING_CSTs using can_native_encode_string_p, test all + CONSTANT_CLASS_P values using native_encode_expr with NULL ptr. + * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Remove last + argument from native_encode_expr. + (rhs_valid_for_store_merging_p): Use native_encode_expr with NULL ptr. + (pass_store_merging::execute): Don't unnecessarily look for 3 stmts, + but just 2. + +2017-10-06 Richard Biener + + PR tree-optimization/82397 + * tree-vect-data-refs.c (dr_group_sort_cmp): Do not use + operand_equal_p but rely on data_ref_compare_tree for detecting + equalities. + (vect_analyze_data_ref_accesses): Use data_ref_compare_tree + to match up with dr_group_sort_cmp. + +2017-10-06 Andreas Krebbel + + PR target/82322 + * config/s390/s390-builtins.def (s390_vfi): Define new overloaded + builtin. + * config/s390/s390-builtin-types.def: Regenerate. + +2017-10-06 Andreas Krebbel + + PR target/82317 + * config/s390/s390-builtin-types.def: Regenerate. + * config/s390/s390-builtins.def (s390_vfmaxdb_4, s390_vfmindb_4): + Change flag from B_VXE to B_VX. + (s390_vec_min_dbl): Remove B_VXE flag. + +2017-10-06 Richard Biener + + * graphite-isl-ast-to-gimple.c: Include ssa.h and tree-ssa.h. + (translate_isl_ast_to_gimple::translate_pending_phi_nodes, + translate_isl_ast_to_gimple::is_valid_rename, + translate_isl_ast_to_gimple::get_rename, + translate_isl_ast_to_gimple::get_def_bb_for_const, + translate_isl_ast_to_gimple::get_new_name, + translate_isl_ast_to_gimple::collect_all_ssa_names, + translate_isl_ast_to_gimple::copy_loop_phi_args, + translate_isl_ast_to_gimple::collect_all_ssa_names, + translate_isl_ast_to_gimple::copy_loop_phi_args, + translate_isl_ast_to_gimple::copy_loop_phi_nodes, + translate_isl_ast_to_gimple::add_close_phis_to_merge_points, + translate_isl_ast_to_gimple::add_close_phis_to_outer_loops, + translate_isl_ast_to_gimple::copy_loop_close_phi_args, + translate_isl_ast_to_gimple::copy_loop_close_phi_nodes, + translate_isl_ast_to_gimple::copy_cond_phi_args, + translate_isl_ast_to_gimple::copy_cond_phi_nodes, + translate_isl_ast_to_gimple::edge_for_new_close_phis, + translate_isl_ast_to_gimple::add_phi_arg_for_new_expr, + translate_isl_ast_to_gimple::rename_uses, + translate_isl_ast_to_gimple::rename_all_uses): Remove. + (translate_isl_ast_to_gimple::get_rename_from_scev): Simplify. + (set_rename_for_each_def): Likewise. + (graphite_copy_stmts_from_block): Handle debug stmt resetting + here. Handle rewriting SCEV analyzable uses here. + (copy_bb_and_scalar_dependences): Generate code for PHI + copy-in/outs. + (graphite_regenerate_ast_isl): Adjust. + * graphite-scop-detection.c (trivially_empty_bb_p): Move to sese.[ch]. + (add_write, add_read): New functions. + (build_cross_bb_scalars_def): Use it and simplify. + (build_cross_bb_scalars_use): Likewise. + (graphite_find_cross_bb_scalar_vars): Inline into... + (try_generate_gimple_bb): ...here. Add dependences for PHIs, + simulating out-of-SSA. Compute liveout and add dependencies. + (build_scops): Force an empty entry block. + * sese.h (sese_info_t::liveout, sese_info_t::debug_liveout): New + members. + (sese_build_liveouts): Declare. + (sese_trivially_empty_bb_p): Likewise. + * sese.c (sese_build_liveouts_bb): Properly handle PHIs, + compute liveout and debug_liveout. + (sese_bad_liveouts_use): Remove. + (sese_reset_debug_liveouts_bb): Likewise. + (sese_reset_debug_liveouts): Rewrite in terms of debug_liveout. + (sese_build_liveouts): Build liveout and debug_liveout and store + it in region. + (new_sese_info): Adjust. + (free_sese_info): Likewise. + (sese_insert_phis_for_liveouts): Reset debug stmts from here, + do not build liveout here. + (move_sese_in_condition): Adjust region entry. + (scev_analyzable_p): Match up with chrec_apply requirements. + (sese_trivially_empty_bb_p): New. + * tree-into-ssa.c (get_reaching_def): Properly support generating + default-defs for incremental rewrite of anonymous names. + +2017-10-06 Richard Biener + + * graphite-sese-to-poly.c (extract_affine): For casts increasing + precision do not perform modulo reduction. + +2017-10-06 Richard Biener + + PR tree-optimization/82436 + * tree-vect-slp.c (vect_supported_load_permutation_p): More + conservatively choose the vectorization factor when checking + whether we can perform the required load permutation. + (vect_transform_slp_perm_load): Assert when we may not fail. + +2017-10-05 Segher Boessenkool + + * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Correct error + message for incompatible -msdata=* and -mcall-* options. + +2017-10-05 Jan Hubicka + + * config/i386/i386.c (ia32_multipass_dfa_lookahead): Default to issue + rate for post-reload scheduling. + +2017-10-05 Tamar Christina + + * doc/sourcebuild.texi (vect_sizes_16B_8B, vect_sizes_32B_16B): New. + +2017-10-05 Jan Hubicka + + * config/i386/i386.c (znver1_cost): Set branch_cost to 3 (instead of 2) + to improve monte carlo in scimark. + +2017-10-05 Jan Hubicka + + * config/i386/i386.c (ix86_size_cost, i386_cost, i486_cost, + pentium_cost, lakemont_cost, pentiumpro_cost, geode_cost, k6_cost, + athlon_cost, k8_cost, amdfam10_cost, btver1_cost, btver2_cost, + pentium4_cost, nocona_cost): Set reassociation width to 1. + (bdver1_cost, bdver2_cost, bdver3_cost, bdver4_cost): Set reassociation + width to 2 for fp operations and 1 otherwise. + (znver1_cost): Set scalar reassoc width to 4 and vector to 3 and 6 + for int and fp. + (atom_cost): Set reassociation width to 2. + (slm_cost, generic_cost): Set fp reassociation width + to 2 and 1 otherwise. + (intel_cost): Set fp reassociation width to 4 and 1 otherwise. + (core_cost): Set fp reassociation width to 4 and vector to 2. + (ix86_reassociation_width): Rewrite using cost table; special case + plus/minus on Zen; honor X86_TUNE_SSE_SPLIT_REGS + and TARGET_AVX128_OPTIMAL. + * config/i386/i386.h (processor_costs): Add + reassoc_int, reassoc_fp, reassoc_vec_int, reassoc_vec_fp. + (TARGET_VECTOR_PARALLEL_EXECUTION, TARGET_REASSOC_INT_TO_PARALLEL, + TARGET_REASSOC_FP_TO_PARALLEL): Remove. + * x86-tune.def (X86_TUNE_REASSOC_INT_TO_PARALLEL): Remove. + (X86_TUNE_REASSOC_FP_TO_PARALLEL): Remove. + (X86_TUNE_VECTOR_PARALLEL_EXECUTION): Remove. + +2017-10-05 Nathan Sidwell + + * doc/invoke.texi (Wparentheses): Document C++ MVP behaviour. + +2017-10-05 Tamar Christina + + * config/arm/arm.c (arm_test_fpu_data): New. + (arm_run_selftests): Call arm_test_fpu_data. + +2017-10-04 Nathan Sidwell + + * toplev.c (toplev::main): Remove excess parens on pretty_printer + decl. + * caller-save.c (insert_save): Remove excess parens on TO_SAVE parm. + +2017-10-04 Sudakshina Das + + * config/aarch64/aarch64-protos.h (enum simd_immediate_check): New + check type for aarch64_simd_valid_immediate. + (aarch64_output_simd_mov_immediate): Update prototype. + (aarch64_simd_valid_immediate): Update prototype. + * config/aarch64/aarch64-simd.md (orr3): modified pattern to add + support for ORR-immediate. + (and3): modified pattern to add support for BIC-immediate. + * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Function + now checks for valid immediate for BIC and ORR based on new enum + argument. + (aarch64_output_simd_mov_immediate): Function now used to output + BIC/ORR imm as well based on new enum argument. + * config/aarch64/constraints.md (Do): New vector immediate constraint. + (Db) : Likewise. + * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): New predicate. + (aarch64_reg_or_bic_imm): Likewise. + +2017-10-04 Andreas Krebbel + + * config/s390/vx-builtins.md ("vec_mergeh") + ("vec_mergel"): Change mode iterator to V_128_NOSINGLE. + +2017-10-04 Wilco Dijkstra + + Revert r253399: + + PR rtl-optimization/82396 + * haifa-sched.c (autopref_multipass_init): Simplify + initialization. + (autopref_rank_data): Simplify sort order. + * sched-int.h (autopref_multipass_data_): Remove + multi_mem_insn_p, min_offset and max_offset. + +2017-10-04 Andreas Krebbel + + * doc/sourcebuild.texi: Document vect_peeling_profitable. + +2017-10-04 Andreas Krebbel + + * doc/sourcebuild.texi: Document vect_intdouble_cvt and + vect_doubleint_cvt. + +2017-10-04 Andreas Krebbel + + * doc/sourcebuild.texi: Document vect_long_mult. + +2017-10-04 Richard Sandiford + + PR tree-optimization/82413 + * fold-const.c (build_range_check): Use widest_int when comparing + the maximum ETYPE value with HIGH. + +2017-10-04 Wilco Dijkstra + + PR rtl-optimization/82396 + * haifa-sched.c (autopref_multipass_init): Simplify + initialization. + (autopref_rank_data): Simplify sort order. + * sched-int.h (autopref_multipass_data_): Remove + multi_mem_insn_p, min_offset and max_offset. + +2017-10-04 Jakub Jelinek + + PR tree-optimization/82381 + * tree-ssa-reassoc.c (sort_by_operand_rank): Check for different + oeN->rank first. Return 1 or -1 if one op is SSA_NAME and the other + is not. + + PR tree-optimization/82374 + * omp-low.c (create_omp_child_function): Copy DECL_ATTRIBUTES, + DECL_FUNCTION_SPECIFIC_OPTIMIZATION, + DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_VERSIONED from + current_function_decl to the new decl. + +2017-10-03 Michael Meissner + + * config/rs6000/rs6000-builtin.def (BU_FLOAT128_2_HW): Define new + helper macro for IEEE float128 hardware built-in functions. + (SQRTF128_ODD): Add built-in functions with the round-to-odd + semantics. + (TRUNCF128_ODD): Likewise. + (ADDF128_ODD): Likewise. + (SUBF128_ODD): Likewise. + (MULF128_ODD): Likewise. + (DIVF128_ODD): Likewise. + (FMAF128_ODD): Likewise. + * config/rs6000/rs6000.md (UNSPEC_ROUND_TO_ODD): Rename to + UNSPEC_TRUNC_ROUND_TO_ODD. + (UNSPEC_TRUNC_ROUND_TO_ODD): Likewise. + (UNSPEC_ADD_ROUND_TO_ODD): New unspec codes for the IEEE 128-bit + floating point round to odd instructions. + (UNSPEC_SUB_ROUND_TO_ODD): Likewise. + (UNSPEC_MUL_ROUND_TO_ODD): Likewise. + (UNSPEC_DIV_ROUND_TO_ODD): Likewise. + (UNSPEC_FMA_ROUND_TO_ODD): Likewise. + (UNSPEC_SQRT_ROUND_TO_ODD): Likewise. + (truncsf2_hw): Change the truncate with round to odd + expansion to use UNSPEC_TRUNC_ROUND_TO_ODD. + (add3_odd): Add insns for IEEE 128-bit floating point round + to odd hardware instructions. + (sub3_odd): Likewise. + (mul3_odd): Likewise. + (div3_odd): Likewise. + (sqrt2_odd): Likewise. + (fma4_odd): Likewise. + (fms4_odd): Likewise. + (nfma4_odd): Likewise. + (nfms4_odd): Likewise. + (truncdf2_odd): Change the truncate with round to odd + expansion to use UNSPEC_TRUNC_ROUND_TO_ODD. Add a generator + function. + * doc/extend.texi (PowerPC built-in functions): Update documentation + for existing IEEE float128-bit built-in functions. Add built-in + functions that generate the IEEE 128-bit floating point round to + odd instructions. + +2017-10-03 Segher Boessenkool + + PR rtl-optimization/77729 + * simplify-rtx.c (simplify_binary_operation_1): Delete the (X&C1)|C2 + to (X&(C1&~C2))|C2 transformations. + +2017-10-03 Martin Jambor + + PR tree-optimization/82363 + * tree-sra.c (propagate_subaccesses_across_link): In unrecoverable + mismatch, mark lacc written regardless of racc. + +2017-10-03 Jakub Jelinek + + PR tree-optimization/82381 + * tree-ssa-reassoc.c (sort_by_operand_rank): Don't check + stmt_to_insert nor wheather SSA_NAMEs are default defs. + Return 1 or -1 if one of bba and bbb is NULL. If bb_rank is equal, + fallthrough into reassoc_stmt_dominates_stmt_p. + + PR target/82386 + * combine.c (combine_instructions): Don't combine in unreachable + basic blocks. + +2017-10-02 Peter Bergner + + PR target/80210 + * config/rs6000/rs6000.c (rs6000_option_override_internal): Rewrite + function to not use the have_cpu variable. Do not set cpu_index, + rs6000_cpu_index or rs6000_tune_index if we end up using TARGET_DEFAULT + or the default cpu. + (rs6000_valid_attribute_p): Remove duplicate initializations of + old_optimize and func_optimize. + (rs6000_pragma_target_parse): Call rs6000_activate_target_options (). + (rs6000_activate_target_options): Make global. + * config/rs6000/rs6000-protos.h (rs6000_activate_target_options): Add + prototype. + +2017-10-02 Jakub Jelinek + + * tree-dfa.c (get_ref_base_and_extent): Set *pmax_size to -1 + if *poffset + *pmax_size overflows in HOST_WIDE_INT. + Set *poffset to 0 and *psize and *pmax_size to -1 if + *poffset + *psize overflows in HOST_WIDE_INT. + + PR tree-optimization/82387 + PR tree-optimization/82388 + PR tree-optimization/82389 + * tree-ssa-dse.c (dse_classify_store): Test byte_tracking_enabled + instead of live_bytes non-NULL. + +2017-10-02 Georg-Johann Lay + + PR target/41076 + * confg/avr/avr.md (*iorhi3.ashift8-ext.zerox): Add "r,r,0" + alternative. + +2017-10-02 Richard Biener + + * graphite-isl-ast-to-gimple.c (set_codegen_error): With + -fchecking and --param graphite-allow-codegen-errors=0 ICE. + * params.def (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): New param. + +2017-10-02 Richard Sandiford + + * tree.h (wi::int_traits ::decompose): Assert that the + requested precision matches the type's. + * calls.c (alloc_max_size): Calculate the new candidate size as + a widest_int and use wi::to_widest when comparing it with the + current candidate size. + * gimple-ssa-warn-alloca.c (pass_walloca::execute): Compare with + zero rather than integer_zero_node. + * match.pd: Check for a no-op conversion before using wi::add + rather than after. Use tree_to_uhwi when summing small shift + counts into an unsigned int. + +2017-10-02 Richard Sandiford + Alan Hayward + David Sherwood + + PR target/71307 + * config/aarch64/aarch64.h (POINTER_AND_FP_REGS): New reg class. + (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly. + * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle + POINTER_AND_FP_REGS. + +2017-10-02 Richard Biener + + PR tree-optimization/82355 + * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build + a mapping for the enclosing loop but avoid generating one for + the loop tree root. + (copy_bb_and_scalar_dependences): Remove premature codegen + error on PHIs in blocks duplicated into multiple places. + * graphite-scop-detection.c + (scop_detection::stmt_has_simple_data_refs_p): For a loop not + in the region use it as loop and nest to analyze the DR in. + (try_generate_gimple_bb): Likewise. + * graphite-sese-to-poly.c (extract_affine_chrec): Adjust. + (add_loop_constraints): For blocks in a loop not in the region + create a dimension with a single iteration. + * sese.h (gbb_loop_at_index): Remove assert. + +2017-10-01 Kevin Buettner + + * omp-expand.c (adjust_context_scope): New function. + (expand_parallel_call): Call adjust_context_scope. + +2017-10-01 Jeff Law + + * tree-ssa-dom.c (optimize_stmt): Make this a method within the + dom_opt_dom_walker class with direct access to private members. + Add comments. Call test_for_singularity. + (dom_opt_dom_walker::before_dom_children): Corresponding changes. + (dom_opt_dom_walker::after_dom_children): Do not lazily initialize + m_dummy_cond anymore. + (class dom_opt_dom_walker): Initialize m_dummy_cond member in the + class ctor. + (pass_dominator:execute): Build the dummy_cond here and pass it + to the dom_opt_dom_walker ctor. + (test_for_singularity): New function. + +2017-09-30 Krister Walfridsson + Maya Rashish + + * config.gcc (*-*-netbsd*): New variable nbsd_tm_file containing + netbsd.h, netbsd-stdint.h, and netbsd-elf.h. + (alpha*-*-netbsd*) Use nbsd_tm_file. + (arm*-*-netbsdelf*) Likewise. + (i[34567]86-*-netbsdelf*) Likewise. + (x86_64-*-netbsd*) Likewise. + (mips*-*-netbsd*) Likewise. + (powerpc-*-netbsd*) Likewise. + (sh*-*-netbsd*) Likewise. + (sparc-*-netbsdelf*) Likewise. + (sparc64-*-netbsd*) Likewise. + (m68k*-*-netbsdelf*) Use nbsd_tm_file and add CHAR_FAST8/SHORT_FAST16 + to tm_defines. + (vax-*-netbsdelf*) Likewise. + * config/netbsd-stdint.h (INT_FAST8_TYPE): Check CHAR_FAST8. + (UINT_FAST8_TYPE) Likewise. + (INT_FAST16_TYPE) Check CHAR_FAST16. + (UINT_FAST16_TYPE) Likewise. + +2017-09-30 Jakub Jelinek + + PR target/82361 + * config/i386/i386.md + (TARGET_USE_8BIT_IDIV zext divmodsi4 splitter): New define_split. + (divmodsi4_zext_1, divmodsi4_zext_2, *divmodsi4_zext_1, + *divmodsi4_zext_2): New define_insn_and_split. + (*divmodsi4_noext_zext_1, *divmodsi4_noext_zext_2): New define_insn. + (TARGET_USE_8BIT_IDIV zext udivmodsi4 splitter): New define_split. + (udivmodsi4_zext_1, udivmodsi4_zext_2, *udivmodsi4_zext_1, + *udivmodsi4_zext_2, *udivmodsi4_pow2_zext_1, *udivmodsi4_pow2_zext_2): + New define_insn_and_split. + (*udivmodsi4_noext_zext_1, *udivmodsi4_noext_zext_2): New define_insn. + * config/i386/i386.c (ix86_split_idivmod): Handle operands[0] or + operands[1] having DImode when mode is SImode. + + * config/i386/i386.c (ix86_split_idivmod): Use mode instead of + always SImode for DIV and MOD in REG_EQUAL notes. + +2017-09-29 Yury Gribov + + PR middle-end/82319 + * match.pd: Fix handling of NaNs in pattern. + +2017-09-29 Jeff Law + + * sbitmap.c (bitmap_bit_in_range_p): New function. + * sbitmap.h (bitmap_bit_in_range_p): Prototype. + * tree-ssa-dse.c (live_bytes_read): New function. + (dse_classify_store): Ignore reads of dead bytes. + + * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Fix + typos and whitespace errors. + * config/i386/predicates.md (address_no_seg_operand): Likewise. + * config/s390/s390.c (s390_emit_prologue): Likewise. + +2017-09-29 Vladimir Makarov + + PR target/81481 + * ira-costs.c (scan_one_insn): Don't take into account PIC equiv + with a symbol for LRA. + +2017-09-29 Vladimir Makarov + + PR rtl-optimization/82338 + * lra-constraints.c (inherit_in_ebb): Check usage_insns check. + +2017-09-29 Alexander Monakov + + * genmodes.c (calc_wider_mode): Suppress qsort macro. + * system.h [CHECKING_P] (qsort): Redirect to qsort_chk. + (qsort_chk): Declare. + * vec.c [CHECKING_P] (qsort_chk_error): New static function. + (qsort_chk): New function. + +2017-09-29 Bill Schmidt + + PR tree-optimization/82337 + * gimple-ssa-strength-reduction.c (find_phi_def): Don't record a + phi definition if the PHI result appears in an abnormal PHI. + (find_basis_for_base_expr): Don't record a basis if the LHS of the + basis appears in an abnormal PHI. + +2017-09-29 Richard Biener + + * graphite-isl-ast-to-gimple.c + (translate_isl_ast_to_gimple::set_codegen_error): New function. + (binary_op_to_tree): Use it. + (get_rename_from_scev): Likewise. + (copy_loop_phi_nodes): Likewise. + (copy_bb_and_scalar_dependences): Likewise. + (translate_pending_phi_nodes): Likewise. + +2017-09-29 Jakub Jelinek + + PR target/82339 + * config/i386/i386.md (*movdi_internal peephole2): New -Os peephole + for movabsq $(i32 << shift), r64. + +2017-09-28 Uros Bizjak + + * config/i386/i386.c (ix86_print_operand_address_as): Do not check + index when encoding %esp as %rsp to avoid 0x67 prefix. + +2017-09-28 Sergey Shalnov + + * config/i386/i386.md (*movsf_internal, *movdf_internal): + Return 256-bit AVX modes for TARGET_PREFER_AVX256. + +2017-09-28 Thomas Preud'homme + + * config/arm/arm.c (arm_option_override): Forbid ARMv8-M Security + Extensions with more than 16 double VFP registers. + (cmse_nonsecure_entry_clear_before_return): Remove second entry of + to_clear_mask and all code related to it. Replace the remaining + entry by a sbitmap and adapt code accordingly. + +2017-09-28 Henry Linjamäki + + * brig-builtins.def: Change pure attributes to const. + +2017-09-28 Joseph Myers + + * config.gcc (default_gnu_indirect_function): Default to yes for + sparc*-*-linux* with glibc. + +2017-09-28 Joseph Myers + + * config/aarch64/aarch64.c (aarch64_elf_asm_constructor) + (aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section + when creating .init_array and .fini_array sections with priority + specified. + +2017-09-27 Christophe Lyon + + PR target/71727 + * config/aarch64/aarch64.c + (aarch64_builtin_support_vector_misalignment): Always return false + when misalignment is unknown. + +2017-09-27 Kelvin Nilsen + + * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Revise + this function to return false if the definition used by the swap + instruction is artificial, or if the memory address from which the + constant value is loaded is not represented by a base address held + in a register or if the base address register is a frame or stack + pointer. Additionally, return false if the base address of the + loaded constant is a SYMBOL_REF but is not considered to be a + constant. + (replace_swapped_load_constant): New function. + (rs6000_analyze_swaps): Add a new pass to replace a swap of a + loaded constant vector with a load of a swapped constant vector. + +2017-09-27 Carl Love + + * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro. + (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins. + * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the + fctiw instruction. + +2017-09-27 Alexander Monakov + + * haifa-sched.c (autopref_rank_for_schedule): Order 'irrelevant' insns + first, always call autopref_rank_data otherwise. + +2017-09-27 Richard Biener + + * graphite-scop-detection.c (find_scop_parameters): Move + loop bound handling ... + (gather_bbs::before_dom_children): ... here, avoiding the need + to build scop_info->loop_nest. + (record_loop_in_sese): Remove. + * sese.h (sese_info_t::loop_nest): Remove. + * sese.c (new_sese_info): Do not allocate loop_nest. + (free_sese_info): Do not free loop_nest. + +2017-09-27 Jakub Jelinek + + PR c++/82159 + * gimplify.c (gimplify_modify_expr): Don't optimize away zero sized + lhs from calls if the lhs has addressable type. + +2017-09-27 Richard Biener + + * graphite.h (scop::max_alias_set): New member. + * graphite-scop-detection.c: Remove references to non-existing + --param in comments. + (build_alias_sets): Record the maximum alias set used for drs. + (build_scops): Support zero as unlimited for + --param graphite-max-arrays-per-scop. + * graphite-sese-to-poly.c (add_scalar_version_numbers): Remove + and inline into ... + (build_poly_sr_1): ... here. Compute alias set based on the + maximum alias set used for drs rather than + PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP + +2017-09-27 Richard Biener + + * graphite-optimize-isl.c (get_schedule_for_node_st): Allow + --param loop-block-tile-size=0 to disable tiling. + +2017-09-27 Richard Biener + + * doc/invoke.texi (graphite-max-bbs-per-function): Remove. + (graphite-max-nb-scop-params): Document special value zero. + * domwalk.h (dom_walker::STOP): New symbolical constant. + (dom_walker::dom_walker): Add optional parameter for bb to + RPO mapping. + (dom_walker::~dom_walker): Declare. + (dom_walker::before_dom_children): Document STOP return value. + (dom_walker::m_user_bb_to_rpo): New member. + (dom_walker::m_bb_to_rpo): Likewise. + * domwalk.c (dom_walker::dom_walker): Compute bb to RPO + mapping here if not provided by the user. + (dom_walker::~dom_walker): Free bb to RPO mapping if not + provided by the user. + (dom_walker::STOP): Define. + (dom_walker::walk): Do not compute bb to RPO mapping here. + Support STOP return value from before_dom_children to stop + walking. + * graphite-optimize-isl.c (optimize_isl): If the schedule + is the same still generate code if -fgraphite-identity + or -floop-parallelize-all are given. + * graphite-scop-detection.c: Include cfganal.h. + (gather_bbs::gather_bbs): Get and pass through bb to RPO + mapping. + (gather_bbs::before_dom_children): Return STOP for BBs + not in the region. + (build_scops): Compute bb to RPO mapping and pass it to + the domwalk. Treat --param graphite-max-nb-scop-params=0 + as not limiting the number of params. + * graphite.c (graphite_initialize): Remove limit on the + number of basic-blocks in a function. + * params.def (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION): Remove. + (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Adjust to documented + default value of 10. + +2017-09-26 Michael Meissner + + * config/rs6000/vsx.md (peephole for optimizing move SF to GPR): + Adjust code to eliminate needing to do the shift right 32-bits + operation after XSCVDPSPN. + +2017-09-26 Prathamesh Kulkarni + + * match.pd ((X / Y) == 0 -> X < Y): New pattern. + ((X / Y) != 0 -> X >= Y): Likewise. + +2017-09-26 Carl Love + + * config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_XL_LEN_R, + P9V_BUILTIN_VEC_XST_LEN_R): Add support for builtins + vector unsigned char vec_xl_len_r (unsigned char *, size_t); + void vec_xst_len_r (vector unsigned char, unsigned char *, size_t); + * config/rs6000/altivec.h (vec_xl_len_r, vec_xst_len_r): Add defines. + * config/rs6000/rs6000-builtin.def (XL_LEN_R, XST_LEN_R): Add + definitions and overloading. + * config/rs6000/rs6000.c (altivec_expand_builtin): Add case + statement for P9V_BUILTIN_XST_LEN_R. + (altivec_init_builtins): Add def_builtin for P9V_BUILTIN_STXVLL. + * config/rs6000/vsx.md (lxvll, stxvll, xl_len_r, xst_len_r): Add + define_expand and define_insn for the instructions and builtins. + * doc/extend.texi: Update the built-in documentation file for the new + built-in functions. + * config/rs6000/altivec.md (altivec_lvsl_reg, altivec_lvsr_reg): Add + define_insn for the instructions + +2017-09-26 Krister Walfridsson + + PR target/39570 + * gcc/config/netbsd-protos.h: New file. + * gcc/config/netbsd.c: New file. + * gcc/config/netbsd.h (SUBTARGET_INIT_BUILTINS): Define. + * gcc/config/t-netbsd: New file. + * gcc/config.gcc (tm_p_file): Add netbsd-protos.h. + (tmake_file) Add t-netbsd. + (extra_objs) Add netbsd.o. + +2017-09-26 Janus Weil + + PR fortran/82143 + PR fortran/82324 + * doc/sourcebuild.texi: Document fortran_real_10 and fortran_real_16. + +2017-09-26 Michael Meissner + + * config/rs6000/rs6000.md (extendsi2): Add a splitter to do + sign extension from a vector register to a GPR by doing a 32-bit + direct move and then an EXTSW. + (extendsi2 splitter): Likewise. + (movsi_from_sf): Adjust code to eliminate doing a 32-bit shift + right or vector extract after doing XSCVDPSPN. Use + zero_extendsidi2 instead of p8_mfvsrd_4_disf to move the value to + the GPRs. + (movdi_from_sf_zero_ext): Likewise. + (reload_gpr_from_vsxsf): Likewise. + (p8_mfvsrd_4_disf): Delete, no longer used. + (movsi_from_df): Optimize converting a DFmode to a SFmode, and + then needing to move the SFmode to a GPR to use the XSCVDPSP + instruction instead of FRSP and XSCVDPSPN. + * config/rs6000/vsx.md (vsx_xscvspdp_scalar2): Move insn so that + it is adjacent to the other XSCVSPDP insns. + (vsx_xscvdpsp_scalar): Use "ww" constraint instead of "f" to allow + SFmode to be in traditional Altivec registers. + (vsx_xscvdpspn): Eliminate useless alternative constraint. + (vsx_xscvspdpn): Likewise. + (vsx_xscvspdpn_scalar): Likewise. + +2017-09-26 Martin Jambor + + * tree-sra.c (compare_access_positions): Put integral types first, + stabilize sorting of integral types, remove conditions putting + non-full-precision integers last. + (sort_and_splice_var_accesses): Disable scalarization if a + non-integert would be represented by a non-full-precision integer. + +2017-09-26 Joseph Myers + + * config/microblaze/linux.h (TARGET_ASM_FILE_END): Likewise. + * config/pa/pa.h (NEED_INDICATE_EXEC_STACK): Likewise. + * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Likewise. + * config/pa/pa.c (pa_hpux_file_end): Rename to pa_file_end. + Define unconditionally, with [ASM_OUTPUT_EXTERNAL_REAL] + conditionals inside the function instead of around it. Call + file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK. + (TARGET_ASM_FILE_END): Define unconditionally to pa_file_end. + +2017-09-26 Richard Biener + + * graphite-scop-detection.c (scop_detection::build_scop_depth): Rewrite, + fold in ... + (scop_detection::build_scop_breadth): ... this. Removed. + (scop_detection::loop_is_valid_in_scop): Fold into single caller. + (scop_detection::harmful_stmt_in_bb): Likewise. + (scop_detection::graphite_can_represent_stmt): Likewise. + (scop_detection::loop_body_is_valid_scop): Likewise. Remove recursion. + (scop_detection::can_represent_loop): Remove recursion, fold in ... + (scop_detection::can_represent_loop_1): ... this. Removed. + (scop_detection::harmful_loop_in_region): Simplify after inlining + the above and remove more quadraticness. + (build_scops): Adjust. + * tree-data-ref.c (loop_nest_has_data_refs): Remove pointless + quadraticness. + +2017-09-26 Jakub Jelinek + + PR target/82267 + * config/i386/i386.c (ix86_print_operand_address_as): Only test + REGNO (base) == SP_REG if base is a REG. + + PR middle-end/35691 + * tree-ssa-reassoc.c (update_range_test): Dump r->exp each time + if it is different SSA_NAME. + (optimize_range_tests_cmp_bitwise): New function. + (optimize_range_tests): Call it. + +2017-09-26 Richard Biener + + PR tree-optimization/82321 + * graphite.c (canonicalize_loop_closed_ssa): Properly check + for the def being inside the loop. + +2017-09-26 Andreas Krebbel + + * config/s390/vx-builtins.md ("vmslg"): Add missing operand in + assembler output. + * config/s390/s390-builtins.def: Fix constraint on op4. + +2017-09-26 Andreas Krebbel + + * config/s390/s390.c (s390_expand_vec_compare): Use the new mode + independent expanders. + * config/s390/vector.md ("vec_cmpuneq", "vec_cmpltgt") + ("vec_ordered", "vec_unordered"): New expanders. + +2017-09-26 Andreas Krebbel + + * config/s390/s390.c (s390_preferred_simd_mode): Return V4SFmode + for SFmode. + +2017-09-26 Andreas Krebbel + + * config/s390/vector.md ("vec_unpacks_low_v16qi"): Rename to + vec_unpacks_lo_v16qi. + ("vec_unpacku_low_v16qi"): Rename to vec_unpacku_lo_v16qi. + +2017-09-26 Andreas Krebbel + + * config/s390/vector.md ("vec_unpacks_lo_v4sf") + ("vec_unpacks_hi_v4sf", "vec_unpacks_lo_v2df") + ("vec_unpacks_hi_v2df", "vec_pack_trunc_v2df"): New expanders. + +2017-09-26 Andreas Krebbel + + * config/s390/predicates.md ("const_shift_by_byte_operand"): New + predicate. + * config/s390/vector.md ("*vec_srb"): Change modes to V_128 + and V16QI. + ("*vec_slb"): New insn pattern. + ("vec_shr_"): New expander. + * config/s390/vx-builtins.md ("vec_slb"): Turn into expander + and force the shift count operand to V16QImode. + ("vec_srb"): Set shift count mode to V16QI. + +2017-09-26 Andreas Krebbel + + * config/s390/vector.md ("vec_widen_umult_lo_") + ("vec_widen_umult_hi_", "vec_widen_smult_lo_") + ("vec_widen_smult_hi_"): New expander definitions. + +2017-09-26 Richard Earnshaw + + PR target/82175 + * config/arm/arm.h (DRIVER_SELF_SPECS): Separate sub-rules with commas. + +2017-09-26 Richard Biener + + PR tree-optimization/82320 + * tree-ssa-sccvn.c (set_ssa_val_to): Changing undef to undef + isn't a change. + +2017-09-25 Jeff Law + + * config/rs6000/rs6000-protos.h (output_probe_stack_range): Update + prototype for new argument. + * config/rs6000/rs6000.c (rs6000_emit_allocate_stack_1): New function, + mostly extracted from rs6000_emit_allocate_stack. + (rs6000_emit_probe_stack_range_stack_clash): New function. + (rs6000_emit_allocate_stack): Call + rs6000_emit_probe_stack_range_stack_clash as needed. + (rs6000_emit_probe_stack_range): Add additional argument + to call to gen_probe_stack_range{si,di}. + (output_probe_stack_range): New. + (output_probe_stack_range_1): Renamed from output_probe_stack_range. + (output_probe_stack_range_stack_clash): New. + (rs6000_emit_prologue): Emit notes into dump file as requested. + * rs6000.md (allocate_stack): Handle -fstack-clash-protection. + (probe_stack_range): Operand 0 is now early-clobbered. + Add additional operand and pass it to output_probe_stack_range. + +2017-09-25 Bin Cheng + + PR tree-optimization/82163 + * tree-ssa-loop-manip.h (verify_loop_closed_ssa): New parameter. + (checking_verify_loop_closed_ssa): New parameter. + * tree-ssa-loop-manip.c (check_loop_closed_ssa_use): Delete. + (check_loop_closed_ssa_stmt): Delete. + (check_loop_closed_ssa_def, check_loop_closed_ssa_bb): New functions. + (verify_loop_closed_ssa): Check loop closed ssa form for LOOP. + (tree_transform_and_unroll_loop): Check loop closed ssa form only for + changed loops. + +2017-09-25 Pekka Jaaskelainen + + * brig-builtins.def: Treat HSAIL barrier builtins as + setjmp/longjump style functions. + +2017-09-25 Richard Sandiford + + * target.def (constant_alignment): New hook. + * defaults.h (CONSTANT_ALIGNMENT): Delete. + * doc/tm.texi.in (CONSTANT_ALIGNMENT): Replace with... + (TARGET_CONSTANT_ALIGNMENT): ...this new hook. + * doc/tm.texi: Regenerate. + * targhooks.h (default_constant_alignment): Declare. + (constant_alignment_word_strings): Likewise. + * targhooks.c (default_constant_alignment): New function. + (constant_alignment_word_strings): Likewise. + * builtins.c (get_object_alignment_2): Use targetm.constant_alignment + instead of CONSTANT_ALIGNMENT. + * varasm.c (align_variable, get_variable_align, build_constant_desc) + (force_const_mem): Likewise. + * config/aarch64/aarch64.h (CONSTANT_ALIGNMENT): Delete. + * config/aarch64/aarch64.c (aarch64_constant_alignment): New function. + (aarch64_classify_address): Call it instead of CONSTANT_ALIGNMENT. + (TARGET_CONSTANT_ALIGNMENT): Redefine. + * config/alpha/alpha.h (CONSTANT_ALIGNMENT): Delete commented-out + definition. + * config/arc/arc.h (CONSTANT_ALIGNMENT): Delete. + * config/arc/arc.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/arm/arm.h (CONSTANT_ALIGNMENT_FACTOR): Delete. + (CONSTANT_ALIGNMENT): Likewise. + * config/arm/arm.c (TARGET_CONSTANT_ALIGNMENT): Redefine. + (arm_constant_alignment): New function. + * config/bfin/bfin.h (CONSTANT_ALIGNMENT): Delete. + * config/bfin/bfin.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/cr16/cr16.h (CONSTANT_ALIGNMENT): Delete. + * config/cr16/cr16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/cris/cris.h (CONSTANT_ALIGNMENT): Delete. + * config/cris/cris.c (TARGET_CONSTANT_ALIGNMENT): Redefine. + (cris_constant_alignment): New function. + * config/epiphany/epiphany.h (CONSTANT_ALIGNMENT): Delete. + * config/epiphany/epiphany.c (TARGET_CONSTANT_ALIGNMENT): Redefine. + (epiphany_constant_alignment): New function. + * config/fr30/fr30.h (CONSTANT_ALIGNMENT): Delete. + * config/fr30/fr30.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/frv/frv.h (CONSTANT_ALIGNMENT): Delete. + * config/frv/frv.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/ft32/ft32.h (CONSTANT_ALIGNMENT): Delete. + * config/ft32/ft32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/i386/i386.h (CONSTANT_ALIGNMENT): Delete. + * config/i386/i386-protos.h (ix86_constant_alignment): Delete. + * config/i386/i386.c (ix86_constant_alignment): Make static. + Use the same interface as the target hook. + (TARGET_CONSTANT_ALIGNMENT): Redefine. + * config/ia64/ia64.h (CONSTANT_ALIGNMENT): Delete. + * config/ia64/ia64.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/iq2000/iq2000.h (CONSTANT_ALIGNMENT): Delete. + * config/iq2000/iq2000.c (iq2000_constant_alignment): New function. + (TARGET_CONSTANT_ALIGNMENT): Redefine. + * config/lm32/lm32.h (CONSTANT_ALIGNMENT): Delete. + * config/lm32/lm32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/m32r/m32r.h (CONSTANT_ALIGNMENT): Delete. + * config/m32r/m32r.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/mcore/mcore.h (CONSTANT_ALIGNMENT): Delete. + * config/mcore/mcore.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/microblaze/microblaze.h (CONSTANT_ALIGNMENT): Delete. + * config/microblaze/microblaze.c (microblaze_constant_alignment): + New function. + (TARGET_CONSTANT_ALIGNMENT): Redefine. + * config/mips/mips.h (CONSTANT_ALIGNMENT): Delete. + * config/mips/mips.c (mips_constant_alignment): New function. + (TARGET_CONSTANT_ALIGNMENT): Redefine. + * config/mmix/mmix.h (CONSTANT_ALIGNMENT): Delete. + * config/mmix/mmix-protos.h (mmix_constant_alignment): Delete. + * config/mmix/mmix.c (TARGET_CONSTANT_ALIGNMENT): Redefine. + (mmix_constant_alignment): Make static. Use the same interface + as the target hook. + * config/moxie/moxie.h (CONSTANT_ALIGNMENT): Delete. + * config/moxie/moxie.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/nios2/nios2.h (CONSTANT_ALIGNMENT): Delete. + * config/nios2/nios2.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/pa/pa.h (CONSTANT_ALIGNMENT): Delete. + * config/pa/pa.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/powerpcspe/powerpcspe.h (CONSTANT_ALIGNMENT): Delete. + * config/powerpcspe/powerpcspe.c (TARGET_CONSTANT_ALIGNMENT): Redefine. + (rs6000_constant_alignment): New function. + * config/riscv/riscv.h (CONSTANT_ALIGNMENT): Delete. + * config/riscv/riscv.c (riscv_constant_alignment): New function. + (TARGET_CONSTANT_ALIGNMENT): Redefine. + * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Delete. + * config/rs6000/rs6000.c (TARGET_CONSTANT_ALIGNMENT): Redefine. + (rs6000_constant_alignment): New function. + * config/s390/s390.h (CONSTANT_ALIGNMENT): Delete. + * config/s390/s390.c (s390_constant_alignment): New function. + (TARGET_CONSTANT_ALIGNMENT): Redefine. + * config/sh/sh.h (CONSTANT_ALIGNMENT): Delete. + * config/sh/sh.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/sparc/sparc.h (CONSTANT_ALIGNMENT): Delete. + * config/sparc/sparc.c (TARGET_CONSTANT_ALIGNMENT): Redefine. + (sparc_constant_alignment): New function. + * config/spu/spu.h (CONSTANT_ALIGNMENT): Delete. + * config/spu/spu.c (spu_constant_alignment): New function. + (TARGET_CONSTANT_ALIGNMENT): Redefine. + * config/stormy16/stormy16.h (CONSTANT_ALIGNMENT): Delete. + * config/stormy16/stormy16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/tilegx/tilegx.h (CONSTANT_ALIGNMENT): Delete. + * config/tilegx/tilegx.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/tilepro/tilepro.h (CONSTANT_ALIGNMENT): Delete. + * config/tilepro/tilepro.c (TARGET_CONSTANT_ALIGNMENT): Redefine to + constant_alignment_word_strings. + * config/visium/visium.h (CONSTANT_ALIGNMENT): Delete. + * config/visium/visium.c (TARGET_CONSTANT_ALIGNMENT): Redefine. + (visium_constant_alignment): New function. + * config/xtensa/xtensa.h (CONSTANT_ALIGNMENT): Delete. + * config/xtensa/xtensa.c (TARGET_CONSTANT_ALIGNMENT): Redefine. + (xtensa_constant_alignment): New function. + * system.h (CONSTANT_ALIGNMENT): Poison. + +2017-09-25 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling + for early folding of vector stores (ALTIVEC_BUILTIN_ST_*). + (rs6000_builtin_valid_without_lhs): New helper function. + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_ST. + +2017-09-25 Richard Sandiford + + * target.h (vec_perm_indices): Use unsigned short rather than + unsigned char. + (auto_vec_perm_indices): Likewise. + * config/aarch64/aarch64.c (aarch64_vectorize_vec_perm_const_ok): + Use unsigned int rather than unsigned char. + * config/arm/arm.c (arm_vectorize_vec_perm_const_ok): Likewise. + +2017-09-25 Richard Biener + + * cfgloop.h (sort_sibling_loops): Declare. + * cfgloop.c (sort_sibling_loops_cmp): New helper. + (sort_sibling_loops): New function sorting the sibling loop list + in RPO order. + * graphite.c (graphite_transform_loops): Sort sibling loops. + +2017-09-25 Richard Sandiford + + * target.def (vec_perm_const_ok): Change sel parameter to + vec_perm_indices. + * optabs-query.c (can_vec_perm_p): Update accordingly. + * doc/tm.texi: Regenerate. + * config/aarch64/aarch64.c (expand_vec_perm_d): Change perm to + auto_vec_perm_indices and remove separate nelt field. + (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip) + (aarch64_evpc_ext, aarch64_evpc_rev, aarch64_evpc_dup) + (aarch64_evpc_tbl, aarch64_expand_vec_perm_const_1) + (aarch64_expand_vec_perm_const): Update accordingly. + (aarch64_vectorize_vec_perm_const_ok): Likewise. Change sel + to vec_perm_indices. + * config/arm/arm.c (expand_vec_perm_d): Change perm to + auto_vec_perm_indices and remove separate nelt field. + (arm_evpc_neon_vuzp, arm_evpc_neon_vzip, arm_evpc_neon_vrev) + (arm_evpc_neon_vtrn, arm_evpc_neon_vext, arm_evpc_neon_vtbl) + (arm_expand_vec_perm_const_1, arm_expand_vec_perm_const): Update + accordingly. + (arm_vectorize_vec_perm_const_ok): Likewise. Change sel + to vec_perm_indices. + * config/i386/i386.c (ix86_vectorize_vec_perm_const_ok): Change + sel to vec_perm_indices. + * config/ia64/ia64.c (ia64_vectorize_vec_perm_const_ok): Likewise. + * config/mips/mips.c (mips_vectorize_vec_perm_const_ok): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_vectorize_vec_perm_const_ok): + Likewise. + * config/rs6000/rs6000.c (rs6000_vectorize_vec_perm_const_ok): + Likewise. + +2017-09-25 Pierre-Marie de Rodat + + PR debug/82155 + * dwarf2out.c (dwarf2out_early_global_decl): Call dwarf2out_decl + on the FUNCTION_DECL function context if it has a DIE that is a + declaration. + +2017-09-25 Richard Biener + + PR tree-optimization/82285 + * tree-vect-patterns.c (vect_recog_bool_pattern): Also handle + enumeral types. + +2017-09-25 Tom de Vries + + PR target/80035 + PR target/81069 + * config/nvptx/nvptx.c (nvptx_output_call_insn): Add exit after call to + noreturn function. + +2017-09-25 Richard Biener + + * graphite-optimize-isl.c (optimize_isl): Fail and dump if + ISL errors other than isl_error_quota happen. Dump if the + schedule is the same. + * graphite-sese-to-poly.c (build_poly_scop): Fail on ISL + errors instead of aborting inside ISL. + +2017-09-25 Iain Sandoe + + PR target/80556 + * config/i386/darwin.h (REAL_LIB_SPEC): New; put libSystem ahead + of libgcc_eh for m64. + * config/i386/darwin64.h: Likewise. + +2017-09-25 Richard Biener + + PR middle-end/82144 + * dwarf2out.c (gen_enumeration_type_die): Do not add alignment + attribute for incomplete types nor twice for complete ones. + +2017-09-24 Uros Bizjak + + PR target/82267 + * config/i386/i386.c (ix86_print_operand_address_as): Encode + %esp as %rsp to avoid 0x67 prefix if there is no index or base + register. + +2017-09-23 Uros Bizjak + + PR bootstrap/82306 + * config/i386/i386.opt (mprefer-avx256): Use + ix86_target_flags variable. + * config/i386/i386.c (ix86_target_string): Move + -mprefer-avx256 to flag2_opts. + +2017-09-22 Jakub Jelinek + + PR middle-end/35691 + * match.pd: Simplify x == -1 & y == -1 into (x & y) == -1 + and x != -1 | y != -1 into (x & y) != -1. + +2017-09-22 Steve Ellcey + + * config.gcc: Add new case statement to set + default_gnu_indirect_function. Remove it from x86_64-*-linux*, + i[34567]86-*, powerpc*-*-linux*spe*, powerpc*-*-linux*, s390-*-linux*, + s390x-*-linux* case statements. Added aarch64 to the list of + supported architectures. + +2017-09-22 Richard Sandiford + + PR tree-optimization/82289 + * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Check + STMT_VINFO_RELEVANT_P. + +2017-09-22 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vrp.c (extract_range_from_multiplicative_op_1): Assert + for VR_RANGE only; don't allow VR_ANTI_RANGE. + (extract_range_from_binary_expr_1): Don't call + extract_range_from_multiplicative_op_1 if !range_int_cst_p. + +2017-09-22 Richard Sandiford + Alan Hayward + David Sherwood + + * 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. + +2017-09-22 Richard Sandiford + Alan Hayward + David Sherwood + + * 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. + +2017-09-22 Richard Earnshaw + + * 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. + +2017-09-22 Richard Earnshaw + + * 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. + +2017-09-22 Richard Biener + + * 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. + +2017-09-22 Richard Biener + + PR tree-optimization/82291 + * tree-if-conv.c (predicate_mem_writes): Make sure to + remove writes in blocks predicated with false. + +2017-09-22 Richard Biener + + * 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. + +2017-09-22 Richard Biener + + * 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. + +2017-09-22 Sergey Shalnov + + * config/i386/sse.md ("mov_internal"): Use + mode attribute for TARGET_AVX512VL. + +2017-09-21 Sergey Shalnov + + * 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. + +2017-09-21 Jeff Law + + * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): + Fix dump output if the only stack space is for pushed registers. + +2017-09-21 Richard Sandiford + + * config/spu/spu.c (spu_sched_adjust_cost): Update after renaming + of insn_cost. + +2017-09-21 Martin Sebor + + PR c/81882 + * doc/extend.texi (attribute ifunc): Avoid relying on ill-formed + code (in C++) or code that triggers warnings. + +2017-09-21 Eric Botcazou + + * stor-layout.c (bit_from_pos): Do not distribute the conversion. + +2017-09-21 Segher Boessenkool + + * haifa-sched.c: Rename insn_cost to insn_sched_cost. + * sched-rgn.c: Ditto. + * sel-sched-ir.c: Ditto. + +2017-09-21 Alexander Monakov + + * 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. + +2017-09-21 Evgeny Kudryashov + + * 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. + +2017-09-21 Jakub Jelinek + + 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. + +2017-09-21 Richard Biener + + 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. + +2017-09-21 Wilco Dijkstra + + PR target/71951 + * config/aarch64/aarch64.h (LIBGCC2_UNWIND_ATTRIBUTE): Define. + +2017-09-21 Richard Biener + + * 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. + +2017-09-21 Richard Sandiford + Alan Hayward + David Sherwood + + * calls.c (compute_argument_addresses): Use simplify_gen_binary + rather than choosing between plus_constant and gen_rtx_. + * expr.c (emit_push_insn): Likewise. + (expand_expr_real_2): Likewise. + +2017-09-21 Richard Sandiford + Alan Hayward + David Sherwood + + * loop-unroll.c (split_iv): Call copy_rtx on the step. + +2017-09-21 Richard Sandiford + Alan Hayward + David Sherwood + + * tree.c (find_atomic_core_type): Check tree_fits_uhwi_p before + calling tree_to_uhwi. + +2017-09-21 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-ssa-ccp.c (get_value_for_expr): Use a positive test for + INTEGER_CST rather than a negative test for ADDR_EXPR. + +2017-09-21 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vrp.c (extract_range_from_binary_expr_1): Check + int_cst_rangeN before calling value_range_constant_singleton (&vrN). + +2017-09-21 Richard Biener + + 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. + +2017-09-21 Jakub Jelinek + + 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. + +2017-09-20 Andreas Krebbel + Jeff Law + + * 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. + +2017-09-20 Alexandre Oliva + + * 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. + +2017-09-20 Jeff Law + + * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Fix + thinko in stack clash protection support. + + * 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. + +2017-09-20 Segher Boessenkool + + PR target/77687 + * config/rs6000/rs6000.md (stack_restore_tie): Store to a scratch + address instead of to r1 and r11. + +2017-09-20 Sebastian Peryt + + * config.gcc: Support "knm". + * config/i386/driver-i386.c (host_detect_local_cpu): Detect "knm". + * config/i386/i386-c.c (ix86_target_macros_internal): Handle + PROCESSOR_KNM. + * config/i386/i386.c (m_KNM): Define. + (processor_target_table): Add "knm". + (PTA_KNM): Define. + (ix86_option_override_internal): Add "knm". + (ix86_issue_rate): Add PROCESSOR_KNM. + (ix86_adjust_cost): Ditto. + (ia32_multipass_dfa_lookahead): Ditto. + (get_builtin_code_for_version): Handle PROCESSOR_KNM. + (fold_builtin_cpu): Add M_INTEL_KNM. + * config/i386/i386.h (processor_costs): Define TARGET_KNM. + (processor_type): Add PROCESSOR_KNM. + * config/i386/x86-tune.def: Add m_KNM. + * doc/invoke.texi: Add knm as x86 -march=/-mtune= CPU type. + +2017-09-20 Richard Biener + + PR tree-optimization/80213 + * graphite-scop-detection.c (trivially_empty_bb_p): Labels + are allowed in empty BBs as well. + (canonicalize_loop_closed_ssa): Also look for other complex + edges. + (scop_detection::get_sese): Include the loop-closed PHI block + in loop SESEs. + (scop_detection::merge_sese): Remove code adding extra blocks. + (scop_detection::region_has_one_loop): Adjust for get_sese changes. + (build_scops): Assert the final returned scop is invalid. + +2017-09-20 Richard Biener + + PR tree-optimization/82264 + * tree-ssa-sccvn.c (vn_phi_eq): Use safe_dyn_cast to check + for GIMPLE_CONDs. + (vn_phi_lookup): Likewise. + (vn_phi_insert): Likewise. + +2017-09-20 Jakub Jelinek + + * dwarf2out.c (tree_add_const_value_attribute): For INTEGER_CST + that fits into uhwi or shwi, add DW_AT_const_value regardless + of early_dwarf without going through RTL, using add_AT_unsigned + or add_AT_int. + + * dwarf2out.c (DEBUG_LTO_DWO_INFO_SECTION): Reorder defines. + (DEBUG_LTO_ABBREV_SECTION): Likewise. + (DEBUG_LTO_MACINFO_SECTION): Likewise. + (DEBUG_MACRO_SECTION): Likewise. + (DEBUG_LTO_MACRO_SECTION): Likewise. + (DEBUG_STR_DWO_SECTION): Likewise. + (DEBUG_LTO_STR_DWO_SECTION): Likewise. + (DEBUG_LTO_LINE_SECTION): Drop .dwo suffix from the name. + (DEBUG_LTO_DWO_LINE_SECTION): Define. + (DEBUG_LTO_LINE_STR_SECTION): Define. + (init_sections_and_labels): Initialize debug_line_str_section + variable. Initialize debug_loc_section for -gdwarf-5 to + DEBUG_LOCLISTS_SECTION. Formatting fixes. + +2017-09-20 Richard Biener + + * graphite-sese-to-poly.c (extract_affine): Properly handle + POINTER_PLUS_EXPR, BIT_NOT_EXPR and conversion to signed. + +2017-09-20 Richard Biener + + PR tree-optimization/81373 + * graphite-scop-detection.c (build_cross_bb_scalars_def): + Force SESE live-out defs to be handled even if they are + scev_analyzable_p. + +2017-09-19 Jeff Law + + * combine-stack-adj.c (combine_stack_adjustments_for_block): Do + nothing for stack adjustments with REG_STACK_CHECK. + * sched-deps.c (parse_add_or_inc): Reject insns with + REG_STACK_CHECK from dependency breaking. + * config/i386/i386.c (pro_epilogue_adjust_stack): Return insn. + (ix86_adjust_satck_and_probe_stack_clash): Add REG_STACK_NOTEs. + * reg-notes.def (STACK_CHECK): New note. + + * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): New. + (ix86_expand_prologue): Dump stack clash info as needed. + Call ix86_adjust_stack_and_probe_stack_clash as needed. + + * function.c (dump_stack_clash_frame_info): New function. + * function.h (dump_stack_clash_frame_info): Prototype. + (enum stack_clash_probes): New enum. + + * config/alpha/alpha.c (alpha_expand_prologue): Also check + flag_stack_clash_protection. + * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Likewise. + (arm_expand_prologue, thumb1_expand_prologue): Likewise. + (arm_frame_pointer_required): Likewise. + * config/ia64/ia64.c (ia64_compute_frame_size): Likewise. + (ia64_expand_prologue): Likewise. + * config/mips/mips.c (mips_expand_prologue): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Likewise. + * config/sparc/sparc.c (sparc_expand_prologue): Likewise. + (sparc_flat_expand_prologue): Likewise. + * config/spu/spu.c (spu_expand_prologue): Likewise. + + * explow.c: Include "params.h". + (anti_adjust_stack_and_probe_stack_clash): New function. + (get_stack_check_protect): Likewise. + (compute_stack_clash_protection_loop_data): Likewise. + (emit_stack_clash_protection_loop_start): Likewise. + (emit_stack_clash_protection_loop_end): Likewise. + (allocate_dynamic_stack_space): Use get_stack_check_protect. + Use anti_adjust_stack_and_probe_stack_clash. + * explow.h (compute_stack_clash_protection_loop_data): Prototype. + (emit_stack_clash_protection_loop_start): Likewise. + (emit_stack_clash_protection_loop_end): Likewise. + * rtl.h (get_stack_check_protect): Prototype. + * target.def (stack_clash_protection_final_dynamic_probe): New hook. + * targhooks.c (default_stack_clash_protection_final_dynamic_probe): New. + * targhooks.h (default_stack_clash_protection_final_dynamic_probe): + Prototype. + * doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE): + Add @hook. + * doc/tm.texi: Rebuilt. + * config/aarch64/aarch64.c (aarch64_expand_prologue): Use + get_stack_check_protect. + * config/alpha/alpha.c (alpha_expand_prologue): Likewise. + * config/arm/arm.c (arm_expand_prologue): Likewise. + (arm_frame_pointer_required): Likewise. + * config/i386/i386.c (ix86_expand_prologue): Likewise. + * config/ia64/ia64.c (ia64_expand_prologue): Likewise. + * config/mips/mips.c (mips_expand_prologue): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_emit_prologue): Likewise. + * config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise. + * config/sparc/sparc.c (sparc_expand_prologue): Likewise. + (sparc_flat_expand_prologue): Likewise. + + * common.opt (-fstack-clash-protection): New option. + * flag-types.h (enum stack_check_type): Note difference between + -fstack-check= and -fstack-clash-protection. + * params.def (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE): New PARAM. + (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Likewise. + * toplev.c (process_options): Issue warnings/errors for cases + not handled with -fstack-clash-protection. + * doc/invoke.texi (-fstack-clash-protection): Document new option. + (-fstack-check): Note additional problem with -fstack-check=generic. + Note that -fstack-check is primarily for Ada and refer users + to -fstack-clash-protection for stack-clash-protection. + Document new params for stack clash protection. + +2017-09-19 Uros Bizjak + + * config/i386/i386.c (ix86_split_long_move): Do not handle + address used for LEA in a special way. + +2017-09-19 Segher Boessenkool + + * simplify-rtx.c (simplify_binary_operation_1): Fix typo in comment. + +2017-09-19 Martin Sebor + + PR c/81854 + * cgraphunit.c (handle_alias_pairs): Reject aliases between functions + of incompatible types. + +2017-09-19 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling + for early folding of vector loads (ALTIVEC_BUILTIN_LVX_*). + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_LD. + +2017-09-19 Richard Biener + + PR tree-optimization/82244 + * tree-vrp.c (remove_range_assertions): Do not propagate + a constant to abnormals but replace the assert with a copy. + +2017-09-19 Alexander Monakov + + PR rtl-optimization/57878 + PR rtl-optimization/68988 + * lra-assigns.c (reload_pseudo_compare_func): Remove fragmentation + avoidance test involving non_reload_pseudos. Move frequency test + below the general fragmentation avoidance test. + +2017-09-19 Richard Biener + + PR tree-optimization/69728 + * graphite-sese-to-poly.c (schedule_error): New global. + (add_loop_schedule): Handle empty domain by failing the + schedule. + (build_original_schedule): Handle schedule_error. + +2017-09-19 Richard Biener + + * graphite-scop-detection.c (scop_detection::can_represent_loop): + Do not iterate to sibling loops but only to siblings of inner + loops. + +2017-09-18 Andreas Schwab + + PR target/81613 + * config/m68k/m68k.md (moveq feeding equality comparison): Check + that the registers are different. + +2017-09-18 Uros Bizjak + + * config/i386/i386.c (fold_builtin_cpu): Add M_AMDFAM17H + to processor_model and "amdfam17h" to arch_names_table. + * doc/extend.texi (__builtin_cpu_is): Document amdfam17h CPU name. + +2017-09-18 Jakub Jelinek + + PR c/82234 + * doc/extend.texi: Add @findex entry for __builtin_shuffle. + +2017-09-18 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vectorizer.h (vect_slp_analyze_operations): Replace parameters + with a vec_info *. + * tree-vect-loop.c (vect_analyze_loop_operations): Update call + accordingly. + * tree-vect-slp.c (vect_slp_analyze_node_operations): Add vec_info * + parameter. Set SLP_TREE_NUMBER_OF_VEC_STMTS here rather than in + vect_schedule_slp_instance. + (vect_slp_analyze_operations): Replace parameters with a vec_info *. + Update call to vect_slp_analyze_node_operations. Simplify return + value. + (vect_slp_analyze_bb_1): Update call accordingly. + (vect_schedule_slp_instance): Remove vectorization_factor parameter. + Don't calculate SLP_TREE_NUMBER_OF_VEC_STMTS here. + (vect_schedule_slp): Update call accordingly. + +2017-09-18 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Cope + with types that aren't in fact scalar. + +2017-09-18 Richard Sandiford + + * tree-vect-slp.c (vect_record_max_nunits): New function, + split out from... + (vect_build_slp_tree_1): ...here. + (vect_build_slp_tree_2): Call it for phis too. + +2017-09-18 Richard Sandiford + + * tree-vect-stmts.c (vectorizable_mask_load_store): Pass mask_vectype + to vect_get_vec_def_for_operand when getting the mask operand. + +2017-09-18 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-loop.c (vectorizable_live_operation): Fix type of + bitstart. + +2017-09-18 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-loop.c (vectorizable_live_operation): Fix element size + calculation for vector booleans. + +2017-09-18 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-stmts.c (can_vectorize_live_stmts): New function, + split out from... + (vect_transform_stmt): ...here. + (vect_analyze_stmt): Use it instead of calling + vectorizable_live_operation directly. + +2017-09-18 Cesar Philippidis + + * omp-offload.c (oacc_xform_loop): Enable SIMD vectorization on + non-SIMT targets in acc vector loops. + +2017-09-18 Claudiu Zissulescu + + * configure.ac: Add arc and check if assembler supports gdwarf2. + * configure: Regenerate. + +2017-09-18 Richard Biener + + PR tree-optimization/82220 + * tree-vect-loop.c (vect_estimate_min_profitable_iters): Exclude + epilogue niters from the min_profitable_iters compute. + +2017-09-18 Jakub Jelinek + + PR target/82145 + * config/i386/i386.c (ix86_init_large_pic_reg): Revert 2017-09-01 + changes. Turn CODE_LABEL into NOTE_INSN_DELETED_LABEL immediately. + (ix86_init_pic_reg): Revert 2017-09-01 changes. + +2017-09-18 Eric Botcazou + + PR target/81361 + * dwarf2cfi.c (add_cfis_to_fde): Do not generate DW_CFA_set_loc after + switching to a new text section. + +2017-09-18 Richard Biener + + * graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref): + Simplify. + (build_alias_set): Reject aliases with no access function. + +2017-09-18 Richard Biener + + PR tree-optimization/79622 + * graphite-scop-detection.c (build_cross_bb_scalars_def): Properly + handle PHIs. + (build_cross_bb_scalars_use): Likewise. + +2017-09-18 Pierre-Marie de Rodat + + * cgraph.h (cgraph_thunk_info): Fix a typo in a comment. + +2017-09-18 Alan Modra + + PR target/81996 + * gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use + stack_pointer_rtx for count 0. Update comments. Break up + large rtl expression. + +2017-09-17 Daniel Santos + + * config/i386/i386.c (xlogue_layout::STUB_NAME_MAX_LEN): + Increase to 20 bytes. + (xlogue_layout::s_stub_names): Add an additional size-2 diminsion. + (xlogue_layout::get_stub_name): Modify to select the appropairate sse + or avx version of the stub. + +2017-09-17 H.J. Lu + + PR target/82166 + * config/i386/i386.c (ix86_finalize_stack_frame_flags): Properly + compute the minimum stack alignment. Also update preferred stack + boundary for leaf functions. + +2017-09-16 Richard Sandiford + + PR tree-optimization/82228 + * tree-vect-loop.c (vectorizable_live_operation): Move initialization + of ncopies. + +2017-09-16 Chung-Ju Wu + + * common/config/nds32/nds32-common.c + (nds32_option_optimization_table): Refine formatting. + (nds32_option_optimization_table): Use -fsched-pressure and + -fomit-frame-pointer for specific optimization level. + +2017-09-16 Chung-Ju Wu + + * config/nds32/nds32.c: Refine formatting and comments. + * config/nds32/nds32.h: Likewise. + * config/nds32/nds32.md: Likewise. + * config/nds32/nds32-cost.c: Likewise. + * config/nds32/nds32-isr.c: Likewise. + * config/nds32/nds32-md-auxiliary.c: Likewise. + * config/nds32/nds32-multiple.md: Likewise. + * config/nds32/nds32-predicates.c: Likewise. + +2017-09-15 Andrew Sutton + Jakub Jelinek + + Add support for -std=c++2a. + * doc/cpp.texi (__cplusplus): Document value for -std=c++2a + or -std=gnu+2a. + * doc/invoke.texi: Document -std=c++2a and -std=gnu++2a. + +2017-09-15 Steve Ellcey + + PR target/82066 + * doc/extend.texi (Common Function Attributes): Add + references to ARM, AArch64, and S/390 specific attributes. + (Function Specific Option Pragmas): Add AArch64 and S/390 + to list of back ends that support the target pragma. + +2017-09-15 Nathan Sidwell + + * doc/standards.texi: Fix C++17 description. Update URLs for + C++11 & 14. + +2017-09-15 Bernd Edlinger + + * common.opt (Wcast-align=strict): New warning option. + * doc/invoke.texi: Document -Wcast-align=strict. + +2017-09-15 Pierre-Marie de Rodat + + * cgraph.h (cgraph_thunk_info): Add comments. + * cgraph.c (cgraph_node::create_thunk): Adjust comment, make + assert for VIRTUAL_* arguments stricter. + +2017-09-15 Jackson Woodruff + + PR tree-optimization/71026 + * match.pd: Move RDIV patterns from fold-const.c + * fold-const.c (distribute_real_division): Removed. + (fold_binary_loc): Remove calls to distribute_real_divison. + +2017-09-15 Jakub Jelinek + + * doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document + c++1z and gnu++1z as deprecated. Change other references to + -std=c++1z to -std=c++17 and -std=gnu++1z to -std=gnu++17. + Change -Wc++1z-compat to -Wc++17-compat. + * doc/cpp.texi: Document -std=c++17 defines __cplusplus 201703L. + * dwarf2out.c (highest_c_language): Handle C++17. + (gen_compile_unit_die): Likewise. + +2017-09-15 Jakub Jelinek + + PR rtl-optimization/82192 + * combine.c (make_extraction): Don't look through non-paradoxical + SUBREGs or TRUNCATE if pos + len is or might be bigger than + inner's mode. + +2017-09-15 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (function_arg_offset): New hook. + * targhooks.h (default_function_arg_offset): Declare. + * targhooks.c (default_function_arg_offset): New function. + * function.c (locate_and_pad_parm): Use + targetm.calls.function_arg_offset instead of FUNCTION_ARG_OFFSET. + * doc/tm.texi.in (FUNCTION_ARG_OFFSET): Replace with... + (TARGET_FUNCTION_ARG_OFFSET): ...this. + * doc/tm.texi: Regenerate. + * config/spu/spu.h (FUNCTION_ARG_OFFSET): Delete. + * config/spu/spu.c (spu_function_arg_offset): New function. + (TARGET_FUNCTION_ARG_OFFSET): Redefine. + * system.h (FUNCTION_ARG_OFFSET): Poison. + +2017-09-15 Richard Sandiford + Alan Hayard + David Sherwood + + * target.def (truly_noop_truncation): New hook. + (mode_rep_extended): Refer to TARGET_TRULY_NOOP_TRUNCATION rather + than TRULY_NOOP_TRUNCATION. + * hooks.h (hook_bool_uint_uint_true): Declare. + * hooks.c (hook_bool_uint_uint_true): New function. + * doc/tm.texi.in (TRULY_NOOP_TRUNCATION): Replace with... + (TARGET_TRULY_NOOP_TRUNCATION): ...this. + * doc/tm.texi: Regenerate. + * combine.c (make_extraction): Refer to TARGET_TRULY_NOOP_TRUNCATION + rather than TRULY_NOOP_TRUNCATION in comments. + (simplify_comparison): Likewise. + (record_truncated_value): Likewise. + * expmed.c (extract_bit_field_1): Likewise. + (extract_split_bit_field): Likewise. + * convert.c (convert_to_integer_1): Use targetm.truly_noop_truncation + instead of TRULY_NOOP_TRUNCATION. + * function.c (assign_parm_setup_block): Likewise. + * machmode.h (TRULY_NOOP_TRUNCATION_MODES_P): Likewise. + * rtlhooks.c: Include target.h. + * config/aarch64/aarch64.h (TRULY_NOOP_TRUNCATION): Delete. + * config/alpha/alpha.h (TRULY_NOOP_TRUNCATION): Delete. + * config/arc/arc.h (TRULY_NOOP_TRUNCATION): Delete. + * config/arm/arm.h (TRULY_NOOP_TRUNCATION): Delete. + * config/avr/avr.h (TRULY_NOOP_TRUNCATION): Delete. + * config/bfin/bfin.h (TRULY_NOOP_TRUNCATION): Delete. + * config/c6x/c6x.h (TRULY_NOOP_TRUNCATION): Delete. + * config/cr16/cr16.h (TRULY_NOOP_TRUNCATION): Delete. + * config/cris/cris.h (TRULY_NOOP_TRUNCATION): Delete. + * config/epiphany/epiphany.h (TRULY_NOOP_TRUNCATION): Delete. + * config/fr30/fr30.h (TRULY_NOOP_TRUNCATION): Delete. + * config/frv/frv.h (TRULY_NOOP_TRUNCATION): Delete. + * config/ft32/ft32.h (TRULY_NOOP_TRUNCATION): Delete. + * config/h8300/h8300.h (TRULY_NOOP_TRUNCATION): Delete. + * config/i386/i386.h (TRULY_NOOP_TRUNCATION): Delete. + * config/ia64/ia64.h (TRULY_NOOP_TRUNCATION): Delete. + * config/iq2000/iq2000.h (TRULY_NOOP_TRUNCATION): Delete. + * config/lm32/lm32.h (TRULY_NOOP_TRUNCATION): Delete. + * config/m32c/m32c.h (TRULY_NOOP_TRUNCATION): Delete. + * config/m32r/m32r.h (TRULY_NOOP_TRUNCATION): Delete. + * config/m68k/m68k.h (TRULY_NOOP_TRUNCATION): Delete. + * config/mcore/mcore.h (TRULY_NOOP_TRUNCATION): Delete. + * config/microblaze/microblaze.h (TRULY_NOOP_TRUNCATION): Delete. + * config/mips/mips.h (TRULY_NOOP_TRUNCATION): Delete. + * config/mips/mips.c (mips_truly_noop_truncation): New function. + (TARGET_TRULY_NOOP_TRUNCATION): Redefine. + * config/mips/mips.md: Refer to TARGET_TRULY_NOOP_TRUNCATION + rather than TRULY_NOOP_TRUNCATION in comments. + * config/mmix/mmix.h (TRULY_NOOP_TRUNCATION): Delete. + * config/mn10300/mn10300.h (TRULY_NOOP_TRUNCATION): Delete. + * config/moxie/moxie.h (TRULY_NOOP_TRUNCATION): Delete. + * config/msp430/msp430.h (TRULY_NOOP_TRUNCATION): Delete. + * config/nds32/nds32.h (TRULY_NOOP_TRUNCATION): Delete. + * config/nios2/nios2.h (TRULY_NOOP_TRUNCATION): Delete. + * config/nvptx/nvptx.h (TRULY_NOOP_TRUNCATION): Delete. + * config/pa/pa.h (TRULY_NOOP_TRUNCATION): Delete. + * config/pdp11/pdp11.h (TRULY_NOOP_TRUNCATION): Delete. + * config/powerpcspe/powerpcspe.h (TRULY_NOOP_TRUNCATION): Delete. + * config/riscv/riscv.h (TRULY_NOOP_TRUNCATION): Delete. + * config/riscv/riscv.md: Refer to TARGET_TRULY_NOOP_TRUNCATION + rather than TRULY_NOOP_TRUNCATION in comments. + * config/rl78/rl78.h (TRULY_NOOP_TRUNCATION): Delete. + * config/rs6000/rs6000.h (TRULY_NOOP_TRUNCATION): Delete. + * config/rx/rx.h (TRULY_NOOP_TRUNCATION): Delete. + * config/s390/s390.h (TRULY_NOOP_TRUNCATION): Delete. + * config/sh/sh.h (MAYBE_BASE_REGISTER_RTX_P): Remove + TRULY_NOOP_TRUNCATION condition. + (MAYBE_INDEX_REGISTER_RTX_P): Likewise. + (TRULY_NOOP_TRUNCATION): Delete. + * config/sparc/sparc.h (TRULY_NOOP_TRUNCATION): Delete. + * config/spu/spu.h (TRULY_NOOP_TRUNCATION): Delete. + * config/spu/spu.c (spu_truly_noop_truncation): New function. + (TARGET_TRULY_NOOP_TRUNCATION): Redefine. + * config/stormy16/stormy16.h (TRULY_NOOP_TRUNCATION): Delete. + * config/tilegx/tilegx.h (TRULY_NOOP_TRUNCATION): Delete. + * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): New fuction. + (TARGET_TRULY_NOOP_TRUNCATION): Redefine. + * config/tilegx/tilegx.md: Refer to TARGET_TRULY_NOOP_TRUNCATION + rather than TRULY_NOOP_TRUNCATION in comments. + * config/tilepro/tilepro.h (TRULY_NOOP_TRUNCATION): Delete. + * config/v850/v850.h (TRULY_NOOP_TRUNCATION): Delete. + * config/vax/vax.h (TRULY_NOOP_TRUNCATION): Delete. + * config/visium/visium.h (TRULY_NOOP_TRUNCATION): Delete. + * config/xtensa/xtensa.h (TRULY_NOOP_TRUNCATION): Delete. + * system.h (TRULY_NOOP_TRUNCATION): Poison. + +2017-09-15 Christophe Lyon + + PR target/67591 + * config/arm/arm.md (*cmp_and): Add enabled_for_depr_it attribute. + (*cmp_ior): Likewise. + (*ior_scc_scc): Add alternative for enabled_for_depr_it attribute. + (*ior_scc_scc_cmp): Likewise. + (*and_scc_scc): Likewise. + (*and_scc_scc_cmp): Likewise. + +2017-09-15 Richard Sandiford + Alan Hayard + David Sherwood + + * target.def (can_change_mode_class): New hook. + (mode_rep_extended): Refer to it instead of CANNOT_CHANGE_MODE_CLASS. + (hard_regno_nregs): Likewise. + * hooks.h (hook_bool_mode_mode_reg_class_t_true): Declare. + * hooks.c (hook_bool_mode_mode_reg_class_t_true): New function. + * doc/tm.texi.in (CANNOT_CHANGE_MODE_CLASS): Replace with... + (TARGET_CAN_CHANGE_MODE_CLASS): ...this. + (LOAD_EXTEND_OP): Update accordingly. + * doc/tm.texi: Regenerate. + * doc/rtl.texi: Refer to TARGET_CAN_CHANGE_MODE_CLASS instead of + CANNOT_CHANGE_MODE_CLASS. + * hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Replace with... + (REG_CAN_CHANGE_MODE_P): ...this new macro. + * combine.c (simplify_set): Update accordingly. + * emit-rtl.c (validate_subreg): Likewise. + * recog.c (general_operand): Likewise. + * regcprop.c (mode_change_ok): Likewise. + * reload1.c (choose_reload_regs): Likewise. + (inherit_piecemeal_p): Likewise. + * rtlanal.c (simplify_subreg_regno): Likewise. + * postreload.c (reload_cse_simplify_set): Use REG_CAN_CHANGE_MODE_P + instead of CANNOT_CHANGE_MODE_CLASS. + (reload_cse_simplify_operands): Likewise. + * reload.c (push_reload): Use targetm.can_change_mode_class + instead of CANNOT_CHANGE_MODE_CLASS. + (push_reload): Likewise. Also use REG_CAN_CHANGE_MODE_P instead of + REG_CANNOT_CHANGE_MODE_P. + * config/alpha/alpha.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/alpha/alpha.c (alpha_can_change_mode_class): New function. + (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + * config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/arm/arm.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + (arm_can_change_mode_class): New function. + * config/arm/neon.md: Refer to TARGET_CAN_CHANGE_MODE_CLASS rather + than CANNOT_CHANGE_MODE_CLASS in comments. + * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/i386/i386-protos.h (ix86_cannot_change_mode_class): Delete. + * config/i386/i386.c (ix86_cannot_change_mode_class): Replace with... + (ix86_can_change_mode_class): ...this new function, inverting the + sense of the return value. + (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/ia64/ia64.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + (ia64_can_change_mode_class): New function. + * config/m32c/m32c.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/m32c/m32c-protos.h (m32c_cannot_change_mode_class): Delete. + * config/m32c/m32c.c (m32c_cannot_change_mode_class): Replace with... + (m32c_can_change_mode_class): ...this new function, inverting the + sense of the return value. + (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + * config/mips/mips.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/mips/mips-protos.h (mips_cannot_change_mode_class): Delete. + * config/mips/mips.c (mips_cannot_change_mode_class): Replace with... + (mips_can_change_mode_class): ...this new function, inverting the + sense of the return value. + (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + * config/msp430/msp430.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/msp430/msp430.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + (msp430_can_change_mode_class): New function. + * config/nvptx/nvptx.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/nvptx/nvptx.c (nvptx_can_change_mode_class): New function. + (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + * config/pa/pa32-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/pa/pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/pa/pa-protos.h (pa_cannot_change_mode_class): Delete. + * config/pa/pa.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + (pa_cannot_change_mode_class): Replace with... + (pa_can_change_mode_class): ...this new function, inverting the + sense of the return value. + (pa_modes_tieable_p): Refer to TARGET_CAN_CHANGE_MODE_CLASS rather + than CANNOT_CHANGE_MODE_CLASS in comments. + * config/pdp11/pdp11.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/pdp11/pdp11-protos.h (pdp11_cannot_change_mode_class): Delete. + * config/pdp11/pdp11.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + (pdp11_cannot_change_mode_class): Replace with... + (pdp11_can_change_mode_class): ...this new function, inverting the + sense of the return value. + * config/powerpcspe/powerpcspe.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/powerpcspe/powerpcspe-protos.h + (rs6000_cannot_change_mode_class_ptr): Delete. + * config/powerpcspe/powerpcspe.c + (rs6000_cannot_change_mode_class_ptr): Delete. + (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + (rs6000_option_override_internal): Assign to + targetm.can_change_mode_class instead of + rs6000_cannot_change_mode_class_ptr. + (rs6000_cannot_change_mode_class): Replace with... + (rs6000_can_change_mode_class): ...this new function, inverting the + sense of the return value. + (rs6000_debug_cannot_change_mode_class): Replace with... + (rs6000_debug_can_change_mode_class): ...this new function. + * config/riscv/riscv.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/riscv/riscv.c (riscv_can_change_mode_class): New function. + (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/rs6000/rs6000-protos.h (rs6000_cannot_change_mode_class_ptr): + Delete. + * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class_ptr): Delete. + (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + (rs6000_option_override_internal): Assign to + targetm.can_change_mode_class instead of + rs6000_cannot_change_mode_class_ptr. + (rs6000_cannot_change_mode_class): Replace with... + (rs6000_can_change_mode_class): ...this new function, inverting the + sense of the return value. + (rs6000_debug_cannot_change_mode_class): Replace with... + (rs6000_debug_can_change_mode_class): ...this new function. + * config/s390/s390.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/s390/s390-protos.h (s390_cannot_change_mode_class): Delete. + * config/s390/s390.c (s390_cannot_change_mode_class): Replace with... + (s390_can_change_mode_class): ...this new function, inverting the + sense of the return value. + (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + * config/sh/sh.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/sh/sh-protos.h (sh_cannot_change_mode_class): Delete. + * config/sh/sh.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + (sh_cannot_change_mode_class): Replace with... + (sh_can_change_mode_class): ...this new function, inverting the + sense of the return value. + * config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/sparc/sparc.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + (sparc_can_change_mode_class): New function. + * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/spu/spu.c (spu_can_change_mode_class): New function. + (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + * config/visium/visium.h (CANNOT_CHANGE_MODE_CLASS): Delete. + * config/visium/visium.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine. + (visium_can_change_mode_class): New function. + * system.h (CANNOT_CHANGE_MODE_CLASS): Poison. + +2017-09-15 Richard Biener + + PR tree-optimization/82217 + * tree-ssa-sccvn.c (visit_phi): Properly handle all VN_TOP + but not undefined case. + +2017-09-15 Jakub Jelinek + + PR target/82145 + * postreload.c (reload_cse_simplify_operands): Skip + NOTE_INSN_DELETED_LABEL similarly to skipping CODE_LABEL. + +2017-09-15 Richard Biener + + PR tree-optimization/68823 + * graphite-scop-detection.c (build_alias_set): If we have a + possible dependence check whether we can handle them by just + looking at the DRs DR_ACCESS_FNs. + (build_scops): If build_alias_set fails, fail the SCOP. + +2017-09-14 Michael Meissner + + * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1_HW): New macros + to support float128 built-in functions that require the ISA 3.0 + hardware. + (BU_FLOAT128_3_HW): Likewise. + (SQRTF128): Add support for the IEEE 128-bit square root and fma + built-in functions. + (FMAF128): Likewise. + (FMAQ): Likewise. + * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add + support for built-in functions that need the ISA 3.0 IEEE 128-bit + floating point instructions. + (rs6000_invalid_builtin): Likewise. + (rs6000_builtin_mask_names): Likewise. + * config/rs6000/rs6000.h (MASK_FLOAT128_HW): Likewise. + (RS6000_BTM_FLOAT128_HW): Likewise. + (RS6000_BTM_COMMON): Likewise. + * config/rs6000/rs6000.md (fma4_hw): Add a generator + function. + * doc/extend.texi (RS/6000 built-in functions): Document the + IEEE 128-bit floating point square root and fused multiply-add + built-in functions. + +2017-09-14 Pat Haugen + + * config/rs6000/rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC + reg (r2) isn't in the set of registers defined in the prologue. + +2017-09-14 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vectorizer.h (_loop_vec_info): Add max_vectorization_factor. + (LOOP_VINFO_MAX_VECT_FACTOR): New macro. + (LOOP_VINFO_ORIG_VECT_FACTOR): Replace with... + (LOOP_VINFO_ORIG_MAX_VECT_FACTOR): ...this new macro. + * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Update + accordingly. + * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize + max_vectorization_factor. + (vect_analyze_loop_2): Set LOOP_VINFO_MAX_VECT_FACTOR. + +2017-09-14 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vectorizer.h (vect_min_worthwhile_factor): Delete. + (vect_worthwhile_without_simd_p): Declare. + * tree-vect-loop.c (vect_worthwhile_without_simd_p): New function. + (vectorizable_reduction): Use it. + * tree-vect-stmts.c (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + +2017-09-14 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vectorizer.h (vect_get_num_copies): New function. + * tree-vect-data-refs.c (vect_get_data_access_cost): Use it. + * tree-vect-loop.c (vectorizable_reduction): Likewise. + (vectorizable_induction): Likewise. + (vectorizable_live_operation): Likewise. + * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise. + (vectorizable_bswap): Likewise. + (vectorizable_call): Likewise. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_store): Likewise. + (vectorizable_load): Likewise. + (vectorizable_condition): Likewise. + (vectorizable_comparison): Likewise. + (vect_analyze_stmt): Pass the slp node to vectorizable_live_operation. + +2017-09-14 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-vect-loop.c (vectorizable_induction): Use gimple_build instead + of vect_init_vector. + +2017-09-14 Richard Sandiford + Alan Hayward + David Sherwood + + * gimple-fold.h (gimple_build_vector_from_val): Declare, and provide + an inline wrapper that provides a location. + (gimple_build_vector): Likewise. + * gimple-fold.c (gimple_build_vector_from_val): New function. + (gimple_build_vector): Likewise. + * tree-vect-loop.c (get_initial_def_for_reduction): Use the new + functions to build the initial value. Always return a gimple value. + (get_initial_defs_for_reduction): Likewise. Only compute + neutral_vec once. + (vect_create_epilog_for_reduction): Don't call force_gimple_operand or + vect_init_vector on the results from get_initial_def(s)_for_reduction. + (vectorizable_induction): Use gimple_build_vector rather than + vect_init_vector. + +2017-09-14 Richard Sandiford + Alan Hayward + David Sherwood + + * target.h (vec_perm_indices): New typedef. + (auto_vec_perm_indices): Likewise. + * optabs-query.h: Include target.h + (can_vec_perm_p): Take a vec_perm_indices *. + * optabs-query.c (can_vec_perm_p): Likewise. + (can_mult_highpart_p): Update accordingly. Use auto_vec_perm_indices. + * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. + * tree-vect-generic.c (lower_vec_perm): Likewise. + * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise. + (vect_grouped_load_supported): Likewise. + (vect_shift_permute_load_chain): Likewise. + (vect_permute_store_chain): Use auto_vec_perm_indices. + (vect_permute_load_chain): Likewise. + * fold-const.c (fold_vec_perm): Take vec_perm_indices. + (fold_ternary_loc): Update accordingly. Use auto_vec_perm_indices. + Update uses of can_vec_perm_p. + * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Replace the + mode with a number of elements. Take a vec_perm_indices *. + (vect_create_epilog_for_reduction): Update accordingly. + Use auto_vec_perm_indices. + (have_whole_vector_shift): Likewise. Update call to can_vec_perm_p. + * tree-vect-slp.c (vect_build_slp_tree_1): Likewise. + (vect_transform_slp_perm_load): Likewise. + (vect_schedule_slp_instance): Use auto_vec_perm_indices. + * tree-vectorizer.h (vect_gen_perm_mask_any): Take a vec_perm_indices. + (vect_gen_perm_mask_checked): Likewise. + * tree-vect-stmts.c (vect_gen_perm_mask_any): Take a vec_perm_indices. + (vect_gen_perm_mask_checked): Likewise. + (vectorizable_mask_load_store): Use auto_vec_perm_indices. + (vectorizable_store): Likewise. + (vectorizable_load): Likewise. + (perm_mask_for_reverse): Likewise. Update call to can_vec_perm_p. + (vectorizable_bswap): Likewise. + +2017-09-14 Richard Sandiford + Alan Hayward + David Sherwood + + * tree.h (build_vector): Take a vec instead of a tree *. + * tree.c (build_vector): Likewise. + (build_vector_from_ctor): Update accordingly. + (build_vector_from_val): Likewise. + * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise. + * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. + * tree-vect-generic.c (add_rshift): Likewise. + (expand_vector_divmod): Likewise. + (optimize_vector_constructor): Likewise. + * tree-vect-slp.c (vect_get_constant_vectors): Likewise. + (vect_transform_slp_perm_load): Likewise. + (vect_schedule_slp_instance): Likewise. + * tree-vect-stmts.c (vectorizable_bswap): Likewise. + (vectorizable_call): Likewise. + (vect_gen_perm_mask_any): Likewise. Add elements in order. + * expmed.c (make_tree): Likewise. + * fold-const.c (fold_negate_expr_1): Use auto_vec when building + a vector passed to build_vector. + (fold_convert_const): Likewise. + (exact_inverse): Likewise. + (fold_ternary_loc): Likewise. + (fold_relational_const): Likewise. + (const_binop): Likewise. Use VECTOR_CST_ELT directly when operating + on VECTOR_CSTs, rather than going through vec_cst_ctor_to_array. + (const_unop): Likewise. Store the reduction accumulator in a + variable rather than an array. + (vec_cst_ctor_to_array): Take the number of elements as a parameter. + (fold_vec_perm): Update calls accordingly. Use auto_vec for + the new vector, rather than constructing it after the input arrays. + (native_interpret_vector): Use auto_vec when building + a vector passed to build_vector. Add elements in order. + * tree-vect-loop.c (get_initial_defs_for_reduction): Use + auto_vec when building a vector passed to build_vector. + (vect_create_epilog_for_reduction): Likewise. + (vectorizable_induction): Likewise. + (get_initial_def_for_reduction): Likewise. Fix indentation of + case statements. + * config/sparc/sparc.c (sparc_handle_vis_mul8x16): Change n_elts + to a vec *. + (sparc_fold_builtin): Use auto_vec when building a vector + passed to build_vector. + +2017-09-14 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-core.h (tree_base::u): Add an "nelts" field. + (tree_vector): Use VECTOR_CST_NELTS as the length. + * tree.c (tree_size): Likewise. + (make_vector): Initialize VECTOR_CST_NELTS. + * tree.h (VECTOR_CST_NELTS): Use the u.nelts field. + * cfgexpand.c (expand_debug_expr): Use VECTOR_CST_NELTS instead of + TYPE_VECTOR_SUBPARTS. + * expr.c (const_vector_mask_from_tree): Consistently use "units" + as the number of units, setting it from VECTOR_CST_NELTS. + (const_vector_from_tree): Likewise. + * fold-const.c (negate_expr_p): Use VECTOR_CST_NELTS instead of + TYPE_VECTOR_SUBPARTS for the number of elements in a VECTOR_CST. + (fold_negate_expr_1): Likewise. + (fold_convert_const): Likewise. + (const_binop): Likewise. Differentiate the number of output and + input elements. + (const_unop): Likewise. + (fold_ternary_loc): Use VECTOR_CST_NELTS for the number of elements + in a VECTOR_CST, asserting that it is the same as TYPE_VECTOR_SUBPARTS + in cases that did the opposite. + +2017-09-14 Richard Biener + + * tree-ssa-sccvn.c (visit_phi): Merge undefined values similar + to VN_TOP. + +2017-09-14 Eric Botcazou + + * dwarf2out.c (dwarf2out_source_line): Remove superfluous test. + +2017-09-14 Jakub Jelinek + + PR target/81325 + * cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions + if and where to split a bb, except for splitting before debug insn + sequences followed by non-label real insn. Delete debug insns + in between basic blocks. + + * combine.c (make_compound_operation_int): Formatting fixes. + + * config/alpha/elf.h (LINK_EH_SPEC): Add -static-pie support. + * config/alpha/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise. + * config/netbsd.h (LINK_EH_SPEC): Likewise. + * config/sol2.h (LINK_EH_SPEC): Likewise. + * config/arm/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise. + * config/s390/linux.h (LINK_SPEC): Likewise. + * config/freebsd.h (LINK_EH_SPEC): Likewise. + * config/openbsd.h (LINK_EH_SPEC): Likewise. + * config/lm32/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise. + * config/aarch64/aarch64-linux.h (LINUX_TARGET_LINK_SPEC): Likewise. + * config/powerpcspe/sysv4.h (LINK_EH_SPEC): Likewise. + * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise. + * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Fix a typo. + * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Formatting fix. + +2017-09-13 Jakub Jelinek + + * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Add -static-pie + support. + (ENDFILE_LINUX_SPEC): Likewise. + (LINK_EH_SPEC): Likewise. + * config/rs6000/linux64.h (LINK_SHLIB_SPEC): Likewise. + (LINK_OS_LINUX_SPEC32): Likewise. + (LINK_OS_LINUX_SPEC64): Likewise. + * config/rs6000/linux.h (LINK_SHLIB_SPEC): Likewise. + (LINK_OS_LINUX_SPEC): Likewise. + +2017-09-13 Martin Liska + + PR middle-end/82154 + * stmt.c (expand_sjlj_dispatch_table): Use CASE_LOW when + CASE_HIGH is NULL_TREE. + +2017-09-13 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (secondary_memory_needed): New hook. + (secondary_reload): Refer to TARGET_SECONDARY_MEMORY_NEEDED + instead of SECONDARY_MEMORY_NEEDED. + (secondary_memory_needed_mode): Likewise. + * hooks.h (hook_bool_mode_reg_class_t_reg_class_t_false): Declare. + * hooks.c (hook_bool_mode_reg_class_t_reg_class_t_false): New function. + * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED): Replace with... + (TARGET_SECONDARY_MEMORY_NEEDED): ...this. + (SECONDARY_MEMORY_NEEDED_RTX): Update reference accordingly. + * doc/tm.texi: Regenerate. + * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED): Delete. + * config/alpha/alpha.c (alpha_secondary_memory_needed): New function. + (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. + * config/i386/i386.h (SECONDARY_MEMORY_NEEDED): Delete. + * config/i386/i386-protos.h (ix86_secondary_memory_needed): Delete. + * config/i386/i386.c (inline_secondary_memory_needed): Put the + mode argument first and change the reg_class arguments to reg_class_t. + (ix86_secondary_memory_needed): Likewise. Remove the strict parameter. + Make static. Update the call to inline_secondary_memory_needed. + (ix86_register_move_cost): Update the call to + inline_secondary_memory_needed. + (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. + * config/ia64/ia64.h (SECONDARY_MEMORY_NEEDED): Delete commented-out + definition. + * config/ia64/ia64.c (spill_xfmode_rfmode_operand): Refer to + TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED + in comment. + * config/mips/mips.h (SECONDARY_MEMORY_NEEDED): Delete. + * config/mips/mips-protos.h (mips_secondary_memory_needed): Delete. + * config/mips/mips.c (mips_secondary_memory_needed): Make static + and match hook interface. Add comment from mips.h. + (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. + * config/mmix/mmix.md (truncdfsf2): Refer to + TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED + in comment. + * config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED): Rename to... + (PA_SECONDARY_MEMORY_NEEDED): ...this, and put the mode argument first. + * config/pa/pa.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. + (pa_secondary_memory_needed): New function. + * config/pdp11/pdp11.h (SECONDARY_MEMORY_NEEDED): Delete. + * config/pdp11/pdp11-protos.h (pdp11_secondary_memory_needed): Delete. + * config/pdp11/pdp11.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. + (pdp11_secondary_memory_needed): Make static and match hook interface. + * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED): Delete. + * config/powerpcspe/powerpcspe-protos.h + (rs6000_secondary_memory_needed_ptr): Delete. + * config/powerpcspe/powerpcspe.c (rs6000_secondary_memory_needed_ptr): + Delete. + (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. + (rs6000_option_override_internal): Assign to + targetm.secondary_memory_needed rather than + rs6000_secondary_memory_needed_ptr. + (rs6000_secondary_memory_needed): Match hook interface. + (rs6000_debug_secondary_memory_needed): Likewise. + * config/riscv/riscv.h (SECONDARY_MEMORY_NEEDED): Delete. + * config/riscv/riscv.c (riscv_secondary_memory_needed): New function. + (riscv_register_move_cost): Use it instead of SECONDARY_MEMORY_NEEDED. + (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. + * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED): Delete. + * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_ptr): + Delete. + * config/rs6000/rs6000.c (rs6000_secondary_memory_needed_ptr): Delete. + (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. + (rs6000_option_override_internal): Assign to + targetm.secondary_memory_needed rather than + rs6000_secondary_memory_needed_ptr. + (rs6000_secondary_memory_needed): Match hook interface. + (rs6000_debug_secondary_memory_needed): Likewise. + * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Delete. + * config/s390/s390.c (s390_secondary_memory_needed): New function. + (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. + * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED): Delete. + * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine. + (sparc_secondary_memory_needed): New function. + * lra-constraints.c (check_and_process_move): Refer to + TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED + in comment. + (curr_insn_transform): Likewise. + (process_alt_operands): Use targetm.secondary_memory_needed + instead of TARGET_SECONDARY_MEMORY_NEEDED. + (check_secondary_memory_needed_p): Likewise. + (choose_split_class): Likewise. + * reload.c: Unconditionally include code that was previously + conditional on SECONDARY_MEMORY_NEEDED. + (push_secondary_reload): Use targetm.secondary_memory_needed + instead of TARGET_SECONDARY_MEMORY_NEEDED. + (push_reload): Likewise. + * reload1.c: Unconditionally include code that was previously + conditional on SECONDARY_MEMORY_NEEDED. + (choose_reload_regs): Use targetm.secondary_memory_needed + instead of TARGET_SECONDARY_MEMORY_NEEDED. + (gen_reload): Likewise. + * system.h (SECONDARY_MEMORY_NEEDED): Poison. + +2017-09-13 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (secondary_memory_needed_mode): New hook: + * targhooks.c (default_secondary_memory_needed_mode): Declare. + * targhooks.h (default_secondary_memory_needed_mode): New function. + * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED_MODE): Replace with... + (TARGET_SECONDARY_MEMORY_NEEDED_MODE): ...this. + * doc/tm.texi: Regenerate. + * lra-constraints.c (check_and_process_move): Use + targetm.secondary_memory_needed_mode instead of + TARGET_SECONDARY_MEMORY_NEEDED_MODE. + (curr_insn_transform): Likewise. + * reload.c (get_secondary_mem): Likewise. + * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Delete. + * config/alpha/alpha.c (alpha_secondary_memory_needed_mode): New + function. + (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine. + * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Delete. + * config/i386/i386.c (ix86_secondary_memory_needed_mode): New function. + (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine. + * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED_MODE): + Delete. + * config/powerpcspe/powerpcspe-protos.h + (rs6000_secondary_memory_needed_mode): Delete. + * config/powerpcspe/powerpcspe.c + (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine. + (rs6000_secondary_memory_needed_mode): Make static. + * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): Delete. + * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_mode): + Delete. + * config/rs6000/rs6000.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE): + Redefine. + (rs6000_secondary_memory_needed_mode): Make static. + * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Delete. + * config/s390/s390.c (s390_secondary_memory_needed_mode): New function. + (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine. + * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Delete. + * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE): + Redefine. + (sparc_secondary_memory_needed_mode): New function. + * system.h (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Poison. + +2017-09-13 Jackson Woodruff + + * config/aarch64/constraints.md (Umq): New constraint. + * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): + Change to use Umq. + (mov): Update condition. + +2017-09-13 Kyrylo Tkachov + + * gimple-ssa-store-merging.c (sort_by_bitpos): Compare store order + when bitposition is the same. + +2017-09-13 Richard Biener + + * dwarf2out.c (output_die_symbol): Remove. + (output_die): Do not output a DIEs symbol. + +2017-09-13 Richard Biener + + PR middle-end/82128 + * gimple-fold.c (gimple_fold_call): Update SSA name in-place to + default-def to avoid breaking iterator update with the weird + interaction with cgraph_update_edges_for_call_stmt_node. + +2017-09-13 Richard Biener + + * tree-cfg.c (verify_gimple_assign_binary): Add verification + for WIDEN_SUM_EXPR, VEC_WIDEN_MULT_{HI,LO,EVEN,ODD}_EXPR, + VEC_PACK_{TRUNC,SAT,FIX_TRUNC}_EXPR. + (verify_gimple_assign_ternary): Add verification for DOT_PROD_EXPR. + +2017-09-13 Kugan Vivekanandarajah + + * config/aarch64/aarch64.c (aarch64_override_options_after_change_1): + Disable pc relative literal load irrespective of + TARGET_FIX_ERR_A53_84341 for default. + +2017-09-12 Eric Botcazou + + * config/sparc/sparc.c (output_return): Output the source location of + the insn in the delay slot, if any. + (output_sibcall): Likewise. + +2017-09-12 H.J. Lu + + PR driver/81498 + * common.opt (-static-pie): New alias. + (shared): Negate static-pie. + (-no-pie): Update help text. + (-pie): Likewise. + (static-pie): New option. + * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add + -static-pie support. + (GNU_USER_TARGET_ENDFILE_SPEC): Likewise. + (LINK_EH_SPEC): Likewise. + (LINK_GCC_C_SEQUENCE_SPEC): Likewise. + * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise. + * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise. + * gcc.c (LINK_COMMAND_SPEC): Likewise. + (init_gcc_specs): Likewise. + (init_spec): Likewise. + (display_help): Update help message for -pie. + * doc/invoke.texi: Update -pie, -no-pie and -static. Document + -static-pie. + +2017-09-12 Wilco Dijkstra + + * config/aarch64/aarch64.md (movsi_aarch64): Remove all '*'. + (movdi_aarch64): Likewise. + (movti_aarch64): Likewise. + +2017-09-12 Simon Wright + + PR target/80204 + * config/darwin-driver.c (darwin_find_version_from_kernel): Eliminate + calculation of the minor version, always output as 0. + +2017-09-12 Jakub Jelinek + + PR target/82112 + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For + ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion + on it early, rather than manual conversion late. For + ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion + instead of performing manual conversion. + +2017-09-12 Carl Love + + * config/rs6000/altivec.md (vec_widen_umult_even_v4si, + vec_widen_smult_even_v4si): Add define expands for vmuleuw, vmulesw, + vmulouw, vmulosw. + * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW, + VMULOSW): Add definitions. + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW, + ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries. + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin, + builtin_function_type): Add ALTIVEC_BUILTIN_* case statements. + +2017-09-12 James Greenhalgh + + * config/aarch64/aarch64.md (movdi_aarch64): Set load/store + types correctly. + (movti_aarch64): Likewise. + (movdf_aarch64): Likewise. + (movtf_aarch64): Likewise. + (load_pairdi): Likewise. + (store_pairdi): Likewise. + (load_pairdf): Likewise. + (store_pairdf): Likewise. + (loadwb_pair_): Likewise. + (storewb_pair_): Likewise. + (ldr_got_small_): Likewise. + (ldr_got_small_28k_): Likewise. + (ldr_got_tiny): Likewise. + * config/aarch64/iterators.md (ldst_sz): New. + (ldpstp_sz): Likewise. + * config/aarch64/thunderx.md (thunderx_storepair): Split store_8 + to store_16. + (thunderx_load): Split load_8 to load_16. + * config/aarch64/thunderx2t99.md (thunderx2t99_loadpair): Split + load_8 to load_16. + (thunderx2t99_storepair_basic): Split store_8 to store_16. + * config/arm/xgene1.md (xgene1_load_pair): Split load_8 to load_16. + (xgene1_store_pair): Split store_8 to store_16. + * config/aarch64/falkor.md (falkor_ld_3_ld): Split load_8 to load_16. + (falkor_st_0_st_sd): Split store_8 to store_16. + +2017-09-12 James Greenhalgh + + * config/arm/types.md (type): Rename load1/2/3/4 to load_4/8/12/16 + and store1/2/3/4 to store_4/8/12/16. + * config/aarch64/aarch64.md: Update for rename. + * config/arm/arm.md: Likewise.: Likewise. + * config/arm/arm.c: Likewise. + * config/arm/thumb1.md: Likewise. + * config/arm/thumb2.md: Likewise. + * config/arm/vfp.md: Likewise. + * config/arm/arm-generic.md: Likewise. + * config/arm/arm1020e.md: Likewise. + * config/arm/arm1026ejs.md: Likewise. + * config/arm/arm1136jfs.md: Likewise. + * config/arm/arm926ejs.md: Likewise. + * config/arm/cortex-a15.md: Likewise. + * config/arm/cortex-a17.md: Likewise. + * config/arm/cortex-a5.md: Likewise. + * config/arm/cortex-a53.md: Likewise. + * config/arm/cortex-a57.md: Likewise. + * config/arm/cortex-a7.md: Likewise. + * config/arm/cortex-a8.md: Likewise. + * config/arm/cortex-a9.md: Likewise. + * config/arm/cortex-m4.md: Likewise. + * config/arm/cortex-m7.md: Likewise. + * config/arm/cortex-r4.md: Likewise. + * config/arm/exynos-m1.md: Likewise. + * config/arm/fa526.md: Likewise. + * config/arm/fa606te.md: Likewise. + * config/arm/fa626te.md: Likewise. + * config/arm/fa726te.md: Likewise. + * config/arm/fmp626.md: Likewise. + * config/arm/iwmmxt.md: Likewise. + * config/arm/ldmstm.md: Likewise. + * config/arm/marvell-pj4.md: Likewise. + * config/arm/xgene1.md: Likewise. + * config/aarch64/thunderx.md: Likewise. + * config/aarch64/thunderx2t99.md: Likewise. + * config/aarch64/falkor.md: Likewise. + +2017-09-12 Martin Liska + + * attribs.c (private_lookup_attribute): New function. + * attribs.h (private_lookup_attribute): Declared here. + (lookup_attribute): Called from this place. + +2017-09-12 Richard Biener + + PR tree-optimization/82157 + * tree-ssa-pre.c (remove_dead_inserted_code): Do not remove + stmts with side-effects. + +2017-09-12 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (hard_regno_nregs): New hook. + (class_max_nregs): Refer to it instead of HARD_REGNO_NREGS. + * targhooks.h (default_hard_regno_nregs): Declare. + * targhooks.c (default_hard_regno_nregs): New function. + * doc/tm.texi.in (HARD_REGNO_NREGS): Replace with... + (TARGET_HARD_REGNO_NREGS): ...this hook. + (HARD_REGNO_NREGS_HAS_PADDING): Update accordingly. + (CLASS_MAX_NREGS): Likewise. + * doc/tm.texi: Regenerate. + * reginfo.c (init_reg_modes_target): Use targetm.hard_regno_nregs + instead of HARD_REGNO_NREGS. + * rtl.h (REG_NREGS): Refer to TARGET_HARD_REGNO_NREGS rather than + HARD_REGNO_NREGS in the comment. + * config/aarch64/aarch64.h (HARD_REGNO_NREGS): Delete. + * config/aarch64/aarch64-protos.h (aarch64_hard_regno_nregs): Delete. + * config/aarch64/aarch64.c (aarch64_hard_regno_nregs): Make static. + Return an unsigned int. + (TARGET_HARD_REGNO_NREGS): Redefine. + * config/alpha/alpha.h (HARD_REGNO_NREGS): Delete. + * config/arc/arc.h (HARD_REGNO_NREGS): Delete. + * config/arc/arc.c (TARGET_HARD_REGNO_NREGS): Redefine. + (arc_hard_regno_nregs): New function. + * config/arm/arm.h (HARD_REGNO_NREGS): Delete. + * config/arm/arm.c (TARGET_HARD_REGNO_NREGS): Redefine. + (arm_hard_regno_nregs): New function. + * config/avr/avr.h (HARD_REGNO_NREGS): Delete. + * config/bfin/bfin.h (HARD_REGNO_NREGS): Delete. + * config/bfin/bfin.c (bfin_hard_regno_nregs): New function. + (TARGET_HARD_REGNO_NREGS): Redefine. + * config/c6x/c6x.h (HARD_REGNO_NREGS): Delete. + * config/cr16/cr16.h (LONG_REG_P): Use targetm.hard_regno_nregs. + (HARD_REGNO_NREGS): Delete. + * config/cr16/cr16.c (TARGET_HARD_REGNO_NREGS): Redefine. + (cr16_hard_regno_nregs): New function. + (cr16_memory_move_cost): Use it instead of HARD_REGNO_NREGS. + * config/cris/cris.h (HARD_REGNO_NREGS): Delete. + * config/cris/cris.c (TARGET_HARD_REGNO_NREGS): Redefine. + (cris_hard_regno_nregs): New function. + * config/epiphany/epiphany.h (HARD_REGNO_NREGS): Delete. + * config/fr30/fr30.h (HARD_REGNO_NREGS): Delete. + (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs. + * config/frv/frv.h (HARD_REGNO_NREGS): Delete. + (CLASS_MAX_NREGS): Remove outdated copy of documentation. + * config/frv/frv-protos.h (frv_hard_regno_nregs): Delete. + * config/frv/frv.c (TARGET_HARD_REGNO_NREGS): Redefine. + (frv_hard_regno_nregs): Make static. Take and return an + unsigned int. + (frv_class_max_nregs): Remove outdated copy of documentation. + * config/ft32/ft32.h (HARD_REGNO_NREGS): Delete. + * config/h8300/h8300.h (HARD_REGNO_NREGS): Delete. + * config/h8300/h8300-protos.h (h8300_hard_regno_nregs): Delete. + * config/h8300/h8300.c (h8300_hard_regno_nregs): Delete. + * config/i386/i386.h (HARD_REGNO_NREGS): Delete. + * config/i386/i386.c (ix86_hard_regno_nregs): New function. + (TARGET_HARD_REGNO_NREGS): Redefine. + * config/ia64/ia64.h (HARD_REGNO_NREGS): Delete. + (CLASS_MAX_NREGS): Update comment. + * config/ia64/ia64.c (TARGET_HARD_REGNO_NREGS): Redefine. + (ia64_hard_regno_nregs): New function. + * config/iq2000/iq2000.h (HARD_REGNO_NREGS): Delete. + * config/lm32/lm32.h (HARD_REGNO_NREGS): Delete. + * config/m32c/m32c.h (HARD_REGNO_NREGS): Delete. + * config/m32c/m32c-protos.h (m32c_hard_regno_nregs): Delete. + * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Take and return + an unsigned int. + (m32c_hard_regno_nregs): Likewise. Make static. + (TARGET_HARD_REGNO_NREGS): Redefine. + * config/m32r/m32r.h (HARD_REGNO_NREGS): Delete. + * config/m68k/m68k.h (HARD_REGNO_NREGS): Delete. + * config/m68k/m68k.c (TARGET_HARD_REGNO_NREGS): Redefine. + (m68k_hard_regno_nregs): New function. + * config/mcore/mcore.h (HARD_REGNO_NREGS): Delete. + * config/microblaze/microblaze.h (HARD_REGNO_NREGS): Delete. + * config/mips/mips.h (HARD_REGNO_NREGS): Delete. + * config/mips/mips-protos.h (mips_hard_regno_nregs): Delete. + * config/mips/mips.c (mips_hard_regno_nregs): Make static. + Take and return an unsigned int. + (TARGET_HARD_REGNO_NREGS): Redefine. + * config/mmix/mmix.h (HARD_REGNO_NREGS): Delete. + (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs. + * config/mn10300/mn10300.h (HARD_REGNO_NREGS): Delete. + * config/moxie/moxie.h (HARD_REGNO_NREGS): Delete. + * config/msp430/msp430.h (HARD_REGNO_NREGS): Delete. + * config/msp430/msp430-protos.h (msp430_hard_regno_nregs): Delete. + * config/msp430/msp430.c (TARGET_HARD_REGNO_NREGS): Redefine. + (msp430_hard_regno_nregs): Make static. Take and return an + unsigned int. + * config/nds32/nds32.h (HARD_REGNO_NREGS): Delete. + * config/nds32/nds32-protos.h (nds32_hard_regno_nregs): Delete. + * config/nds32/nds32.c (nds32_hard_regno_nregs): Delete. + (nds32_hard_regno_mode_ok): Use targetm.hard_regno_nregs. + * config/nios2/nios2.h (HARD_REGNO_NREGS): Delete. + * config/nvptx/nvptx.h (HARD_REGNO_NREGS): Delete. + * config/nvptx/nvptx.c (nvptx_hard_regno_nregs): New function. + (TARGET_HARD_REGNO_NREGS): Redefine. + * config/pa/pa32-regs.h (HARD_REGNO_NREGS): Rename to... + (PA_HARD_REGNO_NREGS): ...this. + * config/pa/pa64-regs.h (HARD_REGNO_NREGS): Rename to... + (PA_HARD_REGNO_NREGS): ...this. + * config/pa/pa.c (TARGET_HARD_REGNO_NREGS): Redefine. + (pa_hard_regno_nregs): New function. + * config/pdp11/pdp11.h (HARD_REGNO_NREGS): Delete. + * config/pdp11/pdp11.c (TARGET_HARD_REGNO_NREGS): Redefine. + (pdp11_hard_regno_nregs): New function. + * config/powerpcspe/powerpcspe.h (HARD_REGNO_NREGS): Delete. + * config/powerpcspe/powerpcspe.c (TARGET_HARD_REGNO_NREGS): Redefine. + (rs6000_hard_regno_nregs_hook): New function. + * config/riscv/riscv.h (HARD_REGNO_NREGS): Delete. + * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete. + * config/riscv/riscv.c (riscv_hard_regno_nregs): Make static. + Take and return an unsigned int. Move earlier in file. + (TARGET_HARD_REGNO_NREGS): Redefine. + * config/rl78/rl78.h (HARD_REGNO_NREGS): Delete. + * config/rl78/rl78-protos.h (rl78_hard_regno_nregs): Delete. + * config/rl78/rl78.c (TARGET_HARD_REGNO_NREGS): Reefine. + (rl78_hard_regno_nregs): Make static. Take and return an + unsigned int. + * config/rs6000/rs6000.h (HARD_REGNO_NREGS): Delete. + * config/rs6000/rs6000.c (TARGET_HARD_REGNO_NREGS): Redefine. + (rs6000_hard_regno_nregs_hook): New function. + * config/rx/rx.h (HARD_REGNO_NREGS): Delete. + * config/rx/rx.c (rx_hard_regno_nregs): New function. + (TARGET_HARD_REGNO_NREGS): Redefine. + * config/s390/s390.h (HARD_REGNO_NREGS): Delete. + * config/s390/s390.c (REGNO_PAIR_OK): Use s390_hard_regno_nregs + instead of HARD_REGNO_NREGS. + (s390_hard_regno_nregs): New function. + (s390_hard_regno_mode_ok): Add comment from s390.h. + (TARGET_HARD_REGNO_NREGS): Redefine. + * config/sh/sh.h (HARD_REGNO_NREGS): Delete. + * config/sh/sh.c (TARGET_HARD_REGNO_NREGS): Redefine. + (sh_hard_regno_nregs): New function. + (sh_pass_in_reg_p): Use it. + * config/sparc/sparc.h (HARD_REGNO_NREGS): Delete. + * config/sparc/sparc.c (TARGET_HARD_REGNO_NREGS): Redefine. + (sparc_hard_regno_nregs): New function. + * config/spu/spu.h (HARD_REGNO_NREGS): Delete. + * config/spu/spu.c (spu_hard_regno_nregs): New function. + (spu_function_arg_advance): Use it, supplying a valid register number. + (TARGET_HARD_REGNO_NREGS): Redefine. + * config/stormy16/stormy16.h (HARD_REGNO_NREGS): Delete. + * config/tilegx/tilegx.h (HARD_REGNO_NREGS): Delete. + * config/tilepro/tilepro.h (HARD_REGNO_NREGS): Delete. + * config/v850/v850.h (HARD_REGNO_NREGS): Delete. + * config/vax/vax.h (HARD_REGNO_NREGS): Delete. + * config/visium/visium.h (HARD_REGNO_NREGS): Delete. + (CLASS_MAX_NREGS): Remove copy of old documentation. + * config/visium/visium.c (TARGET_HARD_REGNO_NREGS): Redefine. + (visium_hard_regno_nregs): New function. + (visium_hard_regno_mode_ok): Use it instead of HARD_REGNO_NREGS. + * config/xtensa/xtensa.h (HARD_REGNO_NREGS): Delete. + * config/xtensa/xtensa.c (TARGET_HARD_REGNO_NREGS): Redefine. + xtensa_hard_regno_nregs): New function. + * system.h (HARD_REGNO_NREGS): Poison. + +2017-09-12 Richard Sandiford + + * config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Use + hard_regno_nregs instead of HARD_REGNO_NREGS. + (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Likewise. + * config/c6x/c6x.c (c6x_expand_prologue): Likewise. + (c6x_expand_epilogue): Likewise. + * config/frv/frv.c (frv_alloc_temp_reg): Likewise. + (frv_read_iacc_argument): Likewise. + * config/sh/sh.c: Include regs.h. + (sh_print_operand): Use hard_regno_nregs instead of HARD_REGNO_NREGS. + (regs_used): Likewise. + (output_stack_adjust): Likewise. + * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Likewise. + * expmed.c: Include regs.h. + (store_bit_field_1): Use hard_regno_nregs instead of HARD_REGNO_NREGS. + * ree.c: Include regs.h. + (combine_reaching_defs): Use hard_regno_nregs instead of + HARD_REGNO_NREGS. + (add_removable_extension): Likewise. + +2017-09-12 Richard Sandiford + + * regs.h (hard_regno_nregs): Turn into a function. + (end_hard_regno): Update accordingly. + * caller-save.c (setup_save_areas): Likewise. + (save_call_clobbered_regs): Likewise. + (replace_reg_with_saved_mem): Likewise. + (insert_restore): Likewise. + (insert_save): Likewise. + * combine.c (can_change_dest_mode): Likewise. + (move_deaths): Likewise. + (distribute_notes): Likewise. + * config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_cannot_change_mode_class) + (rs6000_split_multireg_move): Likewise. + (rs6000_register_move_cost): Likewise. + (rs6000_memory_move_cost): Likewise. + * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Likewise. + (rs6000_split_multireg_move): Likewise. + (rs6000_register_move_cost): Likewise. + (rs6000_memory_move_cost): Likewise. + * cselib.c (cselib_reset_table): Likewise. + (cselib_lookup_1): Likewise. + * emit-rtl.c (set_mode_and_regno): Likewise. + * function.c (aggregate_value_p): Likewise. + * ira-color.c (setup_profitable_hard_regs): Likewise. + (check_hard_reg_p): Likewise. + (calculate_saved_nregs): Likewise. + (assign_hard_reg): Likewise. + (improve_allocation): Likewise. + (calculate_spill_cost): Likewise. + * ira-emit.c (modify_move_list): Likewise. + * ira-int.h (ira_hard_reg_set_intersection_p): Likewise. + (ira_hard_reg_in_set_p): Likewise. + * ira.c (setup_reg_mode_hard_regset): Likewise. + (clarify_prohibited_class_mode_regs): Likewise. + (check_allocation): Likewise. + * lra-assigns.c (find_hard_regno_for_1): Likewise. + (lra_setup_reg_renumber): Likewise. + (setup_try_hard_regno_pseudos): Likewise. + (spill_for): Likewise. + (assign_hard_regno): Likewise. + (setup_live_pseudos_and_spill_after_risky_transforms): Likewise. + * lra-constraints.c (in_class_p): Likewise. + (lra_constraint_offset): Likewise. + (simplify_operand_subreg): Likewise. + (lra_constraints): Likewise. + (split_reg): Likewise. + (split_if_necessary): Likewise. + (invariant_p): Likewise. + (inherit_in_ebb): Likewise. + * lra-lives.c (process_bb_lives): Likewise. + * lra-remat.c (reg_overlap_for_remat_p): Likewise. + (get_hard_regs): Likewise. + (do_remat): Likewise. + * lra-spills.c (assign_spill_hard_regs): Likewise. + * mode-switching.c (create_pre_exit): Likewise. + * postreload.c (reload_combine_recognize_pattern): Likewise. + * recog.c (peep2_find_free_register): Likewise. + * regcprop.c (kill_value_regno): Likewise. + (set_value_regno): Likewise. + (copy_value): Likewise. + (maybe_mode_change): Likewise. + (find_oldest_value_reg): Likewise. + (copyprop_hardreg_forward_1): Likewise. + * regrename.c (check_new_reg_p): Likewise. + (regrename_do_replace): Likewise. + * reload.c (push_reload): Likewise. + (combine_reloads): Likewise. + (find_dummy_reload): Likewise. + (operands_match_p): Likewise. + (find_reloads): Likewise. + (find_equiv_reg): Likewise. + (reload_adjust_reg_for_mode): Likewise. + * reload1.c (count_pseudo): Likewise. + (count_spilled_pseudo): Likewise. + (find_reg): Likewise. + (clear_reload_reg_in_use): Likewise. + (free_for_value_p): Likewise. + (allocate_reload_reg): Likewise. + (choose_reload_regs): Likewise. + (reload_adjust_reg_for_temp): Likewise. + (emit_reload_insns): Likewise. + (delete_output_reload): Likewise. + * rtlanal.c (subreg_get_info): Likewise. + * sched-deps.c (sched_analyze_reg): Likewise. + * sel-sched.c (init_regs_for_mode): Likewise. + (mark_unavailable_hard_regs): Likewise. + (choose_best_reg_1): Likewise. + (verify_target_availability): Likewise. + * valtrack.c (dead_debug_insert_temp): Likewise. + * var-tracking.c (track_loc_p): Likewise. + (emit_note_insn_var_location): Likewise. + * varasm.c (make_decl_rtl): Likewise. + * reginfo.c (choose_hard_reg_mode): Likewise. + (init_reg_modes_target): Refer directly to + this_target_regs->x_hard_regno_nregs. + +2017-09-12 Richard Sandiford + + * ira-costs.c (record_operand_costs): Use in_hard_reg_set_p + instead of hard_regno_nregs. + +2017-09-12 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Use + end_hard_regno instead of hard_regno_nregs. + * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise. + * config/sparc/sparc.h (ASM_DECLARE_REGISTER_GLOBAL): Likewise. + * config/visium/visium.c (visium_hard_regno_mode_ok): Likewise. + * ira-color.c (improve_allocation): Likewise. + * lra-assigns.c (find_hard_regno_for_1): Likewise. + * lra-lives.c (mark_regno_live): Likewise. + (mark_regno_dead): Likewise. + * lra-remat.c (operand_to_remat): Likewise. + * lra.c (collect_non_operand_hard_regs): Likewise. + * postreload.c (reload_combine_note_store): Likewise. + (move2add_valid_value_p): Likewise. + * reload.c (regno_clobbered_p): Likewise. + +2017-09-12 Richard Sandiford + + * config/frv/frv.c (FOR_EACH_REGNO): Use END_REGNO instead of + hard_regno_nregs. + * config/v850/v850.c (v850_reorg): Likewise. + * reload.c (refers_to_regno_for_reload_p): Likewise. + (find_equiv_reg): Likewise. + * reload1.c (reload_reg_reaches_end_p): Likewise. + +2017-09-12 Richard Sandiford + + * caller-save.c (add_used_regs): Use REG_NREGS instead of + hard_regno_nregs. + * config/aarch64/aarch64.c (aarch64_split_combinev16qi): Likewise. + * config/arm/arm.c (output_move_neon): Likewise. + (arm_attr_length_move_neon): Likewise. + (neon_split_vcombine): Likewise. + * config/c6x/c6x.c (c6x_mark_reg_read): Likewise. + (c6x_mark_reg_written): Likewise. + (c6x_dwarf_register_span): Likewise. + * config/i386/i386.c (ix86_save_reg): Likewise. + * config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise. + (rws_access_reg): Likewise. + * config/s390/s390.c (s390_call_saved_register_used): Likewise. + * mode-switching.c (create_pre_exit): Likewise. + * ree.c (combine_reaching_defs): Likewise. + (add_removable_extension): Likewise. + * regcprop.c (find_oldest_value_reg): Likewise. + (copyprop_hardreg_forward_1): Likewise. + * reload.c (reload_inner_reg_of_subreg): Likewise. + (push_reload): Likewise. + (combine_reloads): Likewise. + (find_dummy_reload): Likewise. + (reload_adjust_reg_for_mode): Likewise. + * reload1.c (find_reload_regs): Likewise. + (forget_old_reloads_1): Likewise. + (reload_reg_free_for_value_p): Likewise. + (reload_adjust_reg_for_temp): Likewise. + (emit_reload_insns): Likewise. + (delete_output_reload): Likewise. + * sel-sched.c (choose_best_reg_1): Likewise. + (choose_best_pseudo_reg): Likewise. + +2017-09-12 Richard Sandiford + Alan Hayward + David Sherwood + + * defaults.h (SLOW_UNALIGNED_ACCESS): Delete. + * target.def (slow_unaligned_access): New hook. + * targhooks.h (default_slow_unaligned_access): Declare. + * targhooks.c (default_slow_unaligned_access): New function. + * doc/tm.texi.in (SLOW_UNALIGNED_ACCESS): Replace with... + (TARGET_SLOW_UNALIGNED_ACCESS): ...this. + * doc/tm.texi: Regenerate. + * config/alpha/alpha.h (SLOW_UNALIGNED_ACCESS): Delete. + * config/arm/arm.h (SLOW_UNALIGNED_ACCESS): Delete. + * config/i386/i386.h (SLOW_UNALIGNED_ACCESS): Delete commented-out + definition. + * config/powerpcspe/powerpcspe.h (SLOW_UNALIGNED_ACCESS): Delete. + * config/powerpcspe/powerpcspe.c (TARGET_SLOW_UNALIGNED_ACCESS): + Redefine. + (rs6000_slow_unaligned_access): New function. + (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS. + (expand_block_compare): Likewise. + (expand_strn_compare): Likewise. + (rs6000_rtx_costs): Likewise. + * config/riscv/riscv.h (SLOW_UNALIGNED_ACCESS): Delete. + (riscv_slow_unaligned_access): Likewise. + * config/riscv/riscv.c (riscv_slow_unaligned_access): Rename to... + (riscv_slow_unaligned_access_p): ...this and make static. + (riscv_option_override): Update accordingly. + (riscv_slow_unaligned_access): New function. + (TARGET_SLOW_UNALIGNED_ACCESS): Redefine. + * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Delete. + * config/rs6000/rs6000.c (TARGET_SLOW_UNALIGNED_ACCESS): Redefine. + (rs6000_slow_unaligned_access): New function. + (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS. + (rs6000_rtx_costs): Likewise. + * config/rs6000/rs6000-string.c (expand_block_compare) + (expand_strn_compare): Use targetm.slow_unaligned_access instead + of SLOW_UNALIGNED_ACCESS. + * config/tilegx/tilegx.h (SLOW_UNALIGNED_ACCESS): Delete. + * config/tilepro/tilepro.h (SLOW_UNALIGNED_ACCESS): Delete. + * calls.c (expand_call): Use targetm.slow_unaligned_access instead + of SLOW_UNALIGNED_ACCESS. + * expmed.c (simple_mem_bitfield_p): Likewise. + * expr.c (alignment_for_piecewise_move): Likewise. + (emit_group_load_1): Likewise. + (emit_group_store): Likewise. + (copy_blkmode_from_reg): Likewise. + (emit_push_insn): Likewise. + (expand_assignment): Likewise. + (store_field): Likewise. + (expand_expr_real_1): Likewise. + * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise. + * lra-constraints.c (simplify_operand_subreg): Likewise. + * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise. + * gimple-ssa-store-merging.c: Likewise in block comment at start + of file. + * tree-ssa-strlen.c: Include target.h. + (handle_builtin_memcmp): Use targetm.slow_unaligned_access instead + of SLOW_UNALIGNED_ACCESS. + * system.h (SLOW_UNALIGNED_ACCESS): Poison. + +2017-09-12 Richard Sandiford + + PR rtl-optimization/82185 + * expmed.c (emit_store_flag_int): Only test tem if it has been + initialized. + +2017-09-12 Richard Biener + + PR middle-end/82149 + * match.pd ((FTYPE) N CMP CST): Fix typo. + +2017-09-12 Simon Atanasyan + + * config/mips/mips.c (mips_attribute_table): Add 'short_call' + attribute. + (mips_near_type_p): Add 'short_call' attribute as a synonym + for 'near'. + * doc/extend.texi (short_call): Document new function attribute. + +2017-09-12 Jakub Jelinek + + PR target/82112 + * c-common.c (sync_resolve_size): Instead of c_dialect_cxx () + assertion check that in the condition. + (get_atomic_generic_size): Likewise. Before testing if parameter + has pointer type, if it has array type, call for C++ + default_conversion to perform array-to-pointer conversion. + +2017-09-12 Richard Biener + + * tree-vect-generic.c (expand_vector_operations_1): Do nothing + for operations we cannot scalarize. + +2017-09-12 Aldy Hernandez + + * tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC + vectors heap vectors. Clean up comments. + Make visited_bbs a reference. + (profitable_jump_thread_path): Make GC + vectors heap vectors. Clean up comments. + Misc cleanups. + (convert_and_register_jump_thread_path): Make GC vectors heap + vectors. + (check_subpath_and_update_thread_path): Same. Clean up comments. + Make visited_bbs a reference. + (handle_phi): Abstract common code to to + register_jump_thread_path_if_profitable. + Rename VAR_BB to DEF_BB. + Update comments. + Make GC vectors heap vectors. + Make visited_bbs a reference. + (handle_assignment): Same. + (register_jump_thread_path_if_profitable): New. + (fsm_find_control_statement_thread_paths): Rename VAR_BB to + DEF_BB. + Make GC vectors heap vectors. Clean up comments. + Make visited_bbs a reference. + (find_jump_threads_backwards): Make visited_bbs live in the stack. + * tree-ssa-threadupdate.c (delete_jump_thread_path): Fix typo in + comment. + +2017-09-11 Max Filippov + + PR target/82181 + * config/xtensa/xtensa.c (xtensa_mem_offset): Check that both + words of E_DImode object are reachable by xtensa_uimm8x4 access. + +2017-09-11 Vidya Praveen + + Revert r251800 and r251799. + +2017-09-11 Martin Jambor + + PR hsa/82119 + * hsa-gen.c (gen_hsa_phi_from_gimple_phi): Process ADDR_EXPRs in + arguments in advance. + * hsa-regalloc.c (naive_process_phi): New parameter predecessors, + use it to find predecessor edges. + (naive_outof_ssa): Collect vector of predecessors. + +2017-09-08 Jason Merrill + + PR c++/70029 - ICE with ref-qualifier and -flto + * langhooks.h (struct lang_hooks_for_types): Add + copy_lang_qualifiers. + * attribs.c (build_type_attribute_qual_variant): Use it. + * langhooks-def.h (LANG_HOOKS_COPY_LANG_QUALIFIERS): Default to + NULL. + (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it. + * tree.c (verify_type): Re-enable TYPE_CANONICAL main variant check. + +2017-09-08 Eric Botcazou + + PR target/81988 + * config/sparc/sparc.md (mulsi3): Rename into *mulsi3_sp32. + (*mulsi3_sp64): New instruction. + (mulsi3): New expander. + +2017-09-08 Uros Bizjak + + * config/alpha/alpha.c (alpha_print_operand) : Remove. + +2017-09-08 Rainer Orth + + * sancov.c: Include memmodel.h. + +2017-09-07 Eric Botcazou + + PR target/80897 + * config/sparc/sparc.c (sparc_emit_set_symbolic_const64): Deal with too + large offsets. + +2017-09-07 Carl Love + + * config/rs6000/vsx.md (define_insn "*stxvl"): Add missing argument to + the sldi instruction. + +2017-09-07 David Edelsohn + + * sancov.c: Include tm_p.h. + +2017-09-07 Jakub Jelinek + + PR target/81979 + * output.h (switch_to_other_text_partition): New declaration. + * varasm.c (switch_to_other_text_partition): New function. + * config/rs6000/rs6000.c (uses_TOC): Return 2 if + NOTE_INSN_SWITCH_TEXT_SECTIONS is seen before finding load_toc_* insn. + (rs6000_elf_declare_function_name): If uses_TOC returned 2, switch + to the other text partition before emitting LCL label and switch back + after emitting the word after it. + +2017-09-07 Richard Biener + + * passes.def (pass_split_crit_edges): Remove instance before PRE. + * tree-ssa-pre.c (pass_pre::execute): Instead manually split + critical edges here, after loop init. + (pass_data_pre): Remove PROP_no_crit_edges flags. + * tree-ssa-sccvn.c (vn_reference_lookup_3): Use vn_valueize + for valueization of call args to avoid leaking VN_TOP. + (visit_use): Assert we do not visit default defs. + (init_scc_vn): Use build_decl for VN_TOP to make name nicer. + Use error_mark_node to more easily detect leaking VN_TOP. + All default-defs are varying, not VN_TOP. Mark them visited. + (run_scc_vn): Make code match comment. + +2017-09-07 Michael Meissner + + * config/rs6000/rs6000-cpus.def (OTHER_VSX_VECTOR_MASKS): Delete + OPTION_MASK_FLOAT128_KEYWORD. + (POWERPC_MASKS): Likewise. + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Delete + support for the -mfloat128-type option, and make -mfloat128 + default on PowerPC Linux systems. Define or undefine + __FLOAT128__ and __FLOAT128_HARDWARE__ for the current options. + Define __float128 to be __ieee128 if IEEE 128-bit support is + enabled, or undefine it. + (rs6000_cpu_cpp_builtins): Delete defining __FLOAT128__ here. + Delete defining __FLOAT128_TYPE__. + * config/rs6000/rs6000.opt (x_TARGET_FLOAT128_TYPE): Delete the + -mfloat128-type option and make -mfloat128 default on PowerPC + Linux systems. + (TARGET_FLOAT128_TYPE): Likewise. + (-mfloat128-type): Likewise. + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Delete the -mfloat128-type option and make -mfloat128 default on + PowerPC Linux systems. Always use __ieee128 to be the keyword for + the IEEE 128-bit type, and map __float128 to __ieee128 if IEEE + 128-bit floating point is enabled. Change tests from using + -mfloat128-type to -mfloat128. + (rs6000_mangle_type): Use the correct mangling for the __float128 + type even if normal long double is restricted to 64-bits. + (floatn_mode): Enable the _Float128 type by default on VSX Linux + systems. + * config/rs6000/rs6000.h (MASK_FLOAT128_TYPE): Delete. + (MASK_FLOAT128_KEYWORD): Define new shortcut macro. + (RS6000BTM_FLOAT128): Define in terms of -mfloat128, not + -mfloat128-type. + * doc/invoke.texi (RS/6000 and PowerPC Options): Update + documentation for -mfloat128. + +2017-09-06 Olivier Hainque + + * config.gcc (powerpc-wrs-vxworksspe): Now match as vxworks*spe. + +2017-09-06 Wish Wu + Jakub Jelinek + + * asan.c (initialize_sanitizer_builtins): Add + BT_FN_VOID_UINT8_UINT8, BT_FN_VOID_UINT16_UINT16, + BT_FN_VOID_UINT32_UINT32, BT_FN_VOID_UINT64_UINT64, + BT_FN_VOID_FLOAT_FLOAT, BT_FN_VOID_DOUBLE_DOUBLE and + BT_FN_VOID_UINT64_PTR variables. + * builtin-types.def (BT_FN_VOID_UINT8_UINT8): New fn type. + (BT_FN_VOID_UINT16_UINT16): Likewise. + (BT_FN_VOID_UINT32_UINT32): Likewise. + (BT_FN_VOID_FLOAT_FLOAT): Likewise. + (BT_FN_VOID_DOUBLE_DOUBLE): Likewise. + (BT_FN_VOID_UINT64_PTR): Likewise. + * common.opt (flag_sanitize_coverage): New variable. + (fsanitize-coverage=trace-pc): Remove. + (fsanitize-coverage=): Add. + * flag-types.h (enum sanitize_coverage_code): New enum. + * fold-const.c (fold_range_test): Disable non-short-circuit + optimization if flag_sanitize_coverage. + (fold_truth_andor): Likewise. + * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise. + * opts.c (COVERAGE_SANITIZER_OPT): Define. + (coverage_sanitizer_opts): New array. + (get_closest_sanitizer_option): Add OPTS argument, handle also + OPT_fsanitize_coverage_. + (parse_sanitizer_options): Adjusted to also handle + OPT_fsanitize_coverage_. + (common_handle_option): Add OPT_fsanitize_coverage_. + * sancov.c (instrument_comparison, instrument_switch): New function. + (sancov_pass): Add trace-cmp support. + * sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_CMP1, + BUILT_IN_SANITIZER_COV_TRACE_CMP2, BUILT_IN_SANITIZER_COV_TRACE_CMP4, + BUILT_IN_SANITIZER_COV_TRACE_CMP8, + BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP1, + BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP2, + BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP4, + BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP8, + BUILT_IN_SANITIZER_COV_TRACE_CMPF, BUILT_IN_SANITIZER_COV_TRACE_CMPD, + BUILT_IN_SANITIZER_COV_TRACE_SWITCH): New builtins. + * doc/invoke.texi: Document -fsanitize-coverage=trace-cmp. + +2017-09-06 Richard Earnshaw + + * 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. + +2017-09-06 Richard Earnshaw + + * 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 (OPTIONS_H_EXTRA): 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. + +2017-09-06 Richard Biener + + * tree-ssa-pre.c (NECESSARY): Remove. + (create_expression_by_pieces): Do not touch pass-local flags. + (insert_into_preds_of_block): Likewise. + (do_pre_regular_insertion): Likewise. + (eliminate_insert): Likewise. + (eliminate_dom_walker::before_dom_children): Likewise. + (fini_eliminate): Do not look at inserted_exprs. + (mark_operand_necessary): Remove. + (remove_dead_inserted_code): Replace with simple work-list + algorithm based on inserted_exprs and SSA uses. + (pass_pre::execute): Re-order fini_eliminate and + remove_dead_inserted_code. + +2017-09-06 Olivier Hainque + + * config/powerpcspe/vxworks.h (VXCPU_FOR_8548): Correct definition + for VxWorks 7. Adjust surrounding comments. + +2017-09-06 Richard Biener + + * gimple-ssa-strength-reduction.c + (find_candidates_dom_walker::before_dom_children): Also allow + pointer types. + +2017-09-06 Richard Biener + + PR tree-optimization/82108 + * tree-vect-stmts.c (vectorizable_load): Fix pointer adjustment + for gap in the non-permutation SLP case. + +2017-09-06 Martin Jambor + + PR tree-optimization/82078 + * tree-sra.c (sort_and_splice_var_accesses): Move call to + add_access_to_work_queue... + (build_accesses_from_assign): ...here. + (propagate_all_subaccesses): Make sure racc is the group + representative, if there is one. + +2017-09-06 Jakub Jelinek + + PR middle-end/82095 + * varasm.c (categorize_decl_for_section): Use SECCAT_TBSS for TLS vars with + NULL DECL_INITIAL. + +2017-09-06 Richard Biener + + * gimple-ssa-strength-reduction.c + (find_candidates_dom_walker::before_doom_children): Use a + type and not a mode check. + +2017-09-06 Bernd Edlinger + + PR target/77308 + * config/arm/predicates.md (arm_general_adddi_operand): Create new + non-vfp predicate. + * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Use new predicates. + +2017-09-05 Jeff Law + + PR tree-optimization/64910 + * tree-ssa-reassoc.c (reassociate_bb): Restrict last change to + cases where we have 3 or more operands. + +2017-09-05 Jakub Jelinek + + PR middle-end/81768 + * omp-low.c (lower_omp_for): Recompute tree invariant if + gimple_omp_for_initial/final is ADDR_EXPR. + + PR middle-end/81768 + * omp-expand.c (expand_omp_simd): Force second operands of COND_EXPR + into gimple val before gimplification fo the COND_EXPR. + +2017-09-05 Aldy Hernandez + + * tree-ssa-threadupdate.c (duplicate_thread_path): Remove unused + REGION_COPY argument. + (thread_through_all_blocks): Remove unused argument to + duplicate_thread_path. + +2017-09-05 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-protos.h (aarch64_gen_adjusted_ldpstp): + Take a scalar_mode rather than a machine_mode. + (aarch64_operands_adjust_ok_for_ldpstp): Likewise. + * config/aarch64/aarch64.c (aarch64_simd_container_mode): Likewise. + (aarch64_operands_adjust_ok_for_ldpstp): Likewise. + (aarch64_gen_adjusted_ldpstp): Likewise. + (aarch64_expand_vector_init): Use scalar_mode instead of machine_mode. + +2017-09-05 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-protos.h (aarch64_is_extend_from_extract): + Take a scalar_int_mode instead of a machine_mode. + (aarch64_mask_and_shift_for_ubfiz_p): Likewise. + (aarch64_output_scalar_simd_mov_immediate): Likewise. + (aarch64_simd_scalar_immediate_valid_for_move): Likewise. + (aarch64_simd_attr_length_rglist): Delete. + * config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Take + a scalar_int_mode instead of a machine_mode. + (aarch64_add_offset): Likewise. + (aarch64_internal_mov_immediate): Likewise + (aarch64_add_constant_internal): Likewise. + (aarch64_add_constant): Likewise. + (aarch64_movw_imm): Likewise. + (aarch64_rtx_arith_op_extract_p): Likewise. + (aarch64_mask_and_shift_for_ubfiz_p): Likewise. + (aarch64_simd_scalar_immediate_valid_for_move): Likewise. + Remove assert that the mode isn't a vector. + (aarch64_output_scalar_simd_mov_immediate): Likewise. + (aarch64_expand_mov_immediate): Update calls after above changes. + (aarch64_output_casesi): Use as_a . + (aarch64_and_bitmask_imm): Check for scalar integer modes. + (aarch64_move_imm): Likewise. + (aarch64_can_const_movi_rtx_p): Likewise. + (aarch64_strip_extend): Likewise. + (aarch64_extr_rtx_p): Likewise. + (aarch64_rtx_costs): Likewise, using wode_mode as the mode of + a CONST_INT when the mode parameter is VOIDmode. + (aarch64_float_const_rtx_p): Use scalar_int_mode for a temporary. + +2017-09-05 Richard Sandiford + + * machmode.h (bitwise_mode_for_mode): Return opt_mode. + * stor-layout.c (bitwise_mode_for_mode): Likewise. + (bitwise_type_for_mode): Update accordingly. + +2017-09-05 Richard Sandiford + + * stor-layout.h (mode_for_size_tree): Return an opt_mode. + * stor-layout.c (mode_for_size_tree): Likewise. + (mode_for_array): Update accordingly. + (layout_decl): Likewise. + (compute_record_mode): Likewise. Only set the mode once. + +2017-09-05 Richard Sandiford + + * target.def (get_mask_mode): Change return type to opt_mode. + Expand commentary. + * doc/tm.texi: Regenerate. + * targhooks.h (default_get_mask_mode): Return an opt_mode. + * targhooks.c (default_get_mask_mode): Likewise. + * config/i386/i386.c (ix86_get_mask_mode): Likewise. + * optabs-query.c (can_vec_mask_load_store_p): Update use of + targetm.get_mask_mode. + * tree.c (build_truth_vector_type): Likewise. + +2017-09-05 Richard Sandiford + + * machmode.h (mode_for_vector): Return an opt_mode. + * stor-layout.c (mode_for_vector): Likewise. + (mode_for_int_vector): Update accordingly. + (layout_type): Likewise. + * config/i386/i386.c (emit_memmov): Likewise. + (ix86_expand_set_or_movmem): Likewise. + (ix86_expand_vector_init): Likewise. + (ix86_get_mask_mode): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_expand_vec_perm_const_1): + Likewise. + * config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Likewise. + * expmed.c (extract_bit_field_1): Likewise. + * expr.c (expand_expr_real_2): Likewise. + * optabs-query.c (can_vec_perm_p): Likewise. + (can_vec_mask_load_store_p): Likewise. + * optabs.c (expand_vec_perm): Likewise. + * targhooks.c (default_get_mask_mode): Likewise. + * tree-vect-stmts.c (vectorizable_store): Likewise. + (vectorizable_load): Likewise. + (get_vectype_for_scalar_type_and_size): Likewise. + +2017-09-05 Richard Sandiford + + * machmode.h (mode_for_int_vector): New function. + * stor-layout.c (mode_for_int_vector): Likewise. + * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Use it. + * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Likewise. + * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise. + * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise. + (s390_expand_vcond): Likewise. + +2017-09-05 Richard Sandiford + + * machmode.h (opt_machine_mode): New type. + (opt_mode): Allow construction from anything that can be + converted to a T. + (is_a, as_a, dyn_cast): Add overloads for opt_mode. + (mode_for_size): Return an opt_machine_mode. + * stor-layout.c (mode_for_size): Likewise. + (mode_for_size_tree): Update call accordingly. + (bitwise_mode_for_mode): Likewise. + (make_fract_type): Likewise. + (make_accum_type): Likewise. + * caller-save.c (replace_reg_with_saved_mem): Update call + accordingly. + * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise. + * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise. + * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise. + * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise. + * expmed.c (extract_bit_field_1): Likewise. + * reload.c (get_secondary_mem): Likewise. + * varasm.c (assemble_integer): Likewise. + * lower-subreg.c (simplify_subreg_concatn): Likewise. Move + early-out. + +2017-09-05 Richard Sandiford + + * machmode.h (decimal_float_mode_for_size): New function. + * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Use float_mode_for_size. + (REAL_VALUE_TO_TARGET_DOUBLE): Likewise. + (REAL_VALUE_TO_TARGET_SINGLE): Likewise. + (REAL_VALUE_TO_TARGET_DECIMAL128): Use decimal_float_mode_for_size. + (REAL_VALUE_TO_TARGET_DECIMAL64): Likewise. + (REAL_VALUE_TO_TARGET_DECIMAL32): Likewise. + +2017-09-05 Richard Sandiford + + * builtins.c (expand_builtin_powi): Use int_mode_for_size. + (get_builtin_sync_mode): Likewise. + (expand_ifn_atomic_compare_exchange): Likewise. + (expand_builtin_atomic_clear): Likewise. + (expand_builtin_atomic_test_and_set): Likewise. + (fold_builtin_atomic_always_lock_free): Likewise. + * calls.c (compute_argument_addresses): Likewise. + (emit_library_call_value_1): Likewise. + (store_one_arg): Likewise. + * combine.c (combine_instructions): Likewise. + * config/aarch64/aarch64.c (aarch64_function_value): Likewise. + * config/arm/arm.c (arm_function_value): Likewise. + (aapcs_allocate_return_reg): Likewise. + * config/c6x/c6x.c (c6x_expand_movmem): Likewise. + * config/i386/i386.c (construct_container): Likewise. + (ix86_gimplify_va_arg): Likewise. + (ix86_expand_sse_cmp): Likewise. + (emit_memmov): Likewise. + (emit_memset): Likewise. + (expand_small_movmem_or_setmem): Likewise. + (ix86_expand_pextr): Likewise. + (ix86_expand_pinsr): Likewise. + * config/lm32/lm32.c (lm32_block_move_inline): Likewise. + * config/microblaze/microblaze.c (microblaze_block_move_straight): + Likewise. + * config/mips/mips.c (mips_function_value_1) Likewise. + (mips_block_move_straight): Likewise. + (mips_expand_ins_as_unaligned_store): Likewise. + * config/powerpcspe/powerpcspe.c + (rs6000_darwin64_record_arg_advance_flush): Likewise. + (rs6000_darwin64_record_arg_flush): Likewise. + * config/rs6000/rs6000.c + (rs6000_darwin64_record_arg_advance_flush): Likewise. + (rs6000_darwin64_record_arg_flush): Likewise. + * config/sparc/sparc.c (sparc_function_arg_1): Likewise. + (sparc_function_value_1): Likewise. + * config/spu/spu.c (adjust_operand): Likewise. + (spu_emit_branch_or_set): Likewise. + (arith_immediate_p): Likewise. + * emit-rtl.c (gen_lowpart_common): Likewise. + * expr.c (expand_expr_real_1): Likewise. + * function.c (assign_parm_setup_block): Likewise. + * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise. + * reload1.c (alter_reg): Likewise. + * stor-layout.c (mode_for_vector): Likewise. + (layout_type): Likewise. + +2017-09-05 Richard Sandiford + + * config/spu/spu.c (exp2_immediate_p): Use int_mode_for_mode. + (spu_convert_move): Likewise. + * lower-subreg.c (resolve_simple_move): Likewise. + +2017-09-05 Bill Schmidt + + PR target/81833 + * config/rs6000/altivec.md (altivec_vsum2sws): Convert from a + define_insn to a define_expand. + (altivec_vsum2sws_direct): New define_insn. + (altivec_vsumsws): Convert from a define_insn to a define_expand. + +2017-09-05 Wilco Dijkstra + + * config/arm/arm.c (arm_option_params_internal): Improve setting of + max_insns_skipped. + +2017-09-05 H.J. Lu + + PR target/59501 + PR target/81624 + PR target/81769 + * config/i386/i386.c (ix86_finalize_stack_frame_flags): Don't + realign stack if stack alignment needed is less than incoming + stack boundary. + +2017-09-05 Marek Polacek + + PR sanitizer/82072 + * convert.c (convert_to_integer_1) : Move the ubsan + check earlier. + +2017-09-05 Wilco Dijkstra + + * explow.c (get_dynamic_stack_size): Improve dynamic alignment. + +2017-09-05 Richard Biener + + PR tree-optimization/82084 + * fold-const.c (can_native_encode_string_p): Handle wide characters. + +2017-09-05 Richard Biener + + PR tree-optimization/82102 + * tree-ssa-pre.c (fini_eliminate): Check if lhs is NULL. + +2017-09-05 Martin Liska + + PR tree-optimization/82032 + * tree-cfg.c (generate_range_test): New function. + * tree-cfg.h (generate_range_test): Declared here. + * tree-cfgcleanup.c (convert_single_case_switch): New function. + (cleanup_control_expr_graph): Use it. + * tree-switch-conversion.c (try_switch_expansion): Remove + assert. + (emit_case_nodes): Use generate_range_test. + +2017-09-04 Uros Bizjak + + PR target/82098 + * config/i386/i386.md (*_mask): Add + TARGET_USE_BT to insn constraint. + (*btr_mask): Ditto. + +2017-09-04 Wilco Dijkstra + + * config/arm/arm.c (arm_legitimate_index_p): Add comment. + (thumb2_legitimate_index_p): Use correct range for DI/DF mode. + +2017-09-04 Bernd Edlinger + + PR target/77308 + * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Split early except for + TARGET_NEON and TARGET_IWMMXT. + (anddi3, iordi3, xordi3, one_cmpldi2): Split while expanding except for + TARGET_NEON and TARGET_IWMMXT. + (*one_cmpldi2_insn): Moved the body of one_cmpldi2 here. + +2017-09-04 Uros Bizjak + + * config/i386/i386-protos.h (ix86_tls_address_pattern_p) New prototype. + (ix86_rewrite_tls_address): Ditto. + * config/i386/i386.c (ix86_tls_address_pattern_p) New function. + (ix86_rewrite_tls_address_1): Ditto. + (ix86_rewrite_tls_address): Ditto. + * config/i386/predicates.md (tls_address_pattern): New predicate. + * config/i386/i386.md (TLS address splitter): New splitter. + +2017-09-04 Richard Biener + + PR tree-optimization/82084 + * fold-const.h (can_native_encode_string_p): Declare. + * fold-const.c (can_native_encode_string_p): Factor out from ... + (native_encode_string): ... here. + * tree-vect-stmts.c (vectorizable_store): Call it to avoid + vectorizing stores from constants we later cannot handle. + +2017-09-04 Marek Polacek + + PR c/81783 + * doc/invoke.texi: Update -Wtautological-compare documentation. + +2017-09-04 Jeff Law + + PR tree-optimization/64910 + * tree-ssa-reassoc.c (reassociate_bb): For bitwise binary ops, + swap the first and last operand if the last is a constant. + +2017-09-04 Marek Polacek + + PR sanitizer/82072 + * convert.c (do_narrow): When sanitizing signed integer overflows, + bail out for signed types. + (convert_to_integer_1) : Likewise. + +2017-09-04 Richard Biener + + PR tree-optimization/82060 + * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): + Move devirtualization after stmt folding and before EH/AB/noreturn + cleanup to get the stmt refs canonicalized. Use a bool instead + of gimple_modified_p since that doesn't work for NOPs. Schedule + NOPs generated by folding for removal. + +2017-09-04 Richard Sandiford + Alan Hayward + David Sherwood + + * coretypes.h (pad_direction): New enum. + * defaults.h (DEFAULT_FUNCTION_ARG_PADDING): Delete. + (FUNCTION_ARG_PADDING): Likewise. + * target.def (function_arg_padding): New hook. + * targhooks.h (default_function_arg_padding): Declare. + * targhooks.c (default_function_arg_padding): New function. + * doc/tm.texi.in (FUNCTION_ARG_PADDING): Replace with... + (TARGET_FUNCTION_ARG_PADDING): ...this. + * doc/tm.texi: Regenerate. + * calls.c (store_unaligned_arguments_into_pseudos): Use pad_direction + instead of direction. + (compute_argument_addresses): Likewise. + (load_register_parameters): Likewise. + (emit_library_call_value_1): Likewise. + (store_one_arg): Use targetm.calls.function_arg_padding instead + of FUNCTION_ARG_PADDING. + (must_pass_in_stack_var_size_or_pad): Likewise. + * expr.c (emit_group_load_1): Use pad_direction instead of direction. + (emit_group_store): Likewise. + (emit_single_push_insn_1): Use targetm.calls.function_arg_padding + instead of FUNCTION_ARG_PADDING. + (emit_push_insn): Likewise, and propagate enum change throughout + function. + * function.h (direction): Delete. + (locate_and_pad_arg_data::where_pad): Use pad_direction instead + of direction. + * function.c (assign_parm_find_stack_rtl): Likewise. + (assign_parm_setup_block_p): Likewise. + (assign_parm_setup_block): Likewise. + (gimplify_parameters): Likewise. + (locate_and_pad_parm): Use targetm.calls.function_arg_padding + instead of FUNCTION_ARG_PADDING, and propagate enum change throughout + function. + * config/aarch64/aarch64.h (FUNCTION_ARG_PADDING): Delete. + (BLOCK_REG_PADDING): Use pad_direction instead of direction. + * config/aarch64/aarch64-protos.h (aarch64_pad_arg_upward): Delete. + * config/aarch64/aarch64.c (aarch64_pad_arg_upward): Replace with... + (aarch64_function_arg_padding): ...this new function. + (aarch64_gimplify_va_arg_expr): Use pad_direction instead of direction. + (TARGET_FUNCTION_ARG_PADDING): Redefine. + * config/arm/arm.h (FUNCTION_ARG_PADDING): Delete. + (BLOCK_REG_PADDING): Use pad_direction instead of direction. + * config/arm/arm-protos.h (arm_pad_arg_upward): Delete. + * config/arm/arm.c (TARGET_FUNCTION_ARG_PADDING): Redefine. + (arm_pad_arg_upward): Replace with... + (arm_function_arg_padding): ...this new function. + * config/c6x/c6x.h (BLOCK_REG_PADDING): Use pad_direction instead + of direction. + * config/ia64/hpux.h (FUNCTION_ARG_PADDING): Delete. + * config/ia64/ia64-protos.h (ia64_hpux_function_arg_padding): Delete. + * config/ia64/ia64.c (TARGET_FUNCTION_ARG_PADDING): Redefine. + (ia64_hpux_function_arg_padding): Replace with... + (ia64_function_arg_padding): ...this new function. Use pad_direction + instead of direction. Check for TARGET_HPUX. + * config/iq2000/iq2000.h (FUNCTION_ARG_PADDING): Delete. + * config/iq2000/iq2000.c (TARGET_FUNCTION_ARG_PADDING): Redefine. + (iq2000_function_arg_padding): New function. + * config/mips/mips-protos.h (mips_pad_arg_upward): Delete. + * config/mips/mips.c (mips_pad_arg_upward): Replace with... + (mips_function_arg_padding): ...this new function. + (mips_pad_reg_upward): Update accordingly. + (TARGET_FUNCTION_ARG_PADDING): Redefine. + * config/mips/mips.h (PAD_VARARGS_DOWN): Use + targetm.calls.function_arg_padding. + (FUNCTION_ARG_PADDING): Delete. + (BLOCK_REG_PADDING): Use pad_direction instead of direction. + * config/nios2/nios2.h (FUNCTION_ARG_PADDING): Delete. + (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding. + * config/nios2/nios2-protos.h (nios2_function_arg_padding): Delete. + (nios2_block_reg_padding): Return pad_direction instead of direction. + * config/nios2/nios2.c (nios2_block_reg_padding): Return pad_direction + instead of direction. + (nios2_function_arg_padding): Likewise. Make static. + (TARGET_FUNCTION_ARG_PADDING): Redefine. + * config/pa/pa.h (FUNCTION_ARG_PADDING): Delete. + (BLOCK_REG_PADDING): Use targetm.calls.function_arg_padding. + * config/pa/pa-protos.h (pa_function_arg_padding): Delete. + * config/pa/pa.c (TARGET_FUNCTION_ARG_PADDING): Redefine. + (pa_function_arg_padding): Make static. Return pad_direction instead + of direction. + * config/powerpcspe/powerpcspe.h (FUNCTION_ARG_PADDING): Delete. + (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding. + * config/powerpcspe/aix.h (BLOCK_REG_PADDING): Use pad_direction + instead of direction. Use targetm.calls.function_arg_padding. + * config/powerpcspe/darwin.h (BLOCK_REG_PADDING): Likewise. + * config/powerpcspe/freebsd64.h (BLOCK_REG_PADDING): Likewise. + * config/powerpcspe/linux64.h (BLOCK_REG_PADDING): Likewise. + * config/powerpcspe/powerpcspe-protos.h (function_arg_padding): Delete. + * config/powerpcspe/powerpcspe.c (TARGET_FUNCTION_ARG_PADDING): + Redefine. + (function_arg_padding): Rename to... + (rs6000_function_arg_padding): ...this. Make static. Return + pad_direction instead of direction. + (rs6000_return_in_msb): Use rs6000_function_arg_padding. + * config/rs6000/rs6000.h (FUNCTION_ARG_PADDING): Delete. + (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding. + * config/rs6000/aix.h (BLOCK_REG_PADDING): Use pad_direction + instead of direction. Use targetm.calls.function_arg_padding. + * config/rs6000/darwin.h (BLOCK_REG_PADDING): Likewise. + * config/rs6000/freebsd64.h (BLOCK_REG_PADDING): Likewise. + * config/rs6000/linux64.h (BLOCK_REG_PADDING): Likewise. + * config/rs6000/rs6000-protos.h (function_arg_padding): Delete. + * config/rs6000/rs6000.c (TARGET_FUNCTION_ARG_PADDING): Redefine. + (function_arg_padding): Rename to... + (rs6000_function_arg_padding): ...this. Make static. Return + pad_direction instead of direction. + (rs6000_return_in_msb): Use rs6000_function_arg_padding. + * config/s390/s390.h (FUNCTION_ARG_PADDING): Delete. + * config/s390/s390.c (s390_function_arg_padding): New function. + (TARGET_FUNCTION_ARG_PADDING): Redefine. + * config/sparc/sparc.h (FUNCTION_ARG_PADDING): Delete. + * config/sparc/sparc-protos.h (function_arg_padding): Delete. + * config/sparc/sparc.c (TARGET_FUNCTION_ARG_PADDING): Redefine. + (function_arg_padding): Rename to... + (sparc_function_arg_padding): ...this. Make static. Return + pad_direction instead of direction. + * config/spu/spu.h (FUNCTION_ARG_PADDING): Delete. + * config/spu/spu.c (spu_function_arg_padding): New function. + (TARGET_FUNCTION_ARG_PADDING): Redefine. + * system.h (FUNCTION_ARG_PADDING): Poison. + +2017-09-04 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (modes_tieable_p): New hook. + * doc/tm.texi (MODES_TIEABLE_P): Replace with... + (TARGET_MODES_TIEABLE_P): ...this. + * doc/tm.texi.in: Regenerate. + * hooks.h (hook_bool_mode_mode_true): Declare. + * hooks.c (hook_bool_mode_mode_true): New function. + * combine.c (subst): Use targetm.modes_tieable_p instead of + MODES_TIEABLE_P. + * dse.c (find_shift_sequence): Likewise. + * expmed.c (extract_low_bits): Likewise. + * lower-subreg.c: Include target.h. + (find_decomposable_subregs): Use targetm.modes_tieable_p instead of + MODES_TIEABLE_P. + * rtlanal.c (rtx_cost): Likewise. + * config/aarch64/aarch64.h (MODES_TIEABLE_P): Delete. + * config/aarch64/aarch64-protos.h (aarch64_modes_tieable_p): Delete. + * config/aarch64/aarch64.c (aarch64_modes_tieable_p): Make static. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/alpha/alpha.h (MODES_TIEABLE_P): Delete. + * config/alpha/alpha.c (alpha_modes_tieable_p): New function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/arc/arc.h (MODES_TIEABLE_P): Delete. + * config/arc/arc.c (TARGET_MODES_TIEABLE_P): Redefine. + (arc_modes_tieable_p): New function. + * config/arm/arm.h (MODES_TIEABLE_P): Delete. + * config/arm/arm-protos.h (arm_modes_tieable_p): Delete. + * config/arm/arm.c (TARGET_MODES_TIEABLE_P): Redefine. + (arm_modes_tieable_p): Make static. + * config/avr/avr.h (MODES_TIEABLE_P): Delete. + * config/bfin/bfin.h (MODES_TIEABLE_P): Delete. + * config/bfin/bfin.c (bfin_modes_tieable_p): New function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/c6x/c6x.h (MODES_TIEABLE_P): Delete. + * config/c6x/c6x.c (c6x_modes_tieable_p): New function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/cr16/cr16.h (MODES_TIEABLE_P): Delete. + * config/cr16/cr16.c (TARGET_MODES_TIEABLE_P): Redefine. + (cr16_modes_tieable_p): New function. + * config/cris/cris.h (MODES_TIEABLE_P): Delete. + * config/epiphany/epiphany.h (MODES_TIEABLE_P): Delete. + * config/fr30/fr30.h (MODES_TIEABLE_P): Delete. + (TRULY_NOOP_TRUNCATION): Update comment. + * config/frv/frv.h (MODES_TIEABLE_P): Delete. + (TRULY_NOOP_TRUNCATION): Update comment. + * config/frv/frv.c (TARGET_MODES_TIEABLE_P): Redefine. + (frv_modes_tieable_p): New function. + * config/ft32/ft32.h (MODES_TIEABLE_P): Delete. + * config/h8300/h8300.h (MODES_TIEABLE_P): Delete. + * config/h8300/h8300.c (h8300_modes_tieable_p): New function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/i386/i386.h (MODES_TIEABLE_P): Delete. + * config/i386/i386-protos.h (ix86_modes_tieable_p): Delete. + * config/i386/i386.c (ix86_modes_tieable_p): Make static. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/ia64/ia64.h (MODES_TIEABLE_P): Delete. + * config/ia64/ia64.c (TARGET_MODES_TIEABLE_P): Redefine. + (ia64_modes_tieable_p): New function. + * config/iq2000/iq2000.h (MODES_TIEABLE_P): Delete. + * config/iq2000/iq2000.c (TARGET_MODES_TIEABLE_P): Redefine. + (iq2000_modes_tieable_p): New function. + * config/lm32/lm32.h (MODES_TIEABLE_P): Delete. + * config/lm32/lm32.c (TARGET_MODES_TIEABLE_P): Redefine. + (lm32_modes_tieable_p): New function. + * config/m32c/m32c.h (MODES_TIEABLE_P): Delete. + * config/m32c/m32c-protos.h (m32c_modes_tieable_p): Delete. + * config/m32c/m32c.c (m32c_modes_tieable_p): Make static. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/m32r/m32r.h (MODES_TIEABLE_P): Delete. + * config/m32r/m32r.c (TARGET_MODES_TIEABLE_P): Redefine. + (m32r_modes_tieable_p): New function. + * config/m68k/m68k.h (MODES_TIEABLE_P): Delete. + * config/m68k/m68k.c (TARGET_MODES_TIEABLE_P): Redefine. + (m68k_modes_tieable_p): New function. + * config/mcore/mcore.h (MODES_TIEABLE_P): Delete. + * config/mcore/mcore.c (TARGET_MODES_TIEABLE_P): Redefine. + (mcore_modes_tieable_p): New function. + * config/microblaze/microblaze.h (MODES_TIEABLE_P): Delete. + * config/microblaze/microblaze.c (microblaze_modes_tieable_p): New + function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/mips/mips.h (MODES_TIEABLE_P): Delete. + * config/mips/mips-protos.h (mips_modes_tieable_p): Delete. + * config/mips/mips.c (mips_modes_tieable_p): Make static. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/mmix/mmix.h (MODES_TIEABLE_P): Delete. + * config/mn10300/mn10300.h (MODES_TIEABLE_P): Delete. + * config/mn10300/mn10300-protos.h (mn10300_modes_tieable): Delete. + * config/mn10300/mn10300.c (mn10300_modes_tieable): Rename to... + (mn10300_modes_tieable_p): ...this and make static. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/moxie/moxie.h (MODES_TIEABLE_P): Delete. + * config/msp430/msp430.h (MODES_TIEABLE_P): Delete. + * config/msp430/msp430-protos.h (msp430_modes_tieable_p): Delete. + * config/msp430/msp430.c (TARGET_MODES_TIEABLE_P): Redefine. + (msp430_modes_tieable_p): Make static. + * config/nds32/nds32.h (MODES_TIEABLE_P): Delete. + * config/nds32/nds32.c (nds32_modes_tieable_p): New function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/nios2/nios2.h (MODES_TIEABLE_P): Delete. + * config/nvptx/nvptx.h (MODES_TIEABLE_P): Delete. + * config/nvptx/nvptx.c (nvptx_modes_tieable_p): New function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/pa/pa.h (MODES_TIEABLE_P): Delete. + * config/pa/pa-protos.h (pa_modes_tieable_p): Delete. + * config/pa/pa.c (pa_modes_tieable_p): Make static. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/pdp11/pdp11.h (MODES_TIEABLE_P): Delete. + * config/pdp11/pdp11.c (TARGET_MODES_TIEABLE_P): Redefine. + (pdp11_modes_tieable_p): New function. + * config/powerpcspe/powerpcspe.h (MODES_TIEABLE_P): Delete. + * config/powerpcspe/powerpcspe.c (TARGET_MODES_TIEABLE_P): Redefine. + (rs6000_modes_tieable_p): New function. + (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P. + * config/powerpcspe/powerpcspe.md: Update comment. + * config/riscv/riscv.h (MODES_TIEABLE_P): Delete. + * config/riscv/riscv.c (riscv_modes_tieable_p): New function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/rl78/rl78.h (MODES_TIEABLE_P): Delete. + * config/rl78/rl78.c (TARGET_MODES_TIEABLE_P): Redefine. + (rl78_modes_tieable_p): New function. + * config/rs6000/rs6000.h (MODES_TIEABLE_P): Delete. + * config/rs6000/rs6000.c (TARGET_MODES_TIEABLE_P): Redefine. + (rs6000_modes_tieable_p): New function. + (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P. + * config/rs6000/rs6000.md: Update comment. + * config/rx/rx.h (MODES_TIEABLE_P): Delete. + * config/rx/rx.c (rx_modes_tieable_p): New function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/s390/s390.h (MODES_TIEABLE_P): Delete. + * config/s390/s390.c (s390_modes_tieable_p): New function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/sh/sh.h (MODES_TIEABLE_P): Delete. + * config/sh/sh.c (TARGET_MODES_TIEABLE_P): Redefine. + (sh_modes_tieable_p): New function. + * config/sparc/sparc.h (MODES_TIEABLE_P): Delete. + * config/sparc/sparc-protos.h (sparc_modes_tieable_p): Delete. + * config/sparc/sparc.c (TARGET_MODES_TIEABLE_P): Redefine. + (sparc_modes_tieable_p): Make static. + * config/spu/spu.h (MODES_TIEABLE_P): Delete. + * config/spu/spu.c (spu_modes_tieable_p): New function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/stormy16/stormy16.h (MODES_TIEABLE_P): Delete. + * config/stormy16/stormy16.c (xstormy16_modes_tieable_p): New function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/tilegx/tilegx.h (MODES_TIEABLE_P): Delete. + * config/tilepro/tilepro.h (MODES_TIEABLE_P): Delete. + * config/v850/v850.h (MODES_TIEABLE_P): Delete. + * config/v850/v850.c (v850_modes_tieable_p): New function. + (TARGET_MODES_TIEABLE_P): Redefine. + * config/vax/vax.h (MODES_TIEABLE_P): Delete. + * config/visium/visium.h (MODES_TIEABLE_P): Delete. + * config/visium/visium.c (TARGET_MODES_TIEABLE_P): Redefine. + (visium_modes_tieable_p): New function. + * config/xtensa/xtensa.h (MODES_TIEABLE_P): Delete. + * config/xtensa/xtensa.c (TARGET_MODES_TIEABLE_P): Redefine. + (xtensa_modes_tieable_p): New function. + * system.h (MODES_TIEABLE_P): Poison. + +2017-09-04 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (hard_regno_mode_ok): New hook. + * doc/tm.texi (HARD_REGNO_MODE_OK): Replace with... + (TARGET_HARD_REGNO_MODE_OK): ...this. + * doc/tm.texi.in: Regenerate. + * hooks.h (hook_bool_uint_mode_true): Declare. + * hooks.c (hook_bool_uint_mode_true): New function. + * doc/md.texi: Refer to targetm.hard_regno_mode_ok instead of + HARD_REGNO_MODE_OK. + * genpreds.c (write_insn_preds_c): Add an include of target.h. + * alias.c (init_alias_target): Use targetm.hard_regno_mode_ok + instead of HARD_REGNO_MODE_OK. + * caller-save.c: Include target.h. + (reg_save_code): Use targetm.hard_regno_mode_ok instead of + HARD_REGNO_MODE_OK. + * combine.c (can_combine_p): Likewise. + (combinable_i3pat): Likewise. + (can_change_dest_mode): Likewise. + * expr.c (init_expr_target): Likewise. + (convert_move): Likewise. + (convert_modes): Likewise. + * ira.c (setup_prohibited_class_mode_regs): Likewise. + (setup_prohibited_mode_move_regs): Likewise. + * ira.h (target_ira): Likewise. + * lra-assigns.c (find_hard_regno_for_1): Likewise. + * lra-constraints.c (process_alt_operands): Likewise. + (split_reg): Likewise. + * recog.c (peep2_find_free_register): Likewise. + * ree.c (combine_reaching_defs): Likewise. + * regcprop.c (maybe_mode_change): Likewise. + * reginfo.c (init_reg_sets_1): Likewise. + (choose_hard_reg_mode): Likewise. + (simplifiable_subregs): Likewise. + * regrename.c (check_new_reg_p): Likewise. + * reload.c (find_valid_class): Likewise. + (find_valid_class_1): Likewise. + (reload_inner_reg_of_subreg): Likewise. + (push_reload): Likewise. + (combine_reloads): Likewise. + (find_dummy_reload): Likewise. + (find_reloads): Likewise. + * reload1.c (find_reg): Likewise. + (set_reload_reg): Likewise. + (allocate_reload_reg): Likewise. + (choose_reload_regs): Likewise. + (reload_adjust_reg_for_temp): Likewise. + * rtlanal.c (subreg_size_offset_from_lsb): Likewise. + (simplify_subreg_regno): Likewise. + * sel-sched.c (init_regs_for_mode): Likewise. + * varasm.c (make_decl_rtl): Likewise. + * config/aarch64/aarch64.h (HARD_REGNO_MODE_OK): Delete. + (MODES_TIEABLE_P): Use targetm.hard_regno_mode_ok instead of + HARD_REGNO_MODE_OK. + * config/aarch64/aarch64-protos.h (aarch64_hard_regno_mode_ok): Delete. + * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Make static. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/alpha/alpha.h (HARD_REGNO_MODE_OK): Delete. + * config/alpha/alpha.c (alpha_hard_regno_mode_ok): New function. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/arc/arc.h (arc_hard_regno_mode_ok): Delete. + (arc_mode_class): Delete. + (HARD_REGNO_MODE_OK): Delete. + * config/arc/arc.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (arc_hard_regno_mode_ok): Rename old array to... + (arc_hard_regno_mode_ok_modes): ...this. + (arc_conditional_register_usage): Update accordingly. + (arc_mode_class): Make static. + (arc_hard_regno_mode_ok): New function. + * config/arm/arm.h (HARD_REGNO_MODE_OK): Delete. + * config/arm/arm-protos.h (arm_hard_regno_mode_ok): Delete. + * config/arm/arm.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (arm_hard_regno_mode_ok): Make static. + * config/arm/arm.md (movdi): Use targetm.hard_regno_mode_ok instead of + HARD_REGNO_MODE_OK. + * config/avr/avr-protos.h (avr_hard_regno_mode_ok): Delete. + * config/avr/avr.h (HARD_REGNO_MODE_OK): Delete. + * config/avr/avr.c (avr_hard_regno_mode_ok): Make static and + return a bool. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/bfin/bfin-protos.h (hard_regno_mode_ok): Delete. + * config/bfin/bfin.h (HARD_REGNO_MODE_OK): Delete. + * config/bfin/bfin.c (hard_regno_mode_ok): Rename to... + (bfin_hard_regno_mode_ok): ...this. Make static and return a bool. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/bfin/predicates.md (valid_reg_operand): Use + targetm.hard_regno_mode_ok instead of HARD_REGNO_MODE_OK. + * config/c6x/c6x.h (HARD_REGNO_MODE_OK): Delete. + * config/c6x/c6x.c (c6x_hard_regno_mode_ok): New function. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/cr16/cr16.h (HARD_REGNO_MODE_OK): Delete. + * config/cr16/cr16-protos.h (cr16_hard_regno_mode_ok): Delete. + * config/cr16/cr16.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (cr16_hard_regno_mode_ok): Make static and return a bool. + * config/cris/cris.h (HARD_REGNO_MODE_OK): Delete. + * config/cris/cris.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (cris_hard_regno_mode_ok): New function. + * config/epiphany/epiphany.h (epiphany_hard_regno_mode_ok): Delete. + (epiphany_mode_class): Delete. + (HARD_REGNO_MODE_OK): Delete. + * config/epiphany/epiphany-protos.h (hard_regno_mode_ok): Delete. + * config/epiphany/epiphany.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (hard_regno_mode_ok): Rename to... + (epiphany_hard_regno_mode_ok): ...this. Make static and return a bool. + * config/fr30/fr30.h (HARD_REGNO_MODE_OK): Delete. + * config/fr30/fr30.md: Refer to targetm.hard_regno_mode_ok instead of + HARD_REGNO_MODE_OK. + * config/frv/frv.h (HARD_REGNO_MODE_OK): Delete. + * config/frv/frv-protos.h (frv_hard_regno_mode_ok): Delete. + * config/frv/frv.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (frv_hard_regno_mode_ok): Make static and return a bool. + * config/frv/frv.md: Refer to targetm.hard_regno_mode_ok instead of + HARD_REGNO_MODE_OK. + * config/ft32/ft32.h (HARD_REGNO_MODE_OK): Delete. + * config/h8300/h8300.h (HARD_REGNO_MODE_OK): Delete. + * config/h8300/h8300-protos.h (h8300_hard_regno_mode_ok): Delete. + * config/h8300/h8300.c (h8300_hard_regno_mode_ok): Make static + and return a bool. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/i386/i386.h (HARD_REGNO_MODE_OK): Delete. + * config/i386/i386-protos.h (ix86_hard_regno_mode_ok): Delete. + * config/i386/i386.c (ix86_hard_regno_mode_ok): Make static and + return a bool. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/ia64/ia64.h (HARD_REGNO_MODE_OK): Delete. + * config/ia64/ia64.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (ia64_hard_regno_mode_ok): New function. + * config/iq2000/iq2000.h (HARD_REGNO_MODE_OK): Delete. + * config/iq2000/iq2000.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (iq2000_hard_regno_mode_ok): New function. + * config/lm32/lm32.h (HARD_REGNO_MODE_OK): Delete. + * config/lm32/lm32.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (lm32_hard_regno_mode_ok): New function. + * config/m32c/m32c.h (HARD_REGNO_MODE_OK): Delete. + * config/m32c/m32c-protos.h (m32c_hard_regno_ok): Delete. + * config/m32c/m32c.c (class_can_hold_mode): Use m32c_hard_regno_mode_ok + instead of HARD_REGNO_MODE_OK. + (m32c_hard_regno_ok): Rename to... + (m32c_hard_regno_mode_ok): ...this. Make static and return a bool. + (m32c_cannot_change_mode_class): Update accordingly. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/m32r/m32r.h (m32r_hard_regno_mode_ok): Delete. + (m32r_mode_class): Delete. + (HARD_REGNO_MODE_OK): Delete. + * config/m32r/m32r.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (m32r_hard_regno_mode_ok): Rename to... + (m32r_hard_regno_modes): ...this. + (m32r_mode_class): Make static. + (m32r_hard_regno_mode_ok): New function. + * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Delete. + * config/m68k/m68k-protos.h (m68k_regno_mode_ok): Delete. + * config/m68k/m68k.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (m68k_hard_regno_mode_ok): Make static. + * config/mcore/mcore.h (HARD_REGNO_MODE_OK): Delete. + * config/mcore/mcore.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (mcore_hard_regno_mode_ok): New function. + * config/microblaze/microblaze.h (microblaze_hard_regno_mode_ok) + (HARD_REGNO_MODE_OK): Delete. + * config/microblaze/microblaze.c (microblaze_hard_regno_mode_ok): + Rename to... + (microblaze_hard_regno_mode_ok_p): ...this and make static. + (microblaze_hard_regno_mode_ok): New function. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/mips/mips.h (HARD_REGNO_MODE_OK): Delete. + (mips_hard_regno_mode_ok): Delete. + * config/mips/mips.c (mips_hard_regno_mode_ok): Rename to... + (mips_hard_regno_mode_ok_p): ...this and make static. + (mips_hard_regno_mode_ok_p): Rename to... + (mips_hard_regno_mode_ok_uncached): ...this. + (mips_hard_regno_mode_ok): New function. + (mips_class_max_nregs): Use mips_hard_regno_mode_ok instead + of HARD_REGNO_MODE_OK. + (mips_option_override): Update after above name changes. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/mmix/mmix.h (HARD_REGNO_MODE_OK): Delete. + * config/mn10300/mn10300.h (HARD_REGNO_MODE_OK): Delete. + * config/mn10300/mn10300-protos.h (mn10300_hard_regno_mode_ok): Delete. + * config/mn10300/mn10300.c (mn10300_hard_regno_mode_ok): Make static. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/moxie/moxie.h (HARD_REGNO_MODE_OK): Delete. + * config/msp430/msp430.h (HARD_REGNO_MODE_OK): Delete. + * config/msp430/msp430-protos.h (msp430_hard_regno_mode_ok): Delete. + * config/msp430/msp430.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (msp430_hard_regno_mode_ok): Make static and return a bool. + * config/nds32/nds32.h (HARD_REGNO_MODE_OK): Delete. + * config/nds32/nds32-protos.h (nds32_hard_regno_mode_ok): Delete. + * config/nds32/nds32.c (nds32_hard_regno_mode_ok): Make static + and return a bool. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/nios2/nios2.h (HARD_REGNO_MODE_OK): Delete. + * config/nvptx/nvptx.h (HARD_REGNO_MODE_OK): Delete. + * config/pa/pa.h (MODES_TIEABLE_P): Update commentary. + * config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): Rename to... + (PA_HARD_REGNO_MODE_OK): ...this + * config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Rename to... + (PA_HARD_REGNO_MODE_OK): ...this. + * config/pa/pa.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (pa_hard_regno_mode_ok): New function. + * config/pdp11/pdp11.h (HARD_REGNO_MODE_OK): Delete. + * config/pdp11/pdp11.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (pdp11_hard_regno_mode_ok): New function. + * config/powerpcspe/powerpcspe.h (HARD_REGNO_MODE_OK): Delete. + * config/powerpcspe/powerpcspe-protos.h (rs6000_hard_regno_mode_ok_p): + Delete. + * config/powerpcspe/powerpcspe.c (rs6000_hard_regno_mode_ok_p): + Make static. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + (rs6000_hard_regno_mode_ok): Rename to... + (rs6000_hard_regno_mode_ok_uncached): ...this. + (rs6000_init_hard_regno_mode_ok): Update accordingly. + (rs6000_hard_regno_mode_ok): New function. + * config/riscv/riscv.h (HARD_REGNO_MODE_OK): Delete. + * config/riscv/riscv-protos.h (riscv_hard_regno_mode_ok_p): Delete. + * config/riscv/riscv.c (riscv_hard_regno_mode_ok_p): Rename to... + (riscv_hard_regno_mode_ok): ...this and make static. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/rl78/rl78.h (HARD_REGNO_MODE_OK): Delete. + * config/rl78/rl78-protos.h (rl78_hard_regno_mode_ok): Delete. + * config/rl78/rl78.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (rl78_hard_regno_mode_ok): Make static and return bool. + * config/rs6000/rs6000.h (HARD_REGNO_MODE_OK): Delete. + * config/rs6000/rs6000-protos.h (rs6000_hard_regno_mode_ok_p): + Delete. + * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_p): Make static. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + (rs6000_hard_regno_mode_ok): Rename to... + (rs6000_hard_regno_mode_ok_uncached): ...this. + (rs6000_init_hard_regno_mode_ok): Update accordingly. + (rs6000_hard_regno_mode_ok): New function. + * config/rx/rx.h (HARD_REGNO_MODE_OK): Delete. + * config/rx/rx.c (rx_hard_regno_mode_ok): New function. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/s390/s390.h (HARD_REGNO_MODE_OK): Delete. + * config/s390/s390-protos.h (s390_hard_regno_mode_ok): Delete. + * config/s390/s390.c (s390_hard_regno_mode_ok): Make static. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/sh/sh.h (HARD_REGNO_MODE_OK): Delete. + * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Delete. + * config/sh/sh.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (sh_hard_regno_mode_ok): Make static. + * config/sparc/constraints.md: Refer to targetm.hard_regno_mode_ok + instead of HARD_REGNO_MODE_OK. + * config/sparc/sparc.h (hard_regno_mode_classes): Delete. + (sparc_mode_class): Delete. + (HARD_REGNO_MODE_OK): Delete. + * config/sparc/sparc.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (hard_regno_mode_classes): Make static. + (sparc_mode_class): Likewise. + (sparc_hard_regno_mode_ok): New function. + * config/spu/spu.h (HARD_REGNO_MODE_OK): Delete. + * config/stormy16/stormy16.h (HARD_REGNO_MODE_OK): Delete. + * config/stormy16/stormy16.c (xstormy16_hard_regno_mode_ok): New + function. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/tilegx/tilegx.h (HARD_REGNO_MODE_OK): Delete. + * config/tilepro/tilepro.h (HARD_REGNO_MODE_OK): Delete. + * config/v850/v850.h (HARD_REGNO_MODE_OK): Delete. + * config/v850/v850.c (v850_hard_regno_mode_ok): New function. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + * config/vax/vax.h (HARD_REGNO_MODE_OK): Delete. + * config/visium/visium.h (HARD_REGNO_MODE_OK): Delete. + * config/visium/visium.c (TARGET_HARD_REGNO_MODE_OK): Redefine. + (visium_hard_regno_mode_ok): New function. + * config/visium/visium.md: Refer to targetm.hard_regno_mode_ok + instead of HARD_REGNO_MODE_OK. + * config/xtensa/xtensa.h (xtensa_hard_regno_mode_ok): Delete. + (HARD_REGNO_MODE_OK): Delete. + * config/xtensa/xtensa.c (xtensa_hard_regno_mode_ok): Rename to... + (xtensa_hard_regno_mode_ok_p): ...this and make static. + (xtensa_option_override): Update accordingly. + (TARGET_HARD_REGNO_MODE_OK): Redefine. + (xtensa_hard_regno_mode_ok): New function. + * system.h (HARD_REGNO_MODE_OK): Poison. + +2017-09-04 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (hard_regno_call_part_clobbered): New hook. + * doc/tm.texi.in (HARD_REGNO_CALL_PART_CLOBBERED): Replace with... + (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): ...this hook. + * doc/tm.texi: Regenerate. + * hooks.h (hook_bool_uint_mode_false): Declare. + * hooks.c (hook_bool_uint_mode_false): New function. + * regs.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. + * cselib.c (cselib_process_insn): Use + targetm.hard_regno_call_part_clobbered instead of + HARD_REGNO_CALL_PART_CLOBBERED. + * ira-conflicts.c (ira_build_conflicts): Likewise. + * ira-costs.c (ira_tune_allocno_costs): Likewise. + * lra-constraints.c (need_for_call_save_p): Likewise. + * lra-lives.c: Include target.h. + (check_pseudos_live_through_calls): Use + targetm.hard_regno_call_part_clobbered instead of + HARD_REGNO_CALL_PART_CLOBBERED. + * regcprop.c: Include target.h. + (copyprop_hardreg_forward_1): Use + targetm.hard_regno_call_part_clobbered instead of + HARD_REGNO_CALL_PART_CLOBBERED. + * reginfo.c (choose_hard_reg_mode): Likewise. + * regrename.c (check_new_reg_p): Likewise. + * reload.c (find_equiv_reg): Likewise. + * reload1.c (emit_reload_insns): Likewise. + * sched-deps.c (deps_analyze_insn): Likewise. + * sel-sched.c (init_regs_for_mode): Likewise. + (mark_unavailable_hard_regs): Likewise. + * targhooks.c (default_dwarf_frame_reg_mode): Likewise. + * config/aarch64/aarch64.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. + * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered): + New function. + (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. + * config/avr/avr.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. + * config/avr/avr-protos.h (avr_hard_regno_call_part_clobbered): + Delete. + * config/avr/avr.c (avr_hard_regno_call_part_clobbered): Make static + and return a bool. + (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. + * config/i386/i386.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. + * config/i386/i386.c (ix86_hard_regno_call_part_clobbered): New + function. + (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. + * config/mips/mips.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. + * config/mips/mips.c (mips_hard_regno_call_part_clobbered): New + function. + (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. + * config/powerpcspe/powerpcspe.h (HARD_REGNO_CALL_PART_CLOBBERED): + Delete. + * config/powerpcspe/powerpcspe.c + (rs6000_hard_regno_call_part_clobbered): New function. + (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. + * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. + * config/rs6000/rs6000.c (rs6000_hard_regno_call_part_clobbered): + New function. + (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. + * config/s390/s390.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. + * config/s390/s390.c (s390_hard_regno_call_part_clobbered): New + function. + (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine. + * config/sh/sh.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete. + * system.h (HARD_REGNO_CALL_PART_CLOBBERED): Poison. + +2017-09-04 Richard Sandiford + Alan Hayward + David Sherwood + + * rtl.h (subreg_memory_offset): Declare. + * emit-rtl.c (subreg_memory_offset): New function. + * expmed.c (store_bit_field_1): Use it. + * expr.c (undefined_operand_subword_p): Likewise. + * simplify-rtx.c (simplify_subreg): Likewise. + +2017-09-04 Alexander Monakov + + PR rtl-optimization/57448 + PR target/67458 + PR target/81316 + * optabs.c (expand_atomic_load): Place compiler memory barriers if + using atomic_load pattern. + (expand_atomic_store): Likewise. + +2017-09-04 Jakub Jelinek + + PR sanitizer/81981 + * gimple-fold.c (gimple_fold_call): Optimize away useless UBSAN_PTR + and UBSAN_BOUNDS internal calls. Clean up IFN_UBSAN_OBJECT_SIZE + handling. Use replace_call_with_value with NULL instead of + gsi_replace, unlink_stmt_vdef and release_defs. + + * gdbhooks.py (OptMachineModePrinter.to_string): Use 8 spaces + instead of tab. + + * lra-remat.c (reg_overlap_for_remat_p): Fix a pasto. + +2017-09-04 Richard Sandiford + + PR bootstrap/82045 + * rtl.h (emit_library_call_value_1): Declare. + (emit_library_call): Replace declaration with a series of overloads. + Remove the parameter count argument. + (emit_library_call_value): Likewise. + * calls.c (emit_library_call_value_1): Make global. Replace varargs + with an "rtx_mode_t *". + (emit_library_call_value): Delete. + (emit_library_call): Likewise. + * asan.c (asan_emit_stack_protection): Update calls accordingly. + (asan_emit_allocas_unpoison): Likewise. + * builtins.c (expand_builtin_powi): Likewise. + (expand_asan_emit_allocas_unpoison): Likewise. + * cfgexpand.c (expand_main_function): Likewise. + * config/aarch64/aarch64.c (aarch64_trampoline_init): Likewise. + * config/aarch64/aarch64.h (PROFILE_HOOK): Likewise. + * config/alpha/alpha.c (alpha_trampoline_init): Likewise. + * config/arm/arm.c (arm_trampoline_init): Likewise. + (arm_call_tls_get_addr): Likewise. + (arm_expand_divmod_libfunc): Likewise. + * config/bfin/bfin.md (umulsi3_highpart): Likewise. + (smulsi3_highpart): Likewise. + * config/c6x/c6x.c (c6x_initialize_trampoline): Likewise. + (c6x_expand_compare): Likewise. + (c6x_expand_movmem): Likewise. + * config/frv/frv.c (frv_trampoline_init): Likewise. + * config/i386/i386.c (ix86_trampoline_init): Likewise. + (ix86_expand_divmod_libfunc): Likewise. + * config/ia64/ia64.c (ia64_expand_tls_address): Likewise. + (ia64_expand_compare): Likewise. + (ia64_profile_hook): Likewise. + * config/ia64/ia64.md (save_stack_nonlocal): Likewise. + (nonlocal_goto): Likewise. + (restore_stack_nonlocal): Likewise. + * config/m32r/m32r.c (block_move_call): Likewise. + (m32r_trampoline_init): Likewise. + * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Likewise. + * config/m68k/m68k.c (m68k_call_tls_get_addr): Likewise. + (m68k_call_m68k_read_tp): Likewise. + * config/microblaze/microblaze.c (microblaze_call_tls_get_addr) + (microblaze_expand_divide): Likewise. + * config/mips/mips.h (mips_args): Likewise. + * config/mips/sdemtk.h (mips_sync_icache): Likewise. + (MIPS_ICACHE_SYNC): Likewise. + * config/nios2/nios2.c (nios2_emit_expensive_div): Likewise. + (nios2_trampoline_init): Likewise. + * config/pa/pa.c (hppa_tls_call): Likewise. + (pa_trampoline_init): Likewise. + * config/pa/pa.md (canonicalize_funcptr_for_compare): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_legitimize_tls_address) + (expand_strn_compare): Likewise. + (rs6000_generate_compare): Likewise. + (rs6000_expand_float128_convert): Likewise. + (output_profile_hook): Likewise. + (rs6000_trampoline_init): Likewise. + * config/powerpcspe/powerpcspe.md (neg2): Likewise. + * config/riscv/riscv.h (PROFILE_HOOK): Likewise. + * config/rs6000/rs6000-string.c (expand_strn_compare): Likewise. + * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise. + (rs6000_generate_compare): Likewise. + (rs6000_expand_float128_convert): Likewise. + (output_profile_hook): Likewise. + (rs6000_trampoline_init): Likewise. + * config/rs6000/rs6000.md (neg2): Likewise. + * config/sh/sh.c (sh_trampoline_init): Likewise. + * config/sparc/sparc.c (emit_soft_tfmode_libcall): Likewise. + (sparc_emit_float_lib_cmp): Likewise. + (sparc32_initialize_trampoline): Likewise. + (sparc64_initialize_trampoline): Likewise. + (sparc_profile_hook): Likewise. + * config/spu/spu.c (ea_load_store): Likewise. + * config/spu/spu.md (floatunssidf2): Likewise. + * config/tilegx/tilegx.c (tilegx_trampoline_init): Likewise. + * config/tilepro/tilepro.c (tilepro_trampoline_init): Likewise. + * config/visium/visium.c (expand_block_move_4): Likewise. + (expand_block_move_2): Likewise. + (expand_block_move_1): Likewise. + (expand_block_set_4): Likewise. + (expand_block_set_2): Likewise. + (expand_block_set_1): Likewise. + (visium_trampoline_init): Likewise. + (visium_profile_hook): Likewise. + * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Likewise. + (xtensa_setup_frame_addresses): Likewise. + (xtensa_trampoline_init): Likewise. + * except.c (sjlj_emit_function_enter): Likewise. + (sjlj_emit_function_exit): Likewise. + * explow.c (allocate_dynamic_stack_space): Likewise. + (probe_stack_range): Likewise. + * expr.c (convert_mode_scalar): Likewise. + * optabs.c (expand_binop): Likewise. + (expand_twoval_binop_libfunc): Likewise. + (expand_unop): Likewise. + (prepare_cmp_insn): Likewise. + (prepare_float_lib_cmp): Likewise. + (expand_float): Likewise. + (expand_fix): Likewise. + (expand_fixed_convert): Likewise. + (maybe_emit_sync_lock_test_and_set): Likewise. + (expand_atomic_compare_and_swap): Likewise. + (expand_mem_thread_fence): Likewise. + (expand_atomic_fetch_op): Likewise. + +2017-09-03 Gerald Pfeifer + + * doc/generic.texi (OpenACC): Adjust URL. + * doc/invoke.texi (C Dialect Options): Ditto. + +2017-09-03 Uros Bizjak + + * config/i386/i386.md (*bt): Use nonimmediate_operand + predicate for operand 1. Add (m,) constraint. + (*jcc_bt): Use nonimmediate_operand predicate for operand 1. + Prevent memory operand 1 with register operand 2. + +2017-09-01 Segher Boessenkool + + PR rtl-optimization/82024 + * combine.c (try_combine): If the combination result is a PARALLEL, + and we only need to retain the SET in there that would be placed + at I2, check that we can place that at I3 instead, before doing so. + +2017-09-01 Jakub Jelinek + + PR target/81766 + * config/i386/i386.c (ix86_init_large_pic_reg): Return label + instead of void. + (ix86_init_pic_reg): Remember label from ix86_init_large_pic_reg, + if non-NULL and preceded by NOTE_INSN_BASIC_BLOCK, swap the note + and label. + +2017-09-01 Joerg Sonnenberger + Jeff Law + + * varasm.c (bss_initializer_p): Do not put constants into .bss + (categorize_decl_for_section): Handle bss_initializer_p returning + false when DECL_INITIAL is NULL. + +2017-09-01 Andreas Krebbel + + PR target/82012 + * config/s390/s390.c (s390_can_inline_p): New function. + +2017-09-01 Jeff Law + + PR tree-optimization/82052 + * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): + Always initialize the returned slot after a hash table miss + when INSERT is true. + +2017-09-01 Alexander Monakov + + * config/s390/s390.md (mem_signal_fence): Remove. + * doc/md.texi (mem_signal_fence): Remove. + * optabs.c (expand_mem_signal_fence): Remove uses of mem_signal_fence. + Update comments. + * target-insns.def (mem_signal_fence): Remove. + +2017-09-01 Jakub Jelinek + + PR sanitizer/81902 + * doc/invoke.texi: Document -fsanitize=pointer-overflow. + + PR sanitizer/81923 + * asan.c (create_odr_indicator): Strip name encoding from assembler + name before appending it after __odr_asan_. + +2017-09-01 Martin Liska + + PR tree-optimization/82059 + * gimple-ssa-isolate-paths.c (isolate_path): Add profile and + frequency only when an edge is redirected. + +2017-09-01 Claudiu Zissulescu + + * config/arc/arc-c.c (__ARC_LPC_WIDTH__): Add builtin define. + * config/arc/arc.c (ARC_MAX_LOOP_LENGTH): Define. + (arc_conditional_register_usage): Remove ARC600 lp_count + exception. + (arc_file_start): Emit Tag_ARC_CPU_variation. + (arc_can_use_doloop_p): New conditions to use ZOLs. + (hwloop_fail): New function. + (hwloop_optimize): Likewise. + (hwloop_pattern_reg): Likewise. + (arc_doloop_hooks): New struct, to be used with reorg_loops. + (arc_reorg_loops): New function, calls reorg_loops. + (arc_reorg): Call arc_reorg_loops. Remove old ZOL handling. + (arc600_corereg_hazard): Remove ZOL checking, case handled by + hwloop_optimize. + (arc_loop_hazard): Remove function, functionality moved into + hwloop_optimize. + (arc_hazard): Remove arc_loop_hazard call. + (arc_adjust_insn_length): Remove ZOL handling, functionality moved + into hwloop_optimize. + (arc_label_align): Remove ZOL handling. + * config/arc/arc.h (LOOP_ALIGN): Changed to 0. + * config/arc/arc.md (doloop_begin): Remove pattern. + (doloop_begin_i): Likewise. + (doloop_end_i): Likewise. + (doloop_fallback): Likewise. + (doloop_fallback_m): Likewise. + (doloop_end): Reimplement expand. + (arc_lp): New pattern for LP instruction. + (loop_end): New pattern. + (loop_fail): Likewise. + (decrement_and_branch_until_zero): Likewise. + * config/arc/arc.opt (mlpc-width): New option. + * doc/invoke.texi (mlpc-width): Document option. + +2017-09-01 Claudiu Zissulescu + + * config/arc/arc.c (arc_ifcvt): Remove use of merge_blocks call. + (arc_ccfsm_advance): Fix checking for delay slots. + (arc_reorg): Add rtl dump after each call to arc_ifcvt. + +2017-09-01 Claudiu Zissulescu + + * config/arc/arc.md (movqi_insn): Add stores to save constant long + immediates. + (movhi_insn): Update store instruction constraint which are saving + 6-bit short immediates. + (movsi_insn): Consider also short scaled load operations. + (zero_extendhisi2_i): Use Usd constraint instead of T. + (extendhisi2_i): Add q constraint. + (arc_clzsi2): Add type and length attributes. + (arc_ctzsi2): Likewise. + * config/arc/constraints.md (Usc): Update constraint, the + assembler can parse two relocations for a single instruction. + +2017-09-01 Claudiu Zissulescu + + * config/arc/arc.c (arc_use_anchors_for_symbol_p): New function. + (TARGET_USE_ANCHORS_FOR_SYMBOL_P): Define. + +2017-08-31 Olivier Hainque + + * config.gcc (powerpc-wrs-vxworks|vxworksae|vxworksmils): Now + match as powerpc-wrs-vxworks*. + +2017-08-31 James Greenhalgh + + * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge): Fix + register constraint for by-element operand. + (aarch64_mls_elt_merge): Likewise. + +2017-08-31 Claudiu Zissulescu + + * config/arc/arc.c (arc_can_follow_jump): Check for short + branches. + +2017-08-31 Claudiu Zissulescu + + * config.gcc: Use g.opt for arc. + * config/arc/arc.c (LEGITIMATE_SCALED_ADDRESS_P): Deleted, + functionality moved to ... + (legitimate_scaled_address_p): New function, ...here. + (LEGITIMATE_SMALL_DATA_OFFSET_P): New define. + (LEGITIMATE_SMALL_DATA_ADDRESS_P): Use the above define. + (legitimate_offset_address_p): Delete TARGET_NO_SDATA_SET + condition. + (arc_override_options): Handle G option. + (arc_output_pic_addr_const): Correct function definition. + (arc_legitimate_address_p): Use legitimate_scaled_address_p. + (arc_decl_anon_ns_mem_p): Delete. + (arc_in_small_data_p): Overhaul this function to take into + consideration the value given via G option. + (arc_rewrite_small_data_1): Renamed and corrected old + arc_rewrite_small_data function. + (arc_rewrite_small_data): New function. + (small_data_pattern): Don't use pic_offset_table_rtx. + * config/arc/arc.h (CC1_SPEC): Recognize G option. + * config/arc/simdext.md (movmisalignv2hi): Use + prepare_move_operands function. + (mov*): Likewise. + (movmisalign*): Likewise. + * doc/invoke.texi (ARC options): Document -G option. + +2017-08-31 Claudiu Zissulescu + + * config/arc/arc-protos.h (compact_sda_memory_operand): Update + prototype. + * config/arc/arc.c (arc_print_operand): Output scalled address for + sdata whenever is possible. + (arc_in_small_data_p): Allow sdata for 64bit datum when double + load/stores are available. + (compact_sda_memory_operand): Check for the alignment required by + code density instructions. + * config/arc/arc.md (movsi_insn): Use newly introduced Us0 + constraint. + * config/arc/constraints.md (Usd): Update constraint. + (Us0): New constraint. + (Usc): Update constraint. + +2017-08-31 Richard Biener + + PR middle-end/82054 + * dwarf2out.c (dwarf2out_early_global_decl): Process each + function only once. + +2017-08-31 Tamar Christina + + * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins): + Resize type_signature. + +2017-08-31 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64.c (aarch64_base_register_rtx_p): Only allow + subregs whose inner modes can be stored in GPRs. + (aarch64_classify_index): Likewise. + +2017-08-31 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/iterators.md (V_cmp_result): Rename to... + (V_INT_EQUIV): ...this. + (v_cmp_result): Rename to... + (v_int_equiv): ...this. + * config/aarch64/aarch64.md (xorsign3): Update accordingly. + * config/aarch64/aarch64-simd.md (xorsign3): Likewise. + (copysign3): Likewise. + (aarch64_simd_bsl_internal): Likewise. + (aarch64_simd_bsl): Likewise. + (vec_cmp): Likewise. + (vcond): Likewise. + (vcond): Likewise. + (vcondu): Likewise. + (aarch64_cm): Likewise. + (aarch64_cmtst): Likewise. + (aarch64_fac): Likewise. + (vec_perm_const): Likewise. + (vcond_mask_): Rename to... + (vcond_mask_): ...this. + (vec_cmp): Rename to... + (vec_cmp): ...this. + +2017-08-31 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-modes.def: Remove 32-, 48- and 64-byte + vector modes. + * config/aarch64/iterators.md (VRL2, VRL3, VRL4): Delete. + * config/aarch64/aarch64.md (UNSPEC_LD2_DREG, UNSPEC_LD3_DREG) + (UNSPEC_LD4_DREG): New unspecs. + * config/aarch64/aarch64-simd.md (aarch64_ld2_dreg_le) + (aarch64_ld2_dreg_be): Replace with... + (aarch64_ld2_dreg): ...this pattern and use the new DREG + unspec. + (aarch64_ld3_dreg_le) + (aarch64_ld3_dreg_be): Replace with... + (aarch64_ld3_dreg): ...this pattern and use the new DREG + unspec. + (aarch64_ld4_dreg_le) + (aarch64_ld4_dreg_be): Replace with... + (aarch64_ld4_dreg): ...this pattern and use the new DREG + unspec. + +2017-08-30 Bill Schmidt + + PR tree-optimization/81987 + * gimple-ssa-strength-reduction.c (insert_initializers): Don't + insert an initializer in a location not dominated by the stride + definition. + +2017-08-30 Eric Botcazou + + * tree-eh.c (lower_try_finally_switch): Set the location of the finally + on the entire header of the finally block in the fallthru case. + +2017-08-30 Eric Botcazou + + * varasm.c (decode_addr_const): Deal with INDIRECT_REF . + +2017-08-30 Pat Haugen + + * config/rs6000/rs6000.c (rs6000_emit_prologue_move_from_cr): Rename from + rs6000_emit_move_from_cr and call renamed function. + (rs6000_emit_prologue): Call renamed functions. + * config/rs6000/rs6000.md (prologue_movesi_from_cr): Rename from + movesi_from_cr, remove volatile CRs. + +2017-08-30 Jon Beniston + Richard Biener + + * tree-vect-patterns.c (vect_pattern_recog_1): Use VECTOR_TYPE_P instead + of VECTOR_MODE_P check. + * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Allow single + element vector types. + +2017-08-30 Richard Sandiford + + * df.h (df_read_modify_subreg_p): Remove in favor of... + * rtl.h (read_modify_subreg_p): ...this new function. Take a + const_rtx instead of an rtx. + * cprop.c (local_cprop_find_used_regs): Update accordingly. + * df-problems.c (df_word_lr_mark_ref): Likewise. + * ira-lives.c (mark_pseudo_reg_live): Likewise. + (mark_pseudo_reg_dead): Likewise. + (mark_ref_dead): Likewise. + * reginfo.c (init_subregs_of_mode): Likewise. + * sched-deps.c (sched_analyze_1): Likewise. + * df-scan.c (df_def_record_1): Likewise. + (df_uses_record): Likewise. + (df_read_modify_subreg_p): Remove in favor of... + * rtlanal.c (read_modify_subreg_p): ...this new function. Take a + const_rtx instead of an rtx. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * rtl.h (partial_subreg_p): New function. + * caller-save.c (save_call_clobbered_regs): Use it. + * calls.c (expand_call): Likewise. + * combine.c (combinable_i3pat): Likewise. + (simplify_set): Likewise. + (make_extraction): Likewise. + (make_compound_operation_int): Likewise. + (gen_lowpart_or_truncate): Likewise. + (force_to_mode): Likewise. + (make_field_assignment): Likewise. + (reg_truncated_to_mode): Likewise. + (record_truncated_value): Likewise. + (move_deaths): Likewise. + * cse.c (record_jump_cond): Likewise. + (cse_insn): Likewise. + * cselib.c (cselib_lookup_1): Likewise. + * expmed.c (extract_bit_field_using_extv): Likewise. + * function.c (assign_parm_setup_reg): Likewise. + * ifcvt.c (noce_convert_multiple_sets): Likewise. + * ira-build.c (create_insn_allocnos): Likewise. + * lra-coalesce.c (merge_pseudos): Likewise. + * lra-constraints.c (match_reload): Likewise. + (simplify_operand_subreg): Likewise. + (curr_insn_transform): Likewise. + * lra-lives.c (process_bb_lives): Likewise. + * lra.c (new_insn_reg): Likewise. + (lra_substitute_pseudo): Likewise. + * regcprop.c (mode_change_ok): Likewise. + (maybe_mode_change): Likewise. + (copyprop_hardreg_forward_1): Likewise. + * reload.c (push_reload): Likewise. + (find_reloads): Likewise. + (find_reloads_subreg_address): Likewise. + * reload1.c (alter_reg): Likewise. + (eliminate_regs_1): Likewise. + * simplify-rtx.c (simplify_unary_operation_1): Likewise. + +2017-08-30 David Edelsohn + + * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Revert + back to if statements, including unpack. + +2017-08-30 Martin Liska + + PR inline-asm/82001 + * ipa-icf-gimple.c (func_checker::compare_tree_list_operand): + Rename to ... + (func_checker::compare_asm_inputs_outputs): ... this function. + (func_checker::compare_gimple_asm): Use the function to compare + also ASM constrains. + * ipa-icf-gimple.h: Rename the function. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * coretypes.h (complex_mode): New type. + * gdbhooks.py (build_pretty_printer): Handle it. + * machmode.h (complex_mode): New class. + (complex_mode::includes_p): New function. + (is_complex_int_mode): Likewise. + (is_complex_float_mode): Likewise. + * genmodes.c (get_mode_class): Handle complex mode classes. + * function.c (expand_function_end): Use is_complex_int_mode. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * coretypes.h (scalar_mode_pod): New typedef. + * gdbhooks.py (build_pretty_printer): Handle it. + * machmode.h (gt_ggc_mx, gt_pch_nx): New functions. + * fixed-value.h (fixed_value::mode): Change type to scalar_mode_pod. + * fold-const.c (fold_convert_const_int_from_fixed): Use scalar_mode. + * tree-streamer-in.c (unpack_ts_fixed_cst_value_fields): Use + as_a . + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (mode_for_vector): Take a scalar_mode instead + of a machine_mode. + * stor-layout.c (mode_for_vector): Likewise. + * explow.c (promote_mode): Use as_a . + * sdbout.c (sdbout_parms): Use is_a . + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (preferred_simd_mode): Take a scalar_mode + instead of a machine_mode. + * targhooks.h (default_preferred_simd_mode): Likewise. + * targhooks.c (default_preferred_simd_mode): Likewise. + * config/arc/arc.c (arc_preferred_simd_mode): Likewise. + * config/arm/arm.c (arm_preferred_simd_mode): Likewise. + * config/c6x/c6x.c (c6x_preferred_simd_mode): Likewise. + * config/epiphany/epiphany.c (epiphany_preferred_simd_mode): Likewise. + * config/i386/i386.c (ix86_preferred_simd_mode): Likewise. + * config/mips/mips.c (mips_preferred_simd_mode): Likewise. + * config/nvptx/nvptx.c (nvptx_preferred_simd_mode): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_preferred_simd_mode): + Likewise. + * config/rs6000/rs6000.c (rs6000_preferred_simd_mode): Likewise. + * config/s390/s390.c (s390_preferred_simd_mode): Likewise. + * config/sparc/sparc.c (sparc_preferred_simd_mode): Likewise. + * config/aarch64/aarch64.c (aarch64_preferred_simd_mode): Likewise. + (aarch64_simd_scalar_immediate_valid_for_move): Update accordingly. + * doc/tm.texi: Regenerate. + * optabs-query.c (can_vec_mask_load_store_p): Return false for + non-scalar modes. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (scalar_mode_supported_p): Take a scalar_mode + instead of a machine_mode. + * targhooks.h (default_scalar_mode_supported_p): Likewise. + * targhooks.c (default_scalar_mode_supported_p): Likewise. + * config/aarch64/aarch64.c (aarch64_scalar_mode_supported_p): Likewise. + * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise. + * config/arm/arm.c (arm_scalar_mode_supported_p): Likewise. + * config/avr/avr.c (avr_scalar_mode_supported_p): Likewise. + * config/c6x/c6x.c (c6x_scalar_mode_supported_p): Likewise. + * config/i386/i386.c (ix86_scalar_mode_supported_p): Likewise. + * config/ia64/ia64.c (ia64_scalar_mode_supported_p): Likewise. + * config/mips/mips.c (mips_scalar_mode_supported_p): Likewise. + * config/msp430/msp430.c (msp430_scalar_mode_supported_p): Likewise. + * config/pa/pa.c (pa_scalar_mode_supported_p): Likewise. + * config/pdp11/pdp11.c (pdp11_scalar_mode_supported_p): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_scalar_mode_supported_p): + Likewise. + * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Likewise. + * config/s390/s390.c (s390_scalar_mode_supported_p): Likewise. + * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise. + * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise. + * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p): + Likewise. + * doc/tm.texi: Regenerate. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * coretypes.h (opt_scalar_mode): New typedef. + * gdbhooks.py (build_pretty_printers): Handle it. + * machmode.h (mode_iterator::get_2xwider): Add overload for + opt_mode. + * emit-rtl.c (init_emit_once): Use opt_scalar_mode when iterating + over scalar modes. + * expr.c (convert_mode_scalar): Likewise. + * omp-low.c (omp_clause_aligned_alignment): Likewise. + * optabs.c (expand_float): Likewise. + (expand_fix): Likewise. + * tree-vect-stmts.c (vectorizable_conversion): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * optabs.c (expand_float): Explicitly check for scalars before + using a branching expansion. + (expand_fix): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.c (convert_mode): Split scalar handling out into... + (convert_mode_scalar): ...this new function. Treat the modes + as scalar_modes. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * omp-expand.c (expand_omp_atomic): Use is_int_mode, is_float_mode + and scalar_mode. + * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * fixed-value.h (fixed_from_double_int): Take a scalar_mode + rather than a machine_mode. + (fixed_from_string): Likewise. + (fixed_convert): Likewise. + (fixed_convert_from_int): Likewise. + (fixed_convert_from_real): Likewise. + (real_convert_from_fixed): Likewise. + * fixed-value.c (fixed_from_double_int): Likewise. + (fixed_from_string): Likewise. + (fixed_convert): Likewise. + (fixed_convert_from_int): Likewise. + (fixed_convert_from_real): Likewise. + (real_convert_from_fixed): Likewise. + * config/avr/avr.c (avr_out_round): Use as_a . + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * emit-rtl.c (immed_double_const): Use is_a instead + of separate mode class checks. Do not allow vector modes here. + (immed_wide_int_const): Use as_a . + * explow.c (trunc_int_for_mode): Likewise. + * rtl.h (wi::int_traits::get_precision): Likewise. + (wi::shwi): Likewise. + (wi::min_value): Likewise. + (wi::max_value): Likewise. + * dwarf2out.c (loc_descriptor): Likewise. + * simplify-rtx.c (simplify_immed_subreg): Fix rtx_mode_t argument + for CONST_WIDE_INT. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * tree.h (SCALAR_TYPE_MODE): New macro. + * expr.c (expand_expr_addr_expr_1): Use it. + (expand_expr_real_2): Likewise. + * fold-const.c (fold_convert_const_fixed_from_fixed): Likeise. + (fold_convert_const_fixed_from_int): Likewise. + (fold_convert_const_fixed_from_real): Likewise. + (native_encode_fixed): Likewise + (native_encode_complex): Likewise + (native_encode_vector): Likewise. + (native_interpret_fixed): Likewise. + (native_interpret_real): Likewise. + (native_interpret_complex): Likewise. + (native_interpret_vector): Likewise. + * omp-simd-clone.c (simd_clone_adjust_return_type): Likewise. + (simd_clone_adjust_argument_types): Likewise. + (simd_clone_init_simd_arrays): Likewise. + (simd_clone_adjust): Likewise. + * stor-layout.c (layout_type): Likewise. + * tree.c (build_minus_one_cst): Likewise. + * tree-cfg.c (verify_gimple_assign_ternary): Likewise. + * tree-inline.c (estimate_move_cost): Likewise. + * tree-ssa-math-opts.c (convert_plusminus_to_widen): Likewise. + * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise. + (vectorizable_reduction): Likewise. + * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Likewise. + (vect_recog_mixed_size_cond_pattern): Likewise. + (check_bool_pattern): Likewise. + (adjust_bool_pattern): Likewise. + (search_type_for_mask_1): Likewise. + * tree-vect-slp.c (vect_schedule_slp_instance): Likewise. + * tree-vect-stmts.c (vectorizable_conversion): Likewise. + (vectorizable_load): Likewise. + (vectorizable_store): Likewise. + * ubsan.c (ubsan_encode_value): Likewise. + * varasm.c (output_constant): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * coretypes.h (scalar_mode): New class. + * machmode.h (scalar_mode): Likewise. + (scalar_mode::includes_p): New function. + (mode_to_inner): Return a scalar_mode rather than a machine_mode. + * gdbhooks.py (build_pretty_printers): Handle scalar_mode. + * genmodes.c (get_mode_class): Handle remaining scalar modes. + * cfgexpand.c (expand_debug_expr): Use scalar_mode. + * expmed.c (store_bit_field_1): Likewise. + (extract_bit_field_1): Likewise. + * expr.c (write_complex_part): Likewise. + (read_complex_part): Likewise. + (emit_move_complex_push): Likewise. + (expand_expr_real_2): Likewise. + * function.c (assign_parm_setup_reg): Likewise. + (assign_parms_unsplit_complex): Likewise. + * optabs.c (expand_binop): Likewise. + * rtlanal.c (subreg_get_info): Likewise. + * simplify-rtx.c (simplify_immed_subreg): Likewise. + * varasm.c (output_constant_pool_2): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * expmed.c (extract_high_half): Use scalar_int_mode and remove + assertion. + (expmed_mult_highpart_optab): Likewise. + (expmed_mult_highpart): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * builtins.h (builtin_strncpy_read_str): Take a scalar_int_mode + instead of a machine_mode. + (builtin_memset_read_str): Likewise. + * builtins.c (c_readstr): Likewise. + (builtin_memcpy_read_str): Likewise. + (builtin_strncpy_read_str): Likewise. + (builtin_memset_read_str): Likewise. + (builtin_memset_gen_str): Likewise. + (expand_builtin_signbit): Use scalar_int_mode for local variables. + * cfgexpand.c (convert_debug_memory_address): Take a scalar_int_mode + instead of a machine_mode. + * combine.c (simplify_if_then_else): Use scalar_int_mode for local + variables. + (make_extraction): Likewise. + (try_widen_shift_mode): Take and return scalar_int_modes instead + of machine_modes. + * config/aarch64/aarch64.c (aarch64_libgcc_cmp_return_mode): Return + a scalar_int_mode instead of a machine_mode. + * config/avr/avr.c (avr_addr_space_address_mode): Likewise. + (avr_addr_space_pointer_mode): Likewise. + * config/cr16/cr16.c (cr16_unwind_word_mode): Likewise. + * config/msp430/msp430.c (msp430_addr_space_pointer_mode): Likewise. + (msp430_unwind_word_mode): Likewise. + * config/spu/spu.c (spu_unwind_word_mode): Likewise. + (spu_addr_space_pointer_mode): Likewise. + (spu_addr_space_address_mode): Likewise. + (spu_libgcc_cmp_return_mode): Likewise. + (spu_libgcc_shift_count_mode): Likewise. + * config/rl78/rl78.c (rl78_addr_space_address_mode): Likewise. + (rl78_addr_space_pointer_mode): Likewise. + (fl78_unwind_word_mode): Likewise. + (rl78_valid_pointer_mode): Take a scalar_int_mode instead of a + machine_mode. + * config/alpha/alpha.c (vms_valid_pointer_mode): Likewise. + * config/ia64/ia64.c (ia64_vms_valid_pointer_mode): Likewise. + * config/mips/mips.c (mips_mode_rep_extended): Likewise. + (mips_valid_pointer_mode): Likewise. + * config/tilegx/tilegx.c (tilegx_mode_rep_extended): Likewise. + * config/ft32/ft32.c (ft32_valid_pointer_mode): Likewise. + (ft32_addr_space_pointer_mode): Return a scalar_int_mode instead + of a machine_mode. + (ft32_addr_space_address_mode): Likewise. + * config/m32c/m32c.c (m32c_valid_pointer_mode): Take a + scalar_int_mode instead of a machine_mode. + (m32c_addr_space_pointer_mode): Return a scalar_int_mode instead + of a machine_mode. + (m32c_addr_space_address_mode): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_abi_word_mode): Likewise. + (rs6000_eh_return_filter_mode): Likewise. + * config/rs6000/rs6000.c (rs6000_abi_word_mode): Likewise. + (rs6000_eh_return_filter_mode): Likewise. + * config/s390/s390.c (s390_libgcc_cmp_return_mode): Likewise. + (s390_libgcc_shift_count_mode): Likewise. + (s390_unwind_word_mode): Likewise. + (s390_valid_pointer_mode): Take a scalar_int_mode rather than a + machine_mode. + * target.def (mode_rep_extended): Likewise. + (valid_pointer_mode): Likewise. + (addr_space.valid_pointer_mode): Likewise. + (eh_return_filter_mode): Return a scalar_int_mode rather than + a machine_mode. + (libgcc_cmp_return_mode): Likewise. + (libgcc_shift_count_mode): Likewise. + (unwind_word_mode): Likewise. + (addr_space.pointer_mode): Likewise. + (addr_space.address_mode): Likewise. + * doc/tm.texi: Regenerate. + * dojump.c (prefer_and_bit_test): Take a scalar_int_mode rather than + a machine_mode. + (do_jump): Use scalar_int_mode for local variables. + * dwarf2cfi.c (init_return_column_size): Take a scalar_int_mode + rather than a machine_mode. + * dwarf2out.c (convert_descriptor_to_mode): Likewise. + (scompare_loc_descriptor_wide): Likewise. + (scompare_loc_descriptor_narrow): Likewise. + * emit-rtl.c (adjust_address_1): Use scalar_int_mode for local + variables. + * except.c (sjlj_emit_dispatch_table): Likewise. + (expand_builtin_eh_copy_values): Likewise. + * explow.c (convert_memory_address_addr_space_1): Likewise. + Take a scalar_int_mode rather than a machine_mode. + (convert_memory_address_addr_space): Take a scalar_int_mode rather + than a machine_mode. + (memory_address_addr_space): Use scalar_int_mode for local variables. + * expmed.h (expand_mult_highpart_adjust): Take a scalar_int_mode + rather than a machine_mode. + * expmed.c (mask_rtx): Likewise. + (init_expmed_one_conv): Likewise. + (expand_mult_highpart_adjust): Likewise. + (extract_high_half): Likewise. + (expmed_mult_highpart_optab): Likewise. + (expmed_mult_highpart): Likewise. + (expand_smod_pow2): Likewise. + (expand_sdiv_pow2): Likewise. + (emit_store_flag_int): Likewise. + (adjust_bit_field_mem_for_reg): Use scalar_int_mode for local + variables. + (extract_low_bits): Likewise. + * expr.h (by_pieces_constfn): Take a scalar_int_mode rather than + a machine_mode. + * expr.c (pieces_addr::adjust): Likewise. + (can_store_by_pieces): Likewise. + (store_by_pieces): Likewise. + (clear_by_pieces_1): Likewise. + (expand_expr_addr_expr_1): Likewise. + (expand_expr_addr_expr): Use scalar_int_mode for local variables. + (expand_expr_real_1): Likewise. + (try_casesi): Likewise. + * final.c (shorten_branches): Likewise. + * fold-const.c (fold_convert_const_int_from_fixed): Change the + type of "mode" to machine_mode. + * internal-fn.c (expand_arith_overflow_result_store): Take a + scalar_int_mode rather than a machine_mode. + (expand_mul_overflow): Use scalar_int_mode for local variables. + * loop-doloop.c (doloop_modify): Likewise. + (doloop_optimize): Likewise. + * optabs.c (expand_subword_shift): Take a scalar_int_mode rather + than a machine_mode. + (expand_doubleword_shift_condmove): Likewise. + (expand_doubleword_shift): Likewise. + (expand_doubleword_clz): Likewise. + (expand_doubleword_popcount): Likewise. + (expand_doubleword_parity): Likewise. + (expand_absneg_bit): Use scalar_int_mode for local variables. + (prepare_float_lib_cmp): Likewise. + * rtl.h (convert_memory_address_addr_space_1): Take a scalar_int_mode + rather than a machine_mode. + (convert_memory_address_addr_space): Likewise. + (get_mode_bounds): Likewise. + (get_address_mode): Return a scalar_int_mode rather than a + machine_mode. + * rtlanal.c (get_address_mode): Likewise. + * stor-layout.c (get_mode_bounds): Take a scalar_int_mode rather + than a machine_mode. + * targhooks.c (default_mode_rep_extended): Likewise. + (default_valid_pointer_mode): Likewise. + (default_addr_space_valid_pointer_mode): Likewise. + (default_eh_return_filter_mode): Return a scalar_int_mode rather + than a machine_mode. + (default_libgcc_cmp_return_mode): Likewise. + (default_libgcc_shift_count_mode): Likewise. + (default_unwind_word_mode): Likewise. + (default_addr_space_pointer_mode): Likewise. + (default_addr_space_address_mode): Likewise. + * targhooks.h (default_eh_return_filter_mode): Likewise. + (default_libgcc_cmp_return_mode): Likewise. + (default_libgcc_shift_count_mode): Likewise. + (default_unwind_word_mode): Likewise. + (default_addr_space_pointer_mode): Likewise. + (default_addr_space_address_mode): Likewise. + (default_mode_rep_extended): Take a scalar_int_mode rather than + a machine_mode. + (default_valid_pointer_mode): Likewise. + (default_addr_space_valid_pointer_mode): Likewise. + * tree-ssa-address.c (addr_for_mem_ref): Use scalar_int_mode for + local variables. + * tree-ssa-loop-ivopts.c (get_shiftadd_cost): Take a scalar_int_mode + rather than a machine_mode. + * tree-switch-conversion.c (array_value_type): Use scalar_int_mode + for local variables. + * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise. + * var-tracking.c (use_narrower_mode): Take a scalar_int_mode rather + than a machine_mode. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * dojump.c (do_jump_by_parts_greater_rtx): Change the type of + the mode argument to scalar_int_mode. + (do_jump_by_parts_zero_rtx): Likewise. + (do_jump_by_parts_equality_rtx): Likewise. + (do_jump_by_parts_greater): Take a mode argument. + (do_jump_by_parts_equality): Likewise. + (do_jump_1): Update calls accordingly. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * is-a.h (safe_dyn_cast): New function. + * rtl.h (rtx_jump_table_data::get_data_mode): New function. + (jump_table_for_label): Likewise. + * final.c (final_addr_vec_align): Take an rtx_jump_table_data * + instead of an rtx_insn *. + (shorten_branches): Use dyn_cast instead of LABEL_P and + JUMP_TABLE_DATA_P. Use jump_table_for_label and + rtx_jump_table_data::get_data_mode. + (final_scan_insn): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (try_combine): Use is_a when + trying to combine a full-register integer set with a subreg + integer set. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.c (expand_expr_addr_expr): Add a new_tmode local variable + that is always either address_mode or pointer_mode. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.c (expand_expr_real_2): Use word_mode instead of innermode + when the two are known to be equal. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * simplify-rtx.c (simplify_const_unary_operation): Use + is_a instead of checking for a nonzero + precision. Forcibly convert op_mode to a scalar_int_mode + in that case. More clearly differentiate the operand and + result modes and use the former when deciding what the value + of a count-bits operation should be. Use is_int_mode instead + of checking for a MODE_INT. Remove redundant check for whether + this mode has a zero precision. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * optabs.c (widen_leading): Change the type of the mode argument + to scalar_int_mode. Use opt_scalar_int_mode for the mode iterator. + (widen_bswap): Likewise. + (expand_parity): Likewise. + (expand_ctz): Change the type of the mode argument to scalar_int_mode. + (expand_ffs): Likewise. + (epand_unop): Check for scalar integer modes before calling the + above routines. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.c (const_scalar_mask_from_tree): Add a mode argument. + Expand commentary. + (expand_expr_real_1): Update call accordingly. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * expmed.c (store_bit_field_using_insv): Add op0_mode and + value_mode arguments. Use scalar_int_mode internally. + (store_bit_field_1): Rename the new integer mode from imode + to op0_mode and use it instead of GET_MODE (op0). Update calls + to store_split_bit_field, store_bit_field_using_insv and + store_fixed_bit_field. + (store_fixed_bit_field): Add op0_mode and value_mode arguments. + Use scalar_int_mode internally. Use a bit count rather than a mode + when calculating the largest bit size for get_best_mode. + Update calls to store_split_bit_field and store_fixed_bit_field_1. + (store_fixed_bit_field_1): Add mode and value_mode arguments. + Remove assertion that OP0 has a scalar integer mode. + (store_split_bit_field): Add op0_mode and value_mode arguments. + Update calls to extract_fixed_bit_field. + (extract_bit_field_using_extv): Add an op0_mode argument. + Use scalar_int_mode internally. + (extract_bit_field_1): Rename the new integer mode from imode to + op0_mode and use it instead of GET_MODE (op0). Update calls to + extract_split_bit_field, extract_bit_field_using_extv and + extract_fixed_bit_field. + (extract_fixed_bit_field): Add an op0_mode argument. Update calls + to extract_split_bit_field and extract_fixed_bit_field_1. + (extract_fixed_bit_field_1): Add a mode argument. Remove assertion + that OP0 has a scalar integer mode. Use as_a + on the target mode. + (extract_split_bit_field): Add an op0_mode argument. Update call + to extract_fixed_bit_field. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * cse.c (cse_insn): Use opt_scalar_int_mode for the mode iterator. + * explow.c (hard_function_value): Likewise. + * expmed.c (extract_fixed_bit_field_1): Likewise. Move the + convert_to_mode call outside the loop. + * expr.c (alignment_for_piecewise_move): Use opt_scalar_int_mode + for the mode iterator. Require the mode specified by max_pieces + to exist. + (emit_block_move_via_movmem): Use opt_scalar_int_mode for the + mode iterator. + (copy_blkmode_to_reg): Likewise. + (set_storage_via_setmem): Likewise. + * optabs.c (prepare_cmp_insn): Likewise. + * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise. + * stor-layout.c (finish_bitfield_representative): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * rtl.h (subreg_unpromoted_mode, subreg_promoted_mode): New functions. + * expr.c (convert_move): Use them. + (convert_modes): Likewise. + (store_expr_with_bounds): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * rtl.h (rtl_hooks::reg_nonzero_bits): Add a scalar_int_mode + parameter for the mode of "x". Remove the "known_x", "known_mode" + and "known_ret" arguments. Change the type of the mode argument + to scalar_int_mode. + (rtl_hooks:reg_num_sign_bit_copies): Likewise. + * combine.c (reg_nonzero_bits_for_combine): Update accordingly. + (reg_num_sign_bit_copies_for_combine): Likewise. + * rtlanal.c (nonzero_bits1): Likewise. + (num_sign_bit_copies1): Likewise. + * rtlhooks-def.h (reg_nonzero_bits_general): Likewise. + (reg_num_sign_bit_copies_general): Likewise. + * rtlhooks.c (reg_num_sign_bit_copies_general): Likewise. + (reg_nonzero_bits_general): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * rtlanal.c (num_sign_bit_copies): Handle VOIDmode here rather + than in subroutines. Return 1 for non-integer modes. + (cached_num_sign_bit_copies): Change the type of the mode parameter + to scalar_int_mode. + (num_sign_bit_copies1): Likewise. Remove early exit for other mode + classes. Handle CONST_INT_P first and then check whether X also + has a scalar integer mode. Check the same thing for inner registers + of a SUBREG and for values that are being extended or truncated. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * rtlanal.c (nonzero_bits): Handle VOIDmode here rather than + in subroutines. Return the mode mask for non-integer modes. + (cached_nonzero_bits): Change the type of the mode parameter + to scalar_int_mode. + (nonzero_bits1): Likewise. Remove early exit for other mode + classes. Handle CONST_INT_P first and then check whether X + also has a scalar integer mode. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.c (widest_int_mode_for_size): Make the comment match the code. + Return a scalar_int_mode and assert that the size is greater than + one byte. + (by_pieces_ninsns): Update accordingly and remove VOIDmode handling. + (op_by_pieces_d::op_by_pieces_d): Likewise. + (op_by_pieces_d::run): Likewise. + (can_store_by_pieces): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (extract_left_shift): Add a mode argument and update + recursive calls. + (make_compound_operation_int): Change the type of the mode parameter + to scalar_int_mode and update the call to extract_left_shift. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (simplify_and_const_int): Change the type of the mode + parameter to scalar_int_mode. + (simplify_and_const_int_1): Likewise. Update recursive call. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (simplify_compare_const): Check that the mode is a + scalar_int_mode (rather than VOIDmode) before testing its + precision. + (simplify_comparison): Move COMPARISON_P handling out of the + loop and restrict the latter part of the loop to scalar_int_modes. + Check is_a before calling HWI_COMPUTABLE_MODE_P + and when considering SUBREG_REGs. Use is_int_mode instead of + checking GET_MODE_CLASS against MODE_INT. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (try_widen_shift_mode): Move check for equal modes to... + (simplify_shift_const_1): ...here. Use scalar_int_mode for + shift_unit_mode and for modes involved in scalar shifts. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (force_int_to_mode): New function, split out from... + (force_to_mode): ...here. Keep xmode up-to-date and use it + instead of GET_MODE (x). + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * optabs-query.h (extraction_insn::struct_mode): Change type to + opt_scalar_int_mode and update comment. + (extraction_insn::field_mode): Change type to scalar_int_mode. + (extraction_insn::pos_mode): Likewise. + * combine.c (make_extraction): Update accordingly. + * optabs-query.c (get_traditional_extraction_insn): Likewise. + (get_optab_extraction_insn): Likewise. + * recog.c (simplify_while_replacing): Likewise. + * expmed.c (narrow_bit_field_mem): Change the type of the mode + parameter to opt_scalar_int_mode. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (bit_field_mode_iterator::next_mode): Take a pointer + to a scalar_int_mode instead of a machine_mode. + (bit_field_mode_iterator::m_mode): Change type to opt_scalar_int_mode. + (get_best_mode): Return a boolean and use a pointer argument to store + the selected mode. Replace the limit mode parameter with a bit limit. + * expmed.c (adjust_bit_field_mem_for_reg): Use scalar_int_mode + for the values returned by bit_field_mode_iterator::next_mode. + (store_bit_field): Update call to get_best_mode. + (store_fixed_bit_field): Likewise. + (extract_fixed_bit_field): Likewise. + * expr.c (optimize_bitfield_assignment_op): Likewise. + * fold-const.c (optimize_bit_field_compare): Likewise. + (fold_truth_andor_1): Likewise. + * stor-layout.c (bit_field_mode_iterator::next_mode): As above. + Update for new type of m_mode. + (get_best_mode): As above. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * expmed.c (strict_volatile_bitfield_p): Change the type of fieldmode + to scalar_int_mode. Remove check for SCALAR_INT_MODE_P. + (store_bit_field): Check is_a before calling + strict_volatile_bitfield_p. + (extract_bit_field): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (cstore_mode): Return a scalar_int_mode. + * doc/tm.texi: Regenerate. + * config/sparc/sparc.c (sparc_cstore_mode): Return a scalar_int_mode. + * targhooks.h (default_cstore_mode): Likewise. + * targhooks.c (default_cstore_mode): Likewise, using a forced + conversion. + * expmed.c (emit_cstore): Expect the target of the cstore to be + a scalar_int_mode. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * cfgloop.h (rtx_iv): Change type of extend_mode and mode to + scalar_int_mode. + (niter_desc): Likewise mode. + (iv_analyze): Add a mode parameter. + (biv_p): Likewise. + (iv_analyze_expr): Pass the mode paraeter before the rtx it describes + and change its type to scalar_int_mode. + * loop-iv.c: Update commentary at head of file. + (iv_constant): Pass the mode paraeter before the rtx it describes + and change its type to scalar_int_mode. Remove VOIDmode handling. + (iv_subreg): Change the type of the mode parameter to scalar_int_mode. + (iv_extend): Likewise. + (shorten_into_mode): Likewise. + (iv_add): Use scalar_int_mode. + (iv_mult): Likewise. + (iv_shift): Likewise. + (canonicalize_iv_subregs): Likewise. + (get_biv_step_1): Pass the outer_mode parameter before the rtx + it describes and change its mode to scalar_int_mode. Also change + the type of the returned inner_mode to scalar_int_mode. + (get_biv_step): Likewise, turning outer_mode from a pointer + into a direct parameter. Update call to get_biv_step_1. + (iv_analyze_biv): Add an outer_mode parameter. Update calls to + iv_constant and get_biv_step. + (iv_analyze_expr): Pass the mode parameter before the rtx it describes + and change its type to scalar_int_mode. Don't initialise iv->mode + to VOIDmode and remove later checks for its still being VOIDmode. + Update calls to iv_analyze_op and iv_analyze_expr. Check + is_a when changing the mode under consideration. + (iv_analyze_def): Ignore registers that don't have a scalar_int_mode. + Update call to iv_analyze_expr. + (iv_analyze_op): Add a mode parameter. Reject subregs whose + inner register is not also a scalar_int_mode. Update call to + iv_analyze_biv. + (iv_analyze): Add a mode parameter. Update call to iv_analyze_op. + (biv_p): Add a mode parameter. Update call to iv_analyze_biv. + (iv_number_of_iterations): Use is_a instead of + separate mode class checks. Update calls to iv_analyze. Remove + fix-up of VOIDmodes after iv_analyze_biv. + * loop-unroll.c (analyze_iv_to_split_insn): Reject registers that + don't have a scalar_int_mode. Update call to biv_p. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * cfgexpand.c (convert_debug_memory_address): Use + as_a . + * combine.c (expand_compound_operation): Likewise. + (make_extraction): Likewise. + (change_zero_ext): Likewise. + (simplify_comparison): Likewise. + * cse.c (cse_insn): Likewise. + * dwarf2out.c (minmax_loc_descriptor): Likewise. + (mem_loc_descriptor): Likewise. + (loc_descriptor): Likewise. + * expmed.c (init_expmed_one_mode): Likewise. + (synth_mult): Likewise. + (emit_store_flag_1): Likewise. + (expand_divmod): Likewise. Use HWI_COMPUTABLE_MODE_P instead + of a comparison with size. + * expr.c (expand_assignment): Use as_a . + (reduce_to_bit_field_precision): Likewise. + * function.c (expand_function_end): Likewise. + * internal-fn.c (expand_arith_overflow_result_store): Likewise. + * loop-doloop.c (doloop_modify): Likewise. + * optabs.c (expand_binop): Likewise. + (expand_unop): Likewise. + (expand_copysign_absneg): Likewise. + (prepare_cmp_insn): Likewise. + (maybe_legitimize_operand): Likewise. + * recog.c (const_scalar_int_operand): Likewise. + * rtlanal.c (get_address_mode): Likewise. + * simplify-rtx.c (simplify_unary_operation_1): Likewise. + (simplify_cond_clz_ctz): Likewise. + * tree-nested.c (get_nl_goto_field): Likewise. + * tree.c (build_vector_type_for_mode): Likewise. + * var-tracking.c (use_narrower_mode): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * tree.h (SCALAR_INT_TYPE_MODE): New macro. + * builtins.c (expand_builtin_signbit): Use it. + * cfgexpand.c (expand_debug_expr): Likewise. + * dojump.c (do_jump): Likewise. + (do_compare_and_jump): Likewise. + * dwarf2cfi.c (expand_builtin_init_dwarf_reg_sizes): Likewise. + * expmed.c (make_tree): Likewise. + * expr.c (expand_expr_real_2): Likewise. + (expand_expr_real_1): Likewise. + (try_casesi): Likewise. + * fold-const-call.c (fold_const_call_ss): Likewise. + * fold-const.c (unextend): Likewise. + (extract_muldiv_1): Likewise. + (fold_single_bit_test): Likewise. + (native_encode_int): Likewise. + (native_encode_string): Likewise. + (native_interpret_int): Likewise. + * gimple-fold.c (gimple_fold_builtin_memset): Likewise. + * internal-fn.c (expand_addsub_overflow): Likewise. + (expand_neg_overflow): Likewise. + (expand_mul_overflow): Likewise. + (expand_arith_overflow): Likewise. + * match.pd: Likewise. + * stor-layout.c (layout_type): Likewise. + * tree-cfg.c (verify_gimple_assign_ternary): Likewise. + * tree-ssa-math-opts.c (convert_mult_to_widen): Likewise. + * tree-ssanames.c (get_range_info): Likewise. + * tree-switch-conversion.c (array_value_type) Likewise. + * tree-vect-patterns.c (vect_recog_rotate_pattern): Likewise. + (vect_recog_divmod_pattern): Likewise. + (vect_recog_mixed_size_cond_pattern): Likewise. + * tree-vrp.c (extract_range_basic): Likewise. + (simplify_float_conversion_using_ranges): Likewise. + * tree.c (int_fits_type_p): Likewise. + * ubsan.c (instrument_bool_enum_load): Likewise. + * varasm.c (mergeable_string_section): Likewise. + (narrowing_initializer_constant_valid_p): Likewise. + (output_constant): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (NARROWEST_INT_MODE): New macro. + * expr.c (alignment_for_piecewise_move): Use it instead of + GET_CLASS_NARROWEST_MODE (MODE_INT). + (push_block): Likewise. + * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator): + Likewise. + * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * postreload.c (move2add_valid_value_p): Change the type of the + mode parameter to scalar_int_mode. + (move2add_use_add2_insn): Add a mode parameter and use it instead + of GET_MODE (reg). + (move2add_use_add3_insn): Likewise. + (reload_cse_move2add): Update accordingly. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * expr.c (expand_expr_real_2): Use scalar_int_mode for the + double-word mode. + * lower-subreg.c (resolve_shift_zext): Use is_a . + * optabs.c (expand_unop): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * dwarf2out.c (typed_binop): Change mode parameter to scalar_int_mode. + (clz_loc_descriptor): Likewise. Remove SCALAR_INT_MODE_P check. + (popcount_loc_descriptor): Likewise. + (bswap_loc_descriptor): Likewise. + (rotate_loc_descriptor): Likewise. + (mem_loc_descriptor): Add is_a checks before + calling the functions above. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (sign_extend_short_imm): Add is_a + checks. + (try_combine): Likewise. + (simplify_if_then_else): Likewise. + * cse.c (cse_insn): Likewise. + * dwarf2out.c (mem_loc_descriptor): Likewise. + * emit-rtl.c (gen_lowpart_common): Likewise. + * simplify-rtx.c (simplify_truncation): Likewise. + (simplify_binary_operation_1): Likewise. + (simplify_const_relational_operation): Likewise. + (simplify_ternary_operation): Likewise. + * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * cse.c (cse_insn): Add is_a checks. + * reload.c (push_reload): Likewise. + (find_reloads): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (find_split_point): Add is_a checks. + (make_compound_operation_int): Likewise. + (change_zero_ext): Likewise. + * expr.c (convert_move): Likewise. + (convert_modes): Likewise. + * fwprop.c (forward_propagate_subreg): Likewise. + * loop-iv.c (get_biv_step_1): Likewise. + * optabs.c (widen_operand): Likewise. + * postreload.c (move2add_valid_value_p): Likewise. + * recog.c (simplify_while_replacing): Likewise. + * simplify-rtx.c (simplify_unary_operation_1): Likewise. + (simplify_binary_operation_1): Likewise. Remove redundant + mode equality check. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (combine_simplify_rtx): Add checks for + is_a . + (simplify_if_then_else): Likewise. + (make_field_assignment): Likewise. + (simplify_comparison): Likewise. + * ifcvt.c (noce_try_bitop): Likewise. + * loop-invariant.c (canonicalize_address_mult): Likewise. + * simplify-rtx.c (simplify_unary_operation_1): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * gimple-fold.c (gimple_fold_builtin_memory_op): Use + is_a instead of != BLKmode. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * cfgexpand.c (expand_debug_expr): Use is_a + instead of != VOIDmode. + * combine.c (if_then_else_cond): Likewise. + (change_zero_ext): Likewise. + * dwarf2out.c (mem_loc_descriptor): Likewise. + (loc_descriptor): Likewise. + * rtlanal.c (canonicalize_condition): Likewise. + * simplify-rtx.c (simplify_relational_operation_1): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * simplify-rtx.c (simplify_binary_operation_1): Use + is_a instead of !VECTOR_MODE_P. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * wide-int.h (int_traits) New class. + (int_traits) Likewise. + * cfgexpand.c (expand_debug_expr): Use is_a . + Use GET_MODE_UNIT_PRECISION and remove redundant test for + SCALAR_INT_MODE_P. + * combine.c (set_nonzero_bits_and_sign_copies): Use + is_a . + (find_split_point): Likewise. + (combine_simplify_rtx): Likewise. + (simplify_logical): Likewise. + (expand_compound_operation): Likewise. + (expand_field_assignment): Likewise. + (make_compound_operation): Likewise. + (extended_count): Likewise. + (change_zero_ext): Likewise. + (simplify_comparison): Likewise. + * dwarf2out.c (scompare_loc_descriptor): Likewise. + (ucompare_loc_descriptor): Likewise. + (minmax_loc_descriptor): Likewise. + (mem_loc_descriptor): Likewise. + (loc_descriptor): Likewise. + * expmed.c (init_expmed_one_mode): Likewise. + * lra-constraints.c (lra_constraint_offset): Likewise. + * optabs.c (prepare_libcall_arg): Likewise. + * postreload.c (move2add_note_store): Likewise. + * reload.c (operands_match_p): Likewise. + * rtl.h (load_extend_op): Likewise. + * rtlhooks.c (gen_lowpart_general): Likewise. + * simplify-rtx.c (simplify_truncation): Likewise. + (simplify_unary_operation_1): Likewise. + (simplify_binary_operation_1): Likewise. + (simplify_const_binary_operation): Likewise. + (simplify_const_relational_operation): Likewise. + (simplify_subreg): Likewise. + * stor-layout.c (bitwise_mode_for_mode): Likewise. + * var-tracking.c (adjust_mems): Likewise. + (prepare_call_arguments): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (is_int_mode): New fuction. + * combine.c (find_split_point): Use it. + (combine_simplify_rtx): Likewise. + (simplify_if_then_else): Likewise. + (simplify_set): Likewise. + (simplify_shift_const_1): Likewise. + (simplify_comparison): Likewise. + * config/aarch64/aarch64.c (aarch64_rtx_costs): Likewise. + * cse.c (notreg_cost): Likewise. + (cse_insn): Likewise. + * cselib.c (cselib_lookup_1): Likewise. + * dojump.c (do_jump_1): Likewise. + (do_compare_rtx_and_jump): Likewise. + * dse.c (get_call_args): Likewise. + * dwarf2out.c (rtl_for_decl_init): Likewise. + (native_encode_initializer): Likewise. + * expmed.c (emit_store_flag_1): Likewise. + (emit_store_flag): Likewise. + * expr.c (convert_modes): Likewise. + (store_field): Likewise. + (expand_expr_real_1): Likewise. + * fold-const.c (fold_read_from_constant_string): Likewise. + * gimple-ssa-sprintf.c (get_format_string): Likewise. + * optabs-libfuncs.c (gen_int_libfunc): Likewise. + * optabs.c (expand_binop): Likewise. + (expand_unop): Likewise. + (expand_abs_nojump): Likewise. + (expand_one_cmpl_abs_nojump): Likewise. + * simplify-rtx.c (mode_signbit_p): Likewise. + (val_signbit_p): Likewise. + (val_signbit_known_set_p): Likewise. + (val_signbit_known_clear_p): Likewise. + (simplify_relational_operation_1): Likewise. + * tree.c (vector_type_mode): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (smallest_mode_for_size): Fix formatting. + (smallest_int_mode_for_size): New function. + * cfgexpand.c (expand_debug_expr): Use smallest_int_mode_for_size + instead of smallest_mode_for_size. + * combine.c (make_extraction): Likewise. + * config/arc/arc.c (arc_expand_movmem): Likewise. + * config/arm/arm.c (arm_expand_divmod_libfunc): Likewise. + * config/i386/i386.c (ix86_get_mask_mode): Likewise. + * config/s390/s390.c (s390_expand_insv): Likewise. + * config/sparc/sparc.c (assign_int_registers): Likewise. + * config/spu/spu.c (spu_function_value): Likewise. + (spu_function_arg): Likewise. + * coverage.c (get_gcov_type): Likewise. + (get_gcov_unsigned_t): Likewise. + * dse.c (find_shift_sequence): Likewise. + * expmed.c (store_bit_field_1): Likewise. + * expr.c (convert_move): Likewise. + (store_field): Likewise. + * internal-fn.c (expand_arith_overflow): Likewise. + * optabs-query.c (get_best_extraction_insn): Likewise. + * optabs.c (expand_twoval_binop_libfunc): Likewise. + * stor-layout.c (layout_type): Likewise. + (initialize_sizetypes): Likewise. + * targhooks.c (default_get_mask_mode): Likewise. + * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (opt_mode::else_blk): New function. + (int_mode_for_mode): Declare. + * stor-layout.c (int_mode_for_mode): Return an opt_scalar_int_mode. + * builtins.c (expand_builtin_signbit): Adjust for new int_mode_for_mode + return type. + * cfgexpand.c (expand_debug_expr): Likewise. + * combine.c (gen_lowpart_or_truncate): Likewise. + (gen_lowpart_for_combine): Likewise. + * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Likewise. + * config/avr/avr.c (avr_to_int_mode): Likewise. + (avr_out_plus_1): Likewise. + (avr_out_plus): Likewise. + (avr_out_round): Likewise. + * config/i386/i386.c (ix86_split_to_parts): Likewise. + * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise. + (s390_expand_vcond): Likewise. + * config/spu/spu.c (spu_split_immediate): Likewise. + (spu_expand_mov): Likewise. + * dse.c (get_stored_val): Likewise. + * expmed.c (store_bit_field_1): Likewise. + (convert_extracted_bit_field): Use int_mode_for_mode instead of + int_mode_for_size. + (extract_bit_field_1): Adjust for new int_mode_for_mode return type. + (extract_low_bits): Likewise. + * expr.c (emit_group_load_1): Likewise. Separate out the BLKmode + handling rather than repeating the check. + (emit_group_store): Likewise. + (emit_move_via_integer): Adjust for new int_mode_for_mode return type. + * optabs.c (expand_absneg_bit): Likewise. + (expand_copysign_absneg): Likewise. + (expand_copysign_bit): Likewise. + * tree-if-conv.c (ifcvt_can_use_mask_load_store): Likewise. + * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise. + * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise. + * var-tracking.c (prepare_call_arguments): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Use + int_mode_for_mode instead of mode_for_size. + * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (int_mode_for_size): New function. + * builtins.c (set_builtin_user_assembler_name): Use int_mode_for_size + instead of mode_for_size. + * calls.c (save_fixed_argument_area): Likewise. Make use of BLKmode + explicit. + * combine.c (expand_field_assignment): Use int_mode_for_size + instead of mode_for_size. + (make_extraction): Likewise. + (simplify_shift_const_1): Likewise. + (simplify_comparison): Likewise. + * dojump.c (do_jump): Likewise. + * dwarf2out.c (mem_loc_descriptor): Likewise. + * emit-rtl.c (init_derived_machine_modes): Likewise. + * expmed.c (flip_storage_order): Likewise. + (convert_extracted_bit_field): Likewise. + * expr.c (copy_blkmode_from_reg): Likewise. + * graphite-isl-ast-to-gimple.c (max_mode_int_precision): Likewise. + * internal-fn.c (expand_mul_overflow): Likewise. + * lower-subreg.c (simple_move): Likewise. + * optabs-libfuncs.c (init_optabs): Likewise. + * simplify-rtx.c (simplify_unary_operation_1): Likewise. + * tree.c (vector_type_mode): Likewise. + * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise. + * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Likewise. + * tree-vect-generic.c (expand_vector_parallel): Likewise. + * tree-vect-stmts.c (vectorizable_load): Likewise. + (vectorizable_store): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * coretypes.h (pod_mode): New type. + (scalar_int_mode_pod): New typedef. + * machmode.h (pod_mode): New class. + (int_n_data_t::m): Change type to scalar_int_mode_pod. + * genmodes.c (emit_mode_int_n): Update accordingly. + * lower-subreg.h (target_lower_subreg): Change type to + scalar_int_mode_pod. + * gdbhooks.py (build_pretty_printer): Handle pod_mode and + scalar_int_mode_pod. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * config/powerpcspe/powerpcspe.h (rs6000_pmode): Change type from + machine_mode to scalar_int_mode. + * config/powerpcspe/powerpcspe.c (rs6000_pmode): Likewise. + (rs6000_option_override_internal): Remove cast to int. + * config/rs6000/rs6000.h (rs6000_pmode): Change type from + machine_mode to scalar_int_mode. + * config/rs6000/rs6000.c (rs6000_pmode): Likewise. + (rs6000_option_override_internal): Remove cast to int. + * config/s390/s390.h (Pmode): Remove cast to machine_mode. + * config/epiphany/epiphany.h (RTX_OK_FOR_OFFSET_P): Add cast + to machine_mode. + * config/s390/s390.c (s390_expand_builtin): Likewise. + * coretypes.h (scalar_int_mode): New type. + (opt_scalar_int_mode): New typedef. + * machmode.h (scalar_int_mode): New class. + (scalar_int_mode::includes_p): New function. + (byte_mode): Change type to scalar_int_mode. + (word_mode): Likewise. + (ptr_mode): Likewise. + * emit-rtl.c (byte_mode): Likewise. + (word_mode): Likewise. + (ptr_mode): Likewise. + (init_derived_machine_modes): Update accordingly. + * genmodes.c (get_mode_class): Return scalar_int_mode for MODE_INT + and MODE_PARTIAL_INT. + * gdbhooks.py (build_pretty_printer): Handle scalar_int_mode and + opt_scalar_int_mode. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (libgcc_floating_mode_supported_p): Take a + scalar_float_mode. + * doc/tm.texi: Regenerate. + * targhooks.h (default_libgcc_floating_mode_supported_p): Take a + scalar_float_mode. + * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise. + * config/aarch64/aarch64.c (aarch64_libgcc_floating_mode_supported_p): + Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (default_floatn_mode): Return an opt_scalar_float_mode. + * doc/tm.texi: Regenerate. + * config/arm/arm.c (arm_floatn_mode): Return an opt_scalar_float_mode. + * config/powerpcspe/powerpcspe.c (rs6000_floatn_mode): Likewise. + * config/rs6000/rs6000.c (rs6000_floatn_mode): Likewise. + * targhooks.h (default_floatn_mode): Likewise. + * targhooks.c (default_floatn_mode): Likewise. + * tree.c (build_common_tree_nodes): Update accordingly. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (mode_iterator::start): Provide overload for opt_modes. + (mode_iterator::iterate_p): Likewise. + (mode_iterator::get_wider): Likewise. + * expr.c (init_expr_target): Use opt_scalar_float_mode. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * coretypes.h (opt_scalar_float_mode): New typedef. + * machmode.h (float_mode_for_size): New function. + * emit-rtl.c (double_mode): Delete. + (init_emit_once): Use float_mode_for_size. + * stor-layout.c (layout_type): Likewise. + * gdbhooks.py (build_pretty_printer): Handle opt_scalar_float_mode. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * output.h (assemble_real): Take a scalar_float_mode. + * config/arm/arm.c (arm_assemble_integer): Update accordingly. + * config/arm/arm.md (consttable_4): Likewise. + (consttable_8): Likewise. + (consttable_16): Likewise. + * config/mips/mips.md (consttable_float): Likewise. + * config/s390/s390.c (s390_output_pool_entry): Likewise. + * varasm.c (assemble_real): Take a scalar_float_mode. + (output_constant_pool_2): Update accordingly. + (output_constant): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * tree.h (SCALAR_FLOAT_TYPE_MODE): New macro. + * builtins.c (expand_builtin_signbit): Use it instead of TYPE_MODE. + * fold-const.c (fold_convert_const_real_from_fixed): Likewise. + (native_encode_real): Likewise. + (native_interpret_real): Likewise. + * hsa-brig.c (emit_immediate_scalar_to_buffer): Likewise. + * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * optabs-libfuncs.c (gen_trunc_conv_libfunc): Use is_a + . Simplify. + (gen_extend_conv_libfunc): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * coretypes.h (scalar_float_mode): New type. + * machmode.h (mode_traits::from_int): Use machine_mode if + USE_ENUM_MODES is defined. + (is_a): New function. + (as_a): Likewise. + (dyn_cast): Likewise. + (scalar_float_mode): New class. + (scalar_float_mode::includes_p): New function. + (is_float_mode): Likewise. + * gdbhooks.py (MachineModePrinter): New class. + (build_pretty_printer): Use it for scalar_float_mode. + * real.h (FLOAT_MODE_FORMAT): Use as_a . + (format_helper::format_helper): Turn into a template. + * genmodes.c (get_mode_class): New function. + (emit_insn_modes_h): Give modes the class returned by get_mode_class, + or machine_mode if none. + * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Use + as_a . + * dwarf2out.c (mem_loc_descriptor): Likewise. + (insert_float): Likewise. + (add_const_value_attribute): Likewise. + * simplify-rtx.c (simplify_immed_subreg): Likewise. + * optabs.c (expand_absneg_bit): Take a scalar_float_mode. + (expand_unop): Update accordingly. + (expand_abs_nojump): Likewise. + (expand_copysign_absneg): Take a scalar_float_mode. + (expand_copysign_bit): Likewise. + (expand_copysign): Update accordingly. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * coretypes.h (opt_mode): New class. + * machmode.h (opt_mode): Likewise. + (opt_mode::else_void): New function. + (opt_mode::require): Likewise. + (opt_mode::exists): Likewise. + (GET_MODE_WIDER_MODE): Turn into a function and return an opt_mode. + (GET_MODE_2XWIDER_MODE): Likewise. + (mode_iterator::get_wider): Update accordingly. + (mode_iterator::get_2xwider): Likewise. + (mode_iterator::get_known_wider): Likewise, turning into a template. + * combine.c (make_extraction): Update use of GET_MODE_WIDER_MODE, + forcing a wider mode to exist. + * config/cr16/cr16.h (LONG_REG_P): Likewise. + * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise. + * config/c6x/c6x.c (c6x_rtx_costs): Update use of + GET_MODE_2XWIDER_MODE, forcing a wider mode to exist. + * lower-subreg.c (init_lower_subreg): Likewise. + * optabs-libfuncs.c (init_sync_libfuncs_1): Likewise, but not + on the final iteration. + * config/i386/i386.c (ix86_expand_set_or_movmem): Check whether + a wider mode exists before asking for a move pattern. + (get_mode_wider_vector): Update use of GET_MODE_WIDER_MODE, + forcing a wider mode to exist. + (expand_vselect_vconcat): Update use of GET_MODE_2XWIDER_MODE, + returning false if no such mode exists. + * config/ia64/ia64.c (expand_vselect_vconcat): Likewise. + * config/mips/mips.c (mips_expand_vselect_vconcat): Likewise. + * expmed.c (init_expmed_one_mode): Update use of GET_MODE_WIDER_MODE. + Avoid checking for a MODE_INT if we already know the mode is not a + SCALAR_INT_MODE_P. + (extract_high_half): Update use of GET_MODE_WIDER_MODE, + forcing a wider mode to exist. + (expmed_mult_highpart_optab): Likewise. + (expmed_mult_highpart): Likewise. + * expr.c (expand_expr_real_2): Update use of GET_MODE_WIDER_MODE, + using else_void. + * lto-streamer-in.c (lto_input_mode_table): Likewise. + * optabs-query.c (find_widening_optab_handler_and_mode): Likewise. + * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise. + * internal-fn.c (expand_mul_overflow): Update use of + GET_MODE_2XWIDER_MODE. + * omp-low.c (omp_clause_aligned_alignment): Likewise. + * tree-ssa-math-opts.c (convert_mult_to_widen): Update use of + GET_MODE_WIDER_MODE. + (convert_plusminus_to_widen): Likewise. + * tree-switch-conversion.c (array_value_type): Likewise. + * var-tracking.c (emit_note_insn_var_location): Likewise. + * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise. + Return false inside rather than outside the loop if no wider mode + exists + * optabs.c (expand_binop): Update use of GET_MODE_WIDER_MODE + and GET_MODE_2XWIDER_MODE + (can_compare_p): Use else_void. + * gdbhooks.py (OptMachineModePrinter): New class. + (build_pretty_printer): Use it for opt_mode. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-switch-conversion.c (array_value_type): Only read TYPE_MODE + once. Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * machmode.h (mode_traits): New structure. + (get_narrowest_mode): New function. + (mode_iterator::start): Likewise. + (mode_iterator::iterate_p): Likewise. + (mode_iterator::get_wider): Likewise. + (mode_iterator::get_known_wider): Likewise. + (mode_iterator::get_2xwider): Likewise. + (FOR_EACH_MODE_IN_CLASS): New mode iterator. + (FOR_EACH_MODE): Likewise. + (FOR_EACH_MODE_FROM): Likewise. + (FOR_EACH_MODE_UNTIL): Likewise. + (FOR_EACH_WIDER_MODE): Likewise. + (FOR_EACH_2XWIDER_MODE): Likewise. + * builtins.c (expand_builtin_strlen): Use new mode iterators. + * combine.c (simplify_comparison): Likewise + * config/i386/i386.c (type_natural_mode): Likewise. + * cse.c (cse_insn): Likewise. + * dse.c (find_shift_sequence): Likewise. + * emit-rtl.c (init_derived_machine_modes): Likewise. + (init_emit_once): Likewise. + * explow.c (hard_function_value): Likewise. + * expmed.c (extract_fixed_bit_field_1): Likewise. + (extract_bit_field_1): Likewise. + (expand_divmod): Likewise. + (emit_store_flag_1): Likewise. + * expr.c (init_expr_target): Likewise. + (convert_move): Likewise. + (alignment_for_piecewise_move): Likewise. + (widest_int_mode_for_size): Likewise. + (emit_block_move_via_movmem): Likewise. + (copy_blkmode_to_reg): Likewise. + (set_storage_via_setmem): Likewise. + (compress_float_constant): Likewise. + * omp-low.c (omp_clause_aligned_alignment): Likewise. + * optabs-query.c (get_best_extraction_insn): Likewise. + * optabs.c (expand_binop): Likewise. + (expand_twoval_unop): Likewise. + (expand_twoval_binop): Likewise. + (widen_leading): Likewise. + (widen_bswap): Likewise. + (expand_parity): Likewise. + (expand_unop): Likewise. + (prepare_cmp_insn): Likewise. + (prepare_float_lib_cmp): Likewise. + (expand_float): Likewise. + (expand_fix): Likewise. + (expand_sfix_optab): Likewise. + * postreload.c (move2add_use_add2_insn): Likewise. + * reg-stack.c (reg_to_stack): Likewise. + * reginfo.c (choose_hard_reg_mode): Likewise. + * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise. + * stor-layout.c (mode_for_size): Likewise. + (smallest_mode_for_size): Likewise. + (mode_for_vector): Likewise. + (finish_bitfield_representative): Likewise. + * tree-ssa-math-opts.c (target_supports_divmod_p): Likewise. + * tree-vect-generic.c (type_for_widest_vector_mode): Likewise. + * tree-vect-stmts.c (vectorizable_conversion): Likewise. + * var-tracking.c (prepare_call_arguments): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * genconditions.c (write_header): Add a "#define USE_ENUM_MODES". + * genmodes.c (emit_insn_modes_h): Define FOOmode to E_FOOmode if + USE_ENUM_MODES is defined and to ((void) 0, E_FOOmode) otherwise. + * machmode.h (mode_size): Move earlier in file. + (mode_precision): Likewise. + (mode_inner): Likewise. + (mode_nunits): Likewise. + (mode_unit_size): Likewise. + (unit_unit_precision): Likewise. + (mode_wider): Likewise. + (mode_2xwider): Likewise. + (machine_mode): New class. + (mode_to_bytes): New function. + (mode_to_bits): Likewise. + (mode_to_precision): Likewise. + (mode_to_inner): Likewise. + (mode_to_unit_size): Likewise. + (mode_to_unit_precision): Likewise. + (mode_to_nunits): Likewise. + (GET_MODE_SIZE): Use mode_to_bytes. + (GET_MODE_BITSIZE): Use mode_to_bits. + (GET_MODE_PRECISION): Use mode_to_precision. + (GET_MODE_INNER): Use mode_to_inner. + (GET_MODE_UNIT_SIZE): Use mode_to_unit_size. + (GET_MODE_UNIT_PRECISION): Use mode_to_unit_precision. + (GET_MODE_NUNITS): Use mode_to_nunits. + * system.h (ALWAYS_INLINE): New macro. + * config/powerpcspe/powerpcspe-c.c + (altivec_resolve_overloaded_builtin): Use machine_mode instead of + int for arg1_mode and arg2_mode. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type): + Prefix mode names with E_ in case statements. + * config/aarch64/aarch64-elf.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. + * config/aarch64/aarch64.c (aarch64_split_simd_combine): Likewise. + (aarch64_split_simd_move): Likewise. + (aarch64_gen_storewb_pair): Likewise. + (aarch64_gen_loadwb_pair): Likewise. + (aarch64_gen_store_pair): Likewise. + (aarch64_gen_load_pair): Likewise. + (aarch64_get_condition_code_1): Likewise. + (aarch64_constant_pool_reload_icode): Likewise. + (get_rsqrte_type): Likewise. + (get_rsqrts_type): Likewise. + (get_recpe_type): Likewise. + (get_recps_type): Likewise. + (aarch64_gimplify_va_arg_expr): Likewise. + (aarch64_simd_container_mode): Likewise. + (aarch64_emit_load_exclusive): Likewise. + (aarch64_emit_store_exclusive): Likewise. + (aarch64_expand_compare_and_swap): Likewise. + (aarch64_gen_atomic_cas): Likewise. + (aarch64_emit_bic): Likewise. + (aarch64_emit_atomic_swap): Likewise. + (aarch64_emit_atomic_load_op): Likewise. + (aarch64_evpc_trn): Likewise. + (aarch64_evpc_uzp): Likewise. + (aarch64_evpc_zip): Likewise. + (aarch64_evpc_ext): Likewise. + (aarch64_evpc_rev): Likewise. + (aarch64_evpc_dup): Likewise. + (aarch64_gen_ccmp_first): Likewise. + (aarch64_gen_ccmp_next): Likewise. + * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise. + (alpha_emit_xfloating_libcall): Likewise. + (emit_insxl): Likewise. + (alpha_arg_type): Likewise. + * config/arc/arc.c (arc_vector_mode_supported_p): Likewise. + (arc_preferred_simd_mode): Likewise. + (arc_secondary_reload): Likewise. + (get_arc_condition_code): Likewise. + (arc_print_operand): Likewise. + (arc_legitimate_constant_p): Likewise. + * config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. + * config/arc/arc.md (casesi_load): Likewise. + (casesi_compact_jump): Likewise. + * config/arc/predicates.md (proper_comparison_operator): Likewise. + (cc_use_register): Likewise. + * config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. + * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise. + (arm_init_iwmmxt_builtins): Likewise. + * config/arm/arm.c (thumb1_size_rtx_costs): Likewise. + (neon_expand_vector_init): Likewise. + (arm_attr_length_move_neon): Likewise. + (maybe_get_arm_condition_code): Likewise. + (arm_emit_vector_const): Likewise. + (arm_preferred_simd_mode): Likewise. + (arm_output_iwmmxt_tinsr): Likewise. + (thumb1_output_casesi): Likewise. + (thumb2_output_casesi): Likewise. + (arm_emit_load_exclusive): Likewise. + (arm_emit_store_exclusive): Likewise. + (arm_expand_compare_and_swap): Likewise. + (arm_evpc_neon_vuzp): Likewise. + (arm_evpc_neon_vzip): Likewise. + (arm_evpc_neon_vrev): Likewise. + (arm_evpc_neon_vtrn): Likewise. + (arm_evpc_neon_vext): Likewise. + (arm_validize_comparison): Likewise. + * config/arm/neon.md (neon_vc): Likewise. + * config/avr/avr-c.c (avr_resolve_overloaded_builtin): Likewise. + * config/avr/avr.c (avr_rtx_costs_1): Likewise. + * config/c6x/c6x.c (c6x_vector_mode_supported_p): Likewise. + (c6x_preferred_simd_mode): Likewise. + * config/epiphany/epiphany.c (get_epiphany_condition_code): Likewise. + (epiphany_rtx_costs): Likewise. + * config/epiphany/predicates.md (proper_comparison_operator): + Likewise. + * config/frv/frv.c (condexec_memory_operand): Likewise. + (frv_emit_move): Likewise. + (output_move_single): Likewise. + (output_condmove_single): Likewise. + (frv_hard_regno_mode_ok): Likewise. + (frv_matching_accg_mode): Likewise. + * config/h8300/h8300.c (split_adds_subs): Likewise. + (h8300_rtx_costs): Likewise. + (h8300_print_operand): Likewise. + (compute_mov_length): Likewise. + (output_logical_op): Likewise. + (compute_logical_op_length): Likewise. + (compute_logical_op_cc): Likewise. + (h8300_shift_needs_scratch_p): Likewise. + (output_a_shift): Likewise. + (compute_a_shift_length): Likewise. + (compute_a_shift_cc): Likewise. + (expand_a_rotate): Likewise. + (output_a_rotate): Likewise. + * config/i386/i386.c (classify_argument): Likewise. + (function_arg_advance_32): Likewise. + (function_arg_32): Likewise. + (function_arg_64): Likewise. + (function_value_64): Likewise. + (ix86_gimplify_va_arg): Likewise. + (ix86_legitimate_constant_p): Likewise. + (put_condition_code): Likewise. + (split_double_mode): Likewise. + (ix86_avx256_split_vector_move_misalign): Likewise. + (ix86_expand_vector_logical_operator): Likewise. + (ix86_split_idivmod): Likewise. + (ix86_expand_adjust_ufix_to_sfix_si): Likewise. + (ix86_build_const_vector): Likewise. + (ix86_build_signbit_mask): Likewise. + (ix86_match_ccmode): Likewise. + (ix86_cc_modes_compatible): Likewise. + (ix86_expand_branch): Likewise. + (ix86_expand_sse_cmp): Likewise. + (ix86_expand_sse_movcc): Likewise. + (ix86_expand_int_sse_cmp): Likewise. + (ix86_expand_vec_perm_vpermi2): Likewise. + (ix86_expand_vec_perm): Likewise. + (ix86_expand_sse_unpack): Likewise. + (ix86_expand_int_addcc): Likewise. + (ix86_split_to_parts): Likewise. + (ix86_vectorize_builtin_gather): Likewise. + (ix86_vectorize_builtin_scatter): Likewise. + (avx_vpermilp_parallel): Likewise. + (inline_memory_move_cost): Likewise. + (ix86_tieable_integer_mode_p): Likewise. + (x86_maybe_negate_const_int): Likewise. + (ix86_expand_vector_init_duplicate): Likewise. + (ix86_expand_vector_init_one_nonzero): Likewise. + (ix86_expand_vector_init_one_var): Likewise. + (ix86_expand_vector_init_concat): Likewise. + (ix86_expand_vector_init_interleave): Likewise. + (ix86_expand_vector_init_general): Likewise. + (ix86_expand_vector_set): Likewise. + (ix86_expand_vector_extract): Likewise. + (emit_reduc_half): Likewise. + (ix86_emit_i387_round): Likewise. + (ix86_mangle_type): Likewise. + (ix86_expand_round_sse4): Likewise. + (expand_vec_perm_blend): Likewise. + (canonicalize_vector_int_perm): Likewise. + (ix86_expand_vec_one_operand_perm_avx512): Likewise. + (expand_vec_perm_1): Likewise. + (expand_vec_perm_interleave3): Likewise. + (expand_vec_perm_even_odd_pack): Likewise. + (expand_vec_perm_even_odd_1): Likewise. + (expand_vec_perm_broadcast_1): Likewise. + (ix86_vectorize_vec_perm_const_ok): Likewise. + (ix86_expand_vecop_qihi): Likewise. + (ix86_expand_mul_widen_hilo): Likewise. + (ix86_expand_sse2_abs): Likewise. + (ix86_expand_pextr): Likewise. + (ix86_expand_pinsr): Likewise. + (ix86_preferred_simd_mode): Likewise. + (ix86_simd_clone_compute_vecsize_and_simdlen): Likewise. + * config/i386/sse.md (*andnot3): Likewise. + (3): Likewise. + (*3): Likewise. + * config/ia64/ia64.c (ia64_expand_vecint_compare): Likewise. + (ia64_expand_atomic_op): Likewise. + (ia64_arg_type): Likewise. + (ia64_mode_to_int): Likewise. + (ia64_scalar_mode_supported_p): Likewise. + (ia64_vector_mode_supported_p): Likewise. + (expand_vec_perm_broadcast): Likewise. + * config/iq2000/iq2000.c (iq2000_move_1word): Likewise. + (iq2000_function_arg_advance): Likewise. + (iq2000_function_arg): Likewise. + * config/m32c/m32c.c (m32c_preferred_reload_class): Likewise. + * config/m68k/m68k.c (output_dbcc_and_branch): Likewise. + (m68k_libcall_value): Likewise. + (m68k_function_value): Likewise. + (sched_attr_op_type): Likewise. + * config/mcore/mcore.c (mcore_output_move): Likewise. + * config/microblaze/microblaze.c (microblaze_function_arg_advance): + Likewise. + (microblaze_function_arg): Likewise. + * config/mips/mips.c (mips16_build_call_stub): Likewise. + (mips_print_operand): Likewise. + (mips_mode_ok_for_mov_fmt_p): Likewise. + (mips_vector_mode_supported_p): Likewise. + (mips_preferred_simd_mode): Likewise. + (mips_expand_vpc_loongson_even_odd): Likewise. + (mips_expand_vec_unpack): Likewise. + (mips_expand_vi_broadcast): Likewise. + (mips_expand_vector_init): Likewise. + (mips_expand_vec_reduc): Likewise. + (mips_expand_msa_cmp): Likewise. + * config/mips/mips.md (casesi_internal_mips16_): Likewise. + * config/mn10300/mn10300.c (mn10300_print_operand): Likewise. + (cc_flags_for_mode): Likewise. + * config/msp430/msp430.c (msp430_print_operand): Likewise. + * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Likewise. + (nds32_output_casesi_pc_relative): Likewise. + * config/nds32/nds32.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. + * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Likewise. + (nvptx_gen_unpack): Likewise. + (nvptx_gen_pack): Likewise. + (nvptx_gen_shuffle): Likewise. + (nvptx_gen_wcast): Likewise. + (nvptx_preferred_simd_mode): Likewise. + * config/pa/pa.c (pa_secondary_reload): Likewise. + * config/pa/predicates.md (base14_operand): Likewise. + * config/powerpcspe/powerpcspe-c.c + (altivec_resolve_overloaded_builtin): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_setup_reg_addr_masks): + Likewise. + (rs6000_preferred_simd_mode): Likewise. + (output_vec_const_move): Likewise. + (rs6000_expand_vector_extract): Likewise. + (rs6000_split_vec_extract_var): Likewise. + (reg_offset_addressing_ok_p): Likewise. + (rs6000_legitimate_offset_address_p): Likewise. + (rs6000_legitimize_address): Likewise. + (rs6000_emit_set_const): Likewise. + (rs6000_const_vec): Likewise. + (rs6000_emit_move): Likewise. + (spe_build_register_parallel): Likewise. + (rs6000_darwin64_record_arg_recurse): Likewise. + (swap_selector_for_mode): Likewise. + (spe_init_builtins): Likewise. + (paired_init_builtins): Likewise. + (altivec_init_builtins): Likewise. + (do_load_for_compare): Likewise. + (rs6000_generate_compare): Likewise. + (rs6000_expand_float128_convert): Likewise. + (emit_load_locked): Likewise. + (emit_store_conditional): Likewise. + (rs6000_output_function_epilogue): Likewise. + (rs6000_handle_altivec_attribute): Likewise. + (rs6000_function_value): Likewise. + (emit_fusion_gpr_load): Likewise. + (emit_fusion_p9_load): Likewise. + (emit_fusion_p9_store): Likewise. + * config/powerpcspe/predicates.md (easy_fp_constant): Likewise. + (fusion_gpr_mem_load): Likewise. + (fusion_addis_mem_combo_load): Likewise. + (fusion_addis_mem_combo_store): Likewise. + * config/rs6000/predicates.md (easy_fp_constant): Likewise. + (fusion_gpr_mem_load): Likewise. + (fusion_addis_mem_combo_load): Likewise. + (fusion_addis_mem_combo_store): Likewise. + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + Likewise. + * config/rs6000/rs6000-string.c (do_load_for_compare): Likewise. + * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise. + (rs6000_preferred_simd_mode): Likewise. + (output_vec_const_move): Likewise. + (rs6000_expand_vector_extract): Likewise. + (rs6000_split_vec_extract_var): Likewise. + (reg_offset_addressing_ok_p): Likewise. + (rs6000_legitimate_offset_address_p): Likewise. + (rs6000_legitimize_address): Likewise. + (rs6000_emit_set_const): Likewise. + (rs6000_const_vec): Likewise. + (rs6000_emit_move): Likewise. + (rs6000_darwin64_record_arg_recurse): Likewise. + (swap_selector_for_mode): Likewise. + (paired_init_builtins): Likewise. + (altivec_init_builtins): Likewise. + (rs6000_expand_float128_convert): Likewise. + (emit_load_locked): Likewise. + (emit_store_conditional): Likewise. + (rs6000_output_function_epilogue): Likewise. + (rs6000_handle_altivec_attribute): Likewise. + (rs6000_function_value): Likewise. + (emit_fusion_gpr_load): Likewise. + (emit_fusion_p9_load): Likewise. + (emit_fusion_p9_store): Likewise. + * config/rx/rx.c (rx_gen_move_template): Likewise. + (flags_from_mode): Likewise. + * config/s390/predicates.md (s390_alc_comparison): Likewise. + (s390_slb_comparison): Likewise. + * config/s390/s390.c (s390_handle_vectorbool_attribute): Likewise. + (s390_vector_mode_supported_p): Likewise. + (s390_cc_modes_compatible): Likewise. + (s390_match_ccmode_set): Likewise. + (s390_canonicalize_comparison): Likewise. + (s390_emit_compare_and_swap): Likewise. + (s390_branch_condition_mask): Likewise. + (s390_rtx_costs): Likewise. + (s390_secondary_reload): Likewise. + (__SECONDARY_RELOAD_CASE): Likewise. + (s390_expand_cs): Likewise. + (s390_preferred_simd_mode): Likewise. + * config/s390/vx-builtins.md (vec_packsu_u): Likewise. + * config/sh/sh.c (sh_print_operand): Likewise. + (dump_table): Likewise. + (sh_secondary_reload): Likewise. + * config/sh/sh.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. + * config/sh/sh.md (casesi_worker_1): Likewise. + (casesi_worker_2): Likewise. + * config/sparc/predicates.md (icc_comparison_operator): Likewise. + (fcc_comparison_operator): Likewise. + * config/sparc/sparc.c (sparc_expand_move): Likewise. + (emit_soft_tfmode_cvt): Likewise. + (sparc_preferred_simd_mode): Likewise. + (output_cbranch): Likewise. + (sparc_print_operand): Likewise. + (sparc_expand_vec_perm_bmask): Likewise. + (vector_init_bshuffle): Likewise. + * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise. + (spu_vector_mode_supported_p): Likewise. + (spu_expand_insv): Likewise. + (spu_emit_branch_or_set): Likewise. + (spu_handle_vector_attribute): Likewise. + (spu_builtin_splats): Likewise. + (spu_builtin_extract): Likewise. + (spu_builtin_promote): Likewise. + (spu_expand_sign_extend): Likewise. + * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise. + (tilegx_simd_int): Likewise. + * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p): Likewise. + (tilepro_simd_int): Likewise. + * config/v850/v850.c (const_double_split): Likewise. + (v850_print_operand): Likewise. + (ep_memory_offset): Likewise. + * config/vax/vax.c (vax_rtx_costs): Likewise. + (vax_output_int_move): Likewise. + (vax_output_int_add): Likewise. + (vax_output_int_subtract): Likewise. + * config/visium/predicates.md (visium_branch_operator): Likewise. + * config/visium/visium.c (rtx_ok_for_offset_p): Likewise. + (visium_print_operand_address): Likewise. + * config/visium/visium.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. + * config/xtensa/xtensa.c (xtensa_mem_offset): Likewise. + (xtensa_expand_conditional_branch): Likewise. + (xtensa_copy_incoming_a7): Likewise. + (xtensa_output_literal): Likewise. + * dfp.c (decimal_real_maxval): Likewise. + * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * genmodes.c (mode_size_inline): Add an E_ prefix to mode names. + (mode_nunits_inline): Likewise. + (mode_inner_inline): Likewise. + (mode_unit_size_inline): Likewise. + (mode_unit_precision_inline): Likewise. + (emit_insn_modes_h): Likewise. Also emit a #define of the + unprefixed name. + (emit_mode_wider): Add an E_ prefix to mode names. + (emit_mode_complex): Likewise. + (emit_mode_inner): Likewise. + (emit_mode_adjustments): Likewise. + (emit_mode_int_n): Likewise. + * config/aarch64/aarch64-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP) + (v2si_UP, v2sf_UP, v1df_UP, di_UP, df_UP, v16qi_UP, v8hi_UP, v8hf_UP) + (v4si_UP, v4sf_UP, v2di_UP, v2df_UP, ti_UP, oi_UP, ci_UP, xi_UP) + (si_UP, sf_UP, hi_UP, hf_UP, qi_UP): Likewise. + (CRC32_BUILTIN, ENTRY): Likewise. + * config/aarch64/aarch64.c (aarch64_push_regs): Likewise. + (aarch64_pop_regs): Likewise. + (aarch64_process_components): Likewise. + * config/alpha/alpha.c (alpha_emit_conditional_move): Likewise. + * config/arm/arm-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP, v2si_UP) + (v2sf_UP, di_UP, v16qi_UP, v8hi_UP, v8hf_UP, v4si_UP, v4sf_UP) + (v2di_UP, ti_UP, ei_UP, oi_UP, hf_UP, si_UP, void_UP): Likewise. + * config/arm/arm.c (arm_init_libfuncs): Likewise. + * config/i386/i386-builtin-types.awk (ix86_builtin_type_vect_mode): + Likewise. + * config/i386/i386-builtin.def (pcmpestr): Likewise. + (pcmpistr): Likewise. + * config/microblaze/microblaze.c (double_memory_operand): Likewise. + * config/mmix/mmix.c (mmix_output_condition): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok): + Likewise. + * config/rl78/rl78.c (mduc_regs): Likewise. + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise. + (htm_expand_builtin): Likewise. + * config/sh/sh.h (REGISTER_NATURAL_MODE): Likewise. + * config/sparc/sparc.c (emit_save_or_restore_regs): Likewise. + * config/xtensa/xtensa.c (print_operand): Likewise. + * expmed.h (NUM_MODE_PARTIAL_INT): Likewise. + (NUM_MODE_VECTOR_INT): Likewise. + * genoutput.c (null_operand): Likewise. + (output_operand_data): Likewise. + * genrecog.c (print_parameter_value): Likewise. + * lra.c (debug_operand_data): Likewise. + +2017-08-30 Richard Sandiford + + * dwarf2out.c (scompare_loc_descriptor_wide) + (scompare_loc_descriptor_narrow): New functions, split out from... + (scompare_loc_descriptor): ...here. + * expmed.c (emit_store_flag_int): New function, split out from... + (emit_store_flag): ...here. + +2017-08-30 Richard Biener + + * dwarf2out.c (dwarf2out_finish): Remove setting AT_pubnames. + (dwarf2out_early_finish): Move setting of AT_pubnames from + early debug output to early finish. + +2017-08-30 Jozef Lawrynowicz + + * gcc/config/msp430/msp430.h: Pass -mcode/data-region to the linker + and -mdata-region to the assembler. + +2017-08-30 Richard Biener + + * dwarf2out.c (add_dwarf_attr): Check we don't add duplicate + attributes. + (gen_subprogram_die): Add DW_AT_object_pointer only early. + (dwarf2out_early_global_decl): Only generate a DIE for the + abstract origin if it doesn't already exist or is a declaration DIE. + (resolve_addr): Do not add the linkage name twice when + generating a stub DIE for the DW_TAG_GNU_call_site target. + +2017-08-30 Richard Sandiford + + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + Use machine_mode rather than int for arg1_mode. + +2017-08-29 Michael Meissner + + PR target/82015 + * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Insure + that the second argument of the built-in functions to unpack + 128-bit scalar types to 64-bit values is 0 or 1. Change to use a + switch statement instead a lot of if statements. + * config/rs6000/rs6000.md (unpack, FMOVE128_VSX iterator): + Allow 64-bit values to be in Altivec registers as well as + traditional floating point registers. + (pack, FMOVE128_VSX iterator): Likewise. + +2017-08-29 Alexander Monakov + + * ira-costs.c (record_address_regs): Handle both operands of PLUS for + MAX_REGS_PER_ADDRESS == 1. + +2017-08-29 Uros Bizjak + + * config/i386/i386.opt (flag_fentry): Do not init to -1. + * config/i386/i386.c (ix86_option_override_internal): Simplify + setting of opts->x_flag_entry. + +2017-08-29 Bill Schmidt + Jakub Jelinek + Richard Biener + + PR tree-optimization/81503 + * gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure + folded constant fits in the target type; reorder tests for clarity. + +2017-08-29 Martin Liska + + * passes.def: Include pass_lower_switch. + * stmt.c (dump_case_nodes): Remove and move to + tree-switch-conversion. + (case_values_threshold): Likewise. + (expand_switch_as_decision_tree_p): Likewise. + (emit_case_decision_tree): Likewise. + (expand_case): Likewise. + (balance_case_nodes): Likewise. + (node_has_low_bound): Likewise. + (node_has_high_bound): Likewise. + (node_is_bounded): Likewise. + (emit_case_nodes): Likewise. + (struct simple_case_node): New struct. + (add_case_node): Remove. + (emit_case_dispatch_table): Use vector instead of case_list. + (reset_out_edges_aux): Remove. + (compute_cases_per_edge): Likewise. + (expand_case): Build list of simple_case_node. + (expand_sjlj_dispatch_table): Use it. + * tree-switch-conversion.c (struct case_node): Moved from + stmt.c and adjusted. + (emit_case_nodes): Likewise. + (node_has_low_bound): Likewise. + (node_has_high_bound): Likewise. + (node_is_bounded): Likewise. + (case_values_threshold): Likewise. + (reset_out_edges_aux): Likewise. + (compute_cases_per_edge): Likewise. + (add_case_node): Likewise. + (dump_case_nodes): Likewise. + (balance_case_nodes): Likewise. + (expand_switch_as_decision_tree_p): Likewise. + (emit_jump): Likewise. + (emit_case_decision_tree): Likewise. + (try_switch_expansion): Likewise. + (do_jump_if_equal): Likewise. + (emit_cmp_and_jump_insns): Likewise. + (fix_phi_operands_for_edge): New function. + (record_phi_operand_mapping): Likewise. + (class pass_lower_switch): New pass. + (pass_lower_switch::execute): New function. + (make_pass_lower_switch): Likewise. + (conditional_probability): + * timevar.def: Add TV_TREE_SWITCH_LOWERING. + * tree-pass.h: Add make_pass_lower_switch. + +2017-08-29 Jozef Lawrynowicz + + PR target/80993 + * gcc/config/msp430/msp430.c (msp430_attr): Mark interrupt + handlers as used. + +2017-08-29 Richard Biener + + * dwarf2out.c (add_dwarf_attr): When checking is enabled verify + we do not add a DW_AT_inline attribute twice. + (gen_subprogram_die): Remove code setting DW_AT_inline on + DECL_ABSTRACT_P nodes. + +2017-08-29 Richard Sandiford + + * gimplify.c (gimplify_call_expr): Copy the nothrow flag to + calls to internal functions. + (gimplify_modify_expr): Likewise. + * tree-call-cdce.c (use_internal_fn): Likewise. + * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise. + (convert_to_divmod): Set the nothrow flag. + * tree-if-conv.c (predicate_mem_writes): Likewise. + * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise. + (vectorizable_call): Likewise. + (vectorizable_store): Likewise. + (vectorizable_load): Likewise. + * tree-vect-patterns.c (vect_recog_pow_pattern): Likewise. + (vect_recog_mask_conversion_pattern): Likewise. + +2017-08-29 Martin Liska + + PR other/39851 + * gcc.c (driver_handle_option): Add new argument. + * opts-common.c (handle_option): Pass + target_option_override_hook. + * opts-global.c (lang_handle_option): Add new option. + (set_default_handlers): Add new argument. + (decode_options): Likewise. + * opts.c (target_handle_option): Likewise. + (common_handle_option): Call target_option_override_hook. + * opts.h (struct cl_option_handler_func): Add hook for + target option override. + (struct cl_option_handlers): Likewise. + (set_default_handlers): Add new argument. + (decode_options): Likewise. + (common_handle_option): Likewise. + (target_handle_option): Likewise. + * toplev.c (toplev::main): Pass targetm.target_option.override + hook. + +2017-08-29 Richard Biener + Dominik Infuehr + + * tree-vect-slp.c (vect_bb_slp_scalar_cost): Properly confine + life to the active subtree. + +2017-08-28 Jeff Law + + * tree-ssa-dom.c (edge_info::record_simple_equiv): Call + derive_equivalences. + (derive_equivalences_from_bit_ior, record_temporary_equivalences): + Code moved into.... + (edge_info::derive_equivalences): New private member function + + * tree-ssa-dom.c (class edge_info): Changed from a struct + to a class. Add ctor/dtor, methods and data members. + (edge_info::edge_info): Renamed from allocate_edge_info. + Initialize additional members. + (edge_info::~edge_info): New. + (free_dom_edge_info): Delete the edge info. + (record_edge_info): Use new class & associated member functions. + Tighten forms for testing for edge equivalences. + (record_temporary_equivalences): Iterate over the simple + equivalences rather than assuming there's only one per edge. + (cprop_into_successor_phis): Iterate over the simple + equivalences rather than assuming there's only one per edge. + (optimize_stmt): Use operand_equal_p rather than pointer + equality for mini-DSE code. + +2017-08-28 Nathan Sidwell + + * gcc.c (execute): Fold SIGPIPE handling into switch + statement. Adjust internal error message. + +2017-08-28 Richard Biener + + PR debug/81993 + * dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes): + Do nothing for removed DIEs. + +2017-08-28 Richard Biener + + PR tree-optimization/81977 + * tree-ssa-sccvn.c (vn_reference_lookup_3): Fix look through + memcpy. + +2017-08-28 Alexander Monakov + + PR target/80640 + * doc/md.texi (mem_thread_fence): Remove mention of mode. Rewrite. + * optabs.c (expand_mem_thread_fence): Emit a compiler barrier when + using targetm.gen_mem_thread_fence. + +2017-08-27 Uros Bizjak + + PR target/81995 + * config/i386/i386.md (*): Change operand 2 + predicate to register_operand. Reorder operands. + (*btr): Ditto. + (*_mask): Change operand 3 predicate to register_operand. + (*btr_mask): Ditto. + +2017-08-25 Steven Munroe + + * config.gcc (powerpc*-*-*): Add xmmintrin.h and mm_malloc.h. + * config/rs6000/xmmintrin.h: New file. + * config/rs6000/x86intrin.h [__ALTIVEC__]: Include xmmintrin.h. + +2017-08-25 Bill Schmidt + + PR target/81504 + * config/rs6000/rs6000-p8swap.c (find_alignment_op): Add reference + parameter and_insn and return it. + (recombine_lvx_pattern): Insert a copy to ensure availability of + the base register of the copied masking operation at the point of + the instruction replacement. + (recombine_stvx_pattern): Likewise. + +2017-08-25 Michael Meissner + + * config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete + undocumented switches. + (-mpower9-dform-vector): Likewise. + (-mpower9-dform): Likewise. + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update + comments to delete references to -mpower9-dform* switches. + * config/rs6000/predicates.md (vsx_quad_dform_memory_operand): + Delete reference to -mpower9-dform* switches, test for + -mpower9-vector instead. + * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise. + (OTHER_P9_VECTOR_MASKS): Likewise. + (POWERPC_MASKS): Likewise. + * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change + tests against -mpower9-dform* to -mpower9-vector. Delete code + that checked for -mpower9-dform* consistancy with other options. + Add test for -mpower9-misc to enable other power9 switches. + (rs6000_init_hard_regno_mode_ok): Likewise. + (rs6000_option_override_internal): Likewise. + (rs6000_emit_prologue): Likewise. + (rs6000_emit_epilogue): Likewise. + (rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}. + (rs6000_disable_incompatiable_switches): Delete -mpower9-dform. + (emit_fusion_p9_load): Change tests for -mpower9-dform-scalar + -mpower9-vector. + (emit_fusion_p9_store): Likewise. + * config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete + resetting these macros if the assembler does not support ISA 3.0 + instructions. + (TARGET_P9_DFORM_VECTOR): Likewise. + * config/rs6000/rs6000.md (peepholes to optimize altivec memory): + Change to use -mpower9-vector instead of -mpower9-dform-scalar. + +2017-08-25 Alan Modra + + PR rtl-optimization/81747 + * cse.c (cse_extended_basic_block): Don't attempt to record + equivalences for degenerate conditional branches that branch + to their fall-through. + +2017-08-24 Martin Sebor + + PR middle-end/81908 + * gimple-fold.c (size_must_be_zero_p): New function. + (gimple_fold_builtin_memory_op): Call it. + +2017-08-24 Steven Munroe + + * config/rs6000/mm_malloc.h: New file. + +2017-08-24 Bin Cheng + + PR tree-optimization/81913 + * tree-ssa-loop-niter.c (number_of_iterations_cond): Skip niter + analysis when either IVs in condition can wrap. + +2017-08-24 Uros Bizjak + + * dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40. + * dwarf2cfi.c (MAX_ARTIFICIAL_LABEL_BYTES): Remove. + +2017-08-24 Richard Biener + + PR target/81921 + * targhooks.c (default_target_can_inline_p): Properly + use target_option_default_node when no DECL_FUNCTION_SPECIFIC_TARGET + is present and always compare. + * config/i386/i386.c (ix86_valid_target_attribute_tree): Do not + infer -mfpmath=sse from TARGET_SSE_P. + (ix86_can_inline_p): Properly use target_option_default_node when + no DECL_FUNCTION_SPECIFIC_TARGET is present and always compare. + +2017-08-24 Richard Biener + + PR debug/81936 + * dwarf2out.c (output_die): Handle flag_generate_offload like + flag_generate_lto. + (output_comp_unit): Likewise. + (gen_array_type_die): Likewise. + (dwarf2out_early_finish): Likewise. + (note_variable_value_in_expr): Likewise. + (dwarf2out_finish): Likewise. Adjust assert. + * cgraphunit.c (symbol_table::compile): Move setting of + flag_generate_offload earlier ... + (symbol_table::finalize_compilation_unit): ... here, before + early debug finalization. + +2017-08-24 Richard Biener + + * config/i386/i386.c: Include symbol-summary.h, ipa-prop.h + and ipa-fnsummary.h. + (ix86_can_inline_p): When ix86_fpmath flags do not match + check whether the callee uses FP math at all. + +2017-08-24 Aldy Hernandez + + PR middle-end/81931 + * tree-ssanames.c (get_nonzero_bits): Use element_precision + instead of TYPE_PRECISION. + +2017-08-24 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (make_extraction): Use subreg_offset_from_lsb. + +2017-08-23 Daniel Santos + + * config/i386/i386.h (ix86_frame::stack_realign_allocate_offset): + Remove field. + (ix86_frame::stack_realign_allocate): New field. + (struct machine_frame_state): Modify comments. + (machine_frame_state::sp_realigned_fp_end): New field. + * config/i386/i386.c (ix86_compute_frame_layout): Rework stack frame + layout calculation. + (sp_valid_at): Add assertion to assure no attempt to access invalid + offset of a realigned stack. + (fp_valid_at): Likewise. + (choose_baseaddr): Modify comments. + (ix86_emit_outlined_ms2sysv_save): Adjust to changes in + ix86_expand_prologue. + (ix86_expand_prologue): Modify stack realignment and allocation. + (ix86_expand_epilogue): Modify comments. + * doc/sourcebuild.texi: Add documentation for target selectors avx2, + avx2_runtime, avx512f, and avx512f_runtime. + +2017-08-23 Uros Bizjak + + * config/i386/i386.opt: Remove unneeded Init(0) initializations. + (mstackrealign): Do not init to -1. + * config/i386/i386.c (ix86_option_override_internal): + Check opts_set, not opts when setting default value of + opts->x_ix86_force_align_arg_pointer. + +2017-08-23 Richard Biener + + * function.c (fndecl_name): Use verbosity 1 (no arguments) for + lang_hooks.decl_printable_name. + * print-rtl-function.c (print_rtx_function): Likewise. + * tree-pretty-print.c (dump_function_header): Likewise. + +2017-08-23 Richard Biener + + PR lto/81940 + * dwarf2out.c (dwarf2out_abstract_function): Handle LTO with + -g0 at compile-time. + +2017-08-23 Tamar Christina + + PR middle-end/19706 + * doc/sourcebuild.texi (Other hardware attributes): + Document xorsign. + +2017-08-23 Tamar Christina + + PR middle-end/19706 + * tree-ssa-math-opts.c (convert_expand_mult_copysign): + Fix single-use check. + +2017-08-23 Thomas Preud'homme + + * gcc.c (execute): Only test for SIGKILL and SIGQUIT if available. + +2017-08-22 Daniel Santos + + * doc/install.texi: Modify to add more details on running selected + tests. + +2017-08-22 Daniel Santos + + * config/i386/i386.c (ix86_option_override_internal): Error when -mx32 + is combined with -mabi=ms. + (ix86_function_type_abi): Limit errors for mixing -mx32 with attribute + ms_abi. + +2017-08-22 Bill Schmidt + + PR tree-optimization/81488 + * gimple-ssa-strength-reduction (struct slsr_cand_d): Add visited + and cached_basis fields. + (MAX_SPREAD): New constant. + (alloc_cand_and_find_basis): Initialize new fields. + (clear_visited): New function. + (create_phi_basis_1): Rename from create_phi_basis, set visited + and cached_basis fields. + (create_phi_basis): New wrapper function. + (phi_add_costs_1): Rename from phi_add_costs, add spread + parameter, set visited field, short-circuit when limits reached. + (phi_add_costs): New wrapper function. + (record_phi_increments_1): Rename from record_phi_increments, set + visited field. + (record_phi_increments): New wrapper function. + (phi_incr_cost_1): Rename from phi_incr_cost, set visited field. + (phi_incr_cost): New wrapper function. + (all_phi_incrs_profitable_1): Rename from + all_phi_incrs_profitable, set visited field. + (all_phi_incrs_profitable): New wrapper function. + +2017-08-22 Richard Sandiford + Alan Hayward + David Sherwood + + * rtl.h (paradoxical_subreg_p): Define inline, and add a version + that takes the outer and inner modes. + * doc/rtl.texi: Use paradoxical_subreg_p instead of a GET_MODE_SIZE + comparison as the canonical test for a paradoxical subreg. + * combine.c (simplify_set): Use paradoxical_subreg_p. + (make_extraction): Likewise. + (force_to_mode): Likewise. + (rtx_equal_for_field_assignment_p): Likewise. + (gen_lowpart_for_combine): Likewise. + (simplify_comparison): Likewise. + * cse.c (equiv_constant): Likewise. + * expmed.c (store_bit_field_1): Likewise. + * final.c (alter_subreg): Likewise. + * fwprop.c (propagate_rtx): Likewise. + (forward_propagate_subreg): Likewise. + * ira-conflicts.c (ira_build_conflicts): Likewise. + * lower-subreg.c (simplify_gen_subreg_concatn): Likewise. + * lra-constraints.c (curr_insn_transform): Likewise. + (split_reg): Likewise. + * lra-eliminations.c (move_plus_up): Likewise. + (lra_eliminate_regs_1): Likewise. + * recog.c (general_operand): Likewise. + * ree.c (combine_reaching_defs): Likewise. + * reload.c (push_reload): Likewise. + (find_reloads): Likewise. + * reload1.c (elimination_effects): Likewise. + (compute_reload_subreg_offset): Likewise. + (choose_reload_regs): Likewise. + * rtlanal.c (subreg_lsb_1): Likewise. + * simplify-rtx.c (simplify_unary_operation_1): Likewise. + (simplify_subreg): Likewise. + * var-tracking.c (track_loc_p): Likewise. + * emit-rtl.c (byte_lowpart_offset): Likewise. + (paradoxical_subreg_p): Delete out-of-line definition. + +2017-08-22 Jeff Law + + PR tree-optimization/81741 + PR tree-optimization/71947 + * tree-ssa-dom.c: Include tree-inline.h. + (record_temporary_equivalences): Only record SSA_NAME = SSA_NAME + equivalences if one is more expensive to compute than the other. + * tree-ssa-scopedtables.h (class const_or_copies): Make + record_const_or_copy_raw method private. + (class avail_exprs_stack): New method simplify_binary_operation. + * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Call + avail_exprs_stack::simplify_binary_operation as needed. + (avail_exprs_stack::simplify_binary_operation): New function. + +2017-08-22 Sebastian Huber + + * config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt. + * config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define. + (DOT_SYMBOLS): Likewise. + (MINIMAL_TOC_SECTION_ASM_OP): Likewise. + (RELOCATABLE_NEEDS_FIXUP): Likewise. + (RS6000_ABI_NAME): Likewise. + (TARGET_CMODEL): Likewise. + (TOC_SECTION_ASM_OP): Likewise. + (SET_CMODEL): New macro. + (SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options. + +2017-08-22 Richard Biener + + * tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT] + to allow for free-lang-data replacements similar to verify_type_variant. + +2017-08-22 Richard Sandiford + Alan Hayward + David Sherwood + + * config/aarch64/aarch64.md (casesi): Use DImode rather than + VOIDmode for the LABEL_REF. + +2017-08-22 Richard Biener + + * tree-cfg.c (gimple_split_edge): Avoid reallocating target PHI nodes. + +2017-08-22 Richard Biener + + * common.opt (feliminate-dwarf2-dups): Ignore. + * doc/invoke.texi (feliminate-dwarf2-dups): Remove documentation. + * dwarf2out.c (push_new_compile_unit, pop_compile_unit, + same_die_p_wrap, compute_section_prefix, + is_symbol_die, assign_symbol_names, break_out_includes): Remove. + (comdat_symbol_id, comdat_symbol_number): Likewise. + (cu_hash_table_entry, cu_hash_table_entry_hasher, cu_hash_type): + Likewise. + (check_duplicate_cu, record_comdat_symbol_number): Likewise. + (output_die): Mark unreachable path unreachable. + (dwarf2out_start_source_file): Do not create DW_TAG_GNU_BINCL. + (dwarf2out_end_source_file): Do not create DW_TAG_GNU_EINCL. + (dwarf2out_init): Remove code handling flag_eliminate_dwarf2_dups. + (dwarf2out_early_finish): Likewise. + +2017-08-22 Aldy Hernandez + + * wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend. + +2017-08-22 Georg-Johann Lay + + PR target/81910 + * config/avr/avr.c (avr_handle_addr_attribute): Early return if + not VAR_P. Filter attribute warnings with OPT_Wattributes. + (avr_attribute_table) : Initialize + .decl_required with true. + +2017-08-21 Michael Meissner + + * config/rs6000/rs6000-cpus.def (-mvsx-scalar-float): Delete + undocumented debugging options. + (-mvsx-scalar-double): Likewise. + (-mallow-df-permute): Likewise. + (-mvectorize-builtins): Likewise. + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise. + (rs6000_builtin_vectorized_function): Likewise. + (rs6000_builtin_md_vectorized_function): Likewise. + (rs6000_opt_vars): Likewise. + +2017-08-21 Uros Bizjak + + PR target/46091 + * config/i386/i386.md (*btsq_imm): Rename from *btsq. + (*btrq_imm): Rename from *btrq. + (*btcq_imm): Rename from *btcq. + (btsc): New code attribute. + (*): New insn pattern. + (*btr): Ditto. + (*_mask): New insn_and_split pattern. + (*btr_mask): Ditto. + +2017-08-21 Richard Sandiford + Alan Hayward + David Sherwood + + * function.c (pad_below): Simplify padding calculation. + +2017-08-21 Richard Sandiford + Alan Hayward + David Sherwood + + * target.def (function_prologue): Remove frame size argument. + (function_epilogue): Likewise. + * doc/tm.texi: Regenerate. + * final.c (final_start_function): Update call to function_prologue. + (final_end_function): Update call to function_epilogue. + (default_function_pro_epilogue): Remove frame size argument. + * output.h (default_function_pro_epilogue): Likewise. + * config/arm/arm.c (arm_output_function_epilogue): Likewise. + (arm_output_function_prologue): Likewise. + * config/frv/frv.c (frv_function_prologue): Likewise. + (frv_function_epilogue): Likewise. + * config/i386/i386.c (ix86_output_function_epilogue): Likewise. + * config/ia64/ia64.c (ia64_output_function_prologue): Likewise. + (ia64_output_function_epilogue): Likewise. + * config/m32r/m32r.c (m32r_output_function_prologue): Likewise. + (m32r_output_function_epilogue): Likewise. + * config/microblaze/microblaze.c (microblaze_function_prologue) + (microblaze_function_epilogue): Likewise. + * config/mips/mips.c (mips_output_function_prologue): Likewise. + (mips_output_function_epilogue): Likewise. + * config/mmix/mmix.c (mmix_target_asm_function_prologue): Likewise. + (mmix_target_asm_function_epilogue): Likewise. + * config/msp430/msp430.c (msp430_start_function): Likewise. + * config/nds32/nds32.c (nds32_asm_function_prologue): Likewise. + (nds32_asm_function_epilogue): Likewise. + * config/nios2/nios2.c (nios2_asm_function_prologue): Likewise. + * config/pa/pa.c (pa_output_function_prologue): Likewise. + (pa_output_function_epilogue): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_output_function_prologue) + (rs6000_output_function_epilogue): Likewise. + * config/rl78/rl78.c (rl78_start_function): Likewise. + * config/rs6000/rs6000.c (rs6000_output_function_prologue): Likewise. + (rs6000_output_function_epilogue): Likewise. + * config/rx/rx.c (rx_output_function_prologue): Likewise. + * config/sh/sh.c (sh_output_function_epilogue): Likewise. + * config/sparc/sparc.c (sparc_asm_function_prologue): Likewise. + (sparc_asm_function_epilogue): Likewise. + +2017-08-21 Richard Sandiford + + * tree.h (type_has_mode_precision_p): New function. + * convert.c (convert_to_integer_1): Use it. + * expr.c (expand_expr_real_2): Likewise. + (expand_expr_real_1): Likewise. + * fold-const.c (fold_single_bit_test_into_sign_test): Likewise. + * match.pd: Likewise. + * tree-ssa-forwprop.c (simplify_rotate): Likewise. + * tree-ssa-math-opts.c (convert_mult_to_fma): Likewise. + * tree-tailcall.c (process_assignment): Likewise. + * tree-vect-loop.c (vectorizable_reduction): Likewise. + * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern) + (vect_recog_mult_pattern, vect_recog_divmod_pattern): Likewise. + * tree-vect-stmts.c (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + * tree-vrp.c (register_edge_assert_for_2): Likewise. + +2017-08-21 Wilco Dijkstra + + * match.pd: Add pow (C, x) simplification. + +2017-08-21 Richard Biener + + PR tree-optimization/81900 + * tree-ssa-pre.c (compute_antic_aux): Properly compute changed + for blocks with abnormal predecessors. + (compute_antic): Do not set visited flag prematurely. + +2017-08-21 Georg-Johann Lay + + PR target/79883 + * config/avr/avr.c (avr_set_current_function): Typo in diagnostic. + +2017-08-21 Richard Sandiford + + * stor-layout.h (vector_type_mode): Move to... + * tree.h (vector_type_mode): ...here. + * stor-layout.c (vector_type_mode): Move to... + * tree.c (vector_type_mode): ...here. Include rtl.h and regs.h. + +2017-08-21 Richard Biener + + * debug.h (struct gcc_debug_hooks): Add die_ref_for_decl and + register_external_die hooks. + (debug_false_tree_charstarstar_uhwistar): Declare. + (debug_nothing_tree_charstar_uhwi): Likewise. + * debug.c (do_nothing_debug_hooks): Adjust. + (debug_false_tree_charstarstar_uhwistar): New do nothing. + (debug_nothing_tree_charstar_uhwi): Likewise. + * dbxout.c (dbx_debug_hooks): Adjust. + (xcoff_debug_hooks): Likewise. + * sdbout.c (sdb_debug_hooks): Likewise. + * vmsdbgout.c (vmsdbg_debug_hooks): Likewise. + * dwarf2out.c (macinfo_label_base): New global. + (dwarf2out_register_external_die): New function for the + register_external_die hook. + (dwarf2out_die_ref_for_decl): Likewise for die_ref_for_decl. + (dwarf2_debug_hooks): Use them. + (dwarf2_lineno_debug_hooks): Adjust. + (struct die_struct): Add with_offset flag. + (DEBUG_LTO_DWO_INFO_SECTION, DEBUG_LTO_INFO_SECTION, + DEBUG_LTO_DWO_ABBREV_SECTION, DEBUG_LTO_ABBREV_SECTION, + DEBUG_LTO_DWO_MACINFO_SECTION, DEBUG_LTO_MACINFO_SECTION, + DEBUG_LTO_DWO_MACRO_SECTION, DEBUG_LTO_MACRO_SECTION, + DEBUG_LTO_LINE_SECTION, DEBUG_LTO_DWO_STR_OFFSETS_SECTION, + DEBUG_LTO_STR_DWO_SECTION, DEBUG_STR_LTO_SECTION): New macros + defining section names for the early LTO debug variants. + (reset_indirect_string): New helper. + (add_AT_external_die_ref): Helper for dwarf2out_register_external_die. + (print_dw_val): Add support for offsetted symbol references. + (get_ultimate_context): Split out from is_cxx. + (is_cxx): Use get_ultimate_context. + (is_fortran): Add decl overload. + (compute_comp_unit_symbol): Split out worker from + compute_section_prefix. + (compute_section_prefix): Call compute_comp_unit_symbol and + set comdat_type_p here. + (output_die): Skip DIE symbol output for the LTO added one. + Handle DIE symbol references with offset. + (output_comp_unit): Guard section name mangling properly. + For LTO debug sections emit a symbol at the section beginning + which we use to refer to its DIEs. + (add_abstract_origin_attribute): For DIEs registered via + dwarf2out_register_external_die directly refer to the early + DIE rather than indirectly through the shadow one we created. + Remove obsolete call to dwarf2out_abstract_function for + non-function/block origins. + (gen_array_type_die): When generating early LTO debug do + not emit DW_AT_string_length. + (gen_formal_parameter_die): Do not re-create DIEs for PARM_DECLs + late when in LTO. As suggested place a gcc_unreachable for + the DECL_ABSTRACT_P case. + (gen_subprogram_die): Avoid another specification DIE + for early built declarations/definitions for the late LTO case. + (gen_variable_die): Add type references for late duplicated VLA dies + when in late LTO. + (gen_inlined_subroutine_die): Do not call dwarf2out_abstract_function, + we have the abstract instance already. + (process_scope_var): Adjust decl DIE contexts in LTO which + first puts them in limbo. + (gen_decl_die): Do not generate type DIEs late apart from + types for VLAs or for decls we do not yet have a DIE. Do not + call dwarf2out_abstract_function late. + (dwarf2out_early_global_decl): Make sure to create DIEs + for abstract instances of a decl first. + (dwarf2out_late_global_decl): Adjust comment. + (output_macinfo_op): With multiple macro sections use + macinfo_label_base to distinguish labels. + (output_macinfo): Likewise. Update macinfo_label_base. + Pass in the line info label. + (note_variable_value_in_expr): When generating LTO resolve + all variable values here by generating DIEs as needed. + (init_sections_and_labels): Add early LTO debug flag parameter + and generate different sections and names if set. Add generation + counter for the labels so we can have multiple of them. + (reset_dies): Helper to allow DIEs to be output multiple times. + (dwarf2out_finish): When outputting DIEs to the fat part of an + LTO object first reset DIEs. + (dwarf2out_early_finish): Output early DIEs when generating LTO. + (modified_type_die): Check for decl_ultimate_origin being self + before recursing. + (gen_type_die_with_usage): Likewise. + (gen_typedef_die): Allow decl_ultimate_origin being self. + (set_decl_abstract_flags): Remove. + (set_block_abstract_flags): Likewise. + (dwarf2out_abstract_function): Treat the early generated DIEs + as the abstract copy and only add DW_AT_inline and + DW_AT_artificial here and call set_decl_origin_self. + If the DIE has an abstract origin don't do anything. + * tree.c (free_lang_data): Build a dummy TRANSLATION_UNIT_DECL + if we have none yet (Go fails to build one, PR78628). + (variably_modified_type_p): Prevent endless recursion for Ada + cyclic pointer types. + * lto-streamer-in.c: Include debug.h. + (dref_queue): New global. + (lto_read_tree_1): Stream in DIE references. + (lto_input_tree): Register DIE references. + (input_function): Stream DECL_DEBUG_ARGS. + * lto-streamer-out.c: Include debug.h. + (lto_write_tree_1): Output DIE references. + (DFS::DFS_write_tree_body): Follow DECL_ABSTRACT_ORIGIN. + Force a TRANSLATION_UNIT_DECL DECL_CONTEXT for file-scope decls. + (output_function): Stream DECL_DEBUG_ARGS. + * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers): + Stream DECL_ABSTRACT_ORIGIN. + * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise. + (write_ts_decl_minimal_tree_pointers): Force a TRANSLATION_UNIT_DECL + DECL_CONTEXT for file-scope decls. + * lto-streamer.h (struct dref_entry): Declare. + (dref_queue): Likewise. + * cfgexpand.c (pass_expand::execute): Do not call the + outlining_inline_function hook here. + * lto-wrapper.c (debug_obj): New global. + (tool_cleanup): Unlink it if required. + (debug_objcopy): New function. + (run_gcc): Handle early debug sections in the IL files by + extracting them to separate files, partially linkin them and + feeding the result back as result to the linker. + * config/darwin.h (DEBUG_LTO_INFO_SECTION, DEBUG_LTO_ABBREV_SECTION, + DEBUG_LTO_MACINFO_SECTION, DEBUG_LTO_LINE_SECTION, + DEBUG_STR_LTO_SECTION, DEBUG_LTO_MACRO_SECTION): Put early debug + sections into a separate segment. + * config/darwin.c (darwin_asm_named_section): Handle __GNU_DWARF_LTO + segments. + (darwin_asm_dwarf_section): Likewise. + (darwin_asm_output_dwarf_offset): Likewise. + * config/i386/i386.c (make_resolver_func): Set DECL_IGNORED_P. + +2017-08-21 Richard Sandiford + Alan Hayward + David Sherwood + + * read-md.h (md_reader::record_potential_iterator_use): Replace + pointer argument with an rtx and an index. + * read-rtl.c (iterator_group::apply_iterator): Likewise. + (apply_mode_iterator): Likewise. + (apply_code_iterator): Likewise. + (apply_int_iterator): Likewise. + (apply_subst_iterator): Likewise. + (record_iterator_use): Likewise. + (record_attribute_use): Likewise. + (md_reader::record_potential_iterator_use): Likewise. Update calls + to record_iterator_use and apply_iterator. + (iterator_use): Replace ptr with x and index. + (attribute_use): Likewise. + (apply_attribute_uses): Update calls to apply_iterator. + (apply_iterators): Likewise. Update initialization of iterator_use. + (rtx_reader::read_rtx_code): Update calls to record_iterator_use + and record_potential_iterator_use. + (rtx_reader::read_rtx_operand): Likewise. + +2017-08-21 Richard Sandiford + Alan Hayward + David Sherwood + + * varasm.c (const_rtx_hash_1): Don't hash in the mode of a + CONST_WIDE_INT. + +2017-08-21 Richard Biener + + PR middle-end/81884 + * tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses + at struct end conservatively when comparing common bases. + +2017-08-21 Richard Biener + + * tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member. + (mem_ref_in_stmt): Remove. + (determine_max_movement): Use ref index to get at the reference. + (invariantness_dom_walker::before_dom_children): Deal with + lim data already initialized. + (gather_mem_refs_stmt): Initialize lim data and record ref index. + +2017-08-19 Uros Bizjak + + * config/i386/i386.h (OPTION_MASK_ISA_ROUND): Remove. + (TARGET_ISA_ROUND): Ditto. + (TARGET_ROUND): Ditto. + * config/i386/i386.c: Substitute TARGET_ROUND with TARGET_SSE4_1. + * config/i386/i386.md: Ditto. + * config/i386/sse.md: Ditto. + * config/i386/i386-builtin.def: Substitute OPTION_MASK_ISA_ROUND + with OPTION_MASK_ISA_SSE4_1. + +2017-08-19 Uros Bizjak + + PR target/81894 + * doc/extend.texi (x86 Built-in Functions): Correct the name of + __builtin_ia32_lzcnt_u16. + +2017-08-18 Peter Bergner + + PR target/80210 + * config/rs6000/rs6000.c (rs6000_activate_target_options): New function. + (rs6000_set_current_function): Rewrite function to use it. + +2017-08-18 H.J. Lu + + PR c/53037 + * print-tree.c (print_node): Support DECL_WARN_IF_NOT_ALIGN + and TYPE_WARN_IF_NOT_ALIGN. + * stor-layout.c (do_type_align): Merge DECL_WARN_IF_NOT_ALIGN. + (handle_warn_if_not_align): New. + (place_union_field): Call handle_warn_if_not_align. + (place_field): Call handle_warn_if_not_align. + Copy TYPE_WARN_IF_NOT_ALIGN. + (finish_builtin_struct): Copy TYPE_WARN_IF_NOT_ALIGN. + (layout_type): Likewise. + * tree-core.h (tree_type_common): Add warn_if_not_align. Set + spare to 18. + (tree_decl_common): Add warn_if_not_align. + * tree.c (build_range_type_1): Copy TYPE_WARN_IF_NOT_ALIGN. + * tree.h (TYPE_WARN_IF_NOT_ALIGN): New. + (SET_TYPE_WARN_IF_NOT_ALIGN): Likewise. + (DECL_WARN_IF_NOT_ALIGN): Likewise. + (SET_DECL_WARN_IF_NOT_ALIGN): Likewise. + * doc/extend.texi: Document warn_if_not_aligned attribute. + * doc/invoke.texi: Document -Wif-not-aligned and -Wpacked-not-aligned. + +2017-08-17 Martin Liska + + PR bootstrap/81864 + * tree-loop-distribution.c (ddrs_table): Change type to pointer type. + (get_data_dependence): Use it as pointer type. + (distribute_loop): Likewise. + +2017-08-17 Bill Schmidt + + * config/rs6000/altivec.md (UNSPEC_VMRGOW_DIRECT): New constant. + (p8_vmrgew_v4sf_direct): Generalize to p8_vmrgew__direct. + (p8_vmrgow__direct): New define_insn. + * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Properly + handle endianness for vmrgew and vmrgow permute patterns. + +2017-08-17 Peter Bergner + + * config/rs6000/altivec.md (VParity): Remove TARGET_VSX_TIMODE. + * config/rs6000/rs6000-cpus.def: Remove comment. + (ISA_2_7_MASKS_SERVER): Delete OPTION_MASK_VSX_TIMODE; + (POWERPC_MASKS): Likewise. + * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Remove unneeded + use of TARGET_VSX_TIMODE. + (rs6000_setup_reg_addr_masks): Change TARGET_VSX_TIMODE to TARGET_VSX. + (rs6000_init_hard_regno_mode_ok): Remove unneeded uses of + TARGET_VSX_TIMODE. Change use of TARGET_VSX_TIMODE to TARGET_VSX. + (rs6000_option_override_internal): Remove dead code. + (rs6000_legitimize_address): Change TARGET_VSX_TIMODE to TARGET_VSX. + (rs6000_legitimize_reload_address): Likewise. + (rs6000_legitimate_address_p): Likewise. + (rs6000_opt_masks): Delete "vsx-timode". + (rs6000_disable_incompatible_switches): Remove mention of -mvsx-timode + from function comment. + * config/rs6000/rs6000.h (MASK_VSX_TIMODE): Delete. + * config/rs6000/rs6000.md (FMOVE128_GPR): Remove TARGET_VSX_TIMODE. + (V16QI, V8HI, V4SI, V4SF, V2DI, V2DF, V1TI): Remove useless empty + condition. + * config/rs6000/rs6000.opt (mvsx-timode): Replace with stub. + * config/rs6000/vector.md (VEC_IP): Remove TARGET_VSX_TIMODE. + * config/rs6000/vsx.md (VSX_LE_128): Likewise. + (VSX_TI): Likewise. + (VSX_M): Likewise. + (define_peephole2): Likewise. + +2017-08-17 Martin Sebor + + PR c/81859 + * pretty-print.c (pp_format): Use strnlen in %.*s to avoid reading + past the end of an array. + (test_pp_format): Add test cases. + +2017-08-17 Richard Sandiford + + * internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): Add + missing ECF_NOTHROW flags. + +2017-08-17 Peter Bergner + + PR target/72804 + * config/rs6000/vsx.md (*vsx_le_permute_): Add support for + operands residing in integer registers. + (*vsx_le_perm_load_): Likewise. + (*vsx_le_perm_store_): Likewise. + (define_peephole2): Add peepholes to optimize the above. + +2017-08-17 Marek Polacek + + PR middle-end/81814 + * fold-const.c (operand_equal_for_comparison_p): Remove code that used + to mimic what shorten_compare did. Change the return type to bool. + (fold_cond_expr_with_comparison): Update call to + operand_equal_for_comparison_p. + (fold_ternary_loc): Likewise. + +2017-08-17 Jackson Woodruff + + * aarch64-simd.md (mov): No longer force zero immediate into + register. + (*aarch64_simd_mov): Add new case for stp using zero immediate. + +2017-08-17 Richard Biener + + * tree-ssa-structalias.c (solve_graph): When propagating + to successors update the graphs succ edges and avoid duplicate work. + +2017-08-17 Maxim Ostapenko + + PR target/81861 + * config/i386/i386.c (ix86_option_override_internal): Save target + specific options after ix86_stack_protector_guard_reg was changed. + +2017-08-17 Richard Biener + + PR tree-optimization/81827 + * tree-ssa-structalias.c (struct variable_info): Add is_reg_var flag. + (new_var_info): Initialize it conservatively. + (get_call_vi): Mark register vars. + (new_scalar_tmp_constraint_exp): Likewise. + (handle_rhs_call): Likewise. + (handle_const_call): Likewise. + (create_function_info_for): Likewise. + (solve_constraints): Sort varinfos to separate register from + non-register vars to pack points-to solution bitmaps during + iteration. + +2017-08-17 Marek Polacek + + * gimplify.c (gimplify_adjust_omp_clauses): Compare with 0 instead of 1. + +2017-08-17 Richard Biener + + * tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p + to true when overflow is undefined and we saturated the result. + +2017-08-17 Alan Modra + + PR target/80938 + * config/rs6000/rs6000.c (rs6000_savres_strategy): Revert 2017-08-09. + Don't use store multiple if only one reg needs saving. + (interesting_frame_related_regno): New function. + (rs6000_frame_related): Don't emit frame info for regs that + don't need saving. + (rs6000_emit_epilogue): Likewise. + +2017-08-16 Nathan Sidwell + + * tree-core.h (tree_type_non_common): Rename binfo to lang_1. + * tree.h (TYPE_BINFO): Use type_non_common.maxval. + (TYPE_LANG_SLOT_1): Use type_non_common.lang_1, for any type. + * tree.c (free_lang_data_in_type): Use else-if chain. Always + clear TYPE_LANG_1. Remove obsolete member-function stripping. + (find_decls_types_r): Comment about TYPE_MAX_VALUES_RAW. + (verify_type): Adjust for TYPE_BINFO move. + * lto-streamer-out.c (DFS::DFS_write_tree_body): No need to + process TYPE_BINFO directly. + (hash_tree): Likewise. + * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers): + Likewise. + * tree-streamer-out.c (write_ts_type_non_common_tree_pointers): + Likewise. + +2017-08-16 David Malcolm + + * diagnostic-show-locus.c (colorizer::m_caret): Remove unused field. + +2017-08-16 Uros Bizjak + + PR target/46091 + * config/i386/i386.md (*anddi_1_btr): Change predicates of + operand 0 and operand 1 to nomimmediate_operand. Add "m" constraint. + Add ix86_binary_operator_ok to insn constraint. + (*iordi_1_bts): Ditto. + (*xordi_1_btc): Ditto. + (*btsq): Change predicate of operand 0 to nonimmediate_operand. + Update corresponding peephole2 pattern. + (*btrq): Ditto. + (*btcq): Ditto. + +2017-08-16 Bin Cheng + + PR tree-optimization/81832 + * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Don't + copy loop header which has IFN_LOOP_DIST_ALIAS call. + +2017-08-16 Marek Polacek + + PR middle/81695 + * fold-const.c (fold_indirect_ref_1): Restore original behavior + regarding size_zero_node. + +2017-08-16 Martin Liska + + PR target/81753 + * config.gcc: Respect previously set extra_objs in case + of darwin target. + +2017-08-16 Richard Sandiford + + PR tree-optimization/81835 + * tree-vect-loop.c (vect_is_simple_reduction): Simply checks for + the phi SSA_NAME. Check that the condition in a COND_EXPR does + not depend on the phi. + +2017-08-16 Alan Modra + + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Delete + dead code. + +2017-08-16 Alan Modra + + * config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Merge.. + (save_reg_p): ..into this. Update all callers. + (first_reg_to_save): Simplify. + +2017-08-16 Alan Modra + + * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't restore + fixed regs. + +2017-08-15 Joseph Myers + + PR target/78460 + PR target/67712 + * config/sh/sh-mem.cc (sh_expand_cmpnstr): Only unroll for + constant count if that count is less than 32. + +2017-08-15 Nathan Sidwell + + * gcc.c (execute): Emit friendlier message if inferior is killed + by an external cause. + +2017-08-15 Richard Biener + + PR tree-optimization/81790 + * tree-ssa-sccvn.c (vn_lookup_simplify_result): Handle both + CONSTRUCTORs from simplifying and VN. + +2017-08-14 Martin Sebor + + * builtin-attrs.def: Add comments. + +2017-08-14 Martin Sebor + + PR c/81117 + * doc/extend.texi (attribute nonstring): Document new attribute. + +2017-08-14 Martin Sebor + + PR c/81117 + * tree-diagnostic.c (default_tree_printer): Handle %G. + * gimple-pretty-print.h (percent_G_format): Declare new function. + * gimple-pretty-print.c (percent_G_format): Define. + * tree-pretty-print.c (percent_K_format): Add argument. + +2017-08-14 Martin Sebor + + PR translation/79998 + * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): + Remove a stray space. + +2017-08-14 Uros Bizjak + + PR target/46091 + * config/i386/i386.md (*anddi_1_btr): New insn_and_split pattern. + (*iordi_1_bts): Ditto. + (*xordi_1_btc): Ditto. + +2017-08-14 Bill Schmidt + + PR target/79845 + * config/rs6000/linux64.h (INVALID_64BIT): Use quoted strings. + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + Likewise. + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Use + quoted strings, and make more translator-friendly. + (darwin_rs6000_override_options): Likewise. + (rs6000_option_override_internal): Likewise. + (rs6000_return_in_memory): Fix overlong line. + (init_cmulative_args): Use quoted strings, and make more + translator-friendly. + (rs6000_pass_by_reference): Fix overlong line. + (def_builtin): Use quoted strings. + (altivec_expand_predicate_builtin): Use quoted strings, and make + more translator-friendly. + (htm_expand_builtin): Use quoted strings. + (cpu_expand_builtin): Use quoted strings, and make more + translator-friendly. + (altivec_expand_builtin): Likewise. + (paired_expand_predicate_builtin): Likewise. + (rs6000_invalid_builtin): Likewise. + (builtin_function_type): Use quoted strings. + (rs6000_expand_split_stack_prologue): Use quoted strings, and make + more translator-friendly. + (rs6000_trampoline_init): Likewise. + (rs6000_handle_altivec_attribute): Likewise. + (rs6000_inner_target_options): Use quoted strings. + (rs6000_disable_incompatible_switches): Likewise. + * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Use quoted + strings, and make more translator-friendly. + (SUBSUBTARGET_OVERRIDE_OPTIONS): Use quoted strings. + +2017-08-14 Bin Cheng + + PR tree-optimization/81799 + * tree-loop-distribution.c (version_loop_by_alias_check): Force + cond_expr to simple gimple operand. + +2017-08-14 Wilco Dijkstra + + PR middle-end/46932 + * doc/sourcebuild.texi (autoincdec): Add autoincdec description. + +2017-08-14 Georg-Johann Lay + + PR target/81754 + PR target/81268 + * config/avr/avr.opt (mgas-isr-prologues): New Var avr_gasisr_prologues. + * config/avr/avr.md (gasisr, *gasisr): Use it instead of + TARGET_GASISR_PROLOGUES. + * config/avr/avr.c (avr_option_override): Same. + (avr_pass_pre_proep::execute): Same. + +2017-08-13 H.J. Lu + + PR target/81820 + * config/i386/i386.c (ix86_finalize_stack_frame_flags): Replace + frame pointer with stack pointer - UNITS_PER_WORD in debug insns. + +2017-08-13 Uros Bizjak + + * config/i386/i386.md (*load_tp_): Redefine as + define_insn_and_split. Split to a memory load from 0 in + DEFAULT_TLS_SEG_REG address space. Merge with *load_tp_x32 + using PTR mode iterator. + (*load_tp_x32_zext"): Redefine as define_insn_and_split. + Split to a memory load from 0 in DEFAULT_TLS_SEG_REG address space. + (*add_tp_): Redefine as define_insn_and_split. + Split to an add with a memory load from 0 in DEFAULT_TLS_SEG_REG + address space. Merge with *add_tp_x32 using PTR mode iterator. + (*add_tp_x32_zext"): Redefine as define_insn_and_split. + Split to an add with a memory load from 0 in + DEFAULT_TLS_SEG_REG address space. + +2017-08-12 Andrew Pinski + + * config/aarch64/aarch64-option-extensions.def (rdma): + Fix feature string to what Linux prints out in /proc/cpuinfo. + +2017-08-12 Pierre-Marie de Rodat + + PR ada/79542 + * dwarf2out.c (modified_type_die): For C typedef types that have + an ultimate origin, process the ultimate origin instead of the + input type. + (gen_typedef_die): Assert that input DECLs have no ultimate + origin. + (gen_type_die_with_usage): For typedef variants that have an + ultimate origin, just call gen_decl_die on the original DECL. + (process_scope_var): Avoid creating DIEs for local typedefs and + concrete static variables. + +2017-08-12 Alan Modra + + PR target/81170 + PR target/81295 + * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Upgrade to + match gnu-user.h startfile. + (ENDFILE_LINUX_SPEC): Similarly. + +2017-08-11 Thomas Schwinge + + PR lto/81430 + * config/nvptx/nvptx.c (nvptx_override_options_after_change): + Remove function. + (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Remove definition. + +2017-08-11 Tamar Christina + * config/aarch64/aarch64.md (mov): Change. + (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64): + aarch64_reg_or_fp_float into aarch64_reg_or_fp_zero. + * config/aarch64/predicates.md (aarch64_reg_or_fp_float): Removed. + +2017-08-11 Eric Botcazou + + * tree-sra.c (build_access_from_expr_1): Use more precise diagnostics + for storage order barriers. + +2017-08-11 Martin Liska + + PR tree-opt/79987 + * tree-chkp.c (chkp_get_bounds_for_decl_addr): Do not instrument + variables of void type. + +2017-08-11 Martin Liska + + * asan.c (asan_protect_global): Replace ASM_OUTPUT_DEF with + TARGET_SUPPORTS_ALIASES. + * cgraph.c (cgraph_node::create_same_body_alias): Likewise. + * ipa-visibility.c (can_replace_by_local_alias): Likewise. + (optimize_weakref): Likewise. + * symtab.c (symtab_node::noninterposable_alias): Likewise. + * varpool.c (varpool_node::create_extra_name_alias): Likewise. + * defaults.h: Introduce TARGET_SUPPORTS_ALIASES. + +2017-08-11 Martin Liska + + PR ipa/81213 + * config/i386/i386.c (make_resolver_func): Do complete + refactoring of the function. + +2017-08-10 Uros Bizjak + + PR target/81708 + * config/i386/i386.opt (mstack-protector-guard-symbol=): New option + * config/i386/i386.c (ix86_stack_protect_guard): Use + ix86_stack_protect_guard_symbol_str to generate varible declaration. + * doc/invoke.texi (x86 Options): Document + -mstack-protector-guard-symbol= option. + +2017-08-10 Uros Bizjak + + * config/i386/i386-protos.h (ix86_split_stack_guard): New prototype. + * config/i386/i386.c (ix86_split_stack_guard): New function. + (ix86_xpand_split_stack_prologue): Call ix86_split_stack_guard. + (ix86_legitimate_address_p) : Remove. + (i386_asm_output_addr_const_extra) : Ditto. + (optput_pic_addr_const): Remove UNSPEC_STACK_CHECK handling. + * config/i386/i386.md (unspec): Remove UNSPEC_STACK_CHECK. + (split_stack_space_check): Call ix86_split_stack_guard. + +2017-08-10 Martin Sebor + + * print-tree.c (print_node): Print location using the established + format %s:%i%i. + Replace spaces with colons. + (debug_raw, debug): Ditto. + +2017-08-10 Martin Sebor + + PR c++/81586 + * pretty-print.c (pp_format): Correct the handling of %s precision. + +2017-08-10 H.J. Lu + + PR target/81736 + * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed + to ... + (ix86_finalize_stack_frame_flags): This. Also clear + frame_pointer_needed if -fno-omit-frame-pointer is used without + stack access. + (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags + with ix86_finalize_stack_frame_flags. + (ix86_expand_epilogue): Likewise. + (ix86_expand_split_stack_prologue): Likewise. + * doc/invoke.texi: Add a note for -fno-omit-frame-pointer. + +2017-08-10 Martin Liska + + PR c++/81355 + * c-attribs.c (handle_target_attribute): + Report warning for an empty string argument of target attribute. + +2017-08-09 Jakub Jelinek + + PR c/81687 + * omp-low.c (omp_copy_decl): Don't remap FORCED_LABEL or DECL_NONLOCAL + LABEL_DECLs. + * tree-cfg.c (move_stmt_op): Don't adjust DECL_CONTEXT of FORCED_LABEL + or DECL_NONLOCAL labels. + (move_stmt_r) : Adjust DECL_CONTEXT of FORCED_LABEL + or DECL_NONLOCAL labels here. + +2017-08-09 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Add blurb + to indicate when early gimple folding has been disabled. + (rs6000_gimple_fold_builtin): Add debug content. + (rs6000_invalid_builtin): Fix whitespace. + (rs6000_expand_builtin): Fix whitespace. + * config/rs6000/rs6000.opt: Add option for -mfold-gimple. + +2017-08-09 Segher Boessenkool + + PR target/80938 + * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't use + SAVE_MULTIPLE if not all the registers that saves, should be saved. + +2017-08-09 Jim Wilson + + * config/aarch64/aarch64-cores.def (falkor): Use falkor pipeline. + (qdf24xx): Likewise. + * config/aarch64/aarch64.md: Include falkor.md. + * config/aarch64/falkor.md: New. + +2017-08-09 Marek Polacek + + PR c/81233 + * diagnostic-core.h (emit_diagnostic_valist): Add declaration. + * diagnostic.c (emit_diagnostic): Add a comment. + (emit_diagnostic_valist): New function. + +2017-08-09 Marek Polacek + + PR c/81417 + * input.c (make_location): New overload. + * input.h (make_location): Declare. + +2017-08-08 Alan Modra + H.J. Lu + + PR driver/81523 + * gcc.c (NO_PIE_SPEC): Delete. + (PIE_SPEC): Define as !no-pie/pie. Move static|shared|r + exclusion.. + (LINK_PIE_SPEC): ..to here. + (LINK_COMMAND_SPEC): Support -no-pie. + * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Correct + chain of crtbegin*.o selection, update for PIE_SPEC changes and + format. + (GNU_USER_TARGET_ENDFILE_SPEC): Similarly. + * config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Similarly. + (ENDFILE_CRTEND_SPEC): Similarly. + +2017-08-08 Uros Bizjak + + PR target/81708 + * config/i386/i386.opt (mstack-protector-guard-reg=): New option + (mstack-protector-guard-offset=): Ditto. + * config/i386/i386.c (ix86_option_override): Handle + -mstack-protector-guard-reg= and -mstack-protector-guard-offset= + options. + (ix86_stack_protect_guard): Use ix86_stack_protect_guard_reg and + ix86_stack_protect_guard_offset variables. + (TARGET_STACK_PROTECT_GUARD): Always define. + * doc/invoke.texi (x86 Options): Document -mstack-protector-guard-reg= + and -mstack-protector-guard-offset= options. + +2017-08-08 Bin Cheng + + * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): Handle + boundary case for the last candidate. + +2017-08-08 Bin Cheng + + * doc/invoke.texi: Document -ftree-loop-distribution for O3. + * opts.c (default_options_table): Add OPT_ftree_loop_distribution. + +2017-08-08 Tamar Christina + + PR middle-end/19706 + * config/aarch64/aarch64.md (xorsign3): New optabs. + * config/aarch64/aarch64-builtins.c + (aarch64_builtin_vectorized_function): Added CASE_CFN_XORSIGN. + * config/aarch64/aarch64-simd-builtins.def: Added xorsign BINOP. + * config/aarch64/aarch64-simd.md: Added xorsign3 + +2017-08-08 Tamar Christina + Andrew Pinski + + PR middle-end/19706 + * internal-fn.def (XORSIGN): New. + * optabs.def (xorsign_optab): New. + * tree-ssa-math-opts.c (is_copysign_call_with_1): New. + (convert_expand_mult_copysign): New. + (pass_optimize_widening_mul::execute): Call + convert_expand_mult_copysign. + +2017-08-08 Bill Schmidt + + PR tree-optimization/81354 + * gimple-ssa-strength-reduction.c (create_add_on_incoming_edge): + Insert on edges rather than explicitly creating landing pads. + (analyze_candidates_and_replace): Commit edge inserts. + +2017-08-08 Richard Biener + + PR middle-end/81719 + * tree-ssa-loop-niter.c: Include tree-dfa.h. + (expand_simple_operations): Also look through ADDR_EXPRs with + MEM_REF bases treating them as POINTER_PLUS_EXPR. + +2017-08-08 Richard Biener + + PR tree-optimization/81723 + * tree-vect-slp.c (struct bst_traits): New hash traits. + (bst_fail): New global. + (vect_build_slp_tree_2): New worker, split out from ... + (vect_build_slp_tree): ... this now wrapping it with using + bst_fail set to cache SLP tree build fails. Properly handle + max_tree_size. + (vect_analyze_slp_instance): Allocate and free bst_fail. + +2017-08-08 Martin Liska + + PR tree-opt/81696 + * ipa-icf-gimple.c (func_checker::compare_cst_or_decl): Consider + LABEL_DECLs that can be from a different function. + +2017-08-08 Bin Cheng + + PR tree-optimization/81744 + * tree-predcom.c (prepare_finalizers_chain): Deep copy expr of + loop's number of iterations. + +2017-08-08 Martin Liska + + * asan.c: Include header files. + * attribs.c (build_decl_attribute_variant): New function moved + from tree.[ch]. + (build_type_attribute_qual_variant): Likewise. + (cmp_attrib_identifiers): Likewise. + (simple_cst_list_equal): Likewise. + (omp_declare_simd_clauses_equal): Likewise. + (attribute_value_equal): Likewise. + (comp_type_attributes): Likewise. + (build_type_attribute_variant): Likewise. + (lookup_ident_attribute): Likewise. + (remove_attribute): Likewise. + (merge_attributes): Likewise. + (merge_type_attributes): Likewise. + (merge_decl_attributes): Likewise. + (merge_dllimport_decl_attributes): Likewise. + (handle_dll_attribute): Likewise. + (attribute_list_equal): Likewise. + (attribute_list_contained): Likewise. + * attribs.h (lookup_attribute): New function moved from tree.[ch]. + (lookup_attribute_by_prefix): Likewise. + * bb-reorder.c: Include header files. + * builtins.c: Likewise. + * calls.c: Likewise. + * cfgexpand.c: Likewise. + * cgraph.c: Likewise. + * cgraphunit.c: Likewise. + * convert.c: Likewise. + * dwarf2out.c: Likewise. + * final.c: Likewise. + * fold-const.c: Likewise. + * function.c: Likewise. + * gimple-expr.c: Likewise. + * gimple-fold.c: Likewise. + * gimple-pretty-print.c: Likewise. + * gimple.c: Likewise. + * gimplify.c: Likewise. + * hsa-common.c: Likewise. + * hsa-gen.c: Likewise. + * internal-fn.c: Likewise. + * ipa-chkp.c: Likewise. + * ipa-cp.c: Likewise. + * ipa-devirt.c: Likewise. + * ipa-fnsummary.c: Likewise. + * ipa-inline.c: Likewise. + * ipa-visibility.c: Likewise. + * ipa.c: Likewise. + * lto-cgraph.c: Likewise. + * omp-expand.c: Likewise. + * omp-general.c: Likewise. + * omp-low.c: Likewise. + * omp-offload.c: Likewise. + * omp-simd-clone.c: Likewise. + * opts-global.c: Likewise. + * passes.c: Likewise. + * predict.c: Likewise. + * sancov.c: Likewise. + * sanopt.c: Likewise. + * symtab.c: Likewise. + * toplev.c: Likewise. + * trans-mem.c: Likewise. + * tree-chkp.c: Likewise. + * tree-eh.c: Likewise. + * tree-into-ssa.c: Likewise. + * tree-object-size.c: Likewise. + * tree-parloops.c: Likewise. + * tree-profile.c: Likewise. + * tree-ssa-ccp.c: Likewise. + * tree-ssa-live.c: Likewise. + * tree-ssa-loop.c: Likewise. + * tree-ssa-sccvn.c: Likewise. + * tree-ssa-structalias.c: Likewise. + * tree-ssa.c: Likewise. + * tree-streamer-in.c: Likewise. + * tree-vectorizer.c: Likewise. + * tree-vrp.c: Likewise. + * tsan.c: Likewise. + * ubsan.c: Likewise. + * varasm.c: Likewise. + * varpool.c: Likewise. + * tree.c: Remove functions moved to attribs.[ch]. + * tree.h: Likewise. + * config/aarch64/aarch64.c: Add attrs.h header file. + * config/alpha/alpha.c: Likewise. + * config/arc/arc.c: Likewise. + * config/arm/arm.c: Likewise. + * config/avr/avr.c: Likewise. + * config/bfin/bfin.c: Likewise. + * config/c6x/c6x.c: Likewise. + * config/cr16/cr16.c: Likewise. + * config/cris/cris.c: Likewise. + * config/darwin.c: Likewise. + * config/epiphany/epiphany.c: Likewise. + * config/fr30/fr30.c: Likewise. + * config/frv/frv.c: Likewise. + * config/ft32/ft32.c: Likewise. + * config/h8300/h8300.c: Likewise. + * config/i386/winnt.c: Likewise. + * config/ia64/ia64.c: Likewise. + * config/iq2000/iq2000.c: Likewise. + * config/lm32/lm32.c: Likewise. + * config/m32c/m32c.c: Likewise. + * config/m32r/m32r.c: Likewise. + * config/m68k/m68k.c: Likewise. + * config/mcore/mcore.c: Likewise. + * config/microblaze/microblaze.c: Likewise. + * config/mips/mips.c: Likewise. + * config/mmix/mmix.c: Likewise. + * config/mn10300/mn10300.c: Likewise. + * config/moxie/moxie.c: Likewise. + * config/msp430/msp430.c: Likewise. + * config/nds32/nds32-isr.c: Likewise. + * config/nds32/nds32.c: Likewise. + * config/nios2/nios2.c: Likewise. + * config/nvptx/nvptx.c: Likewise. + * config/pa/pa.c: Likewise. + * config/pdp11/pdp11.c: Likewise. + * config/powerpcspe/powerpcspe.c: Likewise. + * config/riscv/riscv.c: Likewise. + * config/rl78/rl78.c: Likewise. + * config/rx/rx.c: Likewise. + * config/s390/s390.c: Likewise. + * config/sh/sh.c: Likewise. + * config/sol2.c: Likewise. + * config/sparc/sparc.c: Likewise. + * config/spu/spu.c: Likewise. + * config/stormy16/stormy16.c: Likewise. + * config/tilegx/tilegx.c: Likewise. + * config/tilepro/tilepro.c: Likewise. + * config/v850/v850.c: Likewise. + * config/vax/vax.c: Likewise. + * config/visium/visium.c: Likewise. + * config/xtensa/xtensa.c: Likewise. + +2017-08-07 Michael Meissner + + PR target/81593 + * config/rs6000/vsx.md (vsx_concat_, VSX_D): Cleanup + constraints since the -mupper-regs-* switches have been + eliminated. + (vsx_concat__1): New combiner insns to recognize inserting + into a vector from a double word element that was extracted from + another vector, and eliminate extra XXPERMDI instructions. + (vsx_concat__2): Likewise. + (vsx_concat__3): Likewise. + (vsx_set_, VSX_D): Rewrite vector set in terms of vector + concat to allow optimizing inserts from previous extracts. + +2017-08-07 Uros Bizjak + + * config/i386/i386.c (ix86_stack_protect_guard): Generate + memory reference to a SSP offset in TLS address space. + (ix86_print_operand) : Remove. + (ix86_print_operand_punct_valid_p): Remove '@' code. + * config/i386/i386.md (unspec): Remove UNSPEC_SP_TLS_SET and + UNSPEC_SP_TLS_TEST. + (stack_tls_protect_set_): Remove. + (stack_protect_set): Do not call gen_stack_tls_protect_set_. + (stack_tls_protect_test_): Remove. + (stack_protect_test): Do not call gen_stack_tls_protect_test_. + +2017-08-07 Olivier Hainque + + PR target/81755 + * config/vxworksae.h (VXWORKS_HAVE_TLS): Define. + +2017-08-07 Douglas Rupp + + * Makefile.in (install-mkheaders): Fix typo, where the multi_dir + variable was referenced as multidir in command. + +2017-08-07 Jakub Jelinek + + PR c/69389 + * gimplify.c (goa_stabilize_expr): Handle BIT_INSERT_EXPR and + BIT_FIELD_REF. + +2017-08-07 Martin Liska + + * config/m32c/m32c.c: Add include of stringpool.h and attribs.h. + * config/rl78/rl78.c: Add include of attribs.h. + * config/sh/sh.c: Likewise. + * config/v850/v850.c: Likewise. + +2017-08-07 Tom de Vries + + PR middle-end/78266 + * omp-expand.c (expand_oacc_for): Ensure diff_type is large enough. + +2017-08-07 Martin Liska + + * config/mips/mips.c: Include attribs.h. + +2017-08-07 Thomas Koenig + + PR fortran/68829 + * doc/invoke.texi: Document change in behvaior for -Ofast for + Fortran. + +2017-08-07 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_pushwb_single_reg): + Use gen_frame_mem. + (aarch64_pop_regs): Likewise. + (aarch64_gen_load_pair): Likewise. + (aarch64_save_callee_saves): Likewise. + (aarch64_restore_callee_saves): Likewise. + +2017-08-07 H.J. Lu + + * config/i386/i386.c: Revert the last change. + +2017-08-07 H.J. Lu + + PR target/81736 + * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed + to ... + (ix86_finalize_stack_frame_flags): This. Also clear + frame_pointer_needed if -fno-omit-frame-pointer is used without + stack access. + (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags + with ix86_finalize_stack_frame_flags. + (ix86_expand_epilogue): Likewise. + (ix86_expand_split_stack_prologue): Likewise. + +2017-08-07 H.J. Lu + + PR target/81743 + * config/i386/i386.c (get_builtin_code_for_version): Set priority + to P_AES for Westmere. + +2017-08-07 Jonathan Yong <10walls@gmail.com> + + * config/i386/mingw.opt (fset-stack-executable): Removed. + * config/i386/cygming.opt (fset-stack-executable): Moved + from mingw.opt. + * config/i386/cygwin.h: Define CHECK_EXECUTE_STACK_ENABLED. + +2017-08-07 Segher Boessenkool + + * print-rtl.c (print_exp): Print NOT as "~" instead of as "!". + +2017-08-07 Marek Polacek + + PR middle-end/81737 + * fold-const.c (fold_indirect_ref_1): Check type_domain. + +2017-08-07 Martin Liska + + * attribs.h (canonicalize_attr_name): New function. + (cmp_attribs): Move from c-format.c and adjusted. + (is_attribute_p): Moved from tree.h. + * tree-inline.c: Add new includes. + * tree.c (cmp_attrib_identifiers): Use cmp_attribs. + (private_is_attribute_p): Remove. + (private_lookup_attribute): Likewise. + (private_lookup_attribute_by_prefix): Simplify. + (remove_attribute): Use is_attribute_p. + * tree.h: Remove removed declarations. + +2017-08-07 Jakub Jelinek + + PR middle-end/81698 + * stmt.c (emit_case_dispatch_table): Add DEFAULT_EDGE argument, + instead of computing it in the function. Formatting fix. + (expand_case): Don't rely on default_edge being the first edge, + clear it if removing it, pass default_edge to + emit_case_dispatch_table. + (expand_sjlj_dispatch_table): Pass NULL as DEFAULT_EDGE, formatting + fix. + +2017-08-06 Uros Bizjak + + * config/alpha/alpha.c (alpha_reorg): If trap is the last active + insn in the function, emit NOP after the insn. + +2017-08-06 Tom de Vries + + * omp-expand.c (expand_oacc_for): Add missing edge probability for tile + and element loops. + +2017-08-06 Tom de Vries + + * omp-expand.c (expand_oacc_for): Add missing edge probability for chunk + loop. + +2017-08-04 Yury Gribov + + PR tree-optimization/57371 + * match.pd: New pattern. + +2017-08-04 Marek Polacek + + PR middle-end/81695 + * fold-const.c (fold_indirect_ref_1): For ((int *)&a + 4 -> a[1], + perform the computation in offset_int. + +2017-08-04 Richard Sandiford + + PR tree-optimization/81136 + * tree-vectorizer.h: Include tree-hash-traits.h. + (vec_base_alignments): New typedef. + (vec_info): Add a base_alignments field. + (vect_record_base_alignments): Declare. + * tree-data-ref.h (data_reference): Add an is_conditional_in_stmt + field. + (DR_IS_CONDITIONAL_IN_STMT): New macro. + (create_data_ref): Add an is_conditional_in_stmt argument. + * tree-data-ref.c (create_data_ref): Likewise. Use it to initialize + the is_conditional_in_stmt field. + (data_ref_loc): Add an is_conditional_in_stmt field. + (get_references_in_stmt): Set the is_conditional_in_stmt field. + (find_data_references_in_stmt): Update call to create_data_ref. + (graphite_find_data_references_in_stmt): Likewise. + * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise. + * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise. + (vect_record_base_alignment): New function. + (vect_record_base_alignments): Likewise. + (vect_compute_data_ref_alignment): Adjust base_addr and aligned_to + for nested statements even if we fail to compute a misalignment. + Use pooled base alignments for unconditional references. + (vect_find_same_alignment_drs): Compare base addresses instead + of base objects. + (vect_analyze_data_refs_alignment): Call vect_record_base_alignments. + * tree-vect-slp.c (vect_slp_analyze_bb_1): Likewise. + +2017-08-04 Richard Sandiford + + * tree-vectorizer.h (vec_info): Add a constructor and destructor. + Add an explicit name for the enum. Use auto_vec for slp_instances + and grouped_stores. + (_loop_vec_info): Add a constructor and destructor. Use auto_vec + for all vectors. + (_bb_vec_info): Add a constructor and destructor. + (vinfo_for_stmt): Return NULL for uids of -1 as well. + (destroy_loop_vec_info): Delete. + (vect_destroy_datarefs): Likewise. + * tree-vectorizer.c (vect_destroy_datarefs): Delete. + (vec_info::vec_info): New function. + (vec_info::~vec_info): Likewise. + (vectorize_loops): Use delete instead of destroy_loop_vec_info. + * tree-parloops.c (gather_scalar_reductions): Use delete instead of + destroy_loop_vec_info. + * tree-vect-loop.c (new_loop_vec_info): Replace with... + (_loop_vec_info::_loop_vec_info): ...this. + (destroy_loop_vec_info): Replace with... + (_loop_vec_info::~_loop_vec_info): ...this. Unconditionally delete + the stmt_vec_infos. Leave handling of vec_info information to its + destructor. Remove explicit vector releases. + (vect_analyze_loop_form): Use new instead of new_loop_vec_info. + (vect_analyze_loop): Use delete instead of destroy_loop_vec_info. + * tree-vect-slp.c (new_bb_vec_info): Replace with... + (_bb_vec_info::_bb_vec_info): ...this. Don't reserve space in + BB_VINFO_GROUPED_STORES or BB_VINFO_SLP_INSTANCES. + (destroy_bb_vec_info): Replace with... + (_bb_vec_info::~_bb_vec_info): ...this. Leave handling of vec_info + information to its destructor. + (vect_slp_analyze_bb_1): Use new and delete instead of + new_bb_vec_info and destroy_bb_vec_info. + (vect_slp_bb): Replace 2 calls to destroy_bb_vec_info with a + single delete. + +2017-08-04 Richard Sandiford + + * tree-data-ref.h (subscript): Add access_fn field. + (data_dependence_relation): Add could_be_independent_p. + (SUB_ACCESS_FN, DDR_COULD_BE_INDEPENDENT_P): New macros. + (same_access_functions): Move to tree-data-ref.c. + * tree-data-ref.c (ref_contains_union_access_p): New function. + (access_fn_component_p): Likewise. + (access_fn_components_comparable_p): Likewise. + (dr_analyze_indices): Add a reference to access_fn_component_p. + (dump_data_dependence_relation): Use SUB_ACCESS_FN instead of + DR_ACCESS_FN. + (constant_access_functions): Likewise. + (add_other_self_distances): Likewise. + (same_access_functions): Likewise. (Moved from tree-data-ref.h.) + (initialize_data_dependence_relation): Use XCNEW and remove + explicit zeroing of DDR_REVERSED_P. Look for a subsequence + of access functions that have the same type. Allow the + subsequence to end with different bases in some circumstances. + Record the chosen access functions in SUB_ACCESS_FN. + (build_classic_dist_vector_1): Replace ddr_a and ddr_b with + a_index and b_index. Use SUB_ACCESS_FN instead of DR_ACCESS_FN. + (subscript_dependence_tester_1): Likewise dra and drb. + (build_classic_dist_vector): Update calls accordingly. + (subscript_dependence_tester): Likewise. + * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Check + DDR_COULD_BE_INDEPENDENT_P. + * tree-vectorizer.h (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Test + comp_alias_ddrs instead of may_alias_ddrs. + * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr): + New function. + (vect_analyze_data_ref_dependence): Use it if + DDR_COULD_BE_INDEPENDENT_P, but fall back to using the recorded + distance vectors if that fails. + (dependence_distance_ge_vf): New function. + (vect_prune_runtime_alias_test_list): Use it. Don't clear + LOOP_VINFO_MAY_ALIAS_DDRS. + +2017-08-04 Richard Biener + + PR middle-end/81705 + * fold-const.c (fold_binary_loc): Properly restrict + minus_var0 && minus_var1 case when associating undefined overflow + entities. + +2017-08-04 Tom de Vries + + * omp-simd-clone.c (simd_clone_adjust): Add missing edge probability. + +2017-08-03 Bill Schmidt + + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + Don't start diagnostic messages with a capital letter. + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Likewise. + (rs6000_invalid_builtin): Likewise. + (rs6000_trampoline_init): Likewise. + +2017-08-03 Jakub Jelinek + + PR target/81621 + * bb-reorder.c (pass_partition_blocks::execute): Return TODO_df_finish + after setting changeable df flags. + +2017-08-03 Richard Biener + + * tree-ssa-reassoc.c (should_break_up_subtract): Also break + up if the use is in USE - X. + +2017-08-03 Alexander Monakov + + * toplev.c (dumpfile.h): New include. + (internal_error_reentered): New static function. Use it... + (internal_error_function): ...here to handle reentered internal_error. + +2017-08-03 Richard Biener + + PR middle-end/81148 + * fold-const.c (split_tree): Add minus_var and minus_con + arguments, remove unused loc arg. Never generate NEGATE_EXPRs + here but always use minus_*. + (associate_trees): Assert we never associate with MINUS_EXPR + and NULL first operand. Do not recurse for PLUS_EXPR operands + when associating as MINUS_EXPR either. + (fold_binary_loc): Track minus_var and minus_con. + +2017-08-03 Tom de Vries + + PR lto/81430 + * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): If + ACCEL_COMPILER, apply finish_options on + DECL_FUNCTION_SPECIFIC_OPTIMIZATION. + +2017-08-03 Tom de Vries + + PR target/81662 + * config/nvptx/nvptx.c (nvptx_option_override): Emit sorry if + function_entry_patch_area_size > 0. + +2017-08-03 Jakub Jelinek + + PR driver/81650 + * calls.c (alloc_max_size): Use HOST_WIDE_INT_UC (10??) + instead of 10??LU, perform unit multiplication in wide_int, + don't change alloc_object_size_limit if the limit is larger + than SSIZE_MAX. + + PR tree-optimization/81655 + PR tree-optimization/81588 + * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Handle also + the case when ranges[i].low and high are 1 for unsigned type with + precision 1. + + PR middle-end/81052 + * omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp. + (pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd. + +2017-08-03 Prathamesh Kulkarni + + * tree-vrp.h: Add include guard. + +2017-08-02 Uros Bizjak + + PR target/81644 + * config/i386/i386.md (unspecv): Add UNSPECV_UD2. + (ud2): New insn pattern. + * config/i386/i386.c (ix86_expand_epilogue): + For naked functions, generate ud2 instead of trap insn. + +2017-08-02 Marek Polacek + + PR other/81667 + * alloc-pool.h (base_pool_allocator): Initialize m_elt_size. + +2017-08-02 Tom de Vries + Cesar Philippidis + + * config/nvptx/nvptx.c (nvptx_lockless_update, nvptx_lockfull_update): + Add missing edge probabilities. + +2017-08-02 Tamar Christina + + * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int): + Correct endianness. + +2017-08-02 Jakub Jelinek + + PR middle-end/79499 + * function.c (thread_prologue_and_epilogue_insns): Determine blocks + for find_many_sub_basic_blocks bitmap by looking up BLOCK_FOR_INSN + of first NONDEBUG_INSN_P in each of the split_prologue_seq and + prologue_seq sequences - if any. + +2017-08-02 Richard Biener + + * tree-vect-stmts.c (vectorizable_store): Perform vector extracts + via vectors if supported, integer extracts via punning if supported + or otherwise vector extracts. + +2017-08-02 Richard Biener + + * tree-ssa-pre.c (bitmap_insert_into_set_1): Remove and inline + into ... + (bitmap_insert_into_set): ... this. + +2017-08-02 Richard Biener + + PR tree-optimization/81633 + Revert + 2015-08-17 Alan Hayward + + PR tree-optimization/71752 + * tree-vect-slp.c (vect_get_slp_defs): Handle null operands. + +2017-08-01 Daniel Santos + + * config/i386/i386.h (ix86_frame::outlined_save_offset): Remove field. + (machine_function::call_ms2sysv_pad_out): Remove field. + * config/i386/i386.c (xlogue_layout::get_stack_space_used): Modify. + (ix86_compute_frame_layout): Likewise. + +2017-08-01 H.J. Lu + + PR target/81654 + * config/i386/i386.c (ix86_set_func_type): Disallow naked + attribute with interrupt attribute. + +2017-08-01 Andrew Pinski + + * tree-ssa-scopedtables.c (hashable_expr_equal_p): Check + BIT_INSERT_EXPR's operand 1 + to see if the types precision matches. + +2017-08-01 Martin Liska + + PR middle-end/70140 + * builtins.c (expand_builtin_memcpy_args): Remove. + (expand_builtin_memcpy): Call newly added function + expand_builtin_memory_copy_args. + (expand_builtin_memcpy_with_bounds): Likewise. + (expand_builtin_mempcpy): Remove last argument. + (expand_builtin_mempcpy_with_bounds): Likewise. + (expand_builtin_memory_copy_args): New function created from + expand_builtin_mempcpy_args with small modifications. + (expand_builtin_mempcpy_args): Remove. + (expand_builtin_stpcpy): Remove unused argument. + (expand_builtin): Likewise. + (expand_builtin_with_bounds): Likewise. + +2017-08-01 Martin Liska + + Revert r250771 + Make mempcpy more optimal (PR middle-end/70140). + +2017-08-01 Jakub Jelinek + + PR target/81622 + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For + __builtin_vec_cmpne verify both arguments are compatible vectors + before looking at TYPE_MODE on the element type. For __builtin_vec_ld + verify arg1_type is a pointer or array type. For __builtin_vec_st, + move computation of aligned to after checking the argument types. + Formatting fixes. + + PR target/80846 + * config/rs6000/vsx.md (vextract_fp_from_shorth, + vextract_fp_from_shortl): Add element mode after mode in gen_vec_init* + calls. + +2017-08-01 Jerome Lambourg + Doug Rupp + Olivier Hainque + + * config.gcc (arm-wrs-vxworks*): Rework to handle arm-wrs-vxworks7 as + well as arm-wrs-vxworks. Update target_cpu_name from arm6 (arch v3) to + arm8 (arch v4). + * config/arm/vxworks.h (MAYBE_TARGET_BPABI_CPP_BUILTINS): New, helper + for TARGET_OS_CPP_BUILTIN. + (TARGET_OS_CPP_BUILTIN): Invoke MAYBE_TARGET_BPABI_CPP_BUILTINS(), + refine CPU definitions for arm_arch5 and add those for arm_arch6 and + arm_arch7. + (MAYBE_ASM_ABI_SPEC): New, helper for SUBTARGET_EXTRA_ASM_SPEC, + passing required abi options to the assembler for EABI configurations. + (EXTRA_CC1_SPEC): New macro, to help prevent the implicit production + of .text.hot and .text.unlikely sections for kernel modules when + using ARM style exceptions. + (CC1_SPEC): Remove obsolete attempt at mimicking Diab toolchain + options. Add EXTRA_CC1_SPEC. + (VXWORKS_ENDIAN_SPEC): Adjust comment and remove handling of Diab + toolchain options. + (DWARF2_UNWIND_INFO): Redefine to handle the pre/post VxWorks 7 + transition. + (ARM_TARGET2_DWARF_FORMAT): Define. + * config/arm/t-vxworks: Adjust multilib control to removal of the + Diab command line options. + +2017-08-01 Martin Liska + + PR gcov-profile/81561 + * gcov.c (unblock): Make unblocking safe as we need to preserve + index correspondence of blocks and block_lists. + +2017-08-01 Richard Biener + + PR tree-optimization/81181 + * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ... + (compute_antic): ... end of iteration here. + +2017-08-01 James Greenhalgh + + * common.opt (ftree-vectorize): No longer set flag_tree_vectorize. + (ftree-loop-vectorize): Set as EnabledBy ftree-vectorize. + (ftree-slp-vectorize): Likewise. + * omp-expand (expand_omp_simd): Remove flag_tree_vectorize, as it + can no longer be set independent of flag_tree_loop_vectorize. + * omp-general.c (emp_max_vf): Likewise. + * opts.c (enable_fdo_optimizations): Remove references to + flag_tree_vectorize, these are now implicit. + (common_handle_option): Remove handling for OPT_ftree_vectorize, + and leave it for the options machinery. + +2017-08-01 Martin Liska + + PR middle-end/70140 + * builtins.c (expand_builtin_memcpy_args): Remove. + (expand_builtin_memcpy): Call newly added function + expand_builtin_memory_copy_args. + (expand_builtin_memcpy_with_bounds): Likewise. + (expand_builtin_mempcpy): Remove last argument. + (expand_builtin_mempcpy_with_bounds): Likewise. + (expand_builtin_memory_copy_args): New function created from + expand_builtin_mempcpy_args with small modifications. + (expand_builtin_mempcpy_args): Remove. + (expand_builtin_stpcpy): Remove unused argument. + (expand_builtin): Likewise. + (expand_builtin_with_bounds): Likewise. + +2017-08-01 Uros Bizjak + + PR target/81641 + * config/i386/i386.c (ix86_print_operand_address_as): For -masm=intel + print "ds:" only for immediates in generic address space. + +2017-08-01 Uros Bizjak + + PR target/81639 + * config/i386/i386.c (ix86_funciton_naked): New prototype. + (ix86_function_ok_for_sibcall): Return false for naked functions. + +2017-08-01 Richard Biener + + * tree-ssa-pre.c (print_pre_expr): Handle NULL expr. + (compute_antic): Seed worklist with exit block predecessors. + * cfganal.c (dfs_find_deadend): For a cycle return the source + of the edge closing it. + +2017-08-01 Tamar Christina + + * config/aarch64/aarch64.c + (aarch64_can_const_movi_rtx_p): Move 0 check. + +2017-08-01 Bin Cheng + + * tree.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Delete. + * fold-const.c (fold_comparison, fold_binary_loc): Delete use of + above macro. + * match.pd: Ditto in address comparison pattern. + +2017-08-01 Bin Cheng + + PR tree-optimization/81627 + * tree-predcom.c (prepare_finalizers): Always rewrite into loop + closed ssa form for store-store chain. + +2017-08-01 Bin Cheng + + PR tree-optimization/81620 + * tree-predcom.c (add_ref_to_chain): Don't set has_max_use_after + for store-store chain. + +2017-08-01 Jakub Jelinek + + PR tree-optimization/81588 + * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If + ranges[i].in_p, invert comparison code ccode. For >/>=, + swap rhs1 and rhs2 and comparison code unconditionally, + for rank is BIT_IOR_EXPR. + + PR target/80846 + * optabs.def (vec_extract_optab, vec_init_optab): Change from + a direct optab to conversion optab. + * optabs.c (expand_vector_broadcast): Use convert_optab_handler + with GET_MODE_INNER as last argument instead of optab_handler. + * expmed.c (extract_bit_field_1): Likewise. Use vector from + vector extraction if possible and optab is available. + * expr.c (store_constructor): Use convert_optab_handler instead + of optab_handler. Use vector initialization from smaller + vectors if possible and optab is available. + * tree-vect-stmts.c (vectorizable_load): Likewise. + * doc/md.texi (vec_extract, vec_init): Document that the optabs + now have two modes. + * config/i386/i386.c (ix86_expand_vector_init): Handle expansion + of vec_init from half-sized vectors with the same element mode. + * config/i386/sse.md (ssehalfvecmode): Add V4TI case. + (ssehalfvecmodelower, ssescalarmodelower): New mode attributes. + (reduc_plus_scal_v8df, reduc_plus_scal_v4df, reduc_plus_scal_v2df, + reduc_plus_scal_v16sf, reduc_plus_scal_v8sf, reduc_plus_scal_v4sf, + reduc__scal_, reduc_umin_scal_v8hi): Add element mode + after mode in gen_vec_extract* calls. + (vec_extract): Renamed to ... + (vec_extract): ... this. + (vec_extract): New expander. + (rotl3, rotr3, 3, ashrv2di3): Add + element mode after mode in gen_vec_init* calls. + (VEC_INIT_HALF_MODE): New mode iterator. + (vec_init): Renamed to ... + (vec_init): ... this. + (vec_init): New expander. + * config/i386/mmx.md (vec_extractv2sf): Renamed to ... + (vec_extractv2sfsf): ... this. + (vec_initv2sf): Renamed to ... + (vec_initv2sfsf): ... this. + (vec_extractv2si): Renamed to ... + (vec_extractv2sisi): ... this. + (vec_initv2si): Renamed to ... + (vec_initv2sisi): ... this. + (vec_extractv4hi): Renamed to ... + (vec_extractv4hihi): ... this. + (vec_initv4hi): Renamed to ... + (vec_initv4hihi): ... this. + (vec_extractv8qi): Renamed to ... + (vec_extractv8qiqi): ... this. + (vec_initv8qi): Renamed to ... + (vec_initv8qiqi): ... this. + * config/rs6000/vector.md (VEC_base_l): New mode attribute. + (vec_init): Renamed to ... + (vec_init): ... this. + (vec_extract): Renamed to ... + (vec_extract): ... this. + * config/rs6000/paired.md (vec_initv2sf): Renamed to ... + (vec_initv2sfsf): ... this. + * config/rs6000/altivec.md (splitter, altivec_copysign_v4sf3, + vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi, + vec_unpacku_lo_v8hi, mulv16qi3, altivec_vreve2): Add + element mode after mode in gen_vec_init* calls. + * config/aarch64/aarch64-simd.md (vec_init): Renamed to ... + (vec_init): ... this. + (vec_extract): Renamed to ... + (vec_extract): ... this. + * config/aarch64/iterators.md (Vel): New mode attribute. + * config/s390/s390.c (s390_expand_vec_strlen, s390_expand_vec_movstr): + Add element mode after mode in gen_vec_extract* calls. + * config/s390/vector.md (non_vec_l): New mode attribute. + (vec_extract): Renamed to ... + (vec_extract): ... this. + (vec_init): Renamed to ... + (vec_init): ... this. + * config/s390/s390-builtins.def (s390_vlgvb, s390_vlgvh, s390_vlgvf, + s390_vlgvf_flt, s390_vlgvg, s390_vlgvg_dbl): Add element mode after + vec_extract mode. + * config/arm/iterators.md (V_elem_l): New mode attribute. + * config/arm/neon.md (vec_extract): Renamed to ... + (vec_extract): ... this. + (vec_extractv2di): Renamed to ... + (vec_extractv2didi): ... this. + (vec_init): Renamed to ... + (vec_init): ... this. + (reduc_plus_scal_, reduc_plus_scal_v2di, reduc_smin_scal_, + reduc_smax_scal_, reduc_umin_scal_, + reduc_umax_scal_, neon_vget_lane, neon_vget_laneu): + Add element mode after gen_vec_extract* calls. + * config/mips/mips-msa.md (vec_init): Renamed to ... + (vec_init): ... this. + (vec_extract): Renamed to ... + (vec_extract): ... this. + * config/mips/loongson.md (vec_init): Renamed to ... + (vec_init): ... this. + * config/mips/mips-ps-3d.md (vec_initv2sf): Renamed to ... + (vec_initv2sfsf): ... this. + (vec_extractv2sf): Renamed to ... + (vec_extractv2sfsf): ... this. + (reduc_plus_scal_v2sf, reduc_smin_scal_v2sf, reduc_smax_scal_v2sf): + Add element mode after gen_vec_extract* calls. + * config/mips/mips.md (unitmode): New mode iterator. + * config/spu/spu.c (spu_expand_prologue, spu_allocate_stack, + spu_builtin_extract): Add element mode after gen_vec_extract* calls. + * config/spu/spu.md (inner_l): New mode attribute. + (vec_init): Renamed to ... + (vec_init): ... this. + (vec_extract): Renamed to ... + (vec_extract): ... this. + * config/sparc/sparc.md (veltmode): New mode iterator. + (vec_init): Renamed to ... + (vec_init): ... this. + * config/ia64/vect.md (vec_initv2si): Renamed to ... + (vec_initv2sisi): ... this. + (vec_initv2sf): Renamed to ... + (vec_initv2sfsf): ... this. + (vec_extractv2sf): Renamed to ... + (vec_extractv2sfsf): ... this. + * config/powerpcspe/vector.md (VEC_base_l): New mode attribute. + (vec_init): Renamed to ... + (vec_init): ... this. + (vec_extract): Renamed to ... + (vec_extract): ... this. + * config/powerpcspe/paired.md (vec_initv2sf): Renamed to ... + (vec_initv2sfsf): ... this. + * config/powerpcspe/altivec.md (splitter, altivec_copysign_v4sf3, + vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi, + vec_unpacku_lo_v8hi, mulv16qi3): Add element mode after mode in + gen_vec_init* calls. + +2017-08-01 Richard Biener + + PR tree-optimization/81297 + * tree-vrp.c (get_single_symbol): Remove assert, instead drop + TREE_OVERFLOW from INTEGER_CSTs. + +2017-07-31 Segher Boessenkool + + * config/rs6000/rs6000.c (enum rs6000_reg_type): Delete trailing comma. + +2017-07-31 Carl Love + + * config/rs6000/rs6000-c: Add support for built-in functions + vector signed char vec_xl_be (signed long long, signed char *); + vector unsigned char vec_xl_be (signed long long, unsigned char *); + vector signed int vec_xl_be (signed long long, signed int *); + vector unsigned int vec_xl_be (signed long long, unsigned int *); + vector signed long long vec_xl_be (signed long long, signed long long *); + vector unsigned long long vec_xl_be (signed long long, unsigned long long *); + vector signed short vec_xl_be (signed long long, signed short *); + vector unsigned short vec_xl_be (signed long long, unsigned short *); + vector double vec_xl_be (signed long long, double *); + vector float vec_xl_be (signed long long, float *); + * config/rs6000/altivec.h (vec_xl_be): Add #define. + * config/rs6000/rs6000-builtin.def (XL_BE_V16QI, XL_BE_V8HI, XL_BE_V4SI) + XL_BE_V2DI, XL_BE_V4SF, XL_BE_V2DF, XL_BE): Add definitions + for the builtins. + * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Add function. + (altivec_expand_builtin): Add switch statement to call + altivec_expand_xl_be for each builtin. + (altivec_init_builtins): Add def_builtin for _builtin_vsx_le_be_v8hi, + __builtin_vsx_le_be_v4si, __builtin_vsx_le_be_v2di, + __builtin_vsx_le_be_v4sf, __builtin_vsx_le_be_v2df, + __builtin_vsx_le_be_v16qi. + * doc/extend.texi: Update the built-in documentation file for the + new built-in functions. + +2017-07-31 Uros Bizjak + + PR target/25967 + * config/i386/i386.c (ix86_allocate_stack_slots_for_args): + New function. + (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define. + +2017-07-31 Andreas Krebbel + + * config.gcc: Add z14. + * config/s390/driver-native.c (s390_host_detect_local_cpu): Add + CPU model numbers for z13s and z14. + * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Replace + arch12 with z14. + * config/s390/s390-opts.h (enum processor_type): Rename + PROCESSOR_ARCH12 to PROCESSOR_3906_Z14. + * config/s390/s390.c (processor_table): Add field for CPU name to + be passed to Binutils. + (s390_asm_output_machine_for_arch): Use the new field in + processor_table for Binutils. + (s390_expand_builtin): Replace arch12 with z14. + (s390_issue_rate): Rename PROCESSOR_ARCH12 to PROCESSOR_3906_Z14. + (s390_get_sched_attrmask): Likewise. + (s390_get_unit_mask): Likewise. + * config/s390/s390.opt: Add z14 to processor_type enum. + +2017-07-31 Martin Jambor + + PR hsa/81477 + * ipa-fnsummary.c (ipa_fn_summary_generate): Set versionable + regardless of optimization level. + +2017-07-31 Jan Hubicka + Martin Liska + + * predict.def: Remove old comment and adjust probability. + * gimplify.c (should_warn_for_implicit_fallthrough): Ignore + PREDICT statements. + +2017-07-31 Uros Bizjak + + PR target/25967 + * config/i386/i386.c (ix86_function_naked): New function. + (ix86_can_use_return_insn_p): Return false for naked functions. + (ix86_expand_prologue): Skip prologue for naked functions. + (ix86_expand_epilogue): Skip epilogue for naked functions + and emit trap instruction. + (ix86_warn_func_return): New function. + (ix86_attribute_table): Add "naked" attribute specification. + (TARGET_WARN_FUNC_RETURN): Define. + * doc/extend.texi (x86 Function Attributes) : Document it. + +2017-07-31 Martin Liska + + * gimple-pretty-print.c (dump_gimple_label): Never dump BB info. + (dump_gimple_bb_header): Always dump BB info. + (pp_cfg_jump): Do not append info about BB when dumping a jump. + +2017-07-31 Martin Liska + + PR sanitize/81530 + * convert.c (convert_to_integer_1): Guard condition with flag_sanitize_p + also with current_function_decl non-null equality. + +2017-07-31 Jakub Jelinek + + PR sanitizer/81604 + * ubsan.c (ubsan_type_descriptor): For UBSAN_PRINT_ARRAY don't + change type to the element type, instead add eltype variable and + use it where we are interested in the element type. + + PR tree-optimization/81603 + * ipa-polymorphic-call.c + (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Perform + offset arithmetic in offset_int, bail out if the resulting bit offset + doesn't fit into shwi. + +2017-07-31 Martin Liska + + * gimplify.c (mostly_copy_tree_r): Remove Java specific hunk. + (gimplify_save_expr): Fix comment. + +2017-07-30 H.J. Lu + + PR target/79793 + * config/i386/i386.c (ix86_function_arg): Update arguments for + exception handler. + (ix86_compute_frame_layout): Set the initial stack offset to + INCOMING_FRAME_SP_OFFSET. Update red-zone offset with + INCOMING_FRAME_SP_OFFSET. + (ix86_expand_epilogue): Don't pop the 'ERROR_CODE' off the + stack before exception handler returns. + * config/i386/i386.h (INCOMING_FRAME_SP_OFFSET): Add the + the 'ERROR_CODE' for exception handler. + +2017-07-30 Uros Bizjak + + * config/i386/i386.h (ASM_PRINTF_EXTENSIONS): New macro. + (ASM_OUTPUT_REG_PUSH): Rewrite with new operand modifiers. + (ASM_OUTPUT_REG_POP): Ditto. + * config/i386/i386.c (ix86_asm_output_function_label): Use fputs + instead of asm_fprintf to output pure string. + +2017-07-29 Jakub Jelinek + + * debug.h (struct gcc_debug_hooks): Add IMPLICIT argument + to imported_module_or_decl hook. + (debug_nothing_tree_tree_tree_bool): Remove. + (debug_nothing_tree_tree_tree_bool_bool): New declaration. + * debug.c (do_nothing_debug_hooks): Use + debug_nothing_tree_tree_tree_bool_bool instead of + debug_nothing_tree_tree_tree_bool. + * vmsdbgout.c (vmsdbg_debug_hooks): Likewise. + * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise. + * sdbout.c (sdb_debug_hooks): Likewise. + * dwarf2out.c (dwarf2_lineno_debug_hooks): Likewise. + (gen_namespace_die): Add DW_AT_export_symbols attribute if + langhook wants it. + (dwarf2out_imported_module_or_decl): Add IMPLICIT argument, + if true, -gdwarf-5 and decl will have DW_AT_export_symbols + attribute, don't add anything. + +2017-07-28 Trevor Saunders + + * fold-const.c (fold_build1_stat_loc): Remove _stat from name. + (fold_build2_stat_loc): Likewise. + (fold_build3_stat_loc): Likewise. + * fold-const.h (fold_build1, fold_build2, fold_build3): Adjust. + (fold_build1_loc): Remove macro. + (fold_build2_loc): Likewise. + (fold_build3_loc): Likewise. + +2017-07-28 Trevor Saunders + + * gimple.c (gimple_build_debug_bind_stat): Remove _stat from name. + (gimple_build_debug_bind_source_stat): Likewise. + * gimple.h (gimple_build_debug_bind): Remove macro. + (gimple_build_debug_bind_source): Likewise. + +2017-07-28 Trevor Saunders + + * bitmap.c (bitmap_alloc): Adjust. + (bitmap_gc_alloc): Likewise. + * bitmap.h (bitmap_initialize_stat): Remove _stat from name. + +2017-07-28 Trevor Saunders + + * bitmap.c (bitmap_obstack_alloc_stat): Rename to bitmap_alloc. + (bitmap_gc_alloc_stat): Rename to bitmap_gc_alloc. + * bitmap.h (bitmap_obstack_alloc_stat): Adjust prototype. + (bitmap_gc_alloc_stat): Likewise. + (BITMAP_ALLOC, BITMAP_GGC_ALLOC): Adjust. + +2017-07-28 Trevor Saunders + + * rtl.c (shallow_copy_rtx_stat): Remove _stat from name. + * rtl.h (shallow_copy_rtx): Remove macro. + +2017-07-28 Trevor Saunders + + * emit-rtl.c (gen_raw_REG): Adjust. + * gengenrtl.c (gendef): Likewise. + * rtl.c (rtx_alloc_stat): Remove _stat from name. + * rtl.h (rtx_alloc): Remove macro. + +2017-07-28 Trevor Saunders + + * tree.c (build_tree_list_vec_stat): Remove _stat from name. + (build_tree_list_stat): Likewise. + * tree.h (build_tree_list): Remove macro. + (build_tree_list_vec): Likewise. + +2017-07-28 Trevor Saunders + + * tree.c (make_vector_stat): Remove _stat from name. + (build_vector_stat): Likewise. + * tree.h (make_vector_stat): Remove macro. + (build_vector_stat): Likewise. + +2017-07-28 Trevor Saunders + + * tree.h (build_var_debug_value): Remove prototype. + +2017-07-28 Trevor Saunders + + * tree.c (tree_cons_stat): Remove _stat from name. + * tree.h (tree_cons): Remove macro. + +2017-07-28 Trevor Saunders + + * tree.c (build_vl_exp_stat): Remove _stat from name. + * tree.h (build_vl_exp): Remove macro. + +2017-07-28 Trevor Saunders + + * tree.c (build_decl_stat): Remove _stat from name. + * tree.h (build_decl): Remove macro. + +2017-07-28 Trevor Saunders + + * gimple.c (gimple_build_with_ops_stat): Adjust. + (gimple_alloc_stat): Remove _stat from name. + * gimple.h (gimple_alloc): Remove macro. + +2017-07-28 Trevor Saunders + + * tree.c (make_tree_vec_stat): Remove _stat from name. + (grow_tree_vec_stat): Likewise. + * tree.h (make_tree_vec_stat): Adjust prototype. + (grow_tree_vec_stat): Likewise. + (make_tree_vec): Remove macro. + (grow_tree_vec): Likewise. + +2017-07-28 Trevor Saunders + + * fold-const.c (fold_build1_stat_loc): Adjust. + (fold_build2_stat_loc): Likewise. + (fold_build3_stat_loc): Likewise. + * tree.c (build0_stat): Remove _stat from name. + (build1_stat): Likewise. + (build2_stat): Likewise. + (build3_stat): Likewise. + (build4_stat): Likewise. + (build5_stat): Likewise. + * tree.h (build1_loc): Remove macro, and rename _stat function + to this. + (build2_loc): Likewise. + (build3_loc): Likewise. + (build4_loc): Likewise. + (build5_loc): Likewise. + +2017-07-28 Trevor Saunders + + * tree.c (make_int_cst_stat): Remove _stat from name. + * tree.h (make_int_cst_stat): Adjust prototype. + (make_int_cst): Remove macro. + +2017-07-28 Trevor Saunders + + * tree.c (make_tre_binfo_stat): Remove _stat from name. + * tree.h (make_tree_binfo_stat): Adjust prototype. + (make_tree_binfo): Remove. + +2017-07-28 Trevor Saunders + + * tree.c (copy_node_stat): Rename to copy_node. + (build_distinct_type_copy): Adjust. + * tree.h (copy_node_stat): Adjust prototype. + (copy_node): Remove macro. + +2017-07-28 Trevor Saunders + + * tree.c (make_node_stat): rename to make_node. + (build_tree_list_stat): Adjust. + (build0_stat): Likewise. + (build2_stat): Likewise. + (build3_stat): Likewise. + (build4_stat): Likewise. + (build5_stat): Likewise. + (build_decl_stat): Likewise. + * tree.h (make_node_stat): Adjust prototype. + (make_node): remove macro. + +2017-07-28 Peter Bergner + + * config/rs6000/ppc-auxv.h (PPC_FEATURE2_DARN): New define. + (PPC_FEATURE2_SCV): Likewise. + * config/rs6000/rs6000.c (cpu_supports_info): Use them. + +2017-07-28 Tamar Christina + + * config/aarch64/aarch64.c + (aarch64_internal_mov_immediate): Add new special pattern. + * config/aarch64/aarch64.md (*movdi_aarch64): + Add reg/32bit const mov case. + +2017-07-28 Tamar Christina + Richard Sandiford + + * config/aarch64/aarch64.md (mov): Generalize. + (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64): + Add integer and movi cases. + (movi-split-hf-df-sf split, fp16): New. + (enabled): Added TARGET_FP_F16INST. + * config/aarch64/iterators.md (GPF_HF): New. + * config/aarch64/predicates.md (aarch64_reg_or_fp_float): New. + +2017-07-28 Tamar Christina + + * config/aarch64/aarch64.c + (aarch64_simd_container_mode): Add prototype. + (aarch64_expand_mov_immediate): Add HI support. + (aarch64_reinterpret_float_as_int, aarch64_float_const_rtx_p: New. + (aarch64_can_const_movi_rtx_p): New. + (aarch64_preferred_reload_class): + Remove restrictions of using FP registers for certain SIMD operations. + (aarch64_rtx_costs): Added new cost for CONST_DOUBLE moves. + (aarch64_valid_floating_const): Add integer move validation. + (aarch64_simd_imm_scalar_p): Remove. + (aarch64_output_scalar_simd_mov_immediate): Generalize function. + (aarch64_legitimate_constant_p): Expand list of supported cases. + * config/aarch64/aarch64-protos.h + (aarch64_float_const_rtx_p, aarch64_can_const_movi_rtx_p): New. + (aarch64_reinterpret_float_as_int): New. + (aarch64_simd_imm_scalar_p): Remove. + * config/aarch64/constraints.md (Uvi): New. + (Dd): Split into Ds and new Dd. + * config/aarch64/aarch64.md (*movsi_aarch64): + Add SIMD mov case. + (*movdi_aarch64): Add SIMD mov case. + +2017-07-28 Bin Cheng + + * tree-predcom.c: (struct chain): Handle store-store chain in which + stores for elimination only store loop invariant values. + (execute_pred_commoning_chain): Ditto. + (prepare_initializers_chain_store_elim): Ditto. + (prepare_finalizers): Ditto. + (is_inv_store_elimination_chain): New function. + (initialize_root_vars_store_elim_1): New function. + +2017-07-28 Bin Cheng + + * tree-predcom.c: Revise general description of the pass. + (enum chain_type): New enum type for store elimination. + (struct chain): New field supporting store elimination. + (struct component): Ditto. + (dump_chain): Dump store-stores chain. + (release_chain): Release resources. + (split_data_refs_to_components): Compute and create component + contains only stores for elimination. + (get_chain_last_ref_at): New function. + (make_invariant_chain): Initialization. + (make_rooted_chain): Specify chain type in parameter and record it. + (add_looparound_copies): Skip for store-stores chain. + (determine_roots_comp): Compute type of chain and pass it to + make_rooted_chain. + (initialize_root_vars_store_elim_2): New function. + (finalize_eliminated_stores): New function. + (remove_stmt): Handle store for elimination. + (execute_pred_commoning_chain): Execute predictive commoning on + store-store chains. + (determine_unroll_factor): Skip unroll for store-stores chain. + (prepare_initializers_chain_store_elim): New function. + (prepare_initializers_chain): Hanlde store-store chain. + (prepare_finalizers_chain, prepare_finalizers): New function. + (tree_predictive_commoning_loop): Return integer value indicating + if loop is unrolled or lcssa form is corrupted. + (tree_predictive_commoning): Rewrite for lcssa form if necessary. + +2017-07-28 Bin Cheng + + * tree-predcom.c (initialize_root): Delete. + (execute_pred_commoning_chain): Initialize root vars and replace + reference of non-combined chain directly, rather than call above + function. + +2017-07-28 Bin Cheng + + * tree-predcom.c (ref_at_iteration): Add parameter NITERS. Compute + memory reference to DR at (NITERS + ITERS)-th iteration of loop. + +2017-07-28 Bin Cheng + + * tree-predcom.c (struct chain): New field init_seq. + (release_chain): Release init_seq. + (prepare_initializers_chain): Record intialization stmts in above + field. + (insert_init_seqs): New function. + (tree_predictive_commoning_loop): Call insert_init_seqs. + +2017-07-28 Bin Cheng + + * tree-predcom.c (determine_roots_comp): Skip trivial components. + +2017-07-28 Richard Biener + + * match.pd: Remove superfluous :c. + * genmatch.c (simplify::id): Add member. + (lower_commutative, lower_opt_convert, lower_cond, lower_for): + Copy id. + (current_id): New global. + (dt_node::parent): Move from ... + (dt_operand::parent): ... here. Add for_id member. + (is_a_helper ::test): DT_TRUE is also a dt_operand. + (decision_tree::find_node): Relax order requirement when + merging DT_TRUE nodes to ones inbetween the current simplify + and the one we try to merge with. Add diagnostic whenever + we need to enforce pattern order by not merging. + (decision_tree::insert): Set current_id. + (decision_tree::print_node): Dump parent node and for_id. + (parser::last_id): Add member. + (parser::push_simplify): Assign unique id. + (parser::parser): Initialize last_id. + +2017-07-28 Martin Liska + + PR sanitizer/81340 + * sanopt.c (sanitize_rewrite_addressable_params): Set VALUE_EXPR after + gimple_build_debug_bind. + +2017-07-28 Richard Biener + + PR tree-optimization/81502 + * match.pd: Add pattern combining BIT_INSERT_EXPR with + BIT_FIELD_REF. + * tree-cfg.c (verify_expr): Verify types of BIT_FIELD_REF + size/pos operands. + (verify_gimple_assign_ternary): Likewise for BIT_INSERT_EXPR pos. + * gimple-fold.c (maybe_canonicalize_mem_ref_addr): Use bitsizetype + for BIT_FIELD_REF args. + * fold-const.c (make_bit_field_ref): Likewise. + * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise. + +2017-07-28 Jakub Jelinek + + PR sanitizer/80998 + * sanopt.c (pass_sanopt::execute): Handle IFN_UBSAN_PTR. + * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise. + * flag-types.h (enum sanitize_code): Add SANITIZER_POINTER_OVERFLOW. + Or it into SANITIZER_UNDEFINED. + * ubsan.c: Include gimple-fold.h and varasm.h. + (ubsan_expand_ptr_ifn): New function. + (instrument_pointer_overflow): New function. + (maybe_instrument_pointer_overflow): New function. + (instrument_object_size): Formatting fix. + (pass_ubsan::execute): Call instrument_pointer_overflow + and maybe_instrument_pointer_overflow. + * internal-fn.c (expand_UBSAN_PTR): New function. + * ubsan.h (ubsan_expand_ptr_ifn): Declare. + * sanitizer.def (__ubsan_handle_pointer_overflow, + __ubsan_handle_pointer_overflow_abort): New builtins. + * tree-ssa-tail-merge.c (merge_stmts_p): Handle IFN_UBSAN_PTR. + * internal-fn.def (UBSAN_PTR): New internal function. + * opts.c (sanitizer_opts): Add pointer-overflow. + * lto-streamer-in.c (input_function): Handle IFN_UBSAN_PTR. + * fold-const.c (build_range_check): Compute pointer range check in + integral type if pointer arithmetics would be needed. Formatting + fixes. + +2017-07-28 Martin Liska + + PR sanitizer/81460 + * sanopt.c (sanitize_rewrite_addressable_params): Do not rewrite + parameters that are of a variable-length. + +2017-07-28 Sebastian Huber + + * config.gcc (powerpc-*-rtems*): Remove rs6000/eabi.h. Add + rs6000/biarch64.h. + * config/rs6000/rtems.h (ASM_DECLARE_FUNCTION_SIZE): New macro. + (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise. + (CRT_CALL_STATIC_FUNCTION): Likewise. + (ASM_DEFAULT_SPEC): New define. + (ASM_SPEC32): Likewise. + (ASM_SPEC64): Likewise. + (ASM_SPEC_COMMON): Likewise. + (ASM_SPEC): Likewise. + (INVALID_64BIT): Likewise. + (LINK_OS_DEFAULT_SPEC): Likewise. + (LINK_OS_SPEC32): Likewise. + (LINK_OS_SPEC64): Likewise. + (POWERPC_LINUX): Likewise. + (PTRDIFF_TYPE): Likewise. + (RESTORE_FP_PREFIX): Likewise. + (RESTORE_FP_SUFFIX): Likewise. + (SAVE_FP_PREFIX): Likewise. + (SAVE_FP_SUFFIX): Likewise. + (SIZE_TYPE): Likewise. + (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise. + (TARGET_64BIT): Likewise. + (TARGET_64BIT): Likewise. + (TARGET_AIX): Likewise. + (WCHAR_TYPE_SIZE): Likewise. + (WCHAR_TYPE): Undefine. + (TARGET_OS_CPP_BUILTINS): Add 64-bit PowerPC defines. + (CPP_OS_DEFAULT_SPEC): Use previous CPP_OS_RTEMS_SPEC. + (CPP_OS_RTEMS_SPEC): Delete. + (SUBSUBTARGET_EXTRA_SPECS): Remove cpp_os_rtems. Add + asm_spec_common, asm_spec32, asm_spec64, link_os_spec32, and + link_os_spec64. + * config/rs6000/t-rtems: Add mcpu=e6500/m64 multilibs. + +2017-07-28 Jakub Jelinek + + PR tree-optimization/81578 + * tree-parloops.c (build_new_reduction): Bail out if + reduction_code isn't one of the standard OpenMP reductions. + Move the details printing after that decision. + +2017-07-27 Peter Bergner + + * config/rs6000/predicates.md (volatile_mem_operand): Remove code + related to reload_in_progress. + (splat_input_operand): Likewise. + * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx): + Delete prototype. + * config/rs6000/rs6000.c (machine_function): Remove sdmode_stack_slot + field. + (TARGET_EXPAND_TO_RTL_HOOK): Delete. + (TARGET_INSTANTIATE_DECLS): Likewise. + (legitimate_indexed_address_p): Delete reload_in_progress code. + (rs6000_debug_legitimate_address_p): Likewise. + (rs6000_eliminate_indexed_memrefs): Likewise. + (rs6000_emit_le_vsx_store): Likewise. + (rs6000_emit_move_si_sf_subreg): Likewise. + (rs6000_emit_move): Likewise. + (register_to_reg_type): Likewise. + (rs6000_pre_atomic_barrier): Likewise. + (rs6000_machopic_legitimize_pic_address): Likewise. + (rs6000_allocate_stack_temp): Likewise. + (rs6000_address_for_fpconvert): Likewise. + (rs6000_address_for_altivec): Likewise. + (rs6000_secondary_memory_needed_rtx): Delete function. + (rs6000_check_sdmode): Likewise. + (rs6000_alloc_sdmode_stack_slot): Likewise. + (rs6000_instantiate_decls): Likewise. + * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_RTX): Delete. + * config/rs6000/rs6000.md (splitter for *movsi_got_internal): + Delete reload_in_progress. + (*vec_reload_and_plus_): Likewise. + * config/rs6000/vsx.md (vsx_mul_v2di): Likewise. + (vsx_div_v2di): Likewise. + (vsx_udiv_v2di): Likewise. + +2017-07-27 Peter Bergner + + * config/rs6000/rs6000.opt (mlra): Replace with stub. + * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete OPTION_MASK_LRA. + * config/rs6000/rs6000.c (TARGET_LRA_P): Delete. + (rs6000_debug_reg_global): Delete print of LRA status. + (rs6000_option_override_internal): Delete dead LRA related code. + (rs6000_lra_p): Delete function. + * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mlra. + +2017-07-27 Sebastian Huber + + * config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*). + * config/riscv/rtems.h: New file. + +2017-07-27 Kyrylo Tkachov + Sudakshina Das + + * config/aarch64/aarch64.md + (define_split for and3nr_compare): Move + non aarch64_logical_operand to a register. + (define_split for and_3nr_compare0): Move non + register immediate operand to a register. + * config/aarch64/predicates.md (aarch64_mov_imm_operand): New. + +2017-07-27 Peter Bergner + + PR middle-end/81564 + * tree-cfg.c (group_case_labels_stmt): Handle already deleted blocks. + +2017-07-27 Richard Biener + + PR tree-optimization/81573 + PR tree-optimization/81494 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Handle + multi defuse cycle case. + +2017-07-27 Richard Biener + + PR tree-optimization/81571 + * tree-vect-slp.c (vect_build_slp_tree): Properly verify reduction + PHIs. + +2017-07-27 Eric Botcazou + + * config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag + earlier and only if MASK_FPU is set. Adjust formatting. + +2017-07-27 Martin Liska + + * opt-functions.awk: Add validation of value of Init. + * optc-gen.awk: Pass new argument. + +2017-07-27 Martin Liska + + * auto-profile.c (autofdo_source_profile::update_inlined_ind_target): + Fix wrong condition. + +2017-07-27 Martin Liska + + * auto-profile.c (afdo_annotate_cfg): Assign zero counts to + BBs and edges seen by autoFDO. + +2017-07-27 Richard Biener + + PR tree-optimization/81502 + * tree-ssa.c (non_rewritable_lvalue_p): Handle BIT_INSERT_EXPR + with incompatible but same sized type. + (execute_update_addresses_taken): Likewise. + +2017-07-27 James Greenhalgh + + * tree-ssa-loop-ch.c (pass_ch::process_loop_p): Guard on + flag_tree_loop_vectorize rather than flag_tree_vectorize. + +2017-07-27 Andreas Krebbel + + PR target/81534 + * config/s390/s390.md ("*atomic_compare_and_swap_1") + ("*atomic_compare_and_swapdi_2", "*atomic_compare_and_swapsi_3"): + Change s_operand to memory_operand. + +2017-07-27 Richard Sandiford + + * config/rs6000/rs6000-protos.h (rs6000_emit_le_vsx_permute): Declare. + * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Replace with... + (rs6000_emit_le_vsx_permute): ...this. Take the destination as input. + Emit instructions rather than returning an expression. Handle TFmode + and KFmode by casting to TImode. + (rs6000_emit_le_vsx_load): Update to use rs6000_emit_le_vsx_permute. + (rs6000_emit_le_vsx_store): Likewise. + * config/rs6000/vsx.md (VSX_TI): New iterator. + (*vsx_le_permute_): Use it instead of VSX_LE_128. + (*vsx_le_undo_permute_): Likewise. + (*vsx_le_perm_load_): Use rs6000_emit_le_vsx_permute to + emit the split sequence. + (*vsx_le_perm_store_): Likewise. + +2017-07-27 Jakub Jelinek + + PR tree-optimization/81555 + PR tree-optimization/81556 + * tree-ssa-reassoc.c (rewrite_expr_tree): Add NEXT_CHANGED argument, + if true, force CHANGED for the recursive invocation. + (reassociate_bb): Remember original length of ops array, pass + len != orig_len as NEXT_CHANGED in rewrite_expr_tree call. + + * attribs.c (decl_attributes): Imply noinline, noclone and no_icf + attributes for noipa attribute. For naked attribute use + lookup_attribute first before lookup_attribute_spec. + * final.c (rest_of_handle_final): Disable IPA RA for functions with + noipa attribute. + * ipa-visibility.c (non_local_p): Fix comment typos. Return true + for functions with noipa attribute. + (cgraph_externally_visible_p): Return true for functions with noipa + attribute. + * cgraph.c (cgraph_node::get_availability): Return AVAIL_INTERPOSABLE + for functions with noipa attribute. + * doc/extend.texi: Document noipa function attribute. + * tree-ssa-structalias.c (refered_from_nonlocal_fn): Set *nonlocal_p + also for functions with noipa attribute. + (ipa_pta_execute): Set nonlocal_p also for nodes with noipa attribute. + +2017-07-26 Andrew Pinski + + * config/aarch64/aarch64.c (thunderx_vector_cost): Decrease cost of + vec_unalign_load_cost and vec_unalign_store_cost. + +2017-07-26 Michael Meissner + + * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete + -mvsx-small-integer option. + (ISA_3_0_MASKS_IEEE): Likewise. + (OTHER_VSX_VECTOR_MASKS): Likewise. + (POWERPC_MASKS): Likewise. + * config/rs6000/rs6000.opt (-mvsx-small-integer): Likewise. + * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Simplify + code, only testing for DImode being allowed in non-VSX floating + point registers. + (rs6000_init_hard_regno_mode_ok): Change TARGET_VSX_SMALL_INTEGER + to TARGET_P8_VECTOR test. Remove redundant VSX test inside of + another VSX test. + (rs6000_option_override_internal): Delete -mvsx-small-integer. + (rs6000_expand_vector_set): Change TARGET_VSX_SMALL_INTEGER to + TARGET_P8_VECTOR test. + (rs6000_secondary_reload_simple_move): Likewise. + (rs6000_preferred_reload_class): Delete TARGET_VSX_SMALL_INTEGER, + since TARGET_P9_VECTOR was already tested. + (rs6000_opt_masks): Remove -mvsx-small-integer. + * config/rs6000/vsx.md (vsx_extract_): Delete + TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was + used. + (vsx_extract__p9): Delete TARGET_VSX_SMALL_INTEGER, since a + test for TARGET_VEXTRACTUB was used, and that uses + TARGET_P9_VECTOR. + (p9 extract splitter): Likewise. + (vsx_extract__di_p9): Likewise. + (vsx_extract__store_p9): Likewise. + (vsx_extract_si): Delete TARGET_VSX_SMALL_INTEGER, since a test + for TARGET_P9_VECTOR was used. Delete code that is now dead with + the elimination of TARGET_VSX_SMALL_INTEGER. + (vsx_extract__p8): Likewise. + (vsx_ext__fl_): Likewise. + (vsx_ext__ufl_): Likewise. + (vsx_set__p9): Likewise. + (vsx_set_v4sf_p9): Likewise. + (vsx_set_v4sf_p9_zero): Likewise. + (vsx_insert_extract_v4sf_p9): Likewise. + (vsx_insert_extract_v4sf_p9_2): Likewise. + * config/rs6000/rs6000.md (sign extend splitter): Change + TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test. + (floatsi2_lfiwax_mem): Likewise. + (floatunssi2_lfiwzx_mem): Likewise. + (float2): Delete TARGET_VSX_SMALL_INTEGER, + since a test for TARGET_P9_VECTOR was used. + (float2_internal): Likewise. + (floatuns2): Likewise. + (floatuns2_internal): Likewise. + (fix_truncsi2): Change TARGET_VSX_SMALL_INTEGER to + TARGET_P8_VECTOR test. + (fix_truncsi2_stfiwx): Likewise. + (fix_truncsi2_internal): Likewise. + (fix_trunc2): Delete + TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was + used. + (fix_trunc2_internal): Likewise. + (fixuns_truncsi2): Change TARGET_VSX_SMALL_INTEGER to + TARGET_P8_VECTOR test. + (fixuns_truncsi2_stfiwx): Likewise. + (fixuns_trunc2): Delete + TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was + used. + (fixuns_trunc2_internal): Likewise. + (fctiwz__smallint): Delete TARGET_VSX_SMALL_INTEGER, + since a test for TARGET_P9_VECTOR was used. + (splitter for loading small constants): Likewise. + +2017-07-26 Andrew Pinski + + * config/aarch64/aarch64.c (thunderx_vector_cost): Fix + vec_fp_stmt_cost. + +2017-07-26 H.J. Lu + + PR target/81563 + * config/i386/i386.c (sp_valid_at): Properly check CFA offset. + (fp_valid_at): Likewise. + +2017-07-26 James Greenhalgh + + * config/aarch64/aarch64.c (cortexa57_addrcost_table): Remove. + (qdf24xx_addrcost_table): Likewise. + (cortexa57_tunings): Update to use generic_branch_cost. + (cortexa72_tunings): Likewise. + (cortexa73_tunings): Likewise. + (qdf24xx_tunings): Likewise. + +2017-07-26 James Greenhalgh + + * config/aarch64/aarch64.c (cortexa57_branch_cost): Remove. + (thunderx2t99_branch_cost): Likewise. + (cortexa35_tunings): Update to use generic_branch_cost. + (cortexa53_tunings): Likewise. + (cortexa57_tunings): Likewise. + (cortexa72_tunings): Likewise. + (cortexa73_tunings): Likewise. + (thunderx2t99_tunings): Likewise. + +2017-07-26 Sebastian Huber + + * config/sparc/sparc.c (dump_target_flag_bits): Dump MASK_FSMULD. + (sparc_option_override): Honour MASK_FSMULD. + * config/sparc/sparc.h (MASK_FEATURES): Add MASK_FSMULD. + * config/sparc/sparc.md (muldf3_extend): Use TARGET_FSMULD. + * config/sparc/sparc.opt (mfsmuld): New option. + * doc/invoke.texi (mfsmuld): Document option. + +2017-07-26 Marek Polacek + + PR middle-end/70992 + * tree.c (build2_stat): Don't set TREE_CONSTANT on divisions by zero. + +2017-07-26 Richard Biener + + * gimple-match-head.c (do_valueize): Return OP if valueize + returns NULL_TREE. + (get_def): New helper to get at the def stmt of a SSA name + if valueize allows. + * genmatch.c (dt_node::gen_kids_1): Use get_def instead of + do_valueize to get at the def stmt. + (dt_operand::gen_gimple_expr): Simplify do_valueize calls. + +2017-07-26 Wilco Dijkstra + + PR middle-end/46932 + * auto-inc-dec.c (parse_add_or_inc): Block autoinc on sfp. + +2017-07-26 Martin Liska + + PR sanitize/81186 + * function.c (expand_function_start): Make expansion of + nonlocal_goto_save_area after parm_birth_insn. + +2017-07-26 Sebastian Huber + + * config/sparc/sparc.c (sparc_option_override): Remove MASK_FPU + from all CPU target flags enable members. + +2017-07-26 Richard Biener + + * genmatch.c (dt_simplify::gen): Make iterator vars const. + (decision_tree::gen): Make 'type' const. + (write_predicate): Likewise. + +2017-07-24 Michael Meissner + + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): + Eliminate TARGET_UPPER_REGS_{DF,DI,SF} usage. + (rs6000_option_override_internal): Likewise. + (rs6000_expand_vector_set): Likewise. + * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Delete. + (TARGET_UPPER_REGS_SF): Likewise. + (TARGET_UPPER_REGS_DI): Likewise. + (TARGET_VEXTRACTUB): Eliminate TARGET_UPPER_REGS_{DF,DI,SF}. + (TARGET_DIRECT_MOVE_64BIT): Likewise. + * config/rs6000/rs6000.md (ALTIVEC_DFORM): Likewise. + (float2_internal): Likewise. + (Splitters for DI constants in Altivec registers): Likewise. + * config/rs6000/vsx.md (vsx_set__p9): Likewise. + (vsx_set_v4sf_p9): Likewise. + (vsx_set_v4sf_p9_zero): Likewise. + (vsx_insert_extract_v4sf_p9): Likewise. + (vsx_insert_extract_v4sf_p9_2): Likewise. + +2017-07-25 Carl Love + + * doc/extend.texi: Update the built-in documentation file for the + existing built-in functions + vector signed char vec_cnttz (vector signed char); + vector unsigned char vec_cnttz (vector unsigned char); + vector signed short vec_cnttz (vector signed short); + vector unsigned short vec_cnttz (vector unsigned short); + vector signed int vec_cnttz (vector signed int); + vector unsigned int vec_cnttz (vector unsigned int); + vector signed long long vec_cnttz (vector signed long long); + vector unsigned long long vec_cnttz (vector unsigned long long); + +2017-07-25 Andrew Pinski + + * tree-ssa-uninit.c (warn_uninitialized_vars): Don't warn about memory + accesses where the use is for the first operand of a BIT_INSERT. + +2017-07-25 Jim Wilson + + PR bootstrap/81521 + * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look + for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS. + +2017-07-25 Jim Wilson + + * config/i386/gstabs.h: Delete. + * config/i386/openbsd.h, config/i386/t-openbsd: Likewise. + +2017-07-25 Uros Bizjak + + * config/i386/i386.c (ix86_decompose_address): Do not check for + register RTX when looking at index_reg or base_reg. + * config/i386/i386.h (INCOMING_RETURN_ADDR_RTX): Use stack_pointer_rtx. + +2017-07-25 Eric Botcazou + + * gimple.c (gimple_assign_set_rhs_with_ops): Do not ask gsi_replace + to update EH info here. + +2017-07-25 Alexander Monakov + + * match.pd ((X * CST1) * CST2): Simplify to X * (CST1 * CST2). + +2017-07-25 Alexander Monakov + + * match.pd ((X * CST) * Y): Reassociate to (X * Y) * CST. + +2017-07-25 Torsten Duwe + + * common.opt: Introduce -fpatchable-function-entry + command line option, and its variables function_entry_patch_area_size + and function_entry_patch_area_start. + * opts.c (common_handle_option): Add -fpatchable_function_entry_ case, + including a two-value parser. + * target.def (print_patchable_function_entry): New target hook. + * targhooks.h (default_print_patchable_function_entry): New function. + * targhooks.c (default_print_patchable_function_entry): Likewise. + * toplev.c (process_options): Switch off IPA-RA if + patchable function entries are being generated. + * varasm.c (assemble_start_function): Look at the + patchable-function-entry command line switch and current + function attributes and maybe generate NOP instructions by + calling the print_patchable_function_entry hook. + * doc/extend.texi: Document patchable_function_entry attribute. + * doc/invoke.texi: Document -fpatchable_function_entry + command line option. + * doc/tm.texi.in (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY): + New target hook. + * doc/tm.texi: Re-generate. + +2017-07-25 Jakub Jelinek + + PR target/81532 + * config/i386/constraints.md (Yd, Ye): Use ALL_SSE_REGS for + TARGET_AVX512DQ rather than TARGET_AVX512BW. + +2017-07-25 Tamar Christina + + * config/arm/parsecpu.awk (all_cores): Remove duplicates. + +2017-07-25 Richard Biener + + PR tree-optimization/81455 + * tree-ssa-loop-unswitch.c (find_loop_guard): Make sure to + not walk in cycles when looking for guards. + +2017-07-25 Richard Biener + + PR tree-optimization/81529 + * tree-vect-stmts.c (process_use): Disregard live induction PHIs + when optimizing backedge uses. + +2017-07-25 David Edelsohn + + * dwarf2asm.c (dw2_asm_output_nstring): Encode double quote + character for AIX. + * dwarf2out.c (output_macinfo): Copy debug_line_section_label + to dl_section_ref. On AIX, append an expression to subtract + the size of the section length to dl_section_ref. + +2017-07-25 Segher Boessenkool + + * configure.ac: If any of the config.* scripts fail, exit 1. + * configure: Regenerate. + +2017-07-25 Richard Biener + + PR middle-end/81546 + * tree-ssa-operands.c (verify_imm_links): Remove cap on number + of immediate uses, be more verbose on errors. + +2017-07-25 Richard Biener + + PR tree-optimization/81510 + * tree-vect-loop.c (vect_is_simple_reduction): When the + reduction stmt is not inside the loop bail out. + +2017-07-25 Richard Biener + + PR tree-optimization/81303 + * tree-vect-loop-manip.c (vect_loop_versioning): Build + profitability check against LOOP_VINFO_NITERSM1. + +2017-07-25 Alexander Monakov + + * domwalk.c (cmp_bb_postorder): Simplify. + (sort_bbs_postorder): New function. Use it... + (dom_walker::walk): ...here to optimize common cases. + +2017-07-25 Martin Liska + + PR ipa/81520 + * ipa-visibility.c (function_and_variable_visibility): Make the + redirection just on target that supports aliasing. + Fix GNU coding style. + +2017-07-25 Sebastian Huber + + PR libgcc/61152 + * config/aarch64/rtems.h: Add GCC Runtime Library Exception. + Format changes. + * config/arm/rtems.h: Likewise. + * config/bfin/rtems.h: Likewise. + * config/i386/rtemself.h: Likewise. + * config/lm32/rtems.h: Likewise. + * config/m32c/rtems.h: Likewise. + * config/m68k/rtemself.h: Likewise. + * config/microblaze/rtems.h: Likewise. + * config/mips/rtems.h: Likewise. + * config/moxie/rtems.h: Likewise. + * config/nios2/rtems.h: Likewise. + * config/powerpcspe/rtems.h: Likewise. + * config/rs6000/rtems.h: Likewise. + * config/rtems.h: Likewise. + * config/sh/rtems.h: Likewise. + * config/sh/rtemself.h: Likewise. + * config/sparc/rtemself.h: Likewise. + +2017-07-25 Georg-Johann Lay + + PR 81487 + * hsa-brig.c (brig_init): Use xasprintf instead of asprintf. + * gimple-pretty-print.c (dump_profile, dump_probability): Same. + * tree-ssa-structalias.c (alias_get_name): Same. + +2017-07-25 Bin Cheng + + PR target/81414 + * config/aarch64/cortex-a57-fma-steering.c (analyze): Skip fmul/fmac + instructions if no du chain is found. + +2017-07-25 Georg-Johann Lay + + * config/avr/avr-log.c (avr_log_vadump) ['T']: Print NULL-TREE. + +2017-07-25 Richard Biener + + PR middle-end/81505 + * fold-const.c (fold_negate_const): TREE_OVERFLOW should be + sticky. + +2017-07-24 Michael Meissner + + * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Delete + upper-regs options. + (ISA_2_7_MASKS_SERVER): Likewise. + (ISA_3_0_MASKS_IEEE): Likewise. + (OTHER_P8_VECTOR_MASKS): Likewise. + (OTHER_VSX_VECTOR_MASKS): Likewise. + (POWERPC_MASKS): Likewise. + (power7 cpu): Use ISA_2_6_MASKS_SERVER instead of using a + duplicate list of options. + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove + explicit -mupper-regs options. + * config/rs6000/rs6000.opt (-mvsx-scalar-memory): Delete + -mupper-regs* options. Delete -mvsx-scalar-memory, which was an + alias for -mupper-regs-df. + * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise. + (rs6000_init_hard_regno_mode_ok): Likewise. + (rs6000_option_override_internal): Likewise. + (rs6000_opt_masks): Likewise. + * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Define upper regs + options in terms of whether -mvsx or -mpower8-vector was used. + (TARGET_UPPER_REGS_DI): Likewise. + (TARGET_UPPER_REGS_SF): Likewise. + * doc/invoke.texi (RS/6000 and PowerPC Options): Delete the + -mupper-regs-* options. + +2017-07-24 Segher Boessenkool + + * passes.c (emergency_dump_function): Print some empty lines and a + header before the RTL dump. + +2017-07-24 Segher Boessenkool + + * cfgrtl.c (rtl_dump_bb): Don't call NEXT_INSN on NULL. + +2017-07-24 Wilco Dijkstra + + PR target/79041 + * config/aarch64/aarch64.c (aarch64_classify_symbol): + Avoid SYMBOL_SMALL_ABSOLUTE for literals with pc-relative literals. + +2017-07-24 Carl Love + + * config/rs6000/rs6000-c.c: Add support for built-in functions + vector float vec_extract_fp32_from_shorth (vector unsigned short); + vector float vec_extract_fp32_from_shortl (vector unsigned short); + * config/rs6000/altivec.h (vec_extract_fp_from_shorth, + vec_extract_fp_from_shortl): Add defines for the two builtins. + * config/rs6000/rs6000-builtin.def (VEXTRACT_FP_FROM_SHORTH, + VEXTRACT_FP_FROM_SHORTL): Add BU_P9V_OVERLOAD_1 and BU_P9V_VSX_1 + new builtins. + * config/rs6000/vsx.md vsx_xvcvhpsp): Add define_insn. + (vextract_fp_from_shorth, vextract_fp_from_shortl): Add define_expands. + * doc/extend.texi: Update the built-in documentation file for the + new built-in function. + +2017-07-24 Jakub Jelinek + + PR bootstrap/81521 + * tree.def: Remove TYPE_METHODS documentation, adjust TYPE_FIELDS + documentation. + * doc/generic.texi: Likewise. + * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look + for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS. + +2017-07-24 Jackson Woodruff + + * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge): New. + (aarch64_mls_elt_merge): Likewise. + +2017-07-23 Krister Walfridsson + + * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not + having __cxa_atexit. + +2017-07-23 Michael Collison + + * config/arm/arm.c (arm_option_override): Deprecate + use of -mstructure-size-boundary. + * config/arm/arm.opt: Deprecate -mstructure-size-boundary. + * doc/invoke.texi: Deprecate -mstructure-size-boundary. + +2017-07-23 Bill Schmidt + + PR target/80695 + * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): + Reduce cost estimate for direct moves. + +2017-07-23 Uros Bizjak + + PR target/80569 + * config/i386/i386.c (ix86_option_override_internal): Disable + BMI, BMI2 and TBM instructions for -m16. + +2017-07-21 Carl Love + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW, + ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries. + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin, + builtin_function_type): Add ALTIVEC_BUILTIN_* case statements. + * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW, + VMULOSW): New enum "unspec" values. + (altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw, + altivec_vmulosw): New patterns. + * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW, + VMULOSW): Add definitions. + +2017-07-21 Jim Wilson + + * config/aarch64/aarch64-cores.def (falkor): Add AARCH64_FL_RDMA. + (qdf24xx): Likewise. + * config/aarch64/aarch64-options-extensions.def (rdma); New. + * config/aarch64/aarch64.h (AARCH64_FL_RDMA): New. + (AARCH64_FL_V8_1): Renumber. + (AARCH64_FL_FOR_ARCH8_1): Add AARCH64_FL_RDMA. + (AARCH64_ISA_RDMA): Use AARCH64_FL_RDMA. + * config/aarch64/arm_neon.h: Use +rdma instead of arch=armv8.1-a. + * doc/invoke.texi (AArch64 Options): Mention +rmda in -march docs. Add + rdma to feature modifiers list. + +2017-07-21 Yury Gribov + + PR middle-end/56727 + * ipa-visibility (function_and_variable_visibility): Convert + recursive PLT call to direct call if appropriate. + +2017-07-21 Andrew Pinski + + * tree-ssa-sccvn.c (vn_nary_op_eq): Check BIT_INSERT_EXPR's + operand 1 to see if the types precision matches. + * fold-const.c (operand_equal_p): Likewise. + +2017-07-21 Richard Biener + + PR tree-optimization/81303 + * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Pass + in datarefs vector. Allow NULL dr0 for no peeling cost estimate. + (vect_peeling_hash_get_lowest_cost): Adjust. + (vect_enhance_data_refs_alignment): Likewise. Use + vect_get_peeling_costs_all_drs to compute the penalty for no + peeling to match up costs. + +2017-07-21 Richard Biener + + PR tree-optimization/81500 + * tree-vect-loop.c (vect_is_simple_reduction): Properly fail if + we didn't identify a reduction path. + +2017-07-21 Tom de Vries + Cesar Philippidis + + PR gcov-profile/81442 + * config/nvptx/nvptx.c (nvptx_goacc_reduction_init): Add missing edge + probabilities. + +2017-07-21 Tom de Vries + + PR lto/81430 + * config/nvptx/nvptx.c (nvptx_override_options_after_change): New + function. + (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define to + nvptx_override_options_after_change. + +2017-07-21 Ulrich Drepper + + * dwarf2out.c (output_file_names): Avoid double testing for + dwarf_version >= 5. + +2017-07-21 Georg-Johann Lay + + * doc/invoke.texi (AVR Built-in Functions): Re-layout section. + +2016-07-21 Jan Hubicka + + * cfgcleanup.c (flow_find_cross_jump): Do not crossjump across + hot/cold regions. + (try_crossjump_to_edge): Do not punt on partitioned functions. + +2016-07-21 Jan Hubicka + + * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges): + Put all BBs reachable only via paths crossing cold region to cold + region. + * cfgrtl.c (find_bbs_reachable_by_hot_paths): New function. + +2016-07-21 Richard Biener + + PR tree-optimization/81303 + * tree-vect-loop.c (vect_estimate_min_profitable_iters): Take + into account prologue and epilogue iterations when raising + min_profitable_iters to sth at least covering one vector iteration. + +2017-07-21 Tamar Christina + + * config/arm/arm.c (arm_test_cpu_arch_dat): + Check for overlap. + +2017-07-20 Nathan Sidwell + + Remove TYPE_METHODS. + * tree.h (TYPE_METHODS): Delete. + * dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS. + * dbxout.c (dbxout_type_fields): Ignore FUNCTION_DECLs. + (dbxout_type_methods): Scan TYPE_FIELDS. + (dbxout_type): Don't check TYPE_METHODS here. + * function.c (use_register_for_decl): Always ignore register for + class types when not optimizing. + * ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan. + * tree.c (free_lang_data_in_type): Stitch out member functions and + templates from TYPE_FIELDS. + (build_distinct_type_copy, verify_type_variant, + verify_type): Member fns are on TYPE_FIELDS. + * tree-dump.c (dequeue_and_dump): No TYPE_METHODS. + * tree-pretty-print.c (dump_generic_node): Likewise. + +2017-07-20 Jakub Jelinek + + PR target/80846 + * config/i386/i386.c (ix86_expand_vector_init_general): Handle + V2TImode and V4TImode. + (ix86_expand_vector_extract): Likewise. + * config/i386/sse.md (VMOVE): Enable V4TImode even for just + TARGET_AVX512F, instead of only for TARGET_AVX512BW. + (ssescalarmode): Handle V4TImode and V2TImode. + (VEC_EXTRACT_MODE): Add V4TImode and V2TImode. + (*vec_extractv2ti, *vec_extractv4ti): New insns. + (VEXTRACTI128_MODE): New mode iterator. + (splitter for *vec_extractv?ti first element): New. + (VEC_INIT_MODE): New mode iterator. + (vec_init): Consolidate 3 expanders into one using + VEC_INIT_MODE mode iterator. + +2017-07-20 Alexander Monakov + + * lra-assigns.c (pseudo_compare_func): Fix comparison step based on + non_spilled_static_chain_regno_p. + +2017-07-20 Alexander Monakov + + * gimple-ssa-store-merging.c (sort_by_bitpos): Return 0 on equal bitpos. + +2017-07-20 Jan Hubicka + + * bb-reorder.c (connect_traces): Allow copying of blocks within + single partition. + +2017-07-20 Richard Biener + + * gimple.h (gimple_phi_result): Add gphi * overload. + (gimple_phi_result_ptr): Likewise. + (gimple_phi_arg): Likewise. Adjust index assert to only + allow actual argument accesses rather than all slots available + by capacity. + (gimple_phi_arg_def): Add gphi * overload. + * tree-phinodes.c (make_phi_node): Initialize only actual + arguments. + (resize_phi_node): Clear memory not covered by old node, + do not initialize excess argument slots. + (reserve_phi_args_for_new_edge): Initialize new argument slot + completely. + +2017-07-20 Bin Cheng + + PR tree-optimization/81388 + Revert r238585: + 2016-07-21 Bin Cheng + + * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up + by removing computation of may_be_zero. + +2017-07-18 Jan Hubicka + Tom de Vries + + PR middle-end/81030 + * cfgbuild.c (find_many_sub_basic_blocks): Update REG_BR_PROB note + when gimple level profile disagrees with what RTL expander did. + +2017-07-20 Richard Biener + + PR tree-optimization/61171 + * tree-vectorizer.h (slp_instance): Add reduc_phis member. + (vect_analyze_stmt): Add slp instance parameter. + (vectorizable_reduction): Likewise. + * tree-vect-loop.c (vect_analyze_loop_operations): Adjust. + (vect_is_simple_reduction): Deal with chains not detected + as SLP reduction chain, specifically not properly associated + chains containing a mix of plus/minus. + (get_reduction_op): Remove. + (get_initial_defs_for_reduction): Simplify, pass in whether + this is a reduction chain, pass in the SLP node for the PHIs. + (vect_create_epilog_for_reduction): Get the SLP instance as + arg and adjust. + (vectorizable_reduction): Get the SLP instance as arg. + During analysis remember the SLP node with the PHIs in the + instance. Simplify getting at the vectorized reduction PHIs. + * tree-vect-slp.c (vect_slp_analyze_node_operations): Pass + through SLP instance. + (vect_slp_analyze_operations): Likewise. + * tree-vect-stms.c (vect_analyze_stmt): Likewise. + (vect_transform_stmt): Likewise. + +2017-07-20 Tom de Vries + + PR tree-optimization/81489 + * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Move + read of phi arg location to before loop that modifies phi. + +2017-07-20 Naveen H.S + + * match.pd (((m1 >/=/<= m2) * d -> (m1 >/=/<= m2) ? d : 0): + New pattern. + +2017-07-19 Jan Hubicka + + PR middle-end/81331 + * except.c (execute): Fix ordering issue. + +2018-07-19 Segher Boessenkool + + PR rtl-optimization/81423 + * combine.c (make_compound_operation_int): Don't try to optimize + the AND of a SUBREG of an LSHIFTRT if that SUBREG is paradoxical. + +2017-07-19 Segher Boessenkool + + PR rtl-optimization/81423 + * simplify-rtx.c (simplify_truncation): Handle truncating an IOR + with a constant that is -1 in the truncated to mode. + +2017-07-19 Jan Hubicka + + * predict.c (propagate_unlikely_bbs_forward): Break out from ... + (determine_unlikely_bbs): ... here. + * predict.h (propagate_unlikely_bbs_forward): Declare. + * cfgexpand.c (pass_expand::execute): Use it. + * bb-reorder.c (sanitize_hot_paths): Do not consider known to be + unlikely edges. + (find_rarely_executed_basic_blocks_and_crossing_edges): Use + propagate_unlikely_bbs_forward. + +2017-07-19 Jan Hubicka + + PR middle-end/81331 + * except.c (maybe_add_nop_after_section_switch): New function. + (execute): Use it. + +2017-07-19 Tom de Vries + + * gimple.h (gimple_phi_set_arg): Make assert more strict. + +2017-07-19 Tom de Vries + + * gimple.h (gimple_phi_arg): Make assert more strict. + +2017-07-19 Steven Munroe + + * config.gcc (powerpc*-*-*): Add mmintrin.h. + * config/rs6000/mmintrin.h: New file. + * config/rs6000/x86intrin.h [__ALTIVEC__]: Include mmintrin.h. + +2017-07-19 Jakub Jelinek + + PR tree-optimization/81346 + * match.pd: Optimize (X - 1U) <= INT_MAX-1U into (int) X > 0. + +2017-07-19 Tom de Vries + + * config/nvptx/nvptx.md (VECIM): Add V2DI. + +2017-07-19 Tom de Vries + + * config/nvptx/nvptx-modes.def: Add V2DImode. + * config/nvptx/nvptx-protos.h (nvptx_data_alignment): Declare. + * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2DImode. + (nvptx_output_mov_insn): Handle lack of mov.b128. + (nvptx_print_operand): Handle 'H' and 'L' codes. + (nvptx_vector_mode_supported): Allow V2DImode. + (nvptx_preferred_simd_mode): New function. + (nvptx_data_alignment): New function. + (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Redefine to + nvptx_preferred_simd_mode. + * config/nvptx/nvptx.h (STACK_BOUNDARY, BIGGEST_ALIGNMENT): Change from + 64 to 128 bits. + (DATA_ALIGNMENT): Define. Set to nvptx_data_alignment. + +2017-07-19 Tom de Vries + + * config/nvptx/nvptx-modes.def: New file. Add V2SImode. + * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2SImode. + (nvptx_vector_mode_supported): New function. Allow V2SImode. + (TARGET_VECTOR_MODE_SUPPORTED_P): Redefine to nvptx_vector_mode_supported. + * config/nvptx/nvptx.md (VECIM): New mode iterator. Add V2SI. + (mov_insn): New define_insn. + (define_expand "mov): New define_expand. + +2017-07-19 Tom de Vries + + * config/nvptx/nvptx.c (nvptx_print_operand): Handle v2 vector mode. + +2017-07-19 Jakub Jelinek + + PR tree-optimization/81346 + * fold-const.h (fold_div_compare, range_check_type): Declare. + * fold-const.c (range_check_type): New function. + (build_range_check): Use range_check_type. + (fold_div_compare): No longer static, rewritten into + a match.pd helper function. + (fold_comparison): Don't call fold_div_compare here. + * match.pd (X / C1 op C2): New optimization using fold_div_compare + as helper function. + +2017-07-19 Nathan Sidwell + + * tree.h (TYPE_MINVAL, TYPE_MAXVAL): Rename to ... + (TYPE_MIN_VALUE_RAW, TYPE_MAX_VALUE_RAW): ... these. + * tree.c (find_decls_types_r, verify_type): Use + TYPE_{MIN,MAX}_VALUE_RAW. + * lto-streamer-out.c (DFS::DFS_write_tree_body): Likewise. + (hash_tree): Likewise. + * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers): + Likewise. + * tree-streamer-out.c (write_ts_type_non_common_tree_pointers): + Likewise. + +2017-07-18 Tom de Vries + + PR middle-end/81464 + * omp-expand.c (expand_omp_for_static_chunk): Handle + equal-argument loop exit phi. + +2017-07-18 Uros Bizjak + + PR target/81471 + * config/i386/i386.md (rorx_immediate_operand): New mode attribute. + (*bmi2_rorx3_1): Use rorx_immediate_operand as + operand 2 predicate. + (*bmi2_rorxsi3_1_zext): Use const_0_to_31_operand as + operand 2 predicate. + (ror,rol -> rorx splitters): Use const_int_operand as + operand 2 predicate. + +2017-06-18 Richard Biener + + PR tree-optimization/81410 + * tree-vect-stmts.c (vectorizable_load): Properly adjust for + the gap in the ! slp_perm SLP case after each group. + +2017-07-18 Jan Hubicka + + PR middle-end/81463 + * cfgloopmanip.c (scale_loop_profile): Watch out for zero frequency + again. + +2017-07-18 Jan Hubicka + + PR middle-end/81462 + * predict.c (set_even_probabilities): Cleanup; do not affect + probabilities that are already known. + (combine_predictions_for_bb): Call even when count is set. + +2017-07-18 Nathan Sidwell + + * tree-parloops.c (try_transform_to_exit_first_loop_alt): Use + TYPE_MAX_VALUE. + +2017-07-18 Bin Cheng + + PR target/81408 + * tree-ssa-loop-niter.c (number_of_iterations_exit): Dump missed + optimization for loop niter analysis. + +2017-07-18 Georg-Johann Lay + + PR target/81473 + * config/avr/avr.c (avr_optimize_casesi): Don't use + INT8_MIN, INT8_MAX, UINT8_MAX, INT16_MIN, INT16_MAX, UINT16_MAX. + +2017-07-18 Robin Dapp + + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Remove + body_cost_vec from _vect_peel_extended_info. + (vect_peeling_hash_get_lowest_cost): Do not set body_cost_vec. + (vect_peeling_hash_choose_best_peeling): Remove body_cost_vec and + npeel. + +2017-07-18 Bin Cheng + + * config/arm/arm.c (emit_unlikely_jump): Remove unused var. + +2017-07-18 Richard Biener + + PR tree-optimization/80620 + PR tree-optimization/81403 + * tree-ssa-pre.c (phi_translate_1): Clear range and points-to + info when re-using a VN table entry. + +2017-07-18 Richard Biener + + PR tree-optimization/81418 + * tree-vect-loop.c (vectorizable_reduction): Properly compute + vectype_in. Verify that with lane-reducing reduction operations + we have a single def-use cycle. + +2017-07-17 Carl Love + + Revert commit r249424 2017-06-20 Carl Love + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW, + ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries. + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin, + builtin_function_type): Add ALTIVEC_BUILTIN_* case statements. + * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW, + VMULOSW): New enum "unspec" values. + (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si, + vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, + altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw, + altivec_vmulosw): New patterns. + * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW, + VMULOSW): Add definitions. + +2017-07-17 Uros Bizjak + + * config/alpha/alpha.c: Include predict.h. + +2017-07-17 Yury Gribov + + * tree-vrp.c (compare_assert_loc): Fix comparison function + to return predictable results. + +2017-07-17 Claudiu Zissulescu + + * config/arc/arc.md (adddi3): Remove support for mexpand-adddi + option. + (subdi3): Likewise. + * config/arc/arc.opt (mexpand-adddi): Deprecate it. + * doc/invoke.texi (mexpand-adddi): Update text. + +2017-07-17 Claudiu Zissulescu + + * config/arc/arc.md (clzsi2): Expand to an arc_clzsi2 instruction + that also clobbers the CC register. The old expand code is moved + to ... + (*arc_clzsi2): ... here. + (ctzsi2): Expand to an arc_ctzsi2 instruction that also clobbers + the CC register. The old expand code is moved to ... + (arc_ctzsi2): ... here. + +2017-07-17 Claudiu Zissulescu + + * config/arc/arc.opt (mindexed-loads): Use initial value + TARGET_INDEXED_LOADS_DEFAULT. + (mauto-modify-reg): Use initial value + TARGET_AUTO_MODIFY_REG_DEFAULT. + * config/arc/elf.h (TARGET_INDEXED_LOADS_DEFAULT): Define. + (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise. + * config/arc/linux.h (TARGET_INDEXED_LOADS_DEFAULT): Define. + (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise. + +2017-07-17 Martin Liska + + PR sanitizer/81302 + * opts.c (finish_options): Do not allow -fgnu-tm + w/ -fsanitize={kernel-,}address. Say sorry. + +2017-07-17 Bin Cheng + + PR target/81369 + * tree-loop-distribution.c (classify_partition): Only assert on + numer of iterations. + (merge_dep_scc_partitions): Delete prameter. Update function call. + (distribute_loop): Remove code handling loop with unknown niters. + (pass_loop_distribution::execute): Skip loop with unknown niters. + +2017-07-17 Bin Cheng + + PR target/81369 + * tree-loop-distribution.c (merge_dep_scc_partitions): Sink call to + function sort_partitions_by_post_order. + +2017-07-17 Bin Cheng + + PR tree-optimization/81374 + * tree-loop-distribution.c (pass_loop_distribution::execute): Record + the max index of basic blocks, rather than number of basic blocks. + +2017-07-17 Claudiu Zissulescu + + * config/arc/arc-protos.h (arc_legitimate_pc_offset_p): Remove + proto. + (arc_legitimate_pic_operand_p): Likewise. + * config/arc/arc.c (arc_legitimate_pic_operand_p): Remove + function. + (arc_needs_pcl_p): Likewise. + (arc_legitimate_pc_offset_p): Likewise. + (arc_legitimate_pic_addr_p): Remove LABEL_REF case, as this + function is also used in constrains.md. + (arc_legitimate_constant_p): Use arc_legitimate_pic_addr_p to + validate pic constants. Handle CONST_INT, CONST_DOUBLE, MINUS and + PLUS. Only return true/false in known cases, otherwise assert. + (arc_legitimate_address_p): Remove arc_legitimate_pic_addr_p as it + is already called in arc_legitimate_constant_p. + * config/arc/arc.h (CONSTANT_ADDRESS_P): Consider also LABEL for + pic addresses. + (LEGITIMATE_PIC_OPERAND_P): Use + arc_raw_symbolic_reference_mentioned_p function. + * config/arc/constraints.md (Cpc): Use arc_legitimate_pic_addr_p + function. + (Cal): Likewise. + (C32): Likewise. + +2017-07-17 Claudiu Zissulescu + Andrew Burgess + + * config/arc/arc-protos.h (arc_compute_function_type): Change prototype. + (arc_return_address_register): New function. + * config/arc/arc.c (arc_handle_fndecl_attribute): New function. + (arc_handle_fndecl_attribute): Add naked attribute. + (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define. + (TARGET_WARN_FUNC_RETURN): Likewise. + (arc_allocate_stack_slots_for_args): New function. + (arc_warn_func_return): Likewise. + (machine_function): Change type fn_type. + (arc_compute_function_type): Consider new naked function type, + change function return type. + (arc_must_save_register): Adapt to handle new + arc_compute_function_type's return type. + (arc_expand_prologue): Likewise. + (arc_expand_epilogue): Likewise. + (arc_return_address_regs): Delete. + (arc_return_address_register): New function. + (arc_epilogue_uses): Use above function. + * config/arc/arc.h (arc_return_address_regs): Delete prototype. + (arc_function_type): Change encoding, add naked type. + (ARC_INTERRUPT_P): Change to handle the new encoding. + (ARC_FAST_INTERRUPT_P): Likewise. + (ARC_NORMAL_P): Define. + (ARC_NAKED_P): Likewise. + (arc_compute_function_type): Delete prototype. + * config/arc/arc.md (in_ret_delay_slot): Use + arc_return_address_register function. + (simple_return): Likewise. + (p_return_i): Likewise. + +2017-07-17 Jakub Jelinek + + PR tree-optimization/81428 + * match.pd (X / X -> one): Don't optimize _Fract divisions, as 1 + can't be built for those types. + +2017-07-17 Georg-Johann Lay + + Remove stuff dead since r239246. + + * config/avr/avr-arch.h (avr_inform_devices): Remove dead proto. + * config/avr/avr-devices.c (mcu_name, comparator, avr_mcus_str) + (avr_inform_devices): Remove dead stuff. + +2017-07-17 Tamar Christina + + * config/arm/arm_neon.h: Fix softp typo. + +2017-07-17 Jakub Jelinek + + PR tree-optimization/81365 + * tree-ssa-phiprop.c (propagate_with_phi): When considering hoisting + aggregate moves onto bb predecessor edges, make sure there are no + loads that could alias the lhs in between the start of bb and the + loads from *phi. + +2017-07-17 Georg-Johann Lay + + PR 80929 + * config/avr/avr.c (avr_mul_highpart_cost): New static function. + (avr_rtx_costs_1) [TRUNCATE]: Use it to compute mul_highpart cost. + [LSHIFTRT, outer_code = TRUNCATE]: Same. + +2017-07-17 Jakub Jelinek + + PR tree-optimization/81396 + * tree-ssa-math-opts.c (struct symbolic_number): Add n_ops field. + (init_symbolic_number): Initialize it to 1. + (perform_symbolic_merge): Add n_ops from both operands into the new + n_ops. + (find_bswap_or_nop): Don't consider n->n == cmpnop computations + without base_addr as useless if they need more than one operation. + (bswap_replace): Handle !bswap case for NULL base_addr. + +2017-07-17 Tom de Vries + + PR target/81069 + * config/nvptx/nvptx.c (nvptx_single): Insert diverging branch as late + as possible. + +2017-07-17 Sebastian Huber + + * config/sparc/rtemself.h (TARGET_OS_CPP_BUILTINS): Add + conditional builtin define __FIX_LEON3FT_B2BST. + +2017-07-17 Daniel Cederman + + * config/sparc/t-rtems: Add mfix-gr712rc multilibs. Replace + MULTILIB_EXCEPTIONS with MULTILIB_REQUIRED. Match -mfix-gr712rc + with -mfix-ut700. + +2017-07-16 Eric Botcazou + + PR rtl-optimization/81424 + * optabs.c (prepare_cmp_insn): Use copy_to_reg instead of force_reg + to remove potential trapping from operands if -fnon-call-exceptions. + +2017-07-16 Jan Hubicka + + * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Use + profile_proability for scalling. + * scale_profile_for_vect_loop.c (scale_profile_for_vect_loop): Likewise. + +2017-07-16 Jan Hubicka + + * cgraph.c (cgraph_edge::redirect_call_stmt_to_caller): Cleanup. + +2017-07-16 Jan Hubicka + + * cfgloopmanip.c (scale_loop_profile): Avoid use of REG_BR_PROB_BASE + fixpoint arithmetics. + +2017-07-16 Jan Hubicka + + * tree-ssa-loop-unswitch.c (hoist_guard): Avoid use of REG_BR_PROB_BASE + fixpoint arithmetics. + +2017-07-16 Jan Hubicka + + * asan.c (create_cond_insert_point): Avoid use of REG_BR_PROB_BASE + fixpoint arithmetics. + +2017-07-16 Jan Hubicka + + * profile-count.h (profile_probability::from_reg_br_prob_note, + profile_probability::to_reg_br_prob_note): New functions. + * doc/rtl.texi (REG_BR_PROB_NOTE): Update documentation. + * reg-notes.h (REG_BR_PROB, REG_BR_PRED): Update docs. + * predict.c (probability_reliable_p): Update. + (edge_probability_reliable_p): Update. + (br_prob_note_reliable_p): Update. + (invert_br_probabilities): Update. + (add_reg_br_prob_note): New function. + (combine_predictions_for_insn): Update. + * asan.c (asan_clear_shadow): Update. + * cfgbuild.c (compute_outgoing_frequencies): Update. + * cfgrtl.c (force_nonfallthru_and_redirect): Update. + (update_br_prob_note): Update. + (rtl_verify_edges): Update. + (purge_dead_edges): Update. + (fixup_reorder_chain): Update. + * emit-rtl.c (try_split): Update. + * ifcvt.c (cond_exec_process_insns): Update. + (cond_exec_process_if_block): Update. + (dead_or_predicable): Update. + * internal-fn.c (expand_addsub_overflow): Update. + (expand_neg_overflow): Update. + (expand_mul_overflow): Update. + * loop-doloop.c (doloop_modify): Update. + * loop-unroll.c (compare_and_jump_seq): Update. + * optabs.c (emit_cmp_and_jump_insn_1): Update. + * predict.h: Update. + * reorg.c (mostly_true_jump): Update. + * rtl.h: Update. + * config/aarch64/aarch64.c (aarch64_emit_unlikely_jump): Update. + * config/alpha/alpha.c (emit_unlikely_jump): Update. + * config/arc/arc.c: (emit_unlikely_jump): Update. + * config/arm/arm.c: (emit_unlikely_jump): Update. + * config/bfin/bfin.c (cbranch_predicted_taken_p): Update. + * config/frv/frv.c (frv_print_operand_jump_hint): Update. + * config/i386/i386.c (ix86_expand_split_stack_prologue): Update. + (ix86_print_operand): Update. + (ix86_split_fp_branch): Update. + (predict_jump): Update. + * config/ia64/ia64.c (ia64_print_operand): Update. + * config/mmix/mmix.c (mmix_print_operand): Update. + * config/powerpcspe/powerpcspe.c (output_cbranch): Update. + (rs6000_expand_split_stack_prologue): Update. + * config/rs6000/rs6000.c: Update. + * config/s390/s390.c (s390_expand_vec_strlen): Update. + (s390_expand_vec_movstr): Update. + (s390_expand_cs_tdsi): Update. + (s390_expand_split_stack_prologue): Update. + * config/sh/sh.c (sh_print_operand): Update. + (expand_cbranchsi4): Update. + (expand_cbranchdi4): Update. + * config/sparc/sparc.c (output_v9branch): Update. + * config/spu/spu.c (get_branch_target): Update. + (ea_load_store_inline): Update. + * config/tilegx/tilegx.c (cbranch_predicted_p): Update. + * config/tilepro/tilepro.c: Update. + +2017-07-16 Eric Botcazou + + * gimplify.c (mostly_copy_tree_r): Revert latest change. + (gimplify_save_expr): Likewise. + +2017-07-07 Jan Hubicka + + * ipa-visibility.c (function_and_variable_visibility): Fix pasto. + +2017-07-07 Jan Hubicka + + * ipa-fnsummary.c (pass_data_ipa_fn_summary): Use + TV_IPA_FNSUMMARY. + * timevar.def (TV_IPA_FNSUMMARY): Define. + +2017-07-16 Daniel Cederman + + * config/sparc/sparc.md (divdf3_fix): Add NOP to prevent back + to back store errata sensitive sequence from being generated. + (sqrtdf2_fix): Likewise. + +2017-07-07 Jan Hubicka + + * tree-ssa-threadupdate.c (compute_path_counts, + update_joiner_offpath_counts): Use profile_probability. + +2017-07-15 Thomas Preud'homme + + Revert: + 2017-07-14 Thomas Preud'homme + + * config/arm/arm-c.c (arm_cpu_builtins): Define + __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5. + +2017-07-14 Kelvin Nilsen + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + array entries to represent __ieee128 versions of the + scalar_test_data_class, scalar_test_neg, scalar_extract_exp, + scalar_extract_sig, and scalar_insert_exp built-in functions. + (altivec_resolve_overloaded_builtin): Add special case handling + for the __builtin_scalar_insert_exp function, as represented by + the P9V_BUILTIN_VEC_VSIEDP constant. + * config/rs6000/rs6000-builtin.def (VSEEQP): Add scalar extract + exponent support for __ieee128 argument. + (VSESQP): Add scalar extract signature support for __ieee128 + argument. + (VSTDCNQP): Add scalar test negative support for __ieee128 + argument. + (VSIEQP): Add scalar insert exponent support for __int128 argument + with __ieee128 result. + (VSIEQPF): Add scalar insert exponent support for __ieee128 + argument with __ieee128 result. + (VSTDCQP): Add scalar test data class support for __ieee128 + argument. + (VSTDCNQP): Add overload support for scalar test negative with + __ieee128 argument. + (VSTDCQP): Add overload support for scalar test data class + __ieee128 argument. + * config/rs6000/vsx.md (UNSPEC_VSX_SXSIG) Replace + UNSPEC_VSX_SXSIGDP. + (UNSPEC_VSX_SIEXPQP): New constant. + (xsxexpqp): New insn for VSX scalar extract exponent quad + precision. + (xsxsigqp): New insn for VSX scalar extract significand quad + precision. + (xsiexpqpf): New insn for VSX scalar insert exponent quad + precision with floating point argument. + (xststdcqp): New expand for VSX scalar test data class quad + precision. + (xststdcnegqp): New expand for VSX scalar test negative quad + precision. + (xststdcqp): New insn to match expansions for VSX scalar test data + class quad precision and VSX scalar test negative quad precision. + * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add + special case operand checking to enforce that second operand of + VSX scalar test data class with quad precision argument is a 7-bit + unsigned literal. + * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add + prototypes and descriptions of __ieee128 versions of + scalar_extract_exp, scalar_extract_sig, scalar_insert_exp, + scalar_test_data_class, and scalar_test_neg built-in functions. + +2016-07-14 Bill Schmidt + + PR tree-optimization/81162 + * gimple-ssa-strength-reduction.c (replace_mult_candidate): Don't + replace a negate with an add. + +2017-07-14 James Greenhalgh + + * doc/invoke.texi (arm/-mcpu): Document +crypto. + +2017-07-14 Thomas Preud'homme + + * config/arm/arm-c.c (arm_cpu_builtins): Define + __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5. + +2017-07-14 Thomas Preud'homme + + * config/arm/arm-cpus.in (cortex-r52): Add new entry. + (armv8-r): Set ARM Cortex-R52 as default CPU. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM + Cortex-R52. + * doc/invoke.texi: Mention -mtune=cortex-r52 and availability of fp.dp + extension for -mcpu=cortex-r52. + +2017-07-14 Thomas Preud'homme + + * config/arm/arm-isa.h (isa_bit_FP_ARMv8): Delete enumerator. + (ISA_FP_ARMv8): Define as ISA_FPv5 and ISA_FP_D32. + * config/arm/arm-cpus.in (armv8-r): Define fp.sp as enabling FPv5. + (fp-armv8): Define it as FP_ARMv8 only. + config/arm/arm.h (TARGET_FPU_ARMV8): Delete. + (TARGET_VFP_FP16INST): Define using TARGET_VFP5 rather than + TARGET_FPU_ARMV8. + config/arm/arm.c (arm_rtx_costs_internal): Replace checks against + TARGET_FPU_ARMV8 by checks against TARGET_VFP5. + * config/arm/arm-builtins.c (arm_builtin_vectorized_function): Define + first ARM_CHECK_BUILTIN_MODE definition using TARGET_VFP5 rather + than TARGET_FPU_ARMV8. + * config/arm/arm-c.c (arm_cpu_builtins): Likewise for + __ARM_FEATURE_NUMERIC_MAXMIN macro definition. + * config/arm/arm.md (cmov): Condition on TARGET_VFP5 rather than + TARGET_FPU_ARMV8. + * config/arm/neon.md (neon_vrint): Likewise. + (neon_vcvt): Likewise. + (neon_): Likewise. + (3): Likewise. + * config/arm/vfp.md (lsi2): Likewise. + * config/arm/predicates.md (arm_cond_move_operator): Check against + TARGET_VFP5 rather than TARGET_FPU_ARMV8 and fix spacing. + +2017-07-14 Jackson Woodruff + + * config/aarch64/aarch64.c (aarch64_print_operand): Move comments + to top of function. + +2017-07-14 Kyrylo Tkachov + + * gimple-ssa-store-merging.c (clear_bit_region): Replace reference to + loop in comment with memset. + +2017-07-14 Martin Liska + + * cfgexpand.c (expand_gimple_basic_block): Remove dead comment. + * dwarf2out.c (is_java): Remove the function. + (output_pubname): Remove usage of the function. + (lower_bound_default): Remove usage of DW_LANG_Java. + (gen_compile_unit_die): Likewise. + * gcc.c: Remove compiler defaults for .java and .zip files. + * gimple-expr.c (remove_suffix): Change as there's no longer + extension than 4-letter one. + * gimplify.c (mostly_copy_tree_r): Remove Java-special part. + (gimplify_save_expr): Likewise. + * ipa-utils.h (polymorphic_type_binfo_p): Remove the comment + as it's possible even for other languages than Java. + * langhooks.h (struct lang_hooks): Remove Java from a comment. + * lto-opts.c (lto_write_options): Remove reference to Java. + * opts.c (strip_off_ending): Update file extension handling. + * tree-cfg.c (verify_gimple_call): Remove comment with Java. + * tree-eh.c (lower_resx): Likewise. + * tree.c (free_lang_data_in_type): Remove dead code. + (find_decls_types_r): Likewise. + (build_common_builtin_nodes): Remove Java from a comment. + (verify_type): Remove dead code. + * varasm.c (assemble_external): Remove Java from a comment. + +2017-07-14 Martin Liska + + * opts.c (finish_options): Add quotes. + (common_handle_option): Likewise. + +2017-07-14 Martin Liska + + * dbxout.c (get_lang_number): Do not handle GNU Pascal. + * dbxout.h (extern void dbxout_stab_value_internal_label_diff): + Remove N_SO_PASCAL. + * dwarf2out.c (lower_bound_default): Do not handle + DW_LANG_Pascal83. + (gen_compile_unit_die): Likewise. + * gcc.c: Remove default extension binding for GNU Pascal. + * stmt.c: Remove Pascal language from a comment. + * xcoffout.c: Likewise. + +2017-07-13 David Malcolm + + PR c/81405 + * diagnostic-show-locus.c (fixit_cmp): New function. + (layout::layout): Sort m_fixit_hints. + (column_range::column_range): Assert that the values are valid. + (struct char_span): New struct. + (correction::overwrite): New method. + (struct source_line): New struct. + (line_corrections::add_hint): Add assertions. Reimplement memcpy + calls in terms of classes source_line and char_span, and + correction::overwrite. + (selftest::test_overlapped_fixit_printing_2): New function. + (selftest::diagnostic_show_locus_c_tests): Call it. + +2017-07-13 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Return + early if there is no lhs. + +2017-07-13 Martin Liska + + * dwarf2out.c (gen_pointer_type_die): Remove dead code. + (gen_reference_type_die): Likewise. + * stor-layout.c: Remove Pascal-related comment. + +2017-07-13 Martin Liska + + * opts.c (finish_options): Add quotes to error messages. + (parse_sanitizer_options): Likewise. + +2017-07-13 Thomas Preud'homme + + * doc/invoke.texi (armv8-r): Document +fp.sp ARMv8-R extension. + +2017-07-13 Richard Earnshaw + + * config/arm/vxworks.h (TARGET_ENDIAN_DEFAULT): Define. + +2017-07-13 Maxim Ostapenko + + * asan.c (asan_emit_allocas_unpoison): Use ptr_mode for arguments + during expansion. + * builtins.c (expand_asan_emit_allocas_unpoison): Likewise. + +2017-07-12 Michael Meissner + + PR target/81193 + * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If GLIBC + provides the hardware capability bits, define the macro + __BUILTIN_CPU_SUPPORTS__. + * config/rs6000/rs6000.c (cpu_expand_builtin): Generate a warning + if GLIBC does not provide the hardware capability bits. Add a + gcc_unreachable call if the built-in cpu function is neither + __builtin_cpu_is nor __builtin_cpu_supports. + (rs6000_get_function_versions_dispatcher): Change the warning + that an old GLIBC is used which does not export the capability + bits to be an error. + * doc/extend.texi (target_clones attribute): Document the + restriction that GLIBC 2.23 or newer is needed on the PowerPC. + (PowerPC built-in functions): Document that GLIBC 2.23 or newer is + needed by __builtin_cpu_is and __builtin_cpu_supports. Document + the macros defined by GCC if the newer GLIBC is available. + +2017-07-12 Jeff Law + + * config/riscv/riscv.c: Remove unnecessary includes. Reorder + remaining includes slightly. + * config/riscv/riscv-builtins.c: Include profile-count.h. + +2017-07-12 Georg-Johann Lay + + PR target/79883 + * config/avr/avr.c (avr_set_current_function): In diagnostic + messages: Quote keywords and (parts of) identifiers. + [WITH_AVRLIBC]: Warn for functions named "ISR", "SIGNAL" or + "INTERUPT". + +2017-07-12 Carl Love + + * config/rs6000/rs6000-c.c: Add support for built-in functions + vector bool char vec_revb (vector bool char); + vector bool short vec_revb (vector short char); + vector bool int vec_revb (vector bool int); + vector bool long long vec_revb (vector bool long long); + * doc/extend.texi: Update the built-in documentation file for the + new built-in functions. + +2017-07-12 Andreas Krebbel + + * config/s390/s390.md: Remove movcc splitter. + +2017-07-12 Andreas Krebbel + + * config/s390/s390.c (s390_rtx_costs): Return proper costs for + load/store on condition. + +2017-07-12 Georg-Johann Lay + + PR target/81407 + * config/avr/avr.c (avr_encode_section_info) + [progmem && !TREE_READONLY]: Error if progmem object needs + constructing. + +2017-07-11 Michael Collison + + * config/aarch64/aarch64-simd.md (aarch64_sub_compare0): + New pattern. + +2017-07-11 Carl Love + + * config/rs6000/rs6000-c.c: Add support for builtins + vector unsigned int vec_parity_lsbb (vector signed int); + vector unsigned int vec_parity_lsbb (vector unsigned int); + vector unsigned __int128 vec_parity_lsbb (vector signed __int128); + vector unsigned __int128 vec_parity_lsbb (vector unsigned __int128); + vector unsigned long long vec_parity_lsbb (vector signed long long); + vector unsigned long long vec_parity_lsbb (vector unsigned long long); + * config/rs6000/rs6000-builtin.def (VPARITY_LSBB): Add BU_P9V_OVERLOAD1. + * config/rs6000/altivec.h (vec_parity_lsbb): Add define. + * doc/extend.texi: Update the built-in documentation file for the + new built-in functions. + +2017-07-11 David Malcolm + + * diagnostic-show-locus.c: Include "gcc-rich-location.h". + (layout::m_primary_loc): New field. + (layout::layout): Initialize new field. Move location filtering + logic from here to... + (layout::maybe_add_location_range): ...this new method. Add + support for filtering to just the lines already specified by other + locations. + (layout::will_show_line_p): New method. + (gcc_rich_location::add_location_if_nearby): New method. + (selftest::test_add_location_if_nearby): New test function. + (selftest::diagnostic_show_locus_c_tests): Call it. + * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby): + New method. + +2017-07-11 Tom de Vries + + * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG): New macro. + (bb_first_real_insn): New function. + (nvptx_single): Add extra initialization of broadcasted condition + variables. + +2017-07-11 Nathan Sidwell + + * dwarf2out.c (gen_member_die): Remove useless check for anon ctors. + +2017-07-11 Georg-Johann Lay + + * doc/extend.texi (AVR Function Attributes): Remove weblink to + Binutils doc as TEXI will mess them up. + * doc/invoke.texi (AVR Options): Same here. + +2017-07-11 Daniel Cederman + + * config/sparc/sparc.opt (mfix-ut700): New option. + (mfix-gr712rc): Likewise. + (sparc_fix_b2bst): New variable. + * doc/invoke.texi (SPARC options): Document them. + (ARM options): Fix warnings. + * config/sparc/sparc.c (sparc_do_work_around_errata): Insert NOP + instructions to prevent sequences that can trigger the store-store + errata for certain LEON3FT processors. + (pass_work_around_errata::gate): Also test sparc_fix_b2bst. + (sparc_option_override): Set sparc_fix_b2bst appropriately. + * config/sparc/sparc.md (fix_b2bst): New attribute. + (in_branch_delay): Prevent stores in delay slot if fix_b2bst. + +2017-07-10 Uros Bizjak + + PR target/81375 + * config/i386/i386.md (divsf3): Add TARGET_SSE to TARGET_SSE_MATH. + (rcpps): Ditto. + (*rsqrtsf2_sse): Ditto. + (rsqrtsf2): Ditto. + (div3): Macroize insn from divdf3 and divsf3 + using MODEF mode iterator. + +2017-07-10 Martin Sebor + + PR tree-optimization/80397 + * gimple-ssa-sprintf.c (format_integer): Use INTEGRAL_TYPE_P() + instead of testing for equality to INTEGER_TYPE. + +2017-07-10 Vineet Gupta + + * config.gcc: Remove uclibc from arc target spec. + +2017-07-10 Claudiu Zissulescu + + * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Define. + +2017-07-07 Jan Hubicka + + PR lto/80838 + * lto-wrapper.c (remove_option): New function. + (merge_and_complain): Merge PIC/PIE options more realistically. + +2017-07-10 Georg-Johann Lay + + Better ISR prologues by supporting GASes __gcc_isr pseudo insn. + + PR target/20296 + PR target/81268 + * configure.ac [target=avr]: Add GAS check for -mgcc-isr. + (HAVE_AS_AVR_MGCCISR_OPTION): If so, AC_DEFINE it. + * config.in: Regenerate. + * configure: Regenerate. + * doc/extend.texi (AVR Function Attributes) : Document it. + * doc/invoke.texi (AVR Options) <-mgas-isr-prologues>: Document it. + * config/avr/avr.opt (-mgas-isr-prologues): New option and... + (TARGET_GASISR_PROLOGUES): ...target mask. + * common/config/avr/avr-common.c + (avr_option_optimization_table) [OPT_LEVELS_1_PLUS_NOT_DEBUG]: + Set -mgas-isr-prologues. + * config/avr/avr-passes.def (avr_pass_pre_proep): Add + INSERT_PASS_BEFORE for it. + * config/avr/avr-protos.h (make_avr_pass_pre_proep): New proto. + * config/avr/avr.c (avr_option_override) + [!HAVE_AS_AVR_MGCCISR_OPTION]: Unset TARGET_GASISR_PROLOGUES. + (avr_no_gccisr_function_p, avr_hregs_split_reg): New static functions. + (avr_attribute_table) : Add new function attribute. + (avr_set_current_function) : Init machine field. + (avr_pass_data_pre_proep, avr_pass_pre_proep): New pass data + and rtl_opt_pass. + (make_avr_pass_pre_proep): New function. + (emit_push_sfr) : Add argument to function and use it + instead of TMP_REG. + (avr_expand_prologue) [machine->gasisr.maybe]: Emit gasisr insn + and set machine->gasisr.yes. + (avr_expand_epilogue) [machine->gasisr.yes]: Similar. + (avr_asm_function_end_prologue) [machine->gasisr.yes]: Add + __gcc_isr.n_pushed to .L__stack_usage. + (TARGET_ASM_FINAL_POSTSCAN_INSN): Define to... + (avr_asm_final_postscan_insn): ...this new static function. + * config/avr/avr.h (machine_function) + : New fields. + : New fields. + * config/avr/avr.md (UNSPECV_GASISR): Add unspecv enum. + (GASISR_Prologue, GASISR_Epilogue, GASISR_Done): New define_constants. + (gasisr, *gasisr): New expander and insn. + * config/avr/gen-avr-mmcu-specs.c (print_mcu) + [HAVE_AS_AVR_MGCCISR_OPTION]: Print asm_gccisr spec. + * config/avr/specs.h (ASM_SPEC) : Add sub spec. + +2017-07-10 Richard Earnshaw + + * config/arm/parsecpu.awk (gen_comm_data): Do not escape single quotes + in quoted strings. + +2017-07-10 Georg-Johann Lay + + Move jump-tables out of .text again. + + PR target/81075 + * config/avr/avr.c (ASM_OUTPUT_ADDR_VEC_ELT): Remove function. + (ASM_OUTPUT_ADDR_VEC): New function. + (avr_adjust_insn_length) [JUMP_TABLE_DATA_P]: Return 0. + (avr_final_prescan_insn) [avr_log.insn_addresses]: Dump + INSN_ADDRESSes as asm comment. + * config/avr/avr.h (JUMP_TABLES_IN_TEXT_SECTION): Adjust comment. + (ASM_OUTPUT_ADDR_VEC_ELT): Remove define. + (ASM_OUTPUT_ADDR_VEC): Define to avr_output_addr_vec. + * config/avr/avr.md (*tablejump): Adjust comment. + * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove. + * config/avr/avr-log.c (avr_log_set_avr_log) : + New detail. + * config/avr/avr-protos.h (avr_output_addr_vec_elt): Remove proto. + (avr_output_addr_vec): New proto. + (avr_log_t) : New field. + +2017-07-09 H.J. Lu + + PR target/81313 + * config/i386/i386.c (ix86_function_arg_advance): Set + outgoing_args_on_stack to true if there are outgoing arguments + on stack. + (ix86_function_arg): Likewise. + (ix86_get_drap_rtx): Use DRAP only if there are outgoing + arguments on stack and ACCUMULATE_OUTGOING_ARGS is false. + * config/i386/i386.h (machine_function): Add + outgoing_args_on_stack. + +2017-07-09 Krister Walfridsson + + * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not + supporting pthreds. + * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always enable pthreads. + +2017-07-08 Richard Sandiford + + * Makefile.in (HOOKS_H, RTL_BASE_H, FUNCTION_H, EXPR_H, REGS_H) + (REAL_H): Remove $(MACHMODE_H). + (FIXED_VALUE_H, TREE_CORE_H, CFGLOOP_H): Remove $(MACHMODE_H) and + double-int.h. + (CORETYPES_H): Add signop.h, wide-int.h, wide-int-print.h, + $(MACHMODE_H) and double-int.h. + (build/min-insn-modes.o): Depend on $(CORETYPES_H) rather than + $(MACHMODE_H). + (gengtype-state.o, gengtype.o, build/gengtype.o): Don't depend on + double-int.h. + +2017-07-07 Andrew Pinski + + * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Check + prev_set and curr_set for AARCH64_FUSE_ALU_BRANCH. + +2017-07-07 Michael Meissner + + * config/rs6000/rs6000.c (rs6000_get_function_versions_dispatcher): + Add warning if GCC was not configured to link against a GLIBC that + exports the hardware capability bits. + (make_resolver_func): Make resolver function private and not a + COMDAT function. Create the name with clone_function_name instead + of make_unique_name. + + PR target/81348 + * config/rs6000/rs6000.md (HI sign_extend splitter): Use the + correct operand in doing the split. + +2017-07-07 Carl Love + + * config/rs6000/rs6000-c: Add support for built-in function + vector unsigned short vec_pack_to_short_fp32 (vector float, + vector float). + * config/rs6000/rs6000-builtin.def (CONVERT_4F32_8I16): Add + BU_P9V_AV_2 and BU_P9V_OVERLOAD_2 definitions. + * config/rs6000/altivec.h (vec_pack_to_short_fp32): Add define. + * config/rs6000/altivec.md(UNSPEC_CONVERT_4F32_8I16): Add UNSPEC. + (convert_4f32_8i16): Add define_expand. + * doc/extend.texi: Update the built-in documentation file for the + new built-in function. + +2017-07-07 Jose E. Marchesi + + * config/sparc/m8.md: New file. + * config/sparc/sparc.md: Include m8.md. + +2017-07-07 Jose E. Marchesi + + * config/sparc/sparc.opt: New option -mvis4b. + * config/sparc/sparc.c (dump_target_flag_bits): Handle MASK_VIS4B. + (sparc_option_override): Handle VIS4B. + (enum sparc_builtins): Define + SPARC_BUILTIN_DICTUNPACK{8,16,32}, + SPARC_BUILTIN_FPCMP{LE,GT,EQ,NE}{8,16,32}SHL, + SPARC_BUILTIN_FPCMPU{LE,GT}{8,16,32}SHL, + SPARC_BUILTIN_FPCMPDE{8,16,32}SHL and + SPARC_BUILTIN_FPCMPUR{8,16,32}SHL. + (check_constant_argument): New function. + (sparc_vis_init_builtins): Define builtins + __builtin_vis_dictunpack{8,16,32}, + __builtin_vis_fpcmp{le,gt,eq,ne}{8,16,32}shl, + __builtin_vis_fpcmpu{le,gt}{8,16,32}shl, + __builtin_vis_fpcmpde{8,16,32}shl and + __builtin_vis_fpcmpur{8,16,32}shl. + (sparc_expand_builtin): Check that the constant operands to + __builtin_vis_fpcmp*shl and _builtin_vis_dictunpack* are indeed + constant and in range. + * config/sparc/sparc-c.c (sparc_target_macros): Handle + TARGET_VIS4B. + * config/sparc/sparc.h (SPARC_IMM2_P): Define. + (SPARC_IMM5_P): Likewise. + * config/sparc/sparc.md (cpu_feature): Add new feagure "vis4b". + (enabled): Handle vis4b. + (UNSPEC_DICTUNPACK): New unspec. + (UNSPEC_FPCMPSHL): Likewise. + (UNSPEC_FPUCMPSHL): Likewise. + (UNSPEC_FPCMPDESHL): Likewise. + (UNSPEC_FPCMPURSHL): Likewise. + (cpu_feature): New CPU feature `vis4b'. + (dictunpack{8,16,32}): New insns. + (FPCSMODE): New mode iterator. + (fpcscond): New code iterator. + (fpcsucond): Likewise. + (fpcmp{le,gt,eq,ne}{8,16,32}{si,di}shl): New insns. + (fpcmpu{le,gt}{8,16,32}{si,di}shl): Likewise. + (fpcmpde{8,16,32}{si,di}shl): Likewise. + (fpcmpur{8,16,32}{si,di}shl): Likewise. + * config/sparc/constraints.md: Define constraints `q' for unsigned + 2-bit integer constants and `t' for unsigned 5-bit integer + constants. + * config/sparc/predicates.md (imm5_operand_dictunpack8): New + predicate. + (imm5_operand_dictunpack16): Likewise. + (imm5_operand_dictunpack32): Likewise. + (imm2_operand): Likewise. + * doc/invoke.texi (SPARC Options): Document -mvis4b. + * doc/extend.texi (SPARC VIS Built-in Functions): Document the + ditunpack* and fpcmp*shl builtins. + +2017-07-07 Jose E. Marchesi + + * config.gcc: Handle m8 in --with-{cpu,tune} options. + * config.in: Add HAVE_AS_SPARC6 define. + * config/sparc/driver-sparc.c (cpu_names): Add entry for the SPARC + M8. + * config/sparc/sol2.h (CPP_CPU64_DEFAULT_SPEC): Define for + TARGET_CPU_m8. + (ASM_CPU32_DEFAUILT_SPEC): Likewise. + (CPP_CPU_SPEC): Handle m8. + (ASM_CPU_SPEC): Likewise. + * config/sparc/sparc-opts.h (enum processor_type): Add + PROCESSOR_M8. + * config/sparc/sparc.c (m8_costs): New struct. + (sparc_option_override): Handle TARGET_CPU_m8. + (sparc32_initialize_trampoline): Likewise. + (sparc64_initialize_trampoline): Likewise. + (sparc_issue_rate): Likewise. + (sparc_register_move_cost): Likewise. + * config/sparc/sparc.h (TARGET_CPU_m8): Define. + (CPP_CPU64_DEFAULT_SPEC): Define for M8. + (ASM_CPU64_DEFAULT_SPEC): Likewise. + (CPP_CPU_SPEC): Handle M8. + (ASM_CPU_SPEC): Likewise. + (AS_M8_FLAG): Define. + * config/sparc/sparc.md: Add m8 to the cpu attribute. + * config/sparc/sparc.opt: New option -mcpu=m8 for sparc targets. + * configure.ac (HAVE_AS_SPARC6): Check for assembler support for + M8 instructions. + * configure: Regenerate. + * doc/invoke.texi (SPARC Options): Document -mcpu=m8 and + -mtune=m8. + +2017-07-07 Jose E. Marchesi + + * config/sparc/niagara7.md: Rework the DFA scheduler to use insn + subtypes. + * config/sparc/sparc.md: Remove the `v3pipe' insn attribute. + ("*movdi_insn_sp32"): Do not set v3pipe. + ("*movsi_insn"): Likewise. + ("*movdi_insn_sp64"): Likewise. + ("*movsf_insn"): Likewise. + ("*movdf_insn_sp32"): Likewise. + ("*movdf_insn_sp64"): Likewise. + ("*zero_extendsidi2_insn_sp64"): Likewise. + ("*sign_extendsidi2_insn"): Likewise. + ("*mov_insn"): Likewise. + ("*mov_insn_sp64"): Likewise. + ("*mov_insn_sp32"): Likewise. + ("3"): Likewise. + ("3"): Likewise. + ("*not_3"): Likewise. + ("*nand_vis"): Likewise. + ("*_not1_vis"): Likewise. + ("*_not2_vis"): Likewise. + ("one_cmpl2"): Likewise. + ("faligndata_vis"): Likewise. + ("alignaddrsi_vis"): Likewise. + ("alignaddrdi_vis"): Likweise. + ("alignaddrlsi_vis"): Likewise. + ("alignaddrldi_vis"): Likewise. + ("fcmp_vis"): Likewise. + ("bmaskdi_vis"): Likewise. + ("bmasksi_vis"): Likewise. + ("bshuffle_vis"): Likewise. + ("cmask8_vis"): Likewise. + ("cmask16_vis"): Likewise. + ("cmask32_vis"): Likewise. + ("pdistn_vis"): Likewise. + ("3"): Likewise. + +2017-07-07 Jose E. Marchesi + + * config/sparc/sparc.md ("subtype"): New insn attribute. + ("*wrgsr_sp64"): Set insn subtype. + ("*rdgsr_sp64"): Likewise. + ("alignaddrsi_vis"): Likewise. + ("alignaddrdi_vis"): Likewise. + ("alignaddrlsi_vis"): Likewise. + ("alignaddrldi_vis"): Likewise. + ("3"): Likewise. + ("fexpand_vis"): Likewise. + ("fpmerge_vis"): Likewise. + ("faligndata_vis"): Likewise. + ("bshuffle_vis"): Likewise. + ("cmask8_vis"): Likewise. + ("cmask16_vis"): Likewise. + ("cmask32_vis"): Likewise. + ("fchksm16_vis"): Likewise. + ("v3"): Likewise. + ("fmean16_vis"): Likewise. + ("fp64_vis"): Likewise. + ("v8qi3"): Likewise. + ("3"): Likewise. + ("3"): Likewise. + ("3"): Likewise. + ("v8qi3"): Likewise. + ("3"): Likewise. + ("*movqi_insn"): Likewise. + ("*movhi_insn"): Likewise. + ("*movsi_insn"): Likewise. + ("movsi_pic_gotdata_op"): Likewise. + ("*movdi_insn_sp32"): Likewise. + ("*movdi_insn_sp64"): Likewise. + ("movdi_pic_gotdata_op"): Likewise. + ("*movsf_insn"): Likewise. + ("*movdf_insn_sp32"): Likewise. + ("*movdf_insn_sp64"): Likewise. + ("*zero_extendhisi2_insn"): Likewise. + ("*zero_extendqihi2_insn"): Likewise. + ("*zero_extendqisi2_insn"): Likewise. + ("*zero_extendqidi2_insn"): Likewise. + ("*zero_extendhidi2_insn"): Likewise. + ("*zero_extendsidi2_insn_sp64"): Likewise. + ("ldfsr"): Likewise. + ("prefetch_64"): Likewise. + ("prefetch_32"): Likewise. + ("tie_ld32"): Likewise. + ("tie_ld64"): Likewise. + ("*tldo_ldub_sp32"): Likewise. + ("*tldo_ldub1_sp32"): Likewise. + ("*tldo_ldub2_sp32"): Likewise. + ("*tldo_ldub_sp64"): Likewise. + ("*tldo_ldub1_sp64"): Likewise. + ("*tldo_ldub2_sp64"): Likewise. + ("*tldo_ldub3_sp64"): Likewise. + ("*tldo_lduh_sp32"): Likewise. + ("*tldo_lduh1_sp32"): Likewise. + ("*tldo_lduh_sp64"): Likewise. + ("*tldo_lduh1_sp64"): Likewise. + ("*tldo_lduh2_sp64"): Likewise. + ("*tldo_lduw_sp32"): Likewise. + ("*tldo_lduw_sp64"): Likewise. + ("*tldo_lduw1_sp64"): Likewise. + ("*tldo_ldx_sp64"): Likewise. + ("*mov_insn"): Likewise. + ("*mov_insn_sp64"): Likewise. + ("*mov_insn_sp32"): Likewise. + +2017-07-07 Jose E. Marchesi + + * config/sparc/sparc.md ("type"): New insn type viscmp. + ("fcmp_vis"): Set insn type to + viscmp. + ("fpcmp8_vis"): Likewise. + ("fucmp8_vis"): Likewise. + ("fpcmpu_vis"): Likewise. + * config/sparc/niagara7.md ("n7_vis_logical_v3pipe"): Handle + viscmp. + ("n7_vis_logical_11cycle"): Likewise. + * config/sparc/niagara4.md ("n4_vis_logical"): Likewise. + * config/sparc/niagara2.md ("niag3_vis": Likewise. + * config/sparc/niagara.md ("niag_vis"): Likewise. + * config/sparc/ultra3.md ("us3_fga"): Likewise. + * config/sparc/ultra1_2.md ("us1_fga_double"): Likewise. + +2017-07-07 Jose E. Marchesi + + * config/sparc/sparc.md: New instruction type `bmask'. + (bmaskdi_vis): Use the `bmask' type. + (bmasksi_vis): Likewise. + * config/sparc/ultra3.md (us3_array): Likewise. + * config/sparc/niagara7.md (n7_array): Likewise. + * config/sparc/niagara4.md (n4_array): Likewise. + * config/sparc/niagara2.md (niag2_vis): Likewise. + (niag3_vis): Likewise. + * config/sparc/niagara.md (niag_vis): Likewise. + +2017-07-06 Jan Hubicka + + * ipa-comdats.c: Remove optimize check from gate. + * ipa-fnsummary.c (ipa_fn_summary_generate): do not generate summary + for functions not optimized. + (ipa_fn_summary_read): Skip optimize check. + (ipa_fn_summary_write): Likewise. + * ipa-inline-analysis.c (do_estimate_growth_1): Check that caller + is optimized. + * ipa-inline.c (can_inline_edge_p): Not optimized functions are + uninlinable. + (can_inline_edge_p): Check flag_pcc_struct_return for match. + (check_callers): Give up on caller which is not optimized. + (inline_small_functions): Likewise. + (ipa_inline): Do not give up when not optimizing. + * ipa-visbility.c (function_and_variable_visibility): Do not optimize + away unoptimizes cdtors. + (whole_program_function_and_variable_visibility): Do + ipa_discover_readonly_nonaddressable_vars in LTO mode. + * ipa.c (process_references): Do not check optimize. + (symbol_table::remove_unreachable_nodes): Update optimize check. + (set_writeonly_bit): Update optimize check. + (pass_ipa_cdtor_merge::gate): Do not check optimize. + (pass_ipa_single_use::gate): Remove. + +2017-07-06 Aaron Sawdey + + * config/rs6000/rs6000.c (union_defs, union_uses, insn_is_load_p, + insn_is_store_p, insn_is_swap_p, const_load_sequence_p, v2df_reduction_p, + rtx_is_swappable_p, insn_is_swappable_p, chain_contains_only_swaps, + mark_swaps_for_removal, swap_const_vector_halves, adjust_subreg_index, + permute_load, permute_store, adjust_extract, adjust_splat, + adjust_xxpermdi, adjust_concat, adjust_vperm, handle_special_swappables, + replace_swap_with_copy, dump_swap_insn_table, + alignment_with_canonical_addr, alignment_mask, find_alignment_op, + recombine_lvx_pattern, recombine_stvx_pattern, + recombine_lvx_stvx_patterns, rs6000_analyze_swaps, + make_pass_analyze_swaps): Move all code related to p8 swap optimizations + to file rs6000-p8swap.c. + * config/rs6000/rs6000-p8swap.c: New file. + * config/rs6000/t-rs6000: Add rule to build rs6000-p8swap.o. + * config.gcc: Add rs6000-p8swap.o to extra_objs for powerpc*-*-* + and rs6000*-*-* targets. + +2017-07-06 David Malcolm + + * Makefile.in (selftest): Remove dependency on s-selftest-c++. + +2017-07-06 Jan Hubicka + + * lto-wrapper.c (merge_and_complain): Do not merge + fexceptions, fnon_call_exceptions, ftrapv, ffp_contract_, fmath_errno, + fsigned_zeros, ftrapping_math, fwrapv. + (append_compiler_options): Do not track these options. + (append_linker_options): Likewie + +2017-07-06 Jan Hubicka + + * cgraphunit.c (cgraph_node::finalize_function): When + !flag_toplevel_reorde set no_reorder flag. + (varpool_node::finalize_decl): Likewise. + (symbol_table::compile): Drop no toplevel reorder path. + +2017-07-06 Jan Hubicka + + * bb-reorder.c (better_edge_p): Do not build traces across abnormal/eh + edges; zero probability is not better than uninitialized. + +2017-07-06 Maxim Ostapenko + + * asan.h (asan_sanitize_allocas_p): Declare. + * asan.c (asan_sanitize_allocas_p): New function. + (handle_builtin_stack_restore): Bail out if !asan_sanitize_allocas_p. + (handle_builtin_alloca): Likewise. + * cfgexpand.c (expand_used_vars): Do not add allocas unpoisoning stuff + if !asan_sanitize_allocas_p. + * params.def (asan-instrument-allocas): Add new option. + * params.h (ASAN_PROTECT_ALLOCAS): Define. + * opts.c (common_handle_option): Disable allocas sanitization for + KASan by default. + +2017-07-06 Maxim Ostapenko + + * asan.c: Include gimple-fold.h. + (get_last_alloca_addr): New function. + (handle_builtin_stackrestore): Likewise. + (handle_builtin_alloca): Likewise. + (asan_emit_allocas_unpoison): Likewise. + (get_mem_refs_of_builtin_call): Add new parameter, remove const + quallifier from first paramerer. Handle BUILT_IN_ALLOCA, + BUILT_IN_ALLOCA_WITH_ALIGN and BUILT_IN_STACK_RESTORE builtins. + (instrument_builtin_call): Pass gimple iterator to + get_mem_refs_of_builtin_call. + (last_alloca_addr): New global. + * asan.h (asan_emit_allocas_unpoison): Declare. + * builtins.c (expand_asan_emit_allocas_unpoison): New function. + (expand_builtin): Handle BUILT_IN_ASAN_ALLOCAS_UNPOISON. + * cfgexpand.c (expand_used_vars): Call asan_emit_allocas_unpoison + if function calls alloca. + * gimple-fold.c (replace_call_with_value): Remove static keyword. + * gimple-fold.h (replace_call_with_value): Declare. + * internal-fn.c: Include asan.h. + * sanitizer.def (BUILT_IN_ASAN_ALLOCA_POISON, + BUILT_IN_ASAN_ALLOCAS_UNPOISON): New builtins. + +2017-07-06 David Malcolm + + * Makefile.in (SELFTEST_FLAGS): Drop "-x c", moving it to... + (C_SELFTEST_FLAGS): New. + (CPP_SELFTEST_FLAGS): New. + (SELFTEST_DEPS): New, from deps of s-selftest. + (C_SELFTEST_DEPS): New, from deps of s-selftest. + (CPP_SELFTEST_DEPS): New. + (selftest): Add dependency on s-selftest-c++. + (s-selftest): Rename to... + (s-selftest-c): ...this, moving deps to SELFTEST_DEPS + and C_SELFTEST_DEPS, and using C_SELFTEST_FLAGS rather + than SELFTEST_FLAGS. + (selftest-gdb): Rename to... + (selftest-c-gdb): ...this, using C_SELFTEST_DEPS and + C_SELFTEST_FLAGS. + (selftest-gdb): Reintroduce as an alias for selftest-c-gdb. + (selftest-valgrind): Rename to... + (selftest-c-valgrind): ...this, using C_SELFTEST_DEPS and + C_SELFTEST_FLAGS. + (selftest-valgrind): Reintroduce as an alias for + selftest-c-valgrind. + (s-selftest-c++): New. + (selftest-c++-gdb): New. + (selftest-c++-valgrind): New. + +2017-07-06 Olivier Hainque + + * gcc.c (process_command): When deciding if undefined variables + should be ignored when processing specs, accept "gcc -v" as well. + +2017-07-06 Jan Hubicka + + * auto-profile.c (afdo_set_bb_count, afdo_propagate_edge, + afdo_annotate_cfg): Set counts/probabilities as determined by afdo. + +2017-07-06 Thomas Preud'homme + + * config/arm/arm-cpus.in (armv8-r): Add new entry. + * config/arm/arm-isa.h (ISA_ARMv8r): Define macro. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R + enumerator. + * doc/invoke.texi: Mention -march=armv8-r and its extensions. + +2017-07-06 Carl Love + + * ChangeLog: Clean up from mid air collision + +2017-07-06 Carl Love + + * config/rs6000/rs6000-c.c: Add support for built-in functions + vector signed int vec_subc (vector signed int, vector signed int); + vector signed __int128 vec_subc (vector signed __int128, + vector signed __int128); + vector unsigned __int128 vec_subc (vector unsigned __int128, + vector unsigned __int128); + vector signed int vec_sube (vector signed int, vector signed int, + vector signed int); + vector unsigned int vec_sube (vector unsigned int, + vector unsigned int, + vector unsigned int); + vector signed __int128 vec_sube (vector signed __int128, + vector signed __int128, + vector signed__int128); + vector unsigned __int128 vec_sube (vector unsigned __int128, + vector unsigned __int128, + vector unsigned __int128); + vector signed int vec_subec (vector signed int, vector signed int, + vector signed int); + vector unsigned int vec_subec (vector unsigned int, + vector unsigned int, + vector unsigned int); + vector signed __int128 vec_subec (vector signed __int128, + vector signed __int128, + vector signed__int128); + vector unsigned __int128 vec_subec (vector unsigned __int128, + vector unsigned __int128, + vector unsigned __int128); + * config/rs6000/rs6000.c (ALTIVEC_BUILTIN_VEC_SUBE, + ALTIVEC_BUILTIN_VEC_SUBEC): Add ef_builtins. + * config/rs6000/rs6000-builtin.def (SUBE, SUBEC): Add + BU_ALTIVEC_OVERLOAD_X definitions. + * config/rs6000/altivec.h (vec_sube, vec_subec): Add builtin defines. + * doc/extend.texi: Update the built-in documentation file for the new + built-in functions. + +2017-07-06 David Malcolm + + PR c++/79300 + * diagnostic-show-locus.c (layout::layout): Use start and finish + spelling location for the start and finish of each range. + * genmatch.c (linemap_client_expand_location_to_spelling_point): + Add unused aspect param. + * input.c (expand_location_1): Add "aspect" param, and use it + to access the correct part of the location. + (expand_location): Pass LOCATION_ASPECT_CARET to new param of + expand_location_1. + (expand_location_to_spelling_point): Likewise. + (linemap_client_expand_location_to_spelling_point): Add "aspect" + param, and pass it to expand_location_1. + +2017-07-06 Sebastian Peryt + + * config/i386/avx512fintrin.h (_mm_mask_getexp_round_ss, + _mm_maskz_getexp_round_ss, _mm_mask_getexp_round_sd, + _mm_maskz_getexp_round_sd, _mm_mask_getmant_round_sd, + _mm_maskz_getmant_round_sd, _mm_mask_getmant_round_ss, + _mm_maskz_getmant_round_ss, _mm_mask_getexp_ss, _mm_maskz_getexp_ss, + _mm_mask_getexp_sd, _mm_maskz_getexp_sd, _mm_mask_getmant_sd, + _mm_maskz_getmant_sd, _mm_mask_getmant_ss, + _mm_maskz_getmant_ss): New intrinsics. + (__builtin_ia32_getexpss128_mask): Changed to ... + __builtin_ia32_getexpss128_round ... this. + (__builtin_ia32_getexpsd128_mask): Changed to ... + __builtin_ia32_getexpsd128_round ... this. + * config/i386/i386-builtin-types.def + ((V2DF, V2DF, V2DF, INT, V2DF, UQI, INT), + (V4SF, V4SF, V4SF, INT, V4SF, UQI, INT)): New function type aliases. + * config/i386/i386-builtin.def (__builtin_ia32_getexpsd_mask_round, + __builtin_ia32_getexpss_mask_round, __builtin_ia32_getmantsd_mask_round, + __builtin_ia32_getmantss_mask_round): New builtins. + * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_INT_V2DF_UQI_INT, + V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT): Handle new types. + (CODE_FOR_avx512f_vgetmantv2df_mask_round, + CODE_FOR_avx512f_vgetmantv4sf_mask_round): New cases. + * config/i386/sse.md + (avx512f_sgetexp): Changed to ... + avx512f_sgetexp + ... this. + (vgetexp\t{%2, %1, %0| + %0, %1, %2}): Changed to ... + vgetexp + \t{%2, %1, %0| + %0, %1, %2} ... this. + (avx512f_vgetmant): Changed to ... + avx512f_vgetmant + ... this. + (vgetmant\t{%3, %2, %1, %0| + %0, %1, %2, %3}): Changed to ... + vgetmant + \t{%3, %2, %1, %0| + %0, %1, %2 + , %3} ... this. + * config/i386/subst.md (mask_scalar_operand4, + round_saeonly_scalar_mask_operand4, round_saeonly_scalar_mask_op4, + round_saeonly_scalar_nimm_predicate): New subst attributes. + +2017-07-06 Julia Koval + + * config/i386/i386.c (ix86_erase_embedded_rounding): + Remove code for old rounding pattern. + +2017-07-06 Richard Earnshaw + + * config/arm/t-arm (GTM_H): Add arm-cpu.h. + +2017-07-06 Christophe Lyon + + * doc/sourcebuild.texi (Test Directives, Variants of + dg-require-support): Add documentation for dg-require-stack-check. + +2017-07-05 Sebastian Peryt + + * config/i386/subst.md (mask_scalar, round_scalar, + round_saeonly_scalar): New meta-templates. + (mask_scalar_name, mask_scalar_operand3, round_scalar_name, + round_scalar_mask_operand3, round_scalar_mask_op3, + round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name, + round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3, + round_saeonly_scalar_constraint, + round_saeonly_scalar_prefix): New subst attribute. + * config/i386/sse.md + (_vm3): Renamed to ... + _vm3 + ... this. + (_vm3): Renamed to ... + _vm3 + ... this. + (_vm3): Renamed to ... + _vm3 + ... this. + (v + \t{%2, %1, %0| + %0, %1, %2}): Changed to ... + v + \t{%2, %1, %0| + %0, %1, %2} ... this. + (v + \t{%2, %1, %0| + %0, %1, %2}): Changed to ... + v + \t{%2, %1, %0| + %0, %1, %2} ... this. + (v + \t{%2, %1, %0| + %0, %1, %2}): Changed to ... + v + \t{%2, %1, %0| + %0, %1, %2 + } ... this. + +2017-07-05 Richard Earnshaw + + * config/arm/arm.c (arm_fixed_condition_code_regs): New function. + (TARGET_FIXED_CONDITION_CODE_REGS): Redefine. + +2017-07-05 Richard Sandiford + Alan Hayward + David Sherwood + + * combine.c (simplify_if_then_else): Remove "enum" before + "machine_mode". + * compare-elim.c (can_eliminate_compare): Likewise. + * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type): + Likewise. + (aarch64_lookup_simd_builtin_type): Likewise. + (aarch64_simd_builtin_type): Likewise. + (aarch64_init_simd_builtin_types): Likewise. + (aarch64_simd_expand_args): Likewise. + * config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_rglist): + Likewise. + (aarch64_reverse_mask): Likewise. + (aarch64_simd_emit_reg_reg_move): Likewise. + (aarch64_gen_adjusted_ldpstp): Likewise. + (aarch64_ccmp_mode_to_code): Likewise. + (aarch64_operands_ok_for_ldpstp): Likewise. + (aarch64_operands_adjust_ok_for_ldpstp): Likewise. + * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class): + Likewise. + (aarch64_min_divisions_for_recip_mul): Likewise. + (aarch64_reassociation_width): Likewise. + (aarch64_get_condition_code_1): Likewise. + (aarch64_simd_emit_reg_reg_move): Likewise. + (aarch64_simd_attr_length_rglist): Likewise. + (aarch64_reverse_mask): Likewise. + (aarch64_operands_ok_for_ldpstp): Likewise. + (aarch64_operands_adjust_ok_for_ldpstp): Likewise. + (aarch64_gen_adjusted_ldpstp): Likewise. + * config/aarch64/cortex-a57-fma-steering.c (fma_node::rename): + Likewise. + * config/arc/arc.c (legitimate_offset_address_p): Likewise. + * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise. + (arm_lookup_simd_builtin_type): Likewise. + (arm_simd_builtin_type): Likewise. + (arm_init_simd_builtin_types): Likewise. + (arm_expand_builtin_args): Likewise. + * config/arm/arm-protos.h (arm_expand_builtin): Likewise. + * config/ft32/ft32.c (ft32_libcall_value): Likewise. + (ft32_setup_incoming_varargs): Likewise. + (ft32_function_arg): Likewise. + (ft32_function_arg_advance): Likewise. + (ft32_pass_by_reference): Likewise. + (ft32_arg_partial_bytes): Likewise. + (ft32_valid_pointer_mode): Likewise. + (ft32_addr_space_pointer_mode): Likewise. + (ft32_addr_space_legitimate_address_p): Likewise. + * config/i386/i386-protos.h (ix86_operands_ok_for_move_multiple): + Likewise. + * config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise. + (ix86_emit_outlined_ms2sysv_restore): Likewise. + (iamcu_alignment): Likewise. + (canonicalize_vector_int_perm): Likewise. + (ix86_noce_conversion_profitable_p): Likewise. + (ix86_mpx_bound_mode): Likewise. + (ix86_operands_ok_for_move_multiple): Likewise. + * config/microblaze/microblaze-protos.h + (microblaze_expand_conditional_branch_reg): Likewise. + * config/microblaze/microblaze.c + (microblaze_expand_conditional_branch_reg): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok): + Likewise. + (rs6000_reassociation_width): Likewise. + (rs6000_invalid_binary_op): Likewise. + (fusion_p9_p): Likewise. + (emit_fusion_p9_load): Likewise. + (emit_fusion_p9_store): Likewise. + * config/riscv/riscv-protos.h (riscv_regno_mode_ok_for_base_p): + Likewise. + (riscv_hard_regno_mode_ok_p): Likewise. + (riscv_address_insns): Likewise. + (riscv_split_symbol): Likewise. + (riscv_legitimize_move): Likewise. + (riscv_function_value): Likewise. + (riscv_hard_regno_nregs): Likewise. + (riscv_expand_builtin): Likewise. + * config/riscv/riscv.c (riscv_build_integer_1): Likewise. + (riscv_build_integer): Likewise. + (riscv_split_integer): Likewise. + (riscv_legitimate_constant_p): Likewise. + (riscv_cannot_force_const_mem): Likewise. + (riscv_regno_mode_ok_for_base_p): Likewise. + (riscv_valid_base_register_p): Likewise. + (riscv_valid_offset_p): Likewise. + (riscv_valid_lo_sum_p): Likewise. + (riscv_classify_address): Likewise. + (riscv_legitimate_address_p): Likewise. + (riscv_address_insns): Likewise. + (riscv_load_store_insns): Likewise. + (riscv_force_binary): Likewise. + (riscv_split_symbol): Likewise. + (riscv_force_address): Likewise. + (riscv_legitimize_address): Likewise. + (riscv_move_integer): Likewise. + (riscv_legitimize_const_move): Likewise. + (riscv_legitimize_move): Likewise. + (riscv_address_cost): Likewise. + (riscv_subword): Likewise. + (riscv_output_move): Likewise. + (riscv_canonicalize_int_order_test): Likewise. + (riscv_emit_int_order_test): Likewise. + (riscv_function_arg_boundary): Likewise. + (riscv_pass_mode_in_fpr_p): Likewise. + (riscv_pass_fpr_single): Likewise. + (riscv_pass_fpr_pair): Likewise. + (riscv_get_arg_info): Likewise. + (riscv_function_arg): Likewise. + (riscv_function_arg_advance): Likewise. + (riscv_arg_partial_bytes): Likewise. + (riscv_function_value): Likewise. + (riscv_pass_by_reference): Likewise. + (riscv_setup_incoming_varargs): Likewise. + (riscv_print_operand): Likewise. + (riscv_elf_select_rtx_section): Likewise. + (riscv_save_restore_reg): Likewise. + (riscv_for_each_saved_reg): Likewise. + (riscv_register_move_cost): Likewise. + (riscv_hard_regno_mode_ok_p): Likewise. + (riscv_hard_regno_nregs): Likewise. + (riscv_class_max_nregs): Likewise. + (riscv_memory_move_cost): Likewise. + * config/rl78/rl78-protos.h (rl78_split_movsi): Likewise. + * config/rl78/rl78.c (rl78_split_movsi): Likewise. + (rl78_addr_space_address_mode): Likewise. + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + Likewise. + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise. + (rs6000_reassociation_width): Likewise. + (rs6000_invalid_binary_op): Likewise. + (fusion_p9_p): Likewise. + (emit_fusion_p9_load): Likewise. + (emit_fusion_p9_store): Likewise. + * config/visium/visium-protos.h (prepare_move_operands): Likewise. + (ok_for_simple_move_operands): Likewise. + (ok_for_simple_move_strict_operands): Likewise. + (ok_for_simple_arith_logic_operands): Likewise. + (visium_legitimize_reload_address): Likewise. + (visium_select_cc_mode): Likewise. + (output_cbranch): Likewise. + (visium_split_double_move): Likewise. + (visium_expand_copysign): Likewise. + (visium_expand_int_cstore): Likewise. + (visium_expand_fp_cstore): Likewise. + * config/visium/visium.c (visium_pass_by_reference): Likewise. + (visium_function_arg): Likewise. + (visium_function_arg_advance): Likewise. + (visium_libcall_value): Likewise. + (visium_setup_incoming_varargs): Likewise. + (visium_legitimate_constant_p): Likewise. + (visium_legitimate_address_p): Likewise. + (visium_legitimize_address): Likewise. + (visium_secondary_reload): Likewise. + (visium_register_move_cost): Likewise. + (visium_memory_move_cost): Likewise. + (prepare_move_operands): Likewise. + (ok_for_simple_move_operands): Likewise. + (ok_for_simple_move_strict_operands): Likewise. + (ok_for_simple_arith_logic_operands): Likewise. + (visium_function_value_1): Likewise. + (rtx_ok_for_offset_p): Likewise. + (visium_legitimize_reload_address): Likewise. + (visium_split_double_move): Likewise. + (visium_expand_copysign): Likewise. + (visium_expand_int_cstore): Likewise. + (visium_expand_fp_cstore): Likewise. + (visium_split_cstore): Likewise. + (visium_select_cc_mode): Likewise. + (visium_split_cbranch): Likewise. + (output_cbranch): Likewise. + (visium_print_operand_address): Likewise. + * expmed.c (flip_storage_order): Likewise. + * expmed.h (emit_cstore): Likewise. + (flip_storage_order): Likewise. + * genrecog.c (validate_pattern): Likewise. + * hsa-gen.c (gen_hsa_addr): Likewise. + * internal-fn.c (expand_arith_overflow): Likewise. + * ira-color.c (allocno_copy_cost_saving): Likewise. + * lra-assigns.c (find_hard_regno_for_1): Likewise. + * lra-constraints.c (prohibited_class_reg_set_mode_p): Likewise. + (process_invariant_for_inheritance): Likewise. + * lra-eliminations.c (move_plus_up): Likewise. + * omp-low.c (lower_oacc_reductions): Likewise. + * simplify-rtx.c (simplify_subreg): Likewise. + * target.def (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Likewise. + (TARGET_CHKP_BOUND_MODE): Likewise.. + * targhooks.c (default_chkp_bound_mode): Likewise. + (default_setup_incoming_vararg_bounds): Likewise. + * targhooks.h (default_chkp_bound_mode): Likewise. + (default_setup_incoming_vararg_bounds): Likewise. + * tree-ssa-math-opts.c (divmod_candidate_p): Likewise. + * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise. + (have_whole_vector_shift): Likewise. + * tree-vect-stmts.c (vectorizable_load): Likewise. + * doc/tm.texi: Regenerate. + +2017-07-05 Georg-Johann Lay + + Graceful degrade if Binutils PR21472 is not available. + + PR target/81072 + * configure.ac [target=avr]: WARN instead of ERROR if avrxmega3 + .rodata in flash test fails. + (HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH): Define it if test passes. + * confgure: Regenerate. + * config.in: Regenerate. + * config/avr/avr.c (avr_asm_named_section) + [HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH]: Only trigger + __do_copy_data for stuff in .rodata if flash_pm_offset = 0. + (avr_asm_init_sections): Same. + +2017-07-05 Ramana Radhakrishnan + + * config/arm/neon.md (fma4): Remove %?. + (fma4_intrinsic): Likewise. + (*fmsub4): Likewise. + (*fmsub4_intrinsic): Likewise. + +2017-07-05 Georg-Johann Lay + + PR target/81305 + * config/avr/avr.c (avr_out_movhi_mr_r_xmega) [CONSTANT_ADDRESS_P]: + Don't depend on "optimize > 0". + (out_movhi_r_mr, out_movqi_mr_r): Same. + (out_movhi_mr_r, out_movqi_r_mr): Same. + (avr_address_cost) [CONSTANT_ADDRESS_P]: Don't depend cost for + io_address_operand on "optimize > 0". + +2017-07-05 Bin Cheng + + * tree-loop-distribution.c: Add general explanantion on the pass. + (generate_loops_for_partition): Mark distributed loop. + (pg_add_dependence_edges): New parameter. Handle alias data + dependence specially and record it in the parameter if asked. + (struct pg_vdata, pg_edata, pg_edge_callback_data): New structs. + (init_partition_graph_vertices, add_partition_graph_edge): New. + (pg_skip_alias_edge, free_partition_graph_edata_cb): New. + (free_partition_graph_vdata, build_partition_graph): New. + (sort_partitions_by_post_order, merge_dep_scc_partitions): New. + (pg_collect_alias_ddrs, break_alias_scc_partitions): New. + (data_ref_segment_size, latch_dominated_by_data_ref): New. + (compute_alias_check_pairs, version_loop_by_alias_check): New. + (version_for_distribution_p, finalize_partitions): New. + (distribute_loop): Handle alias data dependence specially. Factor + out loop fusion code as functions and call these functions. + +2017-07-05 Bin Cheng + + * tree-loop-distribution.c (classify_partition): New parameter and + better handle reduction statement. + (rdg_build_partitions): Revise comment. + (distribute_loop): Compute statements in all partitions and pass it + to classify_partition. + +2017-07-05 Bin Cheng + + * tree-loop-distribution.c (enum partition_type): New. + (struct partition): New field type. + (partition_merge_into): Add parameter. Update partition type. + (data_dep_in_cycle_p, update_type_for_merge): New functions. + (build_rdg_partition_for_vertex): Compute partition type. + (rdg_build_partitions): Dump partition type. + (distribute_loop): Update calls to partition_merge_into. + +2017-07-05 Bin Cheng + + * tree-loop-distribution.c (struct ddr_hasher): New. + (ddr_hasher::hash, ::equal, get_data_dependence): New function. + (ddrs_table): New. + (classify_partition): Call get_data_dependence. + (pg_add_dependence_edges): Ditto. + (distribute_loop): Release data dependence hash table. + +2017-07-05 Bin Cheng + + * tree-loop-distribution.c (ref_base_address): Delete. + (similar_memory_accesses): Rename ... + (share_memory_accesses): ... to this. Check if partitions access + the same memory reference. + (distribute_loop): Call share_memory_accesses. + +2017-07-05 Bin Cheng + + * tree-loop-distribution.c (struct partition): New field recording + its data reference. + (partition_alloc, partition_free): Init and release data refs. + (partition_merge_into): Merge data refs. + (build_rdg_partition_for_vertex): Collect data refs for partition. + (pg_add_dependence_edges): Change parameters from vector to bitmap. + Update uses. + (distribute_loop): Remve data refs from vertice data of partition + graph. + +2017-07-05 Bin Cheng + + * tree-loop-distribution.c (params.h): Include header file. + (MAX_DATAREFS_NUM, DR_INDEX): New macro. + (datarefs_vec): New global var. + (create_rdg_vertices): Use datarefs_vec directly. + (free_rdg): Don't free data references. + (build_rdg): Update use. Don't free data references. + (distribute_loop): Compute global variable for data references. + Bail out if there are too many data references. + +2017-07-05 Bin Cheng + + * tree-loop-distribution.c (loop_nest): New global var. + (build_rdg): Use loop directly, rather than loop nest. + (pg_add_dependence_edges): Remove loop nest parameter. Use global + variable directly. + (distribute_loop): Compute global variable loop nest. Update use. + +2017-07-05 Bin Cheng + + * tree-loop-distribution.c (enum fuse_type, fuse_message): New. + (partition_merge_into): New parameter. Dump reason for fusion. + (distribute_loop): Update use of partition_merge_into. + +2017-07-05 Bin Cheng + + * tree-loop-distribution.c (bb_top_order_index): New. + (bb_top_order_index_size, bb_top_order_cmp): New. + (stmts_from_loop): Use topological order. + (pass_loop_distribution::execute): Compute and release topological + order for basic blocks. + +2017-07-05 Bin Cheng + + * tree-loop-distribution.c (pass_loop_distribution::execute): Skip + if no loops. + +2017-07-05 Bin Cheng + + * cfgloop.h (struct loop): Add comment. New field orig_loop_num. + * cfgloopmanip.c (lv_adjust_loop_entry_edge): Comment change. + * internal-fn.c (expand_LOOP_DIST_ALIAS): New function. + * internal-fn.def (LOOP_DIST_ALIAS): New. + * tree-vectorizer.c (fold_loop_vectorized_call): Rename to ... + (fold_loop_internal_call): ... this. + (vect_loop_dist_alias_call): New function. + (set_uid_loop_bbs): Call fold_loop_internal_call. + (vectorize_loops): Fold IFN_LOOP_VECTORIZED and IFN_LOOP_DIST_ALIAS + internal calls. + +2017-07-04 Uros Bizjak + + PR target/81300 + * config/i386/i386.md (setcc + movzbl/and to xor + setcc peepholes): + Require dead FLAGS_REG at the beginning of a peephole. + +2017-07-04 Uros Bizjak + + PR target/81294 + * config/i386/adxintrin.h (_subborrow_u32): Swap _X and _Y + arguments in the call to __builtin_ia32_sbb_u32. + (_subborrow_u64): Swap _X and _Y arguments in the call to + __builtin_ia32_sbb_u64. + +2017-07-04 Jakub Jelinek + + PR debug/81278 + * tree-vrp.c (compare_assert_loc): Turn into a function template + with stable template parameter. Only test if a->e is NULL, + !a->e == !b->e has been verified already. Use e == NULL or + e != NULL instead of e or ! e tests. If stable is true, don't use + iterative_hash_expr, on the other side allow a or b or both NULL + and sort the NULLs last. + (process_assert_insertions): Sort using compare_assert_loc + instead of compare_assert_loc, later sort using + compare_assert_loc before calling process_assert_insertions_for + in a loop. Use break instead of continue once seen NULL pointer. + +2017-07-04 Thomas Preud'homme + + * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM + Cortex-R7 and Cortex-R8 processors. + +2017-07-04 Jan Hubicka + + * ipa-utils.c (ipa_merge_profiles): Fix merging when dst is + uninitialized while src is not. + +2017-07-04 Richard Earnshaw + + * common/config/arm/arm-common.c: Adjust include path for + arm-cpu-cdata.h + * config/arm/t-arm (TM_H): Adjust path for arm-cpu.h. + (arm-cpu.h): Create in build directory. Adjust dependency rules. + (arm-cpu-data.h): Likewise. + (arm-cpu-cdata.h): Likewise. + * config/arm/arm-cpu.h: Delete. + * config/arm/arm-cpu-cdata.h: Delete. + * config/arm/arm-cpu-data.h: Delete. + +2017-07-04 James Greenhalgh + + * config/arm/arm-cpus.in (cortex-a55): New. + (cortex-a75): Likewise. + (cortex-a75.cortex-a55): Likewise. + * config/arm/driver-arm.c (arm_cpu_table): Add cortex-a55 and + cortex-a75. + * doc/invoke.texi (-mcpu): Document cortex-a55 and cortex-a75. + * config/arm/arm-cpu-cdata.h: Regenerate. + * config/arm/arm-cpu-data.h: Regenerate. + * config/arm/arm-cpu.h: Regenerate. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + +2017-07-04 Jan Hubicka + + * haifa-sched.c (sched_create_recovery_edges): Update profile. + +2017-07-04 Jan Hubicka + + * bb-reorder.c (better_edge_p): Fix handling of uninitialized + probability. + +2017-07-04 Richard Sandiford + + PR tree-optimization/81292 + * tree-ssa-strlen.c (handle_builtin_strlen): When setting + full_string_p, also call adjust_related_strinfos if the adjustment + is simple, otherwise invalidate related strinfos. + +2017-07-04 Martin Liska + + PR sanitizer/81040 + * sanopt.c (sanitize_rewrite_addressable_params): Mark the + newly created variable as DECL_IGNORED_P. + +2017-07-04 Martin Liska + + PR ipa/81293 + * ipa-inline.c (inline_small_functions): + Use xstrdup_for_dump. + +2017-07-04 Tom de Vries + + * graph.c (draw_cfg_edges): Save and restore EDGE_DFS_BACK. + +2017-07-03 Dominique d'Humieres + + PR target/81033 + * config/darwin.c (darwin_function_switched_text_sections): + Fix spaces. + +2017-07-03 Jan Hubicka + + * tree-vect-loop-manip.c (vect_do_peeling): Fix scaling up. + +2017-07-03 Richard Earnshaw + + * doc/invoke.texi (ARM Options): Add -mbe8 and -mbe32 to option summary. + +2017-07-03 Richard Sandiford + + * tree-vect-loop.c (vect_analyze_loop_2): Treat min_scalar_loop_bound, + min_profitable_iters, and th as inclusive lower bounds. + Fix LOOP_VINFO_PEELING_FOR_GAPS condition. + (vect_estimate_min_profitable_iters): Return inclusive lower bounds + for min_profitable_iters and min_profitable_estimate. + (vect_transform_loop): Treat th as an inclusive lower bound. + * tree-vect-loop-manip.c (vect_loop_versioning): Likewise. + +2017-07-03 Dominique d'Humieres + + PR target/81033 + * config/darwin.c (darwin_function_switched_text_sections): + Replace DECL_NAME with DECL_ASSEMBLER_NAME, split assemble_name_raw + in two pieces, and suppress the use of buf. + +2017-07-03 Nathan Sidwell + + * hash-table.h (hash_table_mod1): Fix indentation. + +2017-07-02 Jan Hubicka + + PR middle-end/81290 + * predict.c (force_edge_cold): Be more careful about propagation + backward. + * profile-count.h (profile_probability::guessed, + profile_probability::fdo, profile_count::guessed, profile_count::fdo): + New. + * tree-ssa-threadupdate.c (recompute_probabilities): Result is guessed. + +2017-07-03 James Greenhalgh + + * doc/invoke.texi (rcpc architecture extension): Document it. + +2017-07-03 Richard Biener + + PR tree-optimization/60510 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Pass in + the scalar reduction PHI and use it. + (vectorizable_reduction): Properly guard the single_defuse_cycle + path for non-SLP reduction chains where we cannot use it. + Rework reduc_def/index and vector type deduction. Rework + vector operand gathering during reduction op code-gen. + * tree-vect-slp.c (vect_analyze_slp): For failed SLP reduction + chains dissolve the chain and leave it to non-SLP reduction + handling. + +2017-07-03 Richard Sandiford + + * tree-data-ref.h (dr_alignment): Declare. + * tree-data-ref.c (dr_alignment): New function. + * tree-vectorizer.h (dataref_aux): Remove base_element_aligned. + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't + set it. + * tree-vect-stmts.c (vectorizable_store): Use dr_alignment. + +2017-07-03 Richard Sandiford + + * tree-data-ref.h (innermost_loop_behavior): Add base_alignment + and base_misalignment fields. + (DR_BASE_ALIGNMENT, DR_BASE_MISALIGNMENT): New macros. + * tree-data-ref.c: Include builtins.h. + (dr_analyze_innermost): Set up the new innmost_loop_behavior fields. + * tree-vectorizer.h (STMT_VINFO_DR_BASE_ALIGNMENT): New macro. + (STMT_VINFO_DR_BASE_MISALIGNMENT): Likewise. + * tree-vect-data-refs.c: Include tree-cfg.h. + (vect_compute_data_ref_alignment): Use the new innermost_loop_behavior + fields instead of calculating an alignment here. + (vect_analyze_data_refs): Use dr_analyze_innermost. Dump the new + innermost_loop_behavior fields. + +2017-07-03 Richard Sandiford + + * tree-data-ref.h (innermost_loop_behavior): Add a step_alignment + field. + (DR_STEP_ALIGNMENT): New macro. + * tree-vectorizer.h (STMT_VINFO_DR_STEP_ALIGNMENT): Likewise. + * tree-data-ref.c (dr_analyze_innermost): Initalize step_alignment. + (create_data_ref): Print it. + * tree-vect-stmts.c (vectorizable_load): Use the step alignment + to tell whether the step preserves vector (mis)alignment. + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise. + Move the check for an integer step and generalise to all INTEGER_CST. + (vect_analyze_data_refs): Set DR_STEP_ALIGNMENT when setting DR_STEP. + Print the outer step alignment. + +2017-07-03 Richard Sandiford + + * tree-data-ref.h (innermost_loop_behavior): Replace aligned_to + with offset_alignment. + (DR_ALIGNED_TO): Delete. + (DR_OFFSET_ALIGNMENT): New macro. + * tree-vectorizer.h (STMT_VINFO_DR_ALIGNED_TO): Delete. + (STMT_VINFO_DR_OFFSET_ALIGNMENT): New macro. + * tree-data-ref.c (dr_analyze_innermost): Update after above changes. + (create_data_ref): Likewise. + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise. + (vect_analyze_data_refs): Likewise. + * tree-if-conv.c (if_convertible_loop_p_1): Use memset before + creating dummy innermost behavior. + +2017-07-03 Richard Sandiford + + * tree-data-ref.h (dr_analyze_innermost): Replace the dr argument + with a "innermost_loop_behavior *" and refeence tree. + * tree-data-ref.c (dr_analyze_innermost): Likewise. + (create_data_ref): Update call accordingly. + * tree-predcom.c (find_looparound_phi): Likewise. + +2017-07-03 Richard Sandiford + + * tree-vectorizer.h (_stmt_vec_info): Replace individual dr_* + fields with dr_wrt_vec_loop. + (STMT_VINFO_DR_BASE_ADDRESS, STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET) + (STMT_VINFO_DR_STEP, STMT_VINFO_DR_ALIGNED_TO): Update accordingly. + (STMT_VINFO_DR_WRT_VEC_LOOP): New macro. + (vect_dr_behavior): New function. + (vect_create_addr_base_for_vector_ref): Remove loop parameter. + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use + vect_dr_behavior. Use a step_preserves_misalignment_p boolean to + track whether the step preserves the misalignment. + (vect_create_addr_base_for_vector_ref): Remove loop parameter. + Use vect_dr_behavior. + (vect_setup_realignment): Update call accordingly. + (vect_create_data_ref_ptr): Likewise. Use vect_dr_behavior. + * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Update + call to vect_create_addr_base_for_vector_ref. + (vect_create_cond_for_align_checks): Likewise. + * tree-vect-patterns.c (vect_recog_bool_pattern): Copy + STMT_VINFO_DR_WRT_VEC_LOOP as a block. + (vect_recog_mask_conversion_pattern): Likewise. + * tree-vect-stmts.c (compare_step_with_zero): Use vect_dr_behavior. + (new_stmt_vec_info): Remove redundant zeroing. + +2017-07-03 Richard Earnshaw + + * common/config/arm/arm-common.c (arm_be8_option): New function. + * config/arm/arm-isa.h (isa_feature): Add new feature bit isa_bit_be8. + (ISA_ARMv6): Add isa_bit_be8. + * config/arm/arm.h (arm_be8_option): Add prototype. + (BE8_SPEC_FUNCTION): New define. + (EXTRA_SPEC_FUNCTIONS): Add BE8_SPEC_FUNCTION. + * config/arm/arm.opt (mbig-endian): Mark as Negative of mlittle-endian. + (mlittle-endian): Similarly. + (mbe8, mbe32): New options. + * config/arm/bpabi.h (BE8_LINK_SPEC): Call arm_be8_option. + * doc/invoke.texi (ARM Options): Document -mbe8 and -mbe32. + +2017-07-02 Jan Hubicka + + * tree-cfg.c (gimple_find_sub_bbs): Fix profile updating. + +2017-07-02 Jan Hubicka + + * tree-cfgcleanup.c (want_merge_blocks_p): New function. + (cleanup_tree_cfg_bb): Use it. + * profile-count.h (profile_count::of_for_merging, profile_count::merge): + New functions. + * tree-cfg.c (gimple_merge_blocks): Use profile_count::merge. + +2017-07-02 Jan Hubicka + + PR bootstrap/81285 + * loop-doloop.c (add_test): Update profile. + +2017-07-03 Martin Liska + + PR sanitize/81040 + * sanopt.c (rewrite_usage_of_param): New function. + (sanitize_rewrite_addressable_params): Likewise. + (pass_sanopt::execute): Call rewrite_usage_of_param. + +2017-07-03 Richard Biener + + * tree-vect-loop.c (vect_create_epilog_for_reduction): Revert + back to using VIEW_CONVERT_EXPR. + +2017-07-03 Martin Liska + + PR other/78366 + * doc/extend.texi: Document when a resolver function is + generated for target_clones. + +2017-07-03 Martin Liska + + * asan.c (asan_emit_stack_protection): Unpoison just red zones + and shadow memory of auto variables which are subject of + use-after-scope sanitization. + (asan_expand_mark_ifn): Add do set only when is_poison. + +2016-07-03 Richard Biener + + * tree-vect-loop.c (vect_analyze_loop_operations): Also analyze + reduction PHIs. + (vect_force_simple_reduction): Record reduction def -> phi mapping. + (vectorizable_reduction): Perform reduction PHI creation when + visiting a reduction PHI and adjust and simplify code generation + phase of the reduction op. Cache dts, use fold_binary, not fold_build2. + (vect_transform_loop): Visit reduction PHIs. + * tree-vect-slp.c (vect_get_and_check_slp_defs): Record reduction + defs into the SLP tree. + (vect_build_slp_tree): Reduction defs terminate the recursion. + * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Allow lookup + of reduction defs. + (vect_get_vec_defs_for_stmt_copy): Export. + (vect_get_vec_defs): Likewise. + * tree-vectorizer.h (struct _stmt_vec_info): Amend reduc_def + purpose. + (vect_get_vec_defs_for_stmt_copy): Declare. + (vect_get_vec_defs): Likewise. + +2017-07-03 Richard Sandiford + + * tree-data-ref.c (dr_analyze_innermost): Replace the "nest" + parameter with a "loop" parameter and use it instead of the + loop containing DR_STMT. Don't check simple_iv when doing + BB analysis. Describe the two analysis modes in the comment. + +2017-07-03 Tom de Vries + + PR tree-optimization/69468 + * tree-ssa-tail-merge.c (ignore_edge_flags): New constant. + (find_same_succ_bb): Handle ignore_edge_flags. + +2017-07-03 Tom de Vries + + PR tree-optimization/81192 + * tree-ssa-tail-merge.c (same_succ_hash): Use bb->loop_father->num in + hash. + (same_succ::equal): Don't find bbs to be equal if bb->loop_father + differs. + (find_same_succ_bb): Remove obsolete test on bb->loop_father->latch. + +2017-07-03 Tom de Vries + + PR tree-optimization/81192 + * tree-ssa-tail-merge.c (same_succ_flush_bb): Handle + BB_SAME_SUCC (bb) == NULL. + +2017-07-02 Jan Hubicka + + * cfgrtl.c (rtl_verify_edges): Enable checking of profile_probability + consistency. + +2017-07-02 Jan Hubicka + + * dumpfile.c: Include profile-count.h + * tree-cfg.c (gimple_duplicate_sese_tail): Drop UNUSED attributes; + update profile. + (insert_cond_bb): Update profile. + * tree-cfg.h (insert_cond_bb): Update prototype. + * tree-chkp-opt.c (chkp_optimize_string_function_calls): Update. + * tree-dump.c: Do not include tree-cfg. + +2017-07-02 Jan Hubicka + + * bb-reorder.c (fix_up_crossing_landing_pad): Update profile. + +2017-07-02 Jan Hubicka + + * expect.c (dw2_build_landing_pads): Update profile of the landing pad + bb. + +2017-07-02 Jan Hubicka + + * tree-complex.c (expand_complex_div_wide): update profile. + +2017-07-02 Richard Sandiford + Alan Hayward + David Sherwood + + * Makefile.in (MACHMODE_H): Remove insn-modes.h + (CORETYPES_H): New define. + (MOSTLYCLEANFILES): Add insn-modes-inline.h. + (insn-modes-inline.h, s-modes-inline-h): New rules. + (generated_files): Add insn-modes-inline.h. + (RTL_BASE_H, TREE_CORE_H): Use CORETYPES_H instead of coretypes.h. + (build/gensupport.o, build/ggc-none.o, build/print-rtl.o): Likewise. + (build/read-md.o, build/read-rtl.o, build/rtl.o): Likewise. + (build/vec.o, build/hash-table.o, build/inchash.o): Likewise. + (build/gencondmd.o, build/genattr.o, build/genattr-common.o): Likewise. + (build/genattrtab.o, build/genautomata.o, build/gencheck.o): Likewise. + (build/gencodes.o, build/genconditions.o): Likewise. + (build/genconfig.o, build/genconstants.o, build/genemit.o): Likewise. + (build/genenums.o, build/genextract.o, build/genflags.o): Likewise. + (build/gentarget-def.o, build/genmddeps.o, build/genopinit.o) + (build/genoutput.o, build/genpeep.o, build/genpreds.o): Likewise. + (build/genrecog.o, build/genmddump.o, build/genmatch.o): Likewise. + (build/gencfn-macros.o, build/gcov-iov.o): Likewise. + * coretypes.h: Include everything up to real.h for generators. + Include insn-modes.h first. Include wide-int-print.h after + wide-int.h. Include insn-modes-inline.h and then machmode.h. + * machmode.h: Don't include insn-modes.h here. + * function-tests.c: Remove includes of signop.h, machmode.h, + double-int.h and wide-int.h. + * rtl.h: Likewise. + * gcc-rich-location.c: Remove includes of machmode.h, double-int.h + and wide-int.h. + * optc-save-gen.awk: Likewise. + * gencheck.c (BITS_PER_UNIT): Delete dummy definition. + * godump.c: Remove include of wide-int-print.h. + * pretty-print.h: Likewise. + * wide-int-print.cc: Likewise. + * wide-int.cc: Likewise. + * hash-map-tests.c: Remove include of signop.h. + * hash-set-tests.c: Likewise. + * rtl-tests.c: Likewise. + * mkconfig.sh: Remove include of machmode.h. + * genmodes.c (emit_insn_modes_h): Split emission of inline functions + into... + (emit_insn_modes_inline_h): ...this new function. Emit the code + into an insn-modes-inline.h header file, adding appropriate + include guards and end comments. + (emit_insn_modes_c_header): Remove include of machmode.h. + (emit_min_insn_modes_c_header): Include coretypes.h rather than + machmode.h. + (main): Handle -i flag and call emit_insn_modes_inline_h when + it is passed. + +2017-07-02 Richard Sandiford + + * tree-ssa-strlen.c (strinfo): Rename the length field to + nonzero_chars. Add a full_string_p field. + (compare_nonzero_chars, zero_length_string_p): New functions. + (get_addr_stridx): Add an offset_out parameter. + Use compare_nonzero_chars. + (get_stridx): Update accordingly. Use compare_nonzero_chars. + (new_strinfo): Update after above changes to strinfo. + (set_endptr_and_length): Set full_string_p. + (get_string_length): Update after above changes to strinfo. + (unshare_strinfo): Update call to new_strinfo. + (maybe_invalidate): Likewise. + (get_stridx_plus_constant): Change off to unsigned HOST_WIDE_INT. + Use compare_nonzero_chars and zero_string_p. Treat nonzero_chars + as a uhwi instead of an shwi. Update after above changes to + strinfo and new_strinfo. + (zero_length_string): Assert that chainsi contains full strings. + Use zero_length_string_p. Update call to new_strinfo. + (adjust_related_strinfos): Update after above changes to strinfo. + Copy full_string_p from origsi. + (adjust_last_stmt): Use zero_length_string_p. + (handle_builtin_strlen): Update after above changes to strinfo and + new_strinfo. Install the lhs as the string length if the previous + entry didn't describe a full string. + (handle_builtin_strchr): Update after above changes to strinfo + and new_strinfo. + (handle_builtin_strcpy): Likewise. + (handle_builtin_strcat): Likewise. + (handle_builtin_malloc): Likewise. + (handle_pointer_plus): Likewise. + (handle_builtin_memcpy): Likewise. Track nonzero characters + that aren't necessarily followed by a nul terminator. + (handle_char_store): Likewise. + +2017-07-02 Richard Sandiford + + PR tree-optimization/80769 + * tree-ssa-strlen.c (strinfo): Document that "stmt" is also used + for malloc and calloc. Document the new invariant that all related + strinfos have delayed lengths or none do. + (verify_related_strinfos): Move earlier in file. + (set_endptr_and_length): New function, split out from... + (get_string_length): ...here. Also set the lengths of related + strinfos. + (zero_length_string): Assert that chainsi has known (rather than + delayed) lengths. + (adjust_related_strinfos): Likewise. + +2017-07-02 Richard Sandiford + + PR tree-optimization/81136 + * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Only + assert that two references with the same misalignment have the same + compile-time misalignment if those compile-time misalignments + are known. + +2017-07-01 Andi Kleen + + * print-tree.c (print_node): Print all attributes. + +2017-07-01 Jan Hubicka + + * cfg.c (scale_bbs_frequencies): New function. + * cfg.h (scale_bbs_frequencies): Declare it. + * cfgloopanal.c (single_likely_exit): Cleanup. + * cfgloopmanip.c (scale_loop_frequencies): Take profile_probability + as parameter. + (scale_loop_profile): Likewise. + (loop_version): Likewise. + (create_empty_loop_on_edge): Update. + * cfgloopmanip.h (scale_loop_frequencies, scale_loop_profile, + scale_loop_frequencies, scale_loop_profile, loopify, + loop_version): Update prototypes. + * modulo-sched.c (sms_schedule): Update. + * predict.c (unlikely_executed_edge_p): Also check probability. + (probably_never_executed_edge_p): Fix typo. + * tree-if-conv.c (version_loop_for_if_conversion): Update. + * tree-parloops.c (gen_parallel_loop): Update. + * tree-ssa-loop-ivcanon.c (try_peel_loop): Update. + * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update. + * tree-ssa-loop-split.c (split_loop): Update. + * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update. + * tree-vect-loop-manip.c (vect_do_peeling): Update. + (vect_loop_versioning): Update. + * tree-vect-loop.c (scale_profile_for_vect_loop): Update. + +2017-07-01 Jan Hubicka + + * trans-mem.c (split_bb_make_tm_edge): Update profile. + +2017-07-01 Jan Hubicka + + * tree-if-conv.c (combine_blocks): Use make_single_succ_edge + to keep profile consistent. + +2017-07-01 Jan Hubicka + + * cfgrtl.c (rtl_flow_call_edges_add): Update profile. + * tree-cfg.c (gimple_flow_call_edges_add): Likewise. + * profile-count.h (max_safe_multiplier): Make unsigned. + (profile_count::guessed_zero): New. + +2017-07-01 Jan Hubicka + + * bb-reorder.c (fix_up_crossing_landing_pad, + fix_crossing_conditional_branches): Use make_single_succ_edge + to keep profile consistent. + +2017-07-01 Jan Hubicka + + * tree-vect-loop.c (optimize_mask_stores): Use make_single_succ_edge + to update profile. + +2017-07-01 Jakub Jelinek + + PR sanitizer/81262 + * bb-reorder.c (fix_up_fall_thru_edges): Move variable declarations to + the right scopes, make sure cond_jump isn't preserved between multiple + iterations. Search for fallthru edge whenever there are 3+ edges and + use find_fallthru_edge for it. + +2017-06-29 Jan Hubicka + + Patch by Alexander Monakov + * sel-sched-ir.c (compute_succs_info): Handle uninitialized + probabilities consistently. + +2017-06-29 Jan Hubicka + + * pa.c (pa_expand_compare_and_swap_loop): Update call of + emit_cmp_and_jump_insns. + +2017-06-29 Jan Hubicka + + PR ipa/81261 + * tree-inline.c (expand_call_inline): Combine profile statuses. + +2017-06-30 Andrew Pinski + + * tree-if-conv.c (predicate_scalar_phi): Update new_stmt if + fold_stmt returned true. + +2017-06-30 Nathan Sidwell + + * ggc.h (empty_string): Delete. + * cfgexpand.c (expand_asm_stmt): Use plain "". + * optabs.c (expand_asm_memory_barrier): Likewise. + * stringpool.c (empty_string): Delete. + (digit_vector, digit_string): Delete. + (ggc_alloc_string): Use plain "", don't optimize single digit + strings. Use ggc_alloc_atomic. + +2017-06-30 Richard Earnshaw + + * rtlanal.c (insn_rtx_cost): If a parallel contains exactly one + comparison set and one other set, use the cost of the non-comparison + set. + +2017-06-30 Nathan Sidwell + + * ggc.h: Replace all 'static inline' with plain 'inline'. Fix + some formatting. + +2017-06-30 Peter Bergner + + * tree-cfg.c (group_case_labels_stmt): Merge scanning and compressing + loops. Remove now unneeded calls to gimple_switch_set_label() that + just set removed labels to NULL_TREE. + +2017-06-30 Aldy Hernandez + + * tree-ssanames.c (set_range_info_raw): Abstract from ... + (set_range_info): ...here. Only call set_range_info_raw if domain + is useful. + (set_nonzero_bits): Call set_range_info_raw. + * tree-ssanames.h (set_range_info_raw): New. + +2017-06-30 Jakub Jelinek + + PR target/81225 + * config/i386/sse.md (vec_extract_lo_): For V8FI, + V16FI and VI8F_256 iterators, use instead + of nonimmediate_operand and instead of m + for the input operand. For V8FI iterator, always split if input + is a MEM. For V16FI and V8SF_256 iterators, don't test if both + operands are MEM if . For VI4F_256 iterator, use + instead of register_operand and + instead of v for the input operand. Make + sure both operands aren't MEMs for if not . + +2017-06-30 Sylvestre Ledru + + * lto-wrapper.c (copy_file) Close both file descriptors before + exiting normally. + +2017-06-30 Martin Liska + + PR ipa/81214 + * multiple_target.c (create_dispatcher_calls): Make ifunc + also for function that don't have calls or are not referenced. + +2017-06-30 Richard Biener + + * tree-vect-slp.c (vect_slp_analyze_node_operations): Only + analyze the first scalar stmt. Move vector type computation + for the BB case here from ... + * tree-vect-stmts.c (vect_analyze_stmt): ... here. Guard + live operation processing in the SLP case properly. + +2017-06-30 Richard Biener + + * graph.c (draw_cfg_node_succ_edges): Fix broken dot syntax. + +2017-06-30 Martin Liska + + PR sanitizer/81021 + * tree-eh.c (lower_resx): Call BUILT_IN_ASAN_HANDLE_NO_RETURN + before BUILT_IN_UNWIND_RESUME when ASAN is used. + +2017-06-30 Yvan Roux + + * doc/invoke.texi (AArch64): Add missing options and remove redundant + ones. + +2017-06-30 Richard Biener + + PR tree-optimization/81249 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Convert + condition reduction result to original scalar type. + +2017-06-30 Andreas Krebbel + + * profile-count.h (enum profile_quality): Fix typos and whitespace + issues. + +2017-06-30 Andreas Krebbel + + * config/s390/s390.c (s390_expand_setmem): Adjust to the new data + type for branch probabilities. + +2017-06-29 Julian Brown + Naveen H.S + + * config/aarch64/aarch64-fusion-pairs.def: Add ALU_BRANCH entry. + * config/aarch64/aarch64.c (AARCH64_FUSE_ALU_BRANCH): New fusion type. + (thunderx2t99_tunings): Set AARCH64_FUSE_ALU_BRANCH flag. + (aarch_macro_fusion_pair_p): Add support for AARCH64_FUSE_ALU_BRANCH. + +2017-06-29 Naveen H.S + + * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Push the + check for CC usage into AARCH64_FUSE_CMP_BRANCH. + * config/i386/i386.c (ix86_macro_fusion_pair_p): Push the check for + CC usage from generic code to here. + * sched-deps.c (sched_macro_fuse_insns): Move the condition for + CC usage into the target macros. + +2017-06-29 Maya Rashish + + * config/netbsd.h (NETBSD_LIB_SPEC): Add -lc when creating shared + objects. + +2017-06-29 Jan Hubicka + + * arm/arm-builtins.c: Include profile-count.h + * except.c (sjlj_emit_function_enter): Use + profile_probability::unlikely. + +2017-06-29 Aaron Sawdey + + * config/rs6000/rs6000.c (toc_relative_expr_p): Make tocrel_base + and tocrel_offset be pointer args rather than implicitly using + static versions. + (legitimate_constant_pool_address_p, rs6000_emit_move, + const_load_sequence_p, adjust_vperm): Add local tocrel_base and + tocrel_offset and use in toc_relative_expr_p call. + (print_operand, print_operand_address): Use static tocrel_base_oac + and tocrel_offset_oac. + (rs6000_output_addr_const_extra): Use static tocrel_base_oac and + tocrel_offset_oac. + +2017-06-29 Maya Rashish + + * config/vax/builtins.md (ffssi2_internal): Correct constraint. + +2017-06-29 Eric Botcazou + + * expr.c (expand_expr) : When testing for unaligned + objects, take into account only the alignment of 'op0' and 'mode1' if + 'op0' is a MEM. + +2017-06-29 Steve Ellcey + + * ccmp.c (ccmp_tree_comparison_p): New function. + (ccmp_candidate_p): Update to use above function. + (get_compare_parts): New function. + (expand_ccmp_next): Update to use new functions. + (expand_ccmp_expr_1): Take tree arg instead of gimple, update to use + new functions. + (expand_ccmp_expr): Pass tree instead of gimple to expand_ccmp_expr_1, + take mode as argument. + * ccmp.h (expand_ccmp_expr): Add mode as argument. + * expr.c (expand_expr_real_1): Pass mode as argument. + +2017-06-29 Segher Boessenkool + + * combine.c (combine_instructions): Print insns to dump_file, together + with their costs. + +2017-06-29 Jan Hubicka + + * asan.c (asan_emit_stack_protection): Update. + (create_cond_insert_point): Update. + * auto-profile.c (afdo_propagate_circuit): Update. + * basic-block.h (struct edge_def): Turn probability to + profile_probability. + (EDGE_FREQUENCY): Update. + * bb-reorder.c (find_traces_1_round): Update. + (better_edge_p): Update. + (sanitize_hot_paths): Update. + * cfg.c (unchecked_make_edge): Initialize probability to uninitialized. + (make_single_succ_edge): Update. + (check_bb_profile): Update. + (dump_edge_info): Update. + (update_bb_profile_for_threading): Update. + * cfganal.c (connect_infinite_loops_to_exit): Initialize new edge + probabilitycount to 0. + * cfgbuild.c (compute_outgoing_frequencies): Update. + * cfgcleanup.c (try_forward_edges): Update. + (outgoing_edges_match): Update. + (try_crossjump_to_edge): Update. + * cfgexpand.c (expand_gimple_cond): Update make_single_succ_edge. + (expand_gimple_tailcall): Update. + (construct_init_block): Use make_single_succ_edge. + (construct_exit_block): Use make_single_succ_edge. + * cfghooks.c (verify_flow_info): Update. + (redirect_edge_succ_nodup): Update. + (split_edge): Update. + (account_profile_record): Update. + * cfgloopanal.c (single_likely_exit): Update. + * cfgloopmanip.c (scale_loop_profile): Update. + (set_zero_probability): Remove. + (duplicate_loop_to_header_edge): Update. + * cfgloopmanip.h (loop_version): Update prototype. + * cfgrtl.c (try_redirect_by_replacing_jump): Update. + (force_nonfallthru_and_redirect): Update. + (update_br_prob_note): Update. + (rtl_verify_edges): Update. + (purge_dead_edges): Update. + (rtl_lv_add_condition_to_bb): Update. + * cgraph.c: (cgraph_edge::redirect_call_stmt_to_calle): Update. + * cgraphunit.c (init_lowered_empty_function): Update. + (cgraph_node::expand_thunk): Update. + * cilk-common.c: Include profile-count.h + * dojump.c (inv): Remove. + (jumpifnot): Update. + (jumpifnot_1): Update. + (do_jump_1): Update. + (do_jump): Update. + (do_jump_by_parts_greater_rtx): Update. + (do_compare_rtx_and_jump): Update. + * dojump.h (jumpifnot, jumpifnot_1, jumpif_1, jumpif, do_jump, + do_jump_1. do_compare_rtx_and_jump): Update prototype. + * dwarf2cfi.c: Include profile-count.h + * except.c (dw2_build_landing_pads): Use make_single_succ_edge. + (sjlj_emit_dispatch_table): Likewise. + * explow.c: Include profile-count.h + * expmed.c (emit_store_flag_force): Update. + (do_cmp_and_jump): Update. + * expr.c (compare_by_pieces_d::generate): Update. + (compare_by_pieces_d::finish_mode): Update. + (emit_block_move_via_loop): Update. + (store_expr_with_bounds): Update. + (store_constructor): Update. + (expand_expr_real_2): Update. + (expand_expr_real_1): Update. + * expr.h (try_casesi, try_tablejump): Update prototypes. + * gimple-pretty-print.c (dump_probability): Update. + (dump_profile): New. + (dump_gimple_label): Update. + (dump_gimple_bb_header): Update. + * graph.c (draw_cfg_node_succ_edges): Update. + * hsa-gen.c (convert_switch_statements): Update. + * ifcvt.c (cheap_bb_rtx_cost_p): Update. + (find_if_case_1): Update. + (find_if_case_2): Update. + * internal-fn.c (expand_arith_overflow_result_store): Update. + (expand_addsub_overflow): Update. + (expand_neg_overflow): Update. + (expand_mul_overflow): Update. + (expand_vector_ubsan_overflow): Update. + * ipa-cp.c (good_cloning_opportunity_p): Update. + * ipa-split.c (split_function): Use make_single_succ_edge. + * ipa-utils.c (ipa_merge_profiles): Update. + * loop-doloop.c (add_test): Update. + (doloop_modify): Update. + * loop-unroll.c (compare_and_jump_seq): Update. + (unroll_loop_runtime_iterations): Update. + * lra-constraints.c (lra_inheritance): Update. + * lto-streamer-in.c (input_cfg): Update. + * lto-streamer-out.c (output_cfg): Update. + * mcf.c (adjust_cfg_counts): Update. + * modulo-sched.c (sms_schedule): Update. + * omp-expand.c (expand_omp_for_init_counts): Update. + (extract_omp_for_update_vars): Update. + (expand_omp_ordered_sink): Update. + (expand_omp_for_ordered_loops): Update. + (expand_omp_for_generic): Update. + (expand_omp_for_static_nochunk): Update. + (expand_omp_for_static_chunk): Update. + (expand_cilk_for): Update. + (expand_omp_simd): Update. + (expand_omp_taskloop_for_outer): Update. + (expand_omp_taskloop_for_inner): Update. + * omp-simd-clone.c (simd_clone_adjust): Update. + * optabs.c (expand_doubleword_shift): Update. + (expand_abs): Update. + (emit_cmp_and_jump_insn_1): Update. + (expand_compare_and_swap_loop): Update. + * optabs.h (emit_cmp_and_jump_insns): Update prototype. + * predict.c (predictable_edge_p): Update. + (edge_probability_reliable_p): Update. + (set_even_probabilities): Update. + (combine_predictions_for_insn): Update. + (combine_predictions_for_bb): Update. + (propagate_freq): Update. + (estimate_bb_frequencies): Update. + (force_edge_cold): Update. + * profile-count.c (profile_count::dump): Add missing space into dump. + (profile_count::debug): Add newline. + (profile_count::differs_from_p): Explicitly convert to unsigned. + (profile_count::stream_in): Update. + (profile_probability::dump): New member function. + (profile_probability::debug): New member function. + (profile_probability::differs_from_p): New member function. + (profile_probability::differs_lot_from_p): New member function. + (profile_probability::stream_in): New member function. + (profile_probability::stream_out): New member function. + * profile-count.h (profile_count_quality): Rename to ... + (profile_quality): ... this one. + (profile_probability): New. + (profile_count): Update. + * profile.c (compute_branch_probabilities): Update. + * recog.c (peep2_attempt): Update. + * sched-ebb.c (schedule_ebbs): Update. + * sched-rgn.c (find_single_block_region): Update. + (compute_dom_prob_ps): Update. + (schedule_region): Update. + * sel-sched-ir.c (compute_succs_info): Update. + * stmt.c (struct case_node): Update. + (do_jump_if_equal): Update. + (get_outgoing_edge_probs): Update. + (conditional_probability): Update. + (emit_case_dispatch_table): Update. + (expand_case): Update. + (expand_sjlj_dispatch_table): Update. + (emit_case_nodes): Update. + * targhooks.c: Update. + * tracer.c (better_p): Update. + (find_best_successor): Update. + * trans-mem.c (expand_transaction): Update. + * tree-call-cdce.c: Update. + * tree-cfg.c (gimple_split_edge): Upate. + (move_sese_region_to_fn): Upate. + * tree-cfgcleanup.c (cleanup_control_expr_graph): Upate. + * tree-eh.c (lower_resx): Upate. + (cleanup_empty_eh_move_lp): Upate. + * tree-if-conv.c (version_loop_for_if_conversion): Update. + * tree-inline.c (copy_edges_for_bb): Update. + (copy_cfg_body): Update. + * tree-parloops.c (gen_parallel_loop): Update. + * tree-profile.c (gimple_gen_ic_func_profiler): Update. + (gimple_gen_time_profiler): Update. + * tree-ssa-dce.c (remove_dead_stmt): Update. + * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update. + * tree-ssa-loop-im.c (execute_sm_if_changed): Update. + * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update. + (unloop_loops): Update. + (try_peel_loop): Update. + * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update. + * tree-ssa-loop-split.c (connect_loops): Update. + (split_loop): Update. + * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update. + (hoist_guard): Update. + * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update. + * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update. + (value_replacement): Update. + * tree-ssa-reassoc.c (branch_fixup): Update. + * tree-ssa-tail-merge.c (replace_block_by): Update. + * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update. + (create_edge_and_update_destination_phis): Update. + (compute_path_counts): Update. + (recompute_probabilities): Update. + (update_joiner_offpath_counts): Update. + (freqs_to_counts_path): Update. + (duplicate_thread_path): Update. + * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update. + (struct switch_conv_info): Update. + (gen_inbound_check): Update. + * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update. + (vect_do_peeling): Update. + (vect_loop_versioning): Update. + * tree-vect-loop.c (scale_profile_for_vect_loop): Update. + (optimize_mask_stores): Update. + * ubsan.c (ubsan_expand_null_ifn): Update. + * value-prof.c (gimple_divmod_fixed_value): Update. + (gimple_divmod_fixed_value_transform): Update. + (gimple_mod_pow2): Update. + (gimple_mod_pow2_value_transform): Update. + (gimple_mod_subtract): Update. + (gimple_mod_subtract_transform): Update. + (gimple_ic): Update. + (gimple_stringop_fixed_value): Update. + (gimple_stringops_transform): Update. + * value-prof.h: Update. + +2017-06-29 Carl Love + + * config/rs6000/rs6000-c.c: Add support for built-in functions + vector signed int vec_signed (vector float); + vector signed long long vec_signed (vector double); + vector signed int vec_signed2 (vector double, vector double); + vector signed int vec_signede (vector double); + vector signed int vec_signedo (vector double); + * config/rs6000/rs6000.c (rs6000_generate_vsigned2_code): Add + instruction generator. + * config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS, + UNSPEC_VSX_VSIGNED2): Add UNSPECS. + (vsx_xvcvspsxws, vsx_xvcvdpuxds_scale, vsx_xvcvspuxws, vsigned2_v2df): + Add define_insn. + (vsignedo_v2df, vsignede_v2df, vunsigned2_v2df, vunsignedo_v2df, + vunsignede_v2df): Add define_expands. + * config/rs6000/rs6000-builtin.def (VEC_SIGNED, VEC_UNSIGNED, + VEC_SIGNED2, VEC_UNSIGNED2, VEC_SIGNEDE, VEC_UNSIGNEDE, VEC_SIGNEDO, + VEC_UNSIGNEDO): Add definitions. + * config/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS, + UNSPEC_VSX_VSIGNED2): Add UNSPECs. + (vsx_xvcvspsxws, vsx_xvcvspuxws): Add define_insn. + (vsigned2_v2df, vsigendo_v2df, vsignede_v2df, + vunsigned2_v2df, vunsignedo_v2df, vunsignede_v2df): Add define_expands. + * config/rs6000/altivec.h (vec_signed, vec_signed2, + vec_signede and vec_signedo, vec_unsigned, vec_unsigned2, + vec_unsignede, vec_unsignedo): Add builtin defines. + * config/rs6000-protos.h (rs6000_generate_vsigned2_code): Add extern + declaration. + * doc/extend.texi: Update the built-in documentation file for the + new built-in functions. + +2017-06-29 Richard Biener + + * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Do not add + reduction chains to LOOP_VINFO_REDUCTIONS. + * tree-vect-slp.c (vect_analyze_slp): Continue looking for + SLP reductions after processing reduction chains. + +2017-06-29 Nathan Sidwell + + * builtins.c (fold_builtin_FUNCTION): Use + lang_hooks.decl_printable_name. + +2017-06-29 Peter Bergner + + PR middle-end/81194 + * cfgexpand.c (expand_gimple_stmt_1): Handle switch statements + with only one label. + * stmt.c (expand_case): Assert NCASES is greater than one. + +2017-06-29 Richard Biener + + * tree-cfg.c (group_case_labels_stmt): Return whether we changed + anything. + (group_case_labels): Likewise. + (find_taken_edge): Push sanity checking on val to workers... + (find_taken_edge_cond_expr): ... here + (find_taken_edge_switch_expr): ... and here, handle cases + with just a default label. + * tree-cfg.h (group_case_labels_stmt): Adjust prototype. + (group_case_labels): Likewise. + * tree-cfgcleanup.c (execute_cleanup_cfg_post_optimizing): When + group_case_labels does anything cleanup the CFG again. + +2017-06-29 Bin Cheng + + PR tree-optimization/81196 + * tree-ssa-loop-niter.c (number_of_iterations_cond): Handle loop + exit condition comparing two IVs. + +2017-06-29 Richard Earnshaw + + * config/arm/parsecpu.awk (gen_comm_data): Add initializer for + profile to the dummy entry at the end of the list of architectures. + * config/arm/arm-cpu-cdata.h: Regenerated. + +2017-06-29 Kyrylo Tkachov + Michael Collison + + PR target/70119 + * config/aarch64/aarch64.md (*aarch64__reg_3_mask1): + New pattern. + (*aarch64_reg_3_neg_mask2): New pattern. + (*aarch64_reg_3_minus_mask): New pattern. + (*aarch64__reg_di3_mask2): New pattern. + * config/aarch64/aarch64.c (aarch64_rtx_costs): Account for cost + of shift when the shift amount is masked with constant equal to + the size of the mode. + * config/aarch64/predicates.md (subreg_lowpart_operator): New + predicate. + +2017-06-29 Martin Liska + + * config/i386/i386.opt: Change range from [1,5] to [0,5]. + +2017-06-29 Yury Gribov + + PR bootstrap/80565 + * ipa-cp.c (allocate_and_init_ipcp_value): Add initialization + code. + * ipa-inline.h + (edge_growth_cache_entry::edge_growth_cache_entry): New + function. + (reset_edge_growth_cache): Update to use constructor. + +2017-06-28 Ramana Radhakrishnan + + * config/aarch64/aarch64.h (AARCH64_EXPAND_ALIGNMENT): New. + (DATA_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT. + (LOCAL_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT. + +2017-06-28 Sebastian Peryt + + * config/i386/avx512vlintrin.h (_mm256_permutexvar_epi64) + (_mm256_permutexvar_epi32, _mm256_permutex_epi64): New intrinsics. + +2017-06-28 Szabolcs Nagy + + * config.gcc (*-linux-musl*): Add t-musl tmake_file. + (*-linux-uclibc*): Add t-uclibc tmake_file. + * config/t-musl: New. + * config/t-uclibc: New. + +2017-06-28 Richard Earnshaw + + * config/arm/parsecpu.awk (profile): Parse new keyword in an arch + context. + (gen_comm_data): Emit architectural setting of arch_prof. + * config/arm/arm-cpus.in (armv6-m, armv6s-m, armv7-a, armv7ve): Set the + profile. + (armv7-r, armv7-m, armv7e-m, armv8-a, armv8.1-a, armv8.2-a): Likewise. + (armv8-m.base, armv8-m.main): Likewise. + * arm-protos.h (arm_build_target): Add profile field. + (arch_option): Likewise. + * config/arm/arm.c (arm_configure_build_target): Copy the profile to + the active target. + * config/arm/arm.h (TARGET_ARM_ARCH_PROFILE): Use + arm_active_target.profile. + +2017-06-28 Richard Biener + + PR middle-end/81227 + * fold-const.c (negate_expr_p): Use TYPE_UNSIGNED, not + TYPE_OVERFLOW_WRAPS. + * match.pd (negate_expr_p): Likewise. + * tree-ssa-reassoc.c (optimize_range_tests_diff): Use + fold_build2, not fold_binary. + +2017-06-28 Wilco Dijkstra + + * config/aarch64/aarch64 (aarch64_expand_mov_immediate): + Convert memory address to Pmode. + (aarch64_print_operand): Assert MEM operands are always Pmode. + +2017-06-28 Wilco Dijkstra + + PR target/79665 + * config/arm/aarch-common.c (arm_no_early_alu_shift_dep): + Remove redundant if. + (aarch_forward_to_shift_is_not_shifted_reg): Remove. + * config/arm/aarch-common-protos.h + (aarch_forward_to_shift_is_not_shifted_re): Remove. + * config/arm/cortex-a53.md: Use arm_no_early_alu_shift_dep in bypass. + +2017-06-28 Michael Meissner + + PR ipa/81238 + * multiple_target.c (create_dispatcher_calls): Set the default + clone to be static, not public. + +2017-06-28 Richard Biener + + * tree-vect-loop.c (vectorizable_reduction): Move special + cond reduction IV var creation ... + (vect_create_epilog_for_reduction): ... here. Remove induction_index + parameter. Use STMT_VINFO_VECTYPE. + * tree-vect-slp.c (vect_get_constant_vectors): Properly reset + constant_p. + +2017-06-28 Martin Liska + + PR ipa/81128 + * ipa-visibility.c (non_local_p): Handle visibility. + +2017-06-28 Martin Liska + + PR driver/79659 + * common.opt: Add IntegerRange to various options. + * opt-functions.awk (integer_range_info): New function. + * optc-gen.awk: Add integer_range_info to cl_options struct. + * opts-common.c (decode_cmdline_option): Handle + CL_ERR_INT_RANGE_ARG. + (cmdline_handle_error): Likewise. + * opts.c (print_filtered_help): Show valid interval in + when --help is provided. + * opts.h (struct cl_option): Add range_min and range_max fields. + * config/i386/i386.opt: Add IntegerRange for -mbranch-cost. + +2017-06-28 Marc Glisse + + * match.pd ((X & ~Y) | (~X & Y)): Generalize to + and ^. + (x * C EQ/NE y * C): New transformation. + +2017-06-28 Christophe Lyon + + * genmultilib (combination_space): Accept '+' in option names. + +2017-06-28 Martin Liska + + PR sanitizer/81224 + * asan.c (instrument_derefs): Bail out inner references + that are hard register variables. + +2017-06-28 Jakub Jelinek + + PR target/81175 + * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use def_builtin + rather than def_builtin_pure for __builtin_ia32_gatherpf*. + +2017-06-28 Richard Biener + + * tree-vectorizer.h (vect_get_vec_defs): Remove. + (vect_get_slp_defs): Adjust. + * tree-vect-loop.c (get_initial_defs_for_reduction): Split + out from ... + * tree-vect-slp.c (vect_get_constant_vectors): ... here and + simplify. + * tree-vect-loop.c (vect_create_epilog_for_reduction): Use + get_initial_defs_for_reduction instead of vect_get_vec_defs. + (vectorizable_reduction): Adjust. + * tree-vect-slp.c (vect_get_constant_vectors): Remove reduction + handling. + (vect_get_slp_defs): Likewise. + * tree-vect-stmts.c (vect_get_vec_defs): Make static and adjust. + (vectorizable_bswap): Adjust. + (vectorizable_call): Likewise. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_store): Likewise. + (vectorizable_condition): Likewise. + (vectorizable_comparison): Likewise. + +2017-06-28 Michael Collison + + PR target/68535 + * config/arm/arm.c (gen_ldm_seq): Remove last unnecessary + set of base_reg + (arm_gen_movmemqi): Removed unused variable 'i'. + Convert 'for' loop into 'while' loop. + (arm_expand_prologue): Remove last unnecessary set of insn. + (thumb_pop): Remove unused variable 'pushed_words'. + (thumb_exit): Remove last unnecessary set of regs_to_pop. + +2017-06-28 Andreas Krebbel + + * config/s390/predicates.md: Use s390_rel_address_ok_p. + * config/s390/s390-protos.h: Add prototype of + s390_rel_address_ok_p. + * config/s390/s390.c (s390_got_symbol): New function. + (s390_rel_address_ok_p): New function. + (legitimize_pic_address): Use s390_rel_address_ok_p. + (s390_load_got): Use s390_got_symbol. + (s390_option_override): Issue error if + -mno-pic-data-is-text-relative is used without -fpic/-fPIC. + * config/s390/s390.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE): + New macro. + * config/s390/s390.opt: New option mpic-data-is-text-relative. + +2017-06-27 Andrew Pinski + + * match.pd (X >/>=/ + + * genmultilib (combination_space): Remove variable. + Validate reuse rules against regular expression for any sequence + of multilib options in any order. + +2017-06-27 Michael Collison + + * config/aarch64/aarch64-simd.md (aarch64_combine): Directly + call aarch64_split_simd_combine. + * (aarch64_combine_internal): Delete pattern. + * config/aarch64/aarch64.c (aarch64_split_simd_combine): + Allow register and subreg operands. + +2017-06-27 Jerome Lambourg + + * config/i386/vxworks.h (ASM_SPEC): Remove definition. No target + specific need, just fallback on defaults. + (ASM_OUTPUT_ALIGNED_BSS): Add #undef before #define. + +2017-06-27 Jerome Lambourg + Olivier Hainque + + * config/i386/vxworks.h (DBX_REGISTER_NUMBER): Pick distinct + map for 64bits. + (TARGET_OS_CPP_BUILTINS): builtin_define CPU to X86_64 for 64bit + targets. Pick a default if no particular attempt applied. + (STACK_CHECK_PROTECT): Double for 64bit targets, which have + larger contexts. + +2017-06-27 Jerome Lambourg + + * config.gcc (i*86-wrs-vxworks7): Handle new acceptable triplet. + (x86_64-wrs-vxworks7): Likewise. + +2017-06-27 Marek Polacek + + PR sanitizer/81223 + * ubsan.c (instrument_null): Check get_base_address's result for null. + +2017-06-27 Marc Glisse + + * match.pd ((A+-B)+(C-A), (A+B)-(A-C)): New transformations. + +2017-06-27 Marc Glisse + + * builtin-types.def (BT_FENV_T_PTR, BT_CONST_FENV_T_PTR, + BT_FEXCEPT_T_PTR, BT_CONST_FEXCEPT_T_PTR): New primitive types. + (BT_FN_INT_FENV_T_PTR, BT_FN_INT_CONST_FENV_T_PTR, + BT_FN_INT_FEXCEPT_T_PTR_INT, BT_FN_INT_CONST_FEXCEPT_T_PTR_INT): + New function types. + * builtins.def (BUILT_IN_FECLEAREXCEPT, BUILT_IN_FEGETENV, + BUILT_IN_FEGETEXCEPTFLAG, BUILT_IN_FEGETROUND, + BUILT_IN_FEHOLDEXCEPT, BUILT_IN_FERAISEEXCEPT, + BUILT_IN_FESETENV, BUILT_IN_FESETEXCEPTFLAG, + BUILT_IN_FESETROUND, BUILT_IN_FETESTEXCEPT, + BUILT_IN_FEUPDATEENV): New builtins. + * tree-core.h (TI_FENV_T_PTR_TYPE, TI_CONST_FENV_T_PTR_TYPE, + TI_FEXCEPT_T_PTR_TYPE, TI_CONST_FEXCEPT_T_PTR_TYPE): New entries. + * tree.h (fenv_t_ptr_type_node, const_fenv_t_ptr_type_node, + fexcept_t_ptr_type_node, const_fexcept_t_ptr_type_node): New + macros. + (builtin_structptr_types): Adjust size. + * tree.c (builtin_structptr_types): Add four entries. + +2017-06-27 Jerome Lambourg + Olivier Hainque + + * config/vxworks.h (VXWORKS_LIB_SPEC): Incorporate ... + (TLS_SYM): New local macro, forcing reference to __tls__ on + link command lines for VxWorks 7 RTPs, triggering initialization + of tlsLib. + (VXWORKS_HAVE_TLS): New macro. State whether the target VxWorks + OS features TLS support, true for RTPs on VxWorks 7. + * config/vxworks.c (vxworks_override_options): Setup emutls + accordingly. + +2017-06-27 Jakub Jelinek + + * predict.c (test_prediction_value_range): Use -1U instead of -1 + to avoid narrowing conversion warning. + * dumpfile.c (dump_options): Wrap all value into dump_flags_t cast + to avoid narrowing conversion warning. + * opt-functions.awk (var_ref): Return (unsigned short) -1 instead of + -1. + * optc-gen.awk (END): Expect (unsigned short) -1 instead of -1. + +2017-06-27 Jerome Lambourg + + * config/vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for + 64bit configurations. + (PTR_DIFF_TYPE): Alternative definition for TARGET_LP64. + (SIZE_TYPE): Likewise. + * config/vxworks.c (vxworks_emutls_var_fields): Use + long_unsigned_type_node instead of unsigned_type_node as the offset + field type, which is "pointer" mode in emutls.c. + +2017-06-27 Jakub Jelinek + + PR sanitizer/81209 + * ubsan.c (ubsan_encode_value): Initialize DECL_CONTEXT on var. + + PR middle-end/81207 + * gimple-fold.c (replace_call_with_call_and_fold): Handle + gimple_vuse copying separately from gimple_vdef copying. + +2017-06-27 Prathamesh Kulkarni + + * value-prof.c (free_hist): Remove call to memset and the enclosing if + condition. + +2017-06-26 Jerome Lambourg + Olivier Hainque + + * config.gcc (*-*-vxworks*): Add TARGET_VXWORKS7=1 to tm_defines + for all vxworks7 targets. + * config/vxworks.h (TARGET_VXWORKS7): If not defined, define to 0. + (VXWORKS_ADDITIONAL_CPP_SPEC): Alternative definition for VXWORKS7. + (VXWORKS_LIBS_RTP, VXWORKS_LIBS_RTP_DIR): New macros, allowing + variations for VX6/VX7 and 32/64bits later on in ... + (VXWORKS_LIB_SPEC): Leverage new macros. + (VXWORKS_OS_CPP_BUILTINS): Define _VSB_CONFIG_FILE for VXWORKS7, + as well as _ALLOW_KEYWORD_MACROS when "inline" is not a keyword. + +2017-06-26 Jerome Lambourg + + * config/vxworks.h (VXWORKS_OS_CPP_BUILTINS): builtin_define + _VX_TOOL_FAMILY and _VX_TOOL to gnu. + +2017-06-26 Carl Love + + * config/rs6000/rs6000-c.c: Add support for built-in functions + vector bool char vec_reve (vector bool char); + vector signed char vec_reve (vector signed char); + vector unsigned char vec_reve (vector unsigned char); + vector bool int vec_reve (vector bool int); + vector signed int vec_reve (vector signed int); + vector unsigned int vec_reve (vector unsigned int); + vector bool long long vec_reve (vector bool long long); + vector signed long long vec_reve (vector signed long long); + vector unsigned long long vec_reve (vector unsigned long long); + vector bool short vec_reve (vector bool short); + vector signed short vec_reve (vector signed short); + vector double vec_reve (vector double); + vector float vec_reve (vector float); + * config/rs6000/rs6000-builtin.def (VREVE_V2DI, VREVE_V4SI, + VREVE_V8HI, VREVE_V16QI, VREVE_V2DF, VREVE_V4SF, VREVE): New builtin. + * config/rs6000/altivec.md (UNSPEC_VREVEV): New UNSPEC. + (altivec_vreve): New pattern. + * config/rs6000/altivec.h (vec_reve): New define. + * doc/extend.texi (vec_rev): Update the built-in documentation file + for the new built-in functions. + +2016-06-26 Bill Schmidt + + PR tree-optimization/71815 + * gimple-ssa-strength-reduction.c (uses_consumed_by_stmt): New + function. + (find_basis_for_candidate): Call uses_consumed_by_stmt rather than + has_single_use. + (slsr_process_phi): Likewise. + (replace_uncond_cands_and_profitable_phis): Don't replace a + multiply candidate with a stride of 1 (copy or cast). + (phi_incr_cost): Call uses_consumed_by_stmt rather than + has_single_use. + (lowest_cost_path): Likewise. + (total_savings): Likewise. + +2017-06-26 Richard Biener + + PR target/81175 + * config/i386/i386.c (ix86_init_mmx_sse_builtins): + Use def_builtin_pure for all gather builtins. + +2017-06-26 Richard Biener + + PR tree-optimization/81203 + * tree-tailcall.c (find_tail_calls): Do not move stmts into + non-dominating BBs. + +2017-06-26 Marek Polacek + + PR c/80116 + * doc/invoke.texi: Document -Wmultistatement-macros. + +2017-06-26 Christophe Lyon + + * doc/sourcebuild.texi (ARM-specific attributes): Document new + arm_neon_ok_no_float_abi effective target. + +2017-06-26 Richard Biener + + PR tree-optimization/80928 + * cfghooks.c (duplicate_block): Do not copy BB_DUPLICATED flag. + (copy_bbs): Set BB_DUPLICATED flag early. + (execute_on_growing_pred): Do not execute for BB_DUPLICATED + marked blocks. + (execute_on_shrinking_pred): Likewise. + * tree-ssa.c (ssa_redirect_edge): Do not look for PHI args in + BB_DUPLICATED blocks. + * tree-ssa-phionlycoprop.c (eliminate_degenerate_phis_1): Properly + iterate over all PHIs considering removal of *gsi. + +2017-06-23 Jim Wilson + + * doc/invoke.texi (AArch64 Options, -mtune): Re-add falkor and + qdf24xx. + +2017-06-23 Aaron Sawdey + + * config/rs6000/rs6000-string.c: (expand_block_clear, + do_load_for_compare, select_block_compare_mode, + compute_current_alignment, expand_block_compare, + expand_strncmp_align_check, expand_strn_compare, + expand_block_move, rs6000_output_load_multiple) + Move functions related to string/block move/compare + to a separate file. + * config/rs6000/rs6000.c: Move above functions to rs6000-string.c. + * config/rs6000/rs6000-protos.h (rs6000_emit_dot_insn): Add prototype + for this function which is now used in two files. + * config/rs6000/t-rs6000: Add rule to compile rs6000-string.o. + * config.gcc: Add rs6000-string.o to extra_objs for + targets powerpc*-*-* and rs6000*-*-*. + +2017-06-23 Michael Meissner + + PR target/80510 + * config/rs6000/rs6000.md (ALTIVEC_DFORM): Do not allow DImode in + 32-bit, since indexed is not valid for DImode. + (mov_hardfloat32): Reorder ISA 2.07 load/stores before ISA + 3.0 d-form load/stores to be the same as mov_hardfloat64. + (define_peephole2 for Altivec d-form load): Add 32-bit support. + (define_peephole2 for Altivec d-form store): Likewise. + + PR ipa/81185 + * multiple_target.c (create_dispatcher_calls): Only create the + dispatcher call if the function is the default clone of a + versioned function. + +2017-06-23 Segher Boessenkool + + PR middle-end/80902 + * builtins.c (expand_builtin_atomic_fetch_op): If emitting code after + a call, force the call to not be a tail call. + +2017-06-23 Jeff Law + + * doc/contrib.texi: Add entry for Steven Pemberton's work on + enquire. + +2017-06-23 Will Schmidt + + * config/rs6000/rs6000.c: Add include of ssa-propagate.h for + update_call_from_tree(). (rs6000_gimple_fold_builtin): Add + handling for early expansion of vector shifts (sl,sr,sra,rl). + (builtin_function_type): Add vector shift right instructions + to the unsigned argument list. + +2017-06-23 Bernd Edlinger + + rtl-optimizatoin/79286 + * ira.c (update_equiv_regs): Revert to using may_trap_or_fault_p again. + * rtlanal.c (rtx_addr_can_trap_p_1): SYMBOL_REF_FUNCTION_P can never + trap. PIC register plus a const unspec without offset can never trap. + +2017-06-23 Marc Glisse + + * tree.h (builtin_structptr_type): New type. + (builtin_structptr_types): Declare new array. + * tree.c (builtin_structptr_types): New array. + (free_lang_data, build_common_tree_nodes): Use it. + +2017-06-23 Jonathan Wakely + + PR c++/81187 + * doc/invoke.texi (-Wnoexcept-type): Fix name of option, from + -Wnoexcept. + +2017-06-22 Matt Turner + + * config/i386/driver-i386.c (host_detect_local_cpu): Add Kaby + Lake models to skylake case. Assume skylake for unknown + models with clflushopt. + +2017-06-22 Jeff Law + + * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Handle + frame sizes that do not satisfy aarch64_uimm12_shift. + +2017-06-22 Jan Hubicka + + * profile-count.h (apply_probability, + apply_scale, probability_in): Fix checks for zero. + +2017-06-22 Rainer Orth + + * incpath.c (add_sysroot_to_chain): Allow for $SYSROOT prefix. + * doc/cppdiropts.texi (-I @var{dir}): Document it. + +2016-06-22 Richard Biener + + * tree-vect-loop.c (vect_model_reduction_cost): Handle + COND_REDUCTION and INTEGER_INDUC_COND_REDUCTION without + REDUC_MAX_EXPR support. + (vectorizable_reduction): Likewise. + (vect_create_epilog_for_reduction): Likewise. + +2017-06-22 James Greenhalgh + + * match.pd (A / (1 << B) -> A >> B): New. + * generic-match-head.c: Include optabs-tree.h. + * gimple-match-head.c: Likewise. + * optabs-tree.h (target_supports_op_p): New. + * optabs-tree.c (target_supports_op_p): New. + +2017-06-22 Rainer Orth + + * configure.ac (gcc_cv_ld_static_dynamic): Also check stderr for + $gcc_cv_ld --help output. + (gcc_cv_ld_demangle): Likewise. + (gcc_cv_ld_eh_frame_hdr): Likewise. + (gcc_cv_ld_pie): Likewise. + (gcc_cv_ld_as_needed): Likewise. Prefer native forms unless $gnu_ld. + (gcc_cv_ld_buildid): Likewise. + (gcc_cv_ld_sysroot): Likewise. + (ld_bndplt_support): Likewise. + (ld_pushpopstate_support): Likewise. + * configure: Regenerate. + * config/sol2.h [!USE_GLD] (SYSROOT_SPEC): Define. + +2017-06-21 Jakub Jelinek + + PR target/81151 + * config/i386/sse.md (round2): Renumber match_dup and + operands indexes to avoid gap between operands and match_dups. + +2017-06-21 Andrew Pinski + + * config/aarch64/aarch64-cost-tables.h (thunderx_extra_costs): + Increment Arith_shift and Arith_shift_reg by 1. + * config/aarch64/aarch64-tuning-flags.def (cheap_shift_extend): + New tuning flag. + * config/aarch64/aarch64.c (thunderx_tunings): Enable + AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND. + (aarch64_strip_extend): Add new argument and test for it. + (aarch64_cheap_mult_shift_p): New function. + (aarch64_rtx_mult_cost): Call aarch64_cheap_mult_shift_p and don't + add a cost if it is true. + Update calls to aarch64_strip_extend. + (aarch64_rtx_costs): Update calls to aarch64_strip_extend. + +2017-06-21 Andrew Pinski + + * config/aarch64/aarch64-cores.def (thunderxt88p1): Use thunderxt88 + tunings. + (thunderxt88): Likewise. + * config/aarch64/aarch64.c (thunderxt88_prefetch_tune): New variable. + (thunderx_prefetch_tune): New variable. + (thunderx2t99_prefetch_tune): Update for the correct values. + (thunderxt88_tunings): New variable. + (thunderx_tunings): Use thunderx_prefetch_tune instead of + generic_prefetch_tune. + (thunderx2t99_tunings): Use AUTOPREFETCHER_WEAK. + +2017-06-21 Kyrylo Tkachov + + * config/aarch64/atomics.md (aarch64_compare_and_swap_lse, + SHORT): Relax operand 3 to aarch64_reg_or_zero and constraint to Z. + (aarch64_compare_and_swap_lse, GPI): Likewise. + (aarch64_atomic_cas, SHORT): Likewise for operand 2. + (aarch64_atomic_cas, GPI): Likewise. + +2017-06-21 Martin Liska + + * gimplify.c (gimplify_label_expr): Insert GIMPLE_PREDICT + statements on cold and hot labels. + * predict.c (tree_estimate_probability_bb): Remove the + prediction from this place. + +2017-06-21 Martin Liska + + PR tree-optimization/79489 + * gimplify.c (maybe_add_early_return_predict_stmt): New + function. + (gimplify_return_expr): Call the function. + * predict.c (tree_estimate_probability_bb): Remove handling + of early return. + * predict.def: Update comment about early return predictor. + * gimple-predict.h (is_gimple_predict): New function. + * predict.def: Change default value of early return to 66. + * tree-tailcall.c (find_tail_calls): Skip GIMPLE_PREDICT + statements. + * passes.def: Put pass_strip_predict_hints to the beginning of + IPA passes. + +2017-06-21 Pierre-Marie de Rodat + + * dwarf2out.c (gen_decl_die): Remove the guard to skip file-scope + FUNCTION_DECL declarations. + (dwarf2out_early_global_decl): Remove the guard to skip FUNCTION_DECL + declarations. + (dwaf2out_decl): Likewise. + * godump.c (go_early_global_decl): Skip call to the real debug hook + for FUNCTION_DECL declarations. + * passes.c (rest_of_decl_compilation): Skip call to the + early_global_decl debug hook for FUNCTION_DECL declarations, unless + -fdump-go-spec is passed. + +2017-06-21 Marc Glisse + + * config/i386/i386.c (struct builtin_isa): New field pure_p. + Reorder for compactness. + (def_builtin, def_builtin2, ix86_add_new_builtins): Handle pure_p. + (def_builtin_pure, def_builtin_pure2): New functions. + (ix86_init_mmx_sse_builtins) [__builtin_ia32_stmxcsr]: Mark as pure. + +2017-06-21 Marc Glisse + + * match.pd (nop_convert): New predicate. + ((A +- CST1) +- CST2): Allow some NOP conversions. + +2017-06-21 Jakub Jelinek + + PR c++/81130 + * gimplify.c (omp_add_variable): Don't force GOVD_SEEN for types + with ctors/dtors if GOVD_SHARED is set. + +2017-06-21 Wilco Dijkstra + + * config/aarch64/aarch64.md (movti_aarch64): + Emit mov rather than orr. + (movtf_aarch64): Likewise. + * config/aarch64/aarch64-simd.md (aarch64_simd_mov): + Emit mov rather than orr. + +2017-06-21 Wilco Dijkstra + + * config/aarch64/aarch64-simd.md (aarch64_simd_dup): + Swap alternatives, make integer dup more expensive. + +2017-06-21 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): + Return true for non-tls symbols. + +2017-06-21 James Greenhalgh + + * config/aarch64/aarch64-cores.def (cortex-a55): New. + (cortex-a75): Likewise. + (cortex-a75.cortex-a55): Likewise. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi (-mtune): Document new values for -mtune. + +2017-06-21 Tom de Vries + + * doc/sourcebuild.texi (Add Options, Features for dg-add-options): Add + stack_size feature. + (Effective-Target Keywords, Other attributes): Suggest using + dg-add-options stack_size feature to get stack limit in stack_size + effective target documentation. + +2017-06-21 Julian Brown + Naveen H.S + + * config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi) + (aarch64_crypto_pmullv2di): Change type attribute to crypto_pmull. + * config/aarch64/thunderx2t99.md (thunderx2t99_pmull): New + reservation. + * config/arm/cortex-a53.md (cortex_a53_advsimd_type): Add crypto_pmull to + attribute type list for neon_multiply. + * config/arm/cortex-a57.md (cortex_a57_neon_type): Add crypto_pmull to + attribute type list for neon_multiply. + * config/arm/crypto.md (crypto_vmullp64): Change type to crypto_pmull. + * config/arm/exynos-m1.md (exynos_m1_neon_type): Add crypto_pmull to + attribute type list for neon_multiply. + * config/arm/types.md (crypto_pmull): Add. + * config/arm/xgene1.md (xgene1_neon_pmull): Add crypto_pmull to + attribute type list. + +2017-06-20 Andreas Tobler + + * config.gcc (armv6*-*-freebsd*): Change the target_cpu_cname to + arm1176jzf-s. + +2017-06-20 Jakub Jelinek + + * ira-costs.c (find_costs_and_classes): Initialize cost_classes later + to make sure not to dereference a NULL cost_classes_ptr pointer. + +2017-06-20 Carl Love + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW, + ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries. + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin, + builtin_function_type): Add ALTIVEC_BUILTIN_* case statements. + * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW, + VMULOSW): New enum "unspec" values. + (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si, + vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, + altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw, + altivec_vmulosw): New patterns. + * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW, + VMULOSW): Add definitions. + +2017-06-20 Julia Koval + + * config/i386/i386.c: Fix rounding expand for new pattern. + * config/i386/subst.md: Fix pattern (parallel -> unspec). + +2017-06-20 James Greenhalgh + + * config/aarch64/aarch64-option-extensions.def (rcpc): New. + * config/aarch64/aarch64.h (AARCH64_FL_RCPC): New. + +2017-06-20 James Greenhalgh + + * config/aarch64/aarch64-option-extensions.def (fp16): Fix expected + feature string. + +2017-06-20 James Greenhalgh + + * config/aarch64/aarch64-cores.def: Rearrange to sort by + architecture, then by implementer ID. + * config/aarch64/aarch64-tune.md: Regenerate. + +2017-06-20 Richard Biener + + PR middle-end/81097 + * fold-const.c (split_tree): Fold to type before negating. + +2017-06-20 David Malcolm + + * diagnostic-show-locus.c + (selftest::test_fixit_deletion_affecting_newline): New function. + (selftest::diagnostic_show_locus_c_tests): Call it. + +2017-06-20 Andreas Schwab + + PR target/80970 + * config/m68k/m68k.md (bsetdreg, bchgdreg, bclrdreg): Use "=d" + instead of "+d". + +2017-06-20 Prakhar Bahuguna + + * config/arm/arm-c.c (arm_cpu_builtins): New block to define + __ARM_FEATURE_COPROC according to support. + +2017-06-20 Jakub Jelinek + + * tree-chkp.c (chkp_get_hard_register_var_fake_base_address): + Rewritten to avoid overflow for > 32-bit pointers. + + PR sanitizer/81125 + * ubsan.h (ubsan_encode_value): Workaround buggy clang++ parser + by removing enum keyword. + (ubsan_type_descriptor): Likewise. Formatting fix. + + PR target/81121 + * config/i386/i386.md (TARGET_USE_VECTOR_CONVERTS float si->{sf,df} + splitter): Require TARGET_SSE2 in the condition. + +2017-06-20 Michael Meissner + + PR target/79799 + * config/rs6000/rs6000.c (rs6000_expand_vector_init): Add support + for doing vector set of SFmode on ISA 3.0. + * config/rs6000/vsx.md (vsx_set_v4sf_p9): Likewise. + (vsx_set_v4sf_p9_zero): Special case setting 0.0f to a V4SF + element. + (vsx_insert_extract_v4sf_p9): Add an optimization for inserting a + SFmode value into a V4SF variable that was extracted from another + V4SF variable without converting the element to double precision + and back to single precision vector format. + (vsx_insert_extract_v4sf_p9_2): Likewise. + +2017-06-19 Jakub Jelinek + + * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Multiply + in UWHI to avoid undefined overflow. + + PR sanitizer/81125 + * ubsan.h (enum ubsan_encode_value_phase): New. + (ubsan_encode_value): Change second argument to + enum ubsan_encode_value_phase with default value of + UBSAN_ENCODE_VALUE_GENERIC. + * ubsan.c (ubsan_encode_value): Change second argument to + enum ubsan_encode_value_phase PHASE from bool IN_EXPAND_P, + adjust uses, for UBSAN_ENCODE_VALUE_GENERIC use just + create_tmp_var_raw instead of create_tmp_var and use a + TARGET_EXPR. + (ubsan_expand_bounds_ifn, ubsan_build_overflow_builtin, + instrument_bool_enum_load, ubsan_instrument_float_cast): Adjust + ubsan_encode_value callers. + + PR sanitizer/81111 + * ubsan.c (ubsan_encode_value): If current_function_decl is NULL, + use create_tmp_var_raw instead of create_tmp_var, mark it addressable + just by setting TREE_ADDRESSABLE on the result and use a TARGET_EXPR. + +2017-06-19 Richard Biener + + PR middle-end/81118 + * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Clear niter + estimates if we changed anything. + +2017-06-19 Richard Biener + + PR tree-optimization/80887 + * tree-ssa-sccvn.c (mprts_hook_cnt): New global. + (vn_lookup_simplify_result): Allow only mprts_hook_cnt succesful + simplified lookups, then reset mprts_hook. + (vn_nary_build_or_lookup_1): Set mprts_hook_cnt to 9 before + simplifying. + (try_to_simplify): Likewise. + +2017-06-19 Martin Liska + + PR sanitizer/80879 + * gimplify.c (gimplify_switch_expr): + Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST. + +2017-06-19 Martin Liska + + * doc/install.texi: Document that PGO runs in 4 stages. + +2017-06-19 Martin Liska + + PR ipa/80732 + * attribs.c (make_dispatcher_decl): Do not append '.ifunc' + to dispatcher function name. + * multiple_target.c (replace_function_decl): New function. + (create_dispatcher_calls): Redirect both edges and references. + +2017-06-19 Jan Hubicka + + * profile-count.c (profile_count::dump): Dump quality. + (profile_count::differs_from_p): Update for unsigned val. + * profile-count.h (profile_count_quality): New enum. + (profile_count): Turn m_val to 62bit unsigned, add quality tracking. + +2017-06-19 Richard Biener + + * tree-ssa-loop-niter.h (estimate_numbers_of_iterations): Take + struct function as arg. + (estimate_numbers_of_iterations): Export overload with loop arg. + (free_numbers_of_iterations_estimates_loop): Use an overload of + free_numbers_of_iterations_estimates instead. + * tree-cfg.c (remove_bb): Adjust. + * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Likewise. + * tree-parloops.c (gen_parallel_loop): Likewise. + * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): + Likewise. + (tree_unroll_loops_completely): Likewise. + * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): + Use an overload instead and export. + (estimated_loop_iterations): Adjust. + (max_loop_iterations): Likewise. + (likely_max_loop_iterations): Likewise. + (estimate_numbers_of_iterations): Take struct function as arg + and adjust. + (loop_exits_before_overflow): Adjust. + (free_numbers_of_iterations_estimates_loop): Use an overload. + * tree-vect-loop.c (vect_analyze_loop_form): Adjust. + * tree-vectorizer.c (vect_free_loop_info_assumptions): Likewise. + +2017-06-19 Richard Biener + + PR ipa/81112 + * ipa-prop.c (find_constructor_constant_at_offset): Handle + RANGE_EXPR conservatively. + +2017-06-16 Carl Love + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + definitions for vec_float, vec_float2, vec_floato, + vec_floate built-ins. + * config/rs6000/vsx.md (define_c_enum "unspec"): Add RTL code + for instructions vsx_xvcvsxws vsx_xvcvuxwsp, float2, floato and + floate. + * config/rs6000/rs6000-builtin.def (FLOAT2_V2DI, FLOATE_V2DF, + FLOATE_2DI, FLOATO_V2DF, FLOATEE_V2DI, XVCVSXWSP_V4SF, + UNS_FLOATO_V2DI, UNS_FLOATE_V2DI): Add definitions. + * config/altivec.md (define_insn "p8_vmrgew_", + define_mode_attr VF_sxddp): Add V4SF type to p8_vmrgew. + * config/rs6000/altivec.h (vec_float, vec_float2, vec_floate, + vec_floato): Add builtin defines. + * doc/extend.texi (vec_float, vec_float2, vec_floate, vec_floato): + Update the built-in documentation file for the new built-in + functions. + +2017-06-16 Richard Earnshaw + + * config/arm/arm.opt (marm): Mark as the negative of of -mthumb. + (mthumb): Mark as the negative of -marm. + +2017-06-16 Richard Earnshaw + + * doc/invoke.texi (ARM Options, -mcpu): Document supported + extension options. + (ARM Options, -mtune): Document that this accepts the same + extension options as -mcpu. + (ARM Options, -mfpu): Document addition of -mfpu=auto. + +2017-06-16 Richard Earnshaw + + * doc/invoke.texi (ARM Options, -march=): Document new syntax and + permitted extensions. + +2017-06-16 Richard Earnshaw + + * config/arm/arm-cpus.in (armv7): Add extension +nofp. + (armv7-r): Add aliases vfpv3xd and vfpv3-d16. + (armv8-m.main): Add option +nodsp. + * config/arm/arm-cpu-cdata.h: Regenerated. + +2017-06-16 Richard Earnshaw + + * config/arm/t-fuchsia: New file. + * config.gcc (arm*-*-fuchsia*): Use it. + +2017-06-16 Richard Earnshaw + + * config/arm/t-symbian: Rewrite for new option infrastructure. + +2017-06-16 Richard Earnshaw + + * config/arm/t-phoenix (MULTILIB_REUSE): Clear variable. + (MULTILIB_REQUIRED): Likewise. + +2017-06-16 Richard Earnshaw + + * config/arm/t-linux-eabi (MULTILIB_EXCEPTIONS): Set to empty. + (MULTILIB_RESUE): Likewise. + (MULTILIB_MATCHES): Likewise. + (MULTLIB_REQUIRED): Likewise. + +2017-06-16 Richard Earnshaw + + * config/arm/t-rtems: Rewrite for new option framework. + +2017-06-16 Richard Earnshaw + + * config/arm/t-aprofile (v7_a_nosimd_variants, v7_a_simd_variants) + (v7ve_nosimd_variatns, v7ve_vfpv3_simd_variants) + (v7ve_vfpv4_simd_variants, v8_a_nosimd_variants, v8_a_simd_variants) + (v8_1_a_simd_variants, v8_2_a_simd_variants): Move to ... + * config/arm/t-multilib: ... here. + (MULTILIB_OPTIONS): Add armv7 and armv7+fp architectures. + (MULTILIB_MATCHES): Use armv7 libraries for armv7-r. Also use for + armv7-a and armv8*-a when A-profile libraries have not been built. + * config/arm/t-rmprofile: Rewrite. + +2017-06-16 Richard Earnshaw + + * genmultilib (multilib_reuse): Allow an explicit period to be escaped + with a backslash. Remove the backslash after substituting unescaped + periods. + * doc/fragments.texi (MULTILIB_REUSE): Document it. + +2017-06-16 Richard Earnshaw + + * config.gcc: (arm*-*-*): When building a-profile libraries, force + the driver to pass through the default setting of -mfloat-abi. + * common/config/arm/arm-common.c (arm_target_thumb_only): Return -marm + rather than NULL. + * config/arm/t-multilib (MULTILIB_REUSE): Initialize to empty. + (all_feat_combs): New rule. + (MULTILIB_OPTIONS): Use explicit ARM and Thumb directories. Rework + default libraries. + * config/arm/t-aprofile: Rewrite. + +2017-06-16 Richard Earnshaw + + * config/arm/arm.h (FPUTYPE_AUTO): Define. + * config/arm/arm.c (arm_option_override): Use FPUTYPE_AUTO if the + fpu is not specified by the user/command-line. + * config/arm/bpabi.h (FPUTYPE_DEFAULT): Delete. + * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Delete. + * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Delete. + * config/arm/vxworks.h (FPUTYPE_DEFAULT): Delete. + * common/config/arm/arm-common.c (arm_canon_arch_option): Use + FPUTYPE_AUTO insted of FPUTYPE_DEFAULT. + +2017-06-16 Richard Earnshaw + + * config/arm/elf.h (MULTILIB_DEFAULTS): Delete. + * config/arm/t-arm-elf: Rewritten. + +2017-06-16 Richard Earnshaw + + * config/arm/arm.h (TARGET_HARD_FLOAT): Also check that we + have some floating-point instructions. + (TARGET_SOFT_FLOAT): Define as inverse of TARGET_HARD_FLOAT. + (TARGET_MAYBE_HARD_FLOAT): New macro. + * config/arm/arm-builtins.c (arm_init_builtins): Use + TARGET_MAYBE_HARD_FLOAT. + * config/arm/arm.c (arm_option_override): Use TARGET_HARD_FLOAT_ABI. + +2017-06-16 Richard Earnshaw + + * common/config/arm/arm-common.c: Define INCLUDE_LIST. + (configargs.h): Include it. + (arm_print_hint_for_fpu_option): New function. + (arm_parse_fpu_option): New function. + (candidate_extension): New class. + (arm_canon_for_multilib): New function. + * config/arm/arm.h (CANON_ARCH_SPEC_FUNCTION): New macro. + (EXTRA_SPEC_FUNCTIONS): Add CANON_ARCH_SPEC_FUNCTION. + (ARCH_CANONICAL_SPECS): New macro. + (DRIVER_SELF_SPECS): Add ARCH_CANONICAL_SPECS. + +2017-06-16 Richard Earnshaw + + * config.gcc (arm*-*-*): Ensure both target_cpu_cname and with_cpu + are set after handling multilib fragments. Set target_cpu_default2 + from with_cpu. + +2017-06-16 Richard Earnshaw + + * config.gcc (arm*-*-fucshia*): Set target_cpu_cname to the real + cpu name. + (arm*-*-*): Set target_cpu_default2 to a quoted string. + * config/arm/parsecpu.awk (check_cpu): Validate any extension + options. + (check_arch): Likewise. + * config/arm/arm.c (arm_configure_build_target): Handle + TARGET_CPU_DEFAULT being a string constant. Scan any feature + options in the default. + +2017-06-16 Richard Earnshaw + + * config/arm/arm-protos.h (cpu_arch_extension): Add field to record + when an option is an alias of another. + * config/arm/parsecpu.awk (optalias): New parser token. + (gen_comm_data): Mark non-alias options as such. Emit entries + for extension aliases. + * config/arm/arm-cpus.in (armv5e): Make vfpv2 an alias. + (armv5te, armv5tej, armv6, armv6j, armv6k, armv6z): Likewise. + (armv6kz, armv6zk, armv6t2): Likewise. + (armv7): Make vfpv3-d16 an alias. + (armv7-a): Make vfpv3-d16, neon and neon-vfpv3 aliases. Sort in + canonical order. + (armv7ve): Make vfpv4-d16, neon-vfpv3 and neon-vfpv4 aliases. + Sort in canonical order. + (armv8-a): Sort in canonical order. + (armv8.1-a, armv8.2-a): Likewise. + (generic-armv7-a): Make neon and neon-vfpv3 aliases. Sort in + canonical order. + (cortex-a9): Sort in canonical order. + * config/arm/arm.c (selftests.h): Include it. + (arm_test_cpu_arch_data): New function. + (arm_run_self_tests): New function. + (TARGET_RUN_TARGET_SELFTESTS): Redefine. + (targetm): Move declaration to the end of the file. + * arm-cpu-cdata.h: Regenerated. + +2017-06-16 Richard Earnshaw + + * config/arm/arm.h (TARGET_MODE_SPECS): Add additional parameter to + call to target_mode_check describing the type of option passed. + * common/config/arm/arm-common.c (arm_arch_core_flag): Delete. + (arm_target_thumb_only): Use arm_parse_arch_option_name or + arm_parse_cpu_option_name to match parameters against list of + available targets. + * config/arm/parsecpu.awk (gen_comm_data): Don't generate + arm_arch_core_flags data structure. + * config/arm/arm-cpu_cdata.h: Regenerated. + +2017-06-16 Richard Earnshaw + + * common/config/arm/arm-common.c (arm_initialize_isa): Moved here from + config/arm/arm.c. + (arm_print_hint_for_cpu_option): Likewise. + (arm_print_hint_for_arch_option): Likewise. + (arm_parse_cpu_option_name): Likewise. + (arm_parse_arch_option_name): Likewise. + * config/arm/arm.c (arm_identify_fpu_from_isa): Use the computed number + of entries in the all_fpus list. + * config/arm/arm-protos.h (all_architectures, all_cores): Declare. + (arm_parse_cpu_option_name): Declare. + (arm_parse_arch_option_name): Declare. + (arm_parse_option_features): Declare. + (arm_intialize_isa): Declare. + * config/arm/parsecpu.awk (gen_data): Move CPU and architecture + data tables to ... + (gen_comm_data): ... here. Make definitions non-static. + * config/arm/arm-cpu-data.h: Regenerated. + * config/arm/arm-cpu-cdata.h: Regenerated. + +2017-06-16 Richard Earnshaw + + * config/arm/arm-protos.h (arm_build_target): Remove arch_core. + (cpu_arch_extension): New structure. + (cpu_arch_option, arch_option, cpu_option): New structures. + * config/arm/parsecpu.awk (gen_headers): Build an enumeration of + architecture types. + (gen_data): Generate new format data tables. + * config/arm/arm.c (cpu_tune): New structure. + (cpu_option, processors): Delete. + (arm_print_hint_for_core_or_arch): Delete. Replace with ... + (arm_print_hint_for_cpu_option): ... this and ... + (arm_print_hint_for_arch_option): ... this. + (arm_parse_arch_cpu_name): Delete. Replace with ... + (arm_parse_cpu_option_name): ... this and ... + (arm_parse_arch_option_name): ... this. + (arm_unrecognized_feature): Change type of target parameter to + cpu_arch_option. + (arm_parse_arch_cpu_features): Delete. Replace with ... + (arm_parse_option_features): ... this. + (arm_configure_build_target): Rework to use new configuration data + tables. + (arm_print_tune_info): Rework for new configuration data tables. + * config/arm/arm-cpu-data.h: Regenerated. + * config/arm/arm-cpu.h: Regenerated. + +2017-06-16 Richard Earnshaw + + * Makefile.in (OBJS): Move sbitmap.o from here ... + (OBJS-libcommon): ... to here. + +2017-06-16 Richard Earnshaw + + * config/arm/arm-isa.h (ISA_ALL_FPU_INTERNAL): Renamed from ISA_ALL_FPU. + (ISA_ALL_CRYPTO): New macro. + (ISA_ALL_SIMD): New macro + (ISA_ALL_FP): New macro. + * config/arm/arm.c (fpu_bitlist): Update initializer. + * config/arm/arm-cpus.in: Use new ISA_ALL macros to disable crypto, + simd or fp. + (arm9e): Add fpu. Add option for nofp + (arm946e-s, arm966e-s, arm968e-s, arm10e, arm1020e, arm1022e): Likewise. + (arm926ej-s, arm1026ej-s): Likewise. + (generic-armv7-a): Add fpu. Add options for simd, vfpv3, vfpv3-d16, + vfpv3-fp16, vfpv3-d16-fp16, vfpv4, vfpv4-d16, neon, neon-vfp3, + neon-fp16, neon-vfpv4, nofp and nosimd. + (cortex-a5, cortex-a7): Add fpu. Add options for nosimd and nofp. + (cortex-a8): Add fpu. Add option for nofp. + (cortex-a9): Add fpu. Add options for nosimd and nofp. + (cortex-a12, cortex-a15, cortex-a17): Add fpu. Add option for nofp. + (cortex-r4f): Add fpu. + (cortex-r5): Add fpu. Add options for nofp.dp and nofp. + (cortex-r7): Use idiv option from architecture. Add fpu. Add option + for nofp. + (cortex-r8): Likewise. + (cortex-m4): Add fpu. Add option for nofp. + (cortex-a15.cortex-a7): Add fpu. Add option for nofp. + (cortex-a17.cortex-a7): Likewise. + (cortex-a32): Add fpu. Add options for crypto and nofp. + (cortex-a35, cortex-a53): Likewise. + (cortex-a57): Add fpu. Add option for crypto. + (cortex-a72, cortex-a73): Likewise. + (exynos-m1): Likewise. + (cortex-a57.cortex-a53, cortex-a72.cortex-a53): Likewise. + (cortex-a73.cortex-a35, cortex-a73.cortex-a53): Likewise. + (cortex-m33): Add fpu. Add option for nofp. + * config/arm/arm-cpu-cdata.h: Regenerated + * config/arm/arm-cpu-data.h: Regenerated. + +2017-06-16 Richard Earnshaw + + * arm-cpus.in (armv5e): Add options fp, vfpv2 and nofp. + (armv5te, armv5tej): Likewise. + (armv6, armv6j, armv6k, armv6z, armv6kz, armv6zk, armv6t2): Likewise. + (armv7): Add options fp and vfpv3-d16. + (armv7-a): Add options fp, simd, vfpv3, vfpv3-d16, vfpv3-d16-fp16, + vfpv3-fp16, vfpv4, vfpv4-d16, neon, neon-vfpv3, neon-fp16, neon-vfpv4, + nofp and nosimd. + (armv7ve): Likewise. + (armv7-r): Add options fp, fp.sp, idiv, nofp and noidiv. + (armv7e-m): Add options fp, fpv5, fp.dp and nofp. + (armv8-a): Add nocrypto option. + (armv8.1-a, armv8.2-a): Likewise. + (armv8-m.main): add options fp, fp.dp and nofp. + +2017-06-16 Richard Earnshaw + + * config/arm/arm-cpus.in (armv8-a): Add options crc, simd crypto and + nofp. + (armv8-a+crc): Delete. + (armv8.1-a): Add options simd, crypto and nofp. + (armv8.2-a): Add options fp16, simd, crypto and nofp. + (armv8.2-a+fp16): Delete. + (armv8-m.main): Add option dsp. + (armv8-m.main+dsp): Delete. + (cortex-a8): Add fpu. Add nofp option. + (cortex-a9): Add fpu. Add nofp and nosimd options. + * config/arm/parsecpu.awk (gen_data): Generate option tables and + link to main cpu and architecture data structures. + (gen_comm_data): Only put isa attributes from the main architecture + in common tables. + (option): New statement for architecture and CPU entries. + * arm.c (struct cpu_option): New structure. + (struct processors): Add entry for options. + (arm_unrecognized_feature): New function. + (arm_parse_arch_cpu_name): Ignore any characters after the first + '+' character. + (arm_parse_arch_cpu_feature): New function. + (arm_configure_build_target): Separate out any CPU and architecture + features and parse separately. Don't error out if -mfpu=auto is + used with only an architecture string. + (arm_print_asm_arch_directives): New function. + (arm_file_start): Call it. + * config/arm/arm-cpu-cdata.h: Regenerated. + * config/arm/arm-cpu-data.h: Likewise. + * config/arm/arm-tables.opt: Likewise. + +2017-06-16 Richard Earnshaw + + * config/arm/elf.h (ASM_SPEC): Only pass -mfpu through to the + assembler when it is not -mfpu=auto. + +2017-06-16 Richard Earnshaw + + * config/arm/arm.h (BIG_LITTLE_SPEC): Delete macro. + (ASM_REWRITE_SPEC_FUNCTIONS): New macro. + (BIG_LITTLE_CPU_SPEC_FUNCTIONS): Delete macro. + (ASM_CPU_SPEC): Rewrite. + (MCPU_MTUNE_NATIVE_FUNCTIONS): New macro. + (EXTRA_SPEC_FUNCTIONS): Move outside of ifdef. Use + MCPU_MTUNE_NATIVE_FUNCTIONS and ASM_REWRITE_SPEC_FUNCTIONS. Remove + reference to BIG_LITTLE_CPU_SPEC_FUNCTIONS. + * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): Ensure + copied string is NUL-terminated. Also strip any characters prefixed + by '+'. + (arm_rewrite_selected_arch): New function. + (arm_rewrite_march): New function. + +2017-06-16 Richard Earnshaw + + * config/arm/arm.opt (x_arm_arch_string): New TargetSave option. + (x_arm_cpu_string, x_arm_tune_string): Likewise. + (march, mcpu, mtune): Convert to string-based options. + * config/arm/arm.c (arm_print_hint_for_core_or_arch): New function. + (arm_parse_arch_cpu_name): New function. + (arm_configure_build_target): Use arm_parse_arch_cpu_name to + identify selected architecture or CPU. + (arm_option_save): New function. + (TARGET_OPTION_SAVE): Redefine. + (arm_option_restore): Restore string options. + (arm_option_print): Print string options. + +2017-06-16 Martin Sebor + + PR tree-optimization/80933 + PR tree-optimization/80934 + * builtins.c (fold_builtin_3): Do not handle bcmp here. + * gimple-fold.c (gimple_fold_builtin_bcmp): New function. + (gimple_fold_builtin_bcopy, gimple_fold_builtin_bzero): Likewise. + (gimple_fold_builtin): Call them. + +2017-06-16 Jan Hubicka + + * gimple-ssa-isolate-paths.c (isolate_path): Set edge leading to path + as unlikely; update profile. + +2017-06-16 Jan Hubicka + + * predict.c (force_edge_cold): Handle declaring edges impossible + more aggresively. + +2017-06-16 Jan Hubicka + + * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update + profile. + (try_unroll_loop_completely): Fix reporting. + +2017-06-16 Jan Hubicka + + * tree-ssa-tail-merge.c (replace_block_by): Fix profile updating. + +2017-06-16 James Greenhalgh + + PR target/71778 + * config/arm/arm-builtins.c (arm_expand_builtin_args): Return TARGET + if given a non-constant argument for an intrinsic which requires a + constant. + +2017-06-16 Jan Hubicka + + * profile.c (compare_freqs): New function. + (branch_prob): Sort edge list. + (find_spanning_tree): Assume that the list is priority sorted. + +2017-06-16 Richard Biener + + PR tree-optimization/81090 + * passes.def (pass_record_bounds): Remove. + * tree-pass.h (make_pass_record_bounds): Likewise. + * tree-ssa-loop.c (pass_data_record_bounds, pass_record_bounds, + make_pass_record_bounds): Likewise. + * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Do + not free niter estimates at the beginning but at the end. + * tree-scalar-evolution.c (scev_finalize): Free niter estimates. + +2017-06-16 Richard Biener + + * tree-switch-conversion.c (emit_case_bit_tests): Adjust + initializer to workaround ICE in host GCC 4.8. + +2017-06-16 Jan Hubicka + + * ipa-inline-transform.c (update_noncloned_frequencies): Update also + counts. + (clone_inlined_nodes): Update. + +2017-06-16 Maxim Kuvyrkov + + * config/aarch64/aarch64.c (qdf24xx_prefetch_tune): Update + prefetch settings, and enable prefetching by default at -O3. + +2017-06-16 Maxim Kuvyrkov + + * config/aarch64/aarch64.c (aarch64_override_options_internal): + Set flag_prefetch_loop_arrays according to tuning data. + +2017-06-16 Maxim Kuvyrkov + + * config/aarch64/aarch64-protos.h (struct cpu_prefetch_tune): + New tune structure. + (struct tune_params): Use cpu_prefetch_tune instead of cache_line_size. + [Unrelated to main purpose of the patch] Place the pointer field last + to enable type checking errors when tune structure are wrongly merged. + * config/aarch64/aarch64.c (generic_prefetch_tune,) + (exynosm1_prefetch_tune, qdf24xx_prefetch_tune,) + (thunderx2t99_prefetch_tune): New tune constants. + (tune_params *_tunings): Update all tunings (no functional change). + (aarch64_override_options_internal): Set PARAM_SIMULTANEOUS_PREFETCHES, + PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE, and PARAM_L2_CACHE_SIZE + from tunings structures. + +2017-06-16 Jakub Jelinek + + PR sanitizer/81094 + * ubsan.c (instrument_null): Add T argument, use it instead + of computing it based on IS_LHS. + (instrument_object_size): Likewise. + (pass_ubsan::execute): Adjust instrument_null and + instrument_object_size callers to pass gimple_get_lhs or + gimple_assign_rhs1 result to it. Use instrument_null instead of + calling get_base_address and instrument_mem_ref. Handle + aggregate call arguments for object-size sanitization. + +2017-06-16 Yury Gribov + + PR tree-optimization/81089 + * tree-vrp.c (is_masked_range_test): Validate operands of + subexpression. + +2017-06-15 Martin Sebor + + PR c++/80560 + * dumpfile.c (dump_register): Avoid calling memset to initialize + a class with a default ctor. + * gcc.c (struct compiler): Remove const qualification. + * genattrtab.c (gen_insn_reserv): Replace memset with initialization. + * hash-table.h: Ditto. + * ipa-cp.c (allocate_and_init_ipcp_value): Replace memset with + assignment. + * ipa-prop.c (ipa_free_edge_args_substructures): Ditto. + * omp-low.c (lower_omp_ordered_clauses): Replace memset with + default ctor. + * params.h (struct param_info): Make struct members non-const. + * tree-switch-conversion.c (emit_case_bit_tests): Replace memset + with default initialization. + * vec.h (vec_copy_construct, vec_default_construct): New helper + functions. + (vec::copy, vec::splice, vec::reserve): Replace memcpy + with vec_copy_construct. + (vect::quick_grow_cleared): Replace memset with default ctor. + (vect::vec_safe_grow_cleared, vec_safe_grow_cleared): Same. + * doc/invoke.texi (-Wclass-memaccess): Document. + +2017-06-15 Ramana Radhakrishnan + + * emit-rtl.h (is_leaf): Update comment about local + register allocator. + +2017-06-15 Jozef Lawrynowicz + + PR target/78818 + * config/msp430/msp430.c (msp430_data_attr): Check that it's possible + for a variable to have a section before checking if the section has a + name. + Set section to.persistent if persistent attribute is set. + Warn if .persistent attribute is used on an automatic variable. + +2017-06-15 Eric Botcazou + + PR rtl-optimization/80474 + * reorg.c (update_block): Do not ignore instructions in a delay slot. + +2017-06-15 Segher Boessenkool + + * config/rs6000/rs6000.md (add3): Use reg_or_subregno instead + of REGNO. + +2017-06-14 Maciej W. Rozycki + + * config/mips/mips.md (MIPS16_T_REGNUM): Remove constant. + (casesi): Emit bounds checking as RTL. + (casesi_internal_mips16_): Remove bounds checking. + +2017-06-14 Max Filippov + + * config/xtensa/xtensa.c (xtensa_option_override): Append + MASK_CONST16 to target_flags in the absence of TARGET_L32R. + (hwloop_optimize, hwloop_fail, hwloop_pattern_reg, + xtensa_doloop_hooks): Define unconditionally. + (xtensa_reorg_loops): Only call reorg_loops in the presence of + TARGET_LOOPS. + * config/xtensa/xtensa.h (TARGET_L32R): New definition. + (TARGET_DEFAULT): Remove XCHAL_HAVE_L32R condition and account + for it in xtensa_option_override. + (HARD_FRAME_POINTER_IS_FRAME_POINTER, + HARD_FRAME_POINTER_IS_ARG_POINTER): New definitions. + +2017-06-14 Boris Kolpackov + + * doc/cppopts.texi: Document '-' special value to -MF. + +2017-06-14 Wilco Dijkstra + + * config/arm/cortex-a53.md (cortex_a53_fpalu) Adjust latency. + (cortex_a53_fconst): Likewise. + (cortex_a53_fpmul): Likewise. + (cortex_a53_f_load_64): Likewise. + (cortex_a53_f_load_many): Likewise. + (cortex_a53_advsimd_alu): Likewise. + (cortex_a53_advsimd_alu_q): Likewise. + (cortex_a53_advsimd_mul): Likewise. + (cortex_a53_advsimd_mul_q): Likewise. + (fpmac bypass): Add new bypass for fpmac-fpmac case. + Add missing fmul, r2f_cvt and fconst cases. + +2017-06-14 Richard Biener + + PR middle-end/81088 + * fold-const.c (split_tree): Drop TREE_OVERFLOW flag from + literal constants. + (fold_binary_loc): When associating do not treat pre-existing + TREE_OVERFLOW on literal constants as a reason to allow + TREE_OVERFLOW on associated literal constants. + +2017-06-14 Eric Botcazou + + * config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3. + (MASK_FEATURES): New macro. + * config/sparc/sparc.c (sparc_option_override): Remove the special + handling of -mfpu and generalize it to all MASK_FEATURES switches. + +2017-06-14 Eric Botcazou + + * simplify-rtx.c (simplify_binary_operation_1) : Do not simplify + a division of 0 if non-call exceptions are enabled. + +2017-06-14 Andrew Pinski + Naveen H.S + + PR target/71663 + * config/aarch64/aarch64.c (aarch64_expand_vector_init): + Improve vector initialization code gen for only variable case. + +2017-06-14 Eric Botcazou + + * config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry. + +2017-06-14 Richard Biener + + PR tree-optimization/81083 + * tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals + as values. + +2017-06-13 Segher Boessenkool + + * config/rs6000/rs6000.c: Update all comments that mentioned SPE. + (rs6000_expand_builtin): Remove RS6000_BTC_EVSEL. + * config/rs6000/rs6000.h (RS6000_BTC_EVSEL): Delete. + * config/rs6000/vxworks.h (VXCPU_FOR_8548): Delete. Adjust former use. + * config/rs6000/vxworksae.h (VXCPU_FOR_8548): Delete. + * config/rs6000/vxworksmils.h (VXCPU_FOR_8548): Delete. + +2017-06-13 Segher Boessenkool + + * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete VECTOR_SPE. + * config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete VECTOR_SPE. + +2017-06-13 Segher Boessenkool + + * config/rs6000/rs6000.h (FIXED_SCRATCH): Delete. + +2017-06-13 Segher Boessenkool + + * config/rs6000/t-rtems: Don't handle SPE. + +2017-06-13 Segher Boessenkool + + * config/rs6000/t-linux: Don't handle SPE. + +2017-06-13 Segher Boessenkool + + * config/rs6000/eabispe.h: Delete file. + +2017-06-13 Segher Boessenkool + + * config/rs6000/t-spe: Delete file. + +2017-06-13 Segher Boessenkool + + * config/rs6000/rs6000.c (SPE_CONST_OFFSET_OK): Delete. + (rs6000_legitimate_offset_address_p): Return false for anything in + V2SImode or V2SFmode. + +2017-06-13 Segher Boessenkool + + * config/rs6000/rs6000-modes.def: Remove all 8-byte vector modes + except V2SF and V2SI. Rearrange the vector modes, and add comments. + * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove V8QImode + and V4HImode. + (reg_offset_addressing_ok_p): Remove V4HImode and V1DImode. + (rs6000_legitimate_offset_address_p): Ditto. + (rs6000_emit_move): Ditto. + (rs6000_init_builtins): Remove V4HI_type_node. + +2017-06-13 Martin Liska + + PR sanitize/78204 + * asan.c (asan_sanitize_stack_p): Use sanitize_flags_p. + (gate_asan): Likewise. + * asan.h (asan_no_sanitize_address_p): Remove the function. + (sanitize_flags_p): New function. + * builtins.def: Fix coding style. + * common.opt: Use renamed enum value. + * convert.c (convert_to_integer_1): Use sanitize_flags_p. + * doc/extend.texi: Document no_sanitize attribute. + * flag-types.h (enum sanitize_code): Rename SANITIZE_NONDEFAULT + to SANITIZE_UNDEFINED_NONDEFAULT. + * gcc.c (sanitize_spec_function): Use the renamed enum value. + * gimple-fold.c (optimize_atomic_compare_exchange_p): + Use sanitize_flags_p. + * gimplify.c (gimplify_function_tree): Likewise. + * ipa-inline.c (sanitize_attrs_match_for_inline_p): Likewise. + * opts.c (parse_no_sanitize_attribute): New function. + (common_handle_option): Use renamed enum value. + * opts.h (parse_no_sanitize_attribute): Declare. + * tree.c (sanitize_flags_p): New function. + * tree.h: Declared here. + * tsan.c: Use sanitize_flags_p. + * ubsan.c (ubsan_expand_null_ifn): Likewise. + (instrument_mem_ref): Likewise. + (instrument_bool_enum_load): Likewise. + (do_ubsan_in_current_function): Remove the function. + (pass_ubsan::execute): Use sanitize_flags_p. + * ubsan.h: Remove do_ubsan_in_current_function + * tree-cfg.c (print_no_sanitize_attr_value): New function. + (dump_function_to_file): Use it here. + +2017-06-13 Martin Jambor + + PR tree-optimization/80803 + PR tree-optimization/81063 + * tree-sra.c (subtree_mark_written_and_enqueue): Move up in the file. + (propagate_subaccesses_across_link): Enqueue subtree whenever + necessary instead of relying on the caller. + +2017-06-13 Martin Jambor + + * tree-sra.c (add_access_to_work_queue): Only enqueue accesses + that have a first_link. + (sort_and_splice_var_accesses): Do not check first_link before + enquing. + (subtree_mark_written_and_enqueue): Likewise. + (propagate_all_subaccesses): Likewise and do not stop at first + parent with a first_link. + +2017-06-13 Martin Jambor + + * tree-sra.c (dump_access_tree_1): Fix accidental dumping to stderr + instead of f. + +2017-06-13 Yury Gribov + + * match.pd: New pattern. + +2017-06-13 Yury Gribov + + * tree-vrp.c (is_masked_range_test): New function. + (register_edge_assert_for): Determine ranges for + some bit tests. + +2017-06-13 Yury Gribov + + PR tree-optimization/67328 + * fold-const.c (maskable_range_p): New function. + (build_range_check): Generate bittests if possible. + +2017-06-13 Martin Liska + + * gimple-pretty-print.c (dump_probability): Add new argument. + (dump_edge_probability): Dump both probability and count. + (dump_gimple_label): Likewise. + (dump_gimple_bb_header): Likewise. + +2017-06-13 Georg-Johann Lay + + PR target/81072 + * config/avr/avr-devices.c: Fix indentation. + * config/avr/gen-avr-mmcu-specs.c: Dito. + +2017-06-13 Richard Biener + + * tree-vect-loop.c (vect_model_reduction_cost): Do not fail, + instead get vector type from stmt_info. + (vectorizable_reduction): Adjust. Remove dead code. + +2017-06-13 Richard Biener + + PR middle-end/81065 + * fold-const.c (extract_muldiv_1): Remove bogus distribution + case of C * (x * C2 + C3). + (fold_addr_of_array_ref_difference): Properly fold index difference. + +2017-06-12 David S. Miller + + PR target/80968 + * config/sparc/sparc.md (return expander): Emit frame blockage if + function uses alloca. + +2017-06-12 Richard Sandiford + + * combine.c (make_field_assignment): Check len rather than the mode + precision when calling force_to_mode. + +2017-06-12 Georg-Johann Lay + + Support multilibs and devices that see flash in RAM address range. + + PR target/81072 + * config/avr/avr-arch.h (avr_arch_id) : New enum. + (avr_mcu_t) : New field. + (avr_device_specific_features) : New enum. + * config/avr/avr.h (AVR_SHORT_CALLS): New define. + (AVR_HAVE_JMP_CALL): Don't set if AVR_SHORT_CALLS. + (AVR_TINY_PM_OFFSET): Remove macro. + * config/avr/avr.opt (-mshort-calls): New option. + * config/avr/gen-avr-mmcu-specs.c (print_mcu) + [*self_spec]: Add / remove -mshort-calls depending on AVR_ISA_RCALL. + * config/avr/avr-c.c (avr_cpu_cpp_builtins) + <__AVR_SHORT_CALLS__>: Built-in define if AVR_SHORT_CALLS. + <__AVR_HAVE_JMP_CALL__>: Use AVR_HAVE_JMP_CALL as condition + instead of avr_arch->have_jmp_call. + <__AVR_PM_BASE_ADDRESS__>: Built-in define if avr_arch->flash_pm_offset. + [AVR_TINY] <__AVR_TINY_PM_BASE_ADDRESS__>: Use + avr_arch->flash_pm_offset to define. + * config/avr/avr-devices.c (avr_arch_types): Add initializers for + new field flash_pm_offset. Add entry for avrxmega3. + (avr_texinfo): Add entry for avrxmega3. + * config/avr/avr-mcus.def: Add entries for: avrxmega3, + attiny212, attiny214, + attiny412, attiny414, attiny416, attiny417, + attiny814, attiny816, attiny817, + attiny1614, attiny1616, attiny1617, + attiny3214, attiny3216, attiny3217. + * config/avr/avr.c (avr_assemble_integer)[AVR_TINY]: Use + avr_arch->flash_pm_offset instead of AVR_TINY_PM_OFFSET. + (avr_print_operand_address) [AVR_TINY]: Same. + (avr_asm_init_sections) : Only patch + callback if avr_arch->flash_pm_offset = 0. + (avr_asm_named_section) : Skip setting it + for rodata if avr_arch->flash_pm_offset != 0. + (avr_encode_section_info) [AVR_TINY]: Adjust comment. + * config/avr/genmultilib.awk (dir_rcall, opt_rcall): New vars. + (opts) [AVR_ISA_RCALL]: Append opt_rcall. + (m_options): Append opt_rcall. + (m_dirnames): Append dir_rcall. + * config/avr/t-multilib: Regenerate. + + * configure.ac [target=avr]: Check whether avrxmega3 default + linker description file works as needed. + * configure: Regenerate. + * doc/avr-mmcu.texi: Regenerate. + * doc/invoke.texi (AVR Options) <-mshort-calls>: Document it. + <__AVR_ARCH__>: Document avrxmega3 and 103. + <__AVR_HAVE_JMP_CALL__>: Adjust documentation. + <__AVR_SHORT_CALLS__>: Document it. + <__AVR_PM_BASE_ADDRESS__>: Document it. + * doc/extend.texi (AVR Options) <-mshort-calls>: Document it. + (AVR Variable Attributes) : Document this is + not needed for avrxmega3. + (AVR Named Address Spaces) <__flash>: Dito. + +2017-06-12 Jan Hubicka + + * cgraph.c (cgraph_node::dump): Complain about profile insanities. + +2017-06-12 Doug Rupp + + * config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide". + Append vxworks-stdint.h to the tm_file list. + * config/vxworks-stdint.h: New file. + +2017-06-12 Martin Liska + + PR tree-optimization/81041 + * tree-profile.c (gimple_gen_ic_func_profiler): + Create an extra BB in profile-generate + (gimple_gen_time_profiler): Likewise. + +2017-06-12 Jakub Jelinek + + PR tree-optimization/81003 + * tree-ssa-reassoc.c (force_into_ssa_name): New function. + (update_range_test): Use it instead of force_gimple_operand_gsi. + +2017-06-12 Richard Biener + + PR tree-optimization/81053 + * tree-vect-loop.c (vect_is_simple_reduction): Handle PHI + with backedge value not defined in loop. Simplify def stmt + compute. + +2017-06-11 Tom de Vries + + PR target/79939 + * config/nvptx/nvptx.c (nvptx_cannot_force_const_mem): New function. + Return true. + (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to + nvptx_cannot_force_const_mem. + +2017-06-10 Jan Hubicka + + * opts.c (finish_options): Move test for flag_split_stack after + it has been initialized. + +2017-06-11 Jason Merrill + + * tree.h (id_equal): New. + * dwarf2out.c, hsa-gen.c, ipa-devirt.c, omp-expand.c, + omp-simd-clone.c, read-rtl-function.c, tree-chkp.c, tree.c: Use it + instead of strcmp of IDENTIFIER_POINTER. + +2017-06-10 Jan Hubicka + + * ipa-inline-transform.c: Include function.h, cfg.h and basic-block.h + (mark_all_inlined_calls_cdtor): Fix formating. + (inline_transform): Rescale profile before inlining. + +2017-06-10 Jan Hubicka + + * cgraph.h (cgraph_edge::clone): Update prototype. + * cgraphclones.c (cgraph_edge::clone): Update profile scaling. + (cgraph_node::create_clone): Update. + (cgraph_node::create_version_clone): Update. + * tree-inline.c (copy_bb): Update. + (expand_call_inline): Update. + +2017-06-10 Segher Boessenkool + + * config/rs6000/rs6000.c (emit_vrsave_prologue): New function, + factored out from ... + (rs6000_emit_prologue): ... here. + +2017-06-10 Segher Boessenkool + + * config/rs6000/rs6000.c (emit_split_stack_prologue): New function, + factored out from ... + (rs6000_emit_prologue): ... here. + +2017-06-10 Jan Hubicka + + * predict.c (drop_profile): Also drop individual bb/edge and cgraph + edge counts. + (handle_missing_profiles): Fix computation of tp_first_run. + (counts_to_freqs): Do not touch freqs when count is 0. + +2017-06-10 Jan Hubicka + + * cgraphbuild.c (cgraph_edge::rebuild_references): Do not touch + profile. + +2017-06-10 Tom de Vries + + * doc/sourcebuild.texi (Effective-Target Keywords, Environment + attributes): Document signal effective target. + +2017-06-10 Tom de Vries + + * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes): + Document effective target stack_size. + +2017-06-09 David Malcolm + + * diagnostic.c (diagnostic_report_diagnostic): Only add fixits + to the edit_context if they can be auto-applied. + +2017-06-9 Ian Lance Taylor + + * opts.c (finish_options): If -fsplit-stack, disable implicit + -forder-blocks-and-partition. + * doc/invoke.texi (Optimize Options): Document that when using + -fsplit-stack -forder-blocks-and-partition is not implicitly + enabled. + +2017-06-09 Jan Hubicka + + * builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST, + ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST, + ATTR_TMPURE_NORETURN_NOTHROW_LEAF_COLD_LIST): New. + * builtins.def (abort, trap, unreachable): Declare cold. + * calls.c (flags_from_decl_or_type): Lookup ECF_COLD. + * tree-core.h (ECF_COLD): New. + * tree.c (set_call_expr_flags): Handle ECF_COLD. + (build_common_builtin_nodes): Mark unreachable and abort as cold. + +2017-06-09 Jan Hubicka + + * predict.c (unlikely_executed_stmt_p): Cleanup. + +2017-06-09 Richard Biener + + * tree-ssa-loop-im.c (execute_sm): Do not force multi-threaded + model if the ref is always written to. + +2017-06-09 Tamar Christina + + * config/aarch64/aarch64.md (lrint2): New. + +2017-06-09 Tamar Christina + + * config/arm/arm.c (arm_rtx_costs_internal): Make sdiv more expensive + than udiv. + +2017-06-09 Tom de Vries + + PR target/80855 + * config/nvptx/nvptx.md (define_expand "mov"): Error out with + "target cannot support label values" when encountering LABEL_REF. + +2017-06-09 Martin Liska + + * tree-profile.c (gimple_gen_ic_profiler): Update comment. + (gimple_gen_ic_func_profiler): Emit direct comparison + of __gcov_indirect_call_callee with NULL. + (gimple_gen_time_profiler): Change probability from + PROB_VERY_UNLIKELY to PROB_UNLIKELY. + +2017-06-09 Jan Hubicka + + * profile.c (edge_gcov_counts): Turn to pointer. + (compute_branch_probabilities, compute_branch_probabilities): Update. + (branch_prob): Do not clear edge_gcov_count. + * profile.h (edge_gcov_counts): Turn to pointer. + (edge_gcov_count): Update. + +2017-06-09 Jan Hubicka + + * gimple.h (gimple_check_failed): Mark cold. + +2017-06-09 Richard Biener + + PR tree-optimization/66623 + * tree-vect-loop.c (vect_is_simple_reduction): Cleanup, + refactor check_reduction into two parts, properly computing + whether we have to check reduction validity for outer loop + vectorization. + +2017-06-09 Richard Biener + + PR tree-optimization/79483 + * graphite-scop-detection.c (order): New global. + (get_order): Compute bb to order mapping that satisfies code + generation constraints. + (cmp_pbbs): New helper. + (build_scops): Start domwalk at entry block, sort generated + pbbs. + +2017-06-09 Richard Biener + + PR middle-end/81007 + * ipa-polymorphic-call.c + (ipa_polymorphic_call_context::restrict_to_inner_class): + Skip FIELD_DECLs with error_mark_node type. + * passes.def (all_lowering_passes): Run pass_build_cgraph_edges + last again. + +2017-06-09 Martin Liska + + * predict.c (struct branch_predictor): New struct. + (test_prediction_value_range): New test. + (predict_c_tests): New function. + * selftest-run-tests.c (selftest::run_tests): Run the function. + * selftest.h: Declare new tests. + +2017-06-09 Segher Boessenkool + + PR target/80966 + * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that + gen_add3_insn did not fail. + * config/rs6000/rs6000.md (add3): If asked to add a constant to + r0, construct that number in a temporary reg and add that reg to r0. + If asked to put the result in r0 as well, fail. + +2017-06-08 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling + for early expansion of vec_eqv. + +2017-06-08 Jakub Jelinek + + PR middle-end/81005 + * ubsan.c (instrument_null): Avoid pointless code temporary. + (pass_ubsan::execute): Instrument aggregate arguments of calls. + +2017-06-08 Uros Bizjak + + PR target/81015 + Revert: + 2016-12-14 Uros Bizjak + + PR target/59874 + * config/i386/i386.md (*ctzhi2): New insn_and_split pattern. + (*clzhi2): Ditto. + +2017-06-08 Jan Hubicka + + * predict.c (unlikely_executed_edge_p): Move ahead. + (probably_never_executed_edge_p): Use it. + +2017-06-08 Alexander Ivchenko + + PR middle-end/79988 + * tree-chkp.c (chkp_gimple_call_builtin_p): Remove + gimple_call_builtin_p call. + +2017-06-08 Jan Hubicka + + * system.h (fancy_abort): Annotate by ATTRIBUTE_COLD. + * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1, + rtl_check_failed_type2, rtl_check_failed_code1, + rtl_check_failed_code2, rtl_check_failed_code_mode, + rtl_check_failed_block_symbol, cwi_check_failed_bounds, + rtvec_check_failed_bounds, rtl_check_failed_flag, + _fatal_insn_not_found, _fatal_insn): Likewise. + * tree.h (tree_contains_struct_check_failed, + tree_check_failed, tree_not_check_failed, + tree_class_check_failed, tree_range_check_failed, + tree_not_class_check_failed, tree_int_cst_elt_check_failed, + tree_vec_elt_check_failed, phi_node_elt_check_failed, + tree_operand_check_failed, omp_clause_check_failed, + omp_clause_operand_check_failed, omp_clause_range_check_failed): + Likewise. + +2017-06-08 Jan Hubicka + + * cgraph.c (cgraph_edge::maybe_hot_p): Do not check + flag_branch_probabilities. + * ipa-inline.c (edge_badness): Likewise. + * ipa-profile.c (ipa_propagate_frequency_1): Likewise. + * postreload-gcse.c (eliminate_partially_redundant_load): Likewise. + * predict.c (maybe_hot_frequency_p): Likewise. + (probably_never_executed): Likewise. + * sched-ebb.c (schedule_ebbs): Likewise. + * sched-rgn.c (find_single_block_region): Likewise. + * tracer.c (tail_duplicate): Likewise. + +2017-06-08 Jan Hubicka + + * opts.c (finish_options): x_flag_reorder_blocks_and_partition no + longer requires x_flag_profile_use. + +2017-06-08 Jan Hubicka + + * cfgrtl.c (cfg_layout_initialize): Check crtl->has_bb_partition + instead of flag_reorder_blocks_and_partition. + * dbxout.c (dbxout_function_end): Likewise. + * dwarf2out.c (gen_subprogram_die): Likewise. + * haifa-sched.c (sched_create_recovery_edges): Likewise. + * hw-doloop.c (reorg_loops): Likewise. + * varasm.c (assemble_start_function, + assemble_end_function): Likewise. + (decide_function_section): Do not check for + flag_reorder_blocks_and_partition. + +2017-06-08 Alexander Ivchenko + + * tree-chkp.c (chkp_get_hard_register_var_fake_base_address): + New function. + (chkp_get_hard_register_fake_addr_expr): Ditto. + (chkp_build_addr_expr): Add check for hard reg case. + (chkp_parse_array_and_component_ref): Ditto. + (chkp_find_bounds_1): Ditto. + (chkp_process_stmt): Don't generate bounds store for + hard reg case. + +2017-06-08 Jan Hubicka + + * predict.c (maybe_hot_bb_p): Do not check profile status. + (maybe_hot_edge_p): Likewise. + (probably_never_executed): Check for zero counts even if profile + is not read. + (unlikely_executed_edge_p): New function. + (unlikely_executed_stmt_p): New function. + (unlikely_executed_bb_p): New function. + (set_even_probabilities): Use unlikely predicates. + (combine_predictions_for_bb): Likewise. + (predict_paths_for_bb): Likewise. + (predict_paths_leading_to_edge): Likewise. + (determine_unlikely_bbs): New function. + (estimate_bb_frequencies): Use it. + (compute_function_frequency): Use zero counts even if profile is + not read. + * profile-count.h: Fix typo. + +2017-08-08 Julia Koval + + * config/i386/avx512bwintrin.h (_mm512_mask_cvtepi16_storeu_epi8, + _mm512_mask_cvtsepi16_storeu_epi8, + _mm512_mask_cvtusepi16_storeu_epi8): New intrinsics. + * config/i386/avx512vlbwintrin.h (_mm256_mask_cvtepi16_storeu_epi8, + _mm_mask_cvtsepi16_storeu_epi8, _mm256_mask_cvtsepi16_storeu_epi8, + _mm_mask_cvtusepi16_storeu_epi8, _mm256_mask_cvtusepi16_storeu_epi8, + _mm_mask_cvtepi16_storeu_epi8): New intrinsics. + * config/i386/i386-builtin-types.def (PV8Q, V8QI): New pointer type. + (VOID_FTYPE_PV32QI_V32HI_USI, VOID_FTYPE_PV8QI_V8HI_UQI, + VOID_FTYPE_PV16QI_V16HI_UHI): New function types. + * config/i386/i386-builtin.def (__builtin_ia32_pmovwb128mem_mask, + __builtin_ia32_pmovwb256mem_mask, __builtin_ia32_pmovswb128mem_mask, + __builtin_ia32_pmovswb256mem_mask, __builtin_ia32_pmovuswb128mem_mask, + __builtin_ia32_pmovuswb256mem_mask, + __builtin_ia32_pmovuswb512mem_mask, __builtin_ia32_pmovswb512mem_mask) + __builtin_ia32_pmovwb512mem_mask): New builtins. + +2017-08-08 Julia Koval + + PR target/73350,80862 + * config/i386/subst.md (round): Fix round pattern. + * config/i386/i386.c (ix86_erase_embedded_rounding): + Fix erasing rounding for the fixed pattern. + +2017-06-08 Jan Hubicka + + * cfgbuild.c (find_many_sub_basic_blocks): Fix thinko. + +2017-06-08 Martin Liska + + PR gcov-profile/80911 + * gcov.c (block_info::block_info): New constructor. + +2017-06-07 Carl Love + + * config/rs6000/rs6000-c: The return type of the following + built-in functions was implemented as int not long long. Fix sign + of return value for the unsigned version of vec_mulo and vec_mule. + vector unsigned long long vec_bperm (vector unsigned long long, + vector unsigned char) + vector signed long long vec_mule (vector signed int, + vector signed int) + vector unsigned long long vec_mule (vector unsigned int, + vector unsigned int) + vector signed long long vec_mulo (vector signed int, + vector signed int) + vector unsigned long long vec_mulo (vector unsigned int, + vector unsigned int) + * doc/extend.texi: Fix the documentation for the built-in + functions. + +2017-06-07 Carl Love + + PR target/80982 + * config/rs6000/altivec.md (double2): Fix the implementation of + for BE. + +2017-06-07 Carl Love + + * config/rs6000/altivec.md: Fix argument swizzle in vec_doublel + support, Generate doublehv for signed int/float for BE case only. + +2017-06-07 Alexander Monakov + + * doc/invoke.texi (mcx16): Rewrite. + +2017-06-07 Segher Boessenkool + + * config/rs6000/predicates.md (rs6000_nonimmediate_operand): Delete. + * config/rs6000/rs6000.md (*movsi_internal1, movsi_from_sf, + *mov_softfloat, and an anonymous splitter): Use + nonimmediate_operand instead of rs6000_nonimmediate_operand. + +2017-06-07 Segher Boessenkool + + * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE_ACC and + SPEFSCR registers. + * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto. + (enum rs6000_reg_type): Delete SPE_ACC_TYPE and SPEFSCR_REG_TYPE. + (rs6000_debug_reg_global): Adjust. + (rs6000_init_hard_regno_mode_ok): Adjust. + (rs6000_dbx_register_number): Adjust. + * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change to 115. + (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS): + Remove SPE_ACC and SPEFSCR. + (REG_ALLOC_ORDER): Ditto. + (FRAME_POINTER_REGNUM): Change to 111. + (enum reg_class): Remove the SPE_ACC and SPEFSCR registers. + (REG_CLASS_NAMES): Ditto. + (REG_CLASS_CONTENTS): Delete the SPE_ACC and SPEFSCR registers. + (REGISTER_NAMES): Ditto. + (ADDITIONAL_REG_NAMES): Ditto. + (rs6000_reg_names): Ditto. + * config/rs6000/rs6000.md: Renumber some register number + define_constants. + +2017-06-07 Segher Boessenkool + + * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE high + registers. + * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto. + * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change from 149 + to 117. + (DWARF_REG_TO_UNWIND_COLUMN): Do not define. + (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS): + Delete the SPE high registers. + (REG_ALLOC_ORDER): Ditto. + (enum reg_class): Remove SPE_HIGH_REGS. + (REG_CLASS_NAMES): Ditto. + (REG_CLASS_CONTENTS): Delete the SPE high registers. + (REGISTER_NAMES): Ditto. + (rs6000_reg_names): Ditto. + * doc/tm.texi.in: Remove SPE as example. + * doc/tm.texi: Regenerate. + +2017-06-07 Segher Boessenkool + + * config/rs6000/8540.md (ppc8540_brinc): Delete. + * config/rs6000/e500mc.md (e500mc_brinc): Delete. + * config/rs6000/e500mc64.md (e500mc64_brinc): Delete. + * config/rs6000/rs6000.md (type): Remove "brinc". + +2017-06-07 Segher Boessenkool + + * config.gcc (powerpc*-*-*): Don't add spe.h to extra_headers. + (powerpc*-linux*spe*): Use ${cpu_type} instead of rs6000. + * config/rs6000/linuxspe.h: Delete file. + * config/rs6000/rs6000.md: Don't include spe.md. + * config/rs6000/spe.h: Delete file. + * config/rs6000/spe.md: Delete file. + * config/rs6000/t-rs6000: Remove spe.md. + +2017-06-07 Segher Boessenkool + + * config/rs6000/predicates.md (reg_or_mem_operand): Reformat. + (reg_or_none500mem_operand): Delete. + * config/rs6000/rs6000.md (extendsfdf2): Use reg_or_mem_operand + instead of reg_or_none500mem_operand. + +2017-06-07 Segher Boessenkool + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete + handling of SPE flags. + * config/rs6000/rs6000.opt (-mspe, -mspe=no, -mspe=yes): Delete. + +2017-06-07 Segher Boessenkool + + * config/rs6000/rs6000-common.c (rs6000_handle_option): Remove + SPE ABI handling. + * config/rs6000/paired.md (paired_negv2sf2): Rename to negv2sf2. + (paired_absv2sf2, paired_addv2sf3, paired_subv2sf3, paired_mulv2sf3, + paired_divv2sf3): Similar. + * config/rs6000/predicates.md: Replace TARGET_SPE, TARGET_SPE_ABI, + SPE_VECTOR_MODE and SPE_HIGH_REGNO_P by 0; simplify. + * config/rs6000/rs6000-builtin.def: Delete RS6000_BUILTIN_E and + RS6000_BUILTIN_S. + Delete BU_SPE_1, BU_SPE_2, BU_SPE_3, BU_SPE_E, BU_SPE_P, and BU_SPE_X. + Rename the paired_* instruction patterns. + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Do not + define __SPE__. + * config/rs6000/rs6000-protos.h (invalid_e500_subreg): Delete. + * config/rs6000/rs6000.c: Delete RS6000_BUILTIN_E and RS6000_BUILTIN_S. + (struct rs6000_stack): Delete fields spe_gp_save_offset, spe_gp_size, + spe_padding_size, and spe_64bit_regs_used. Replace TARGET_SPE and + TARGET_SPE_ABI with 0, simplify. Replace SPE_VECTOR_MODE with + PAIRED_VECTOR_MODE. + (struct machine_function): Delete field spe_insn_chain_scanned_p. + (spe_func_has_64bit_regs_p): Delete. + (spe_expand_predicate_builtin): Delete. + (spe_expand_evsel_builtin): Delete. + (TARGET_DWARF_REGISTER_SPAN): Do not define. + (TARGET_MEMBER_TYPE_FORCES_BLK): Do not define. + (invalid_e500_subreg): Delete. + (rs6000_legitimize_address): Always force_reg op2 as well, for + paired single memory accesses. + (rs6000_member_type_forces_blk): Delete. + (rs6000_spe_function_arg): Delete. + (rs6000_expand_unop_builtin): Delete SPE handling. + (rs6000_expand_binop_builtin): Ditto. + (spe_expand_stv_builtin): Delete. + (bdesc_2arg_spe): Delete. + (spe_expand_builtin): Delete. + (spe_expand_predicate_builtin): Delete. + (spe_expand_evsel_builtin): Delete. + (rs6000_invalid_builtin): Remove RS6000_BTM_SPE handling. + (spe_init_builtins): Delete. + (spe_func_has_64bit_regs_p): Delete. + (savres_routine_name): Delete "info" parameter. Adjust callers. + (rs6000_emit_stack_reset): Ditto. + (rs6000_dwarf_register_span): Delete. + * config/rs6000/rs6000.h (TARGET_SPE_ABI, TARGET_SPE, + UNITS_PER_SPE_WORD, SPE_HIGH_REGNO_P, SPE_SIMD_REGNO_P, + SPE_VECTOR_MODE, RS6000_BTM_SPE, RS6000_BUILTIN_E, RS6000_BUILTIN_S): + Delete. + * config/rs6000/rs6000.md (FIRST_SPE_HIGH_REGNO, LAST_SPE_HIGH_REGNO): + Delete. + * config/rs6000/rs6000.opt (-mabi=spe, -mabi=no-spe): Delete. + * config/rs6000/spe.md: Delete every pattern that uses TARGET_SPE. + * config/rs6000/vector.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3, + mulv2sf3, divv2sf3): Delete expanders. + +2017-06-07 Segher Boessenkool + + config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Delete. + +2017-06-07 Segher Boessenkool + + * config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit): Delete. + * config/rs6000/rs6000.c: Ditto. + +2017-06-07 Segher Boessenkool + + * config/rs6000/predicated.md (rs6000_cbranch_operator): Delete. + * config/rs6000/rs6000.md: Replace rs6000_cbranch_operator by + comparison_operator. + +2017-06-07 Segher Boessenkool + + * config/rs6000/rs6000.c: Remove everything related to -mfloat-gprs. + * config/rs6000/rs6000.opt: Ditto. + * config/rs6000/t-rtems: Ditto. + +2017-06-07 Segher Boessenkool + + * config/rs6000/predicates.md: Replace TARGET_E500_DOUBLE and + TARGET_E500_SINGLE by 0, simplify. + * config/rs6000/rs6000.c: Ditto. + (rs6000_option_override_internal): Delete CHECK_E500_OPTIONS. + (spe_build_register_parallel): Delete. + * config/rs6000/rs6000.h: Delete TARGET_E500_SINGLE, + TARGET_E500_DOUBLE, and CHECK_E500_OPTIONS. + * config/rs6000/rs6000.md: Replace TARGET_E500_DOUBLE, + TARGET_E500_SINGLE, and by 0, simplify. + (E500_CONVERT): Delete. + * config/rs6000/spe.md: Remove many patterns and all define_constants. + +2017-06-07 Segher Boessenkool + + * config/rs6000/darwin.md: Replace TARGET_FPRS by 1 and simplify. + * config/rs6000/dfp.md: Ditto. + (negdd2, *negdd2_fpr): Merge. + (absdd2, *absdd2_fpr): Merge. + (negtd2, *negtd2_fpr): Merge. + (abstd2, *abstd2_fpr): Merge. + * config/rs6000/e500.h: Delete file. + * config/rs6000/predicates.md (rs6000_cbranch_operator): Replace + TARGET_FPRS by 1 and simplify. + * config/rs6000/rs6000-c.c: Ditto. + * config/rs6000/rs6000.c: Ditto. Also replace TARGET_SF_SPE and + TARGET_DF_SPE by 0. + * config/rs6000/rs6000.h: Ditto. Delete TARGET_SF_SPE and + TARGET_DF_SPE. + * config/rs6000/rs6000.md: Ditto. + (floatdidf2, *floatdidf2_fpr): Merge. + (move_from_CR_gt_bit): Delete. + * config/rs6000/spe.md: Replace TARGET_FPRS by 1 and simplify. + (E500_CR_IOR_COMPARE): Delete. + (All patterns that require !TARGET_FPRS): Delete. + * config/rs6000/vsx.md: Replace TARGET_FPRS by 1 and simplify. + +2017-06-07 Bin Cheng + + * passes.def (pass_iv_canon): Move before pass_loop_distribution. + +2017-06-07 Bin Cheng + + * graphds.c (add_edge): Intitialize edge's attached data. + (foll_in_subgraph, dfs_fst_edge, dfs_next_edge): New function + pointer parameter. Call pointed function on each edge during + graph traversing. Skip traversing the edge when the function + returns true. + (graphds_dfs, graphds_scc): Ditto. + (for_each_edge): New parameter. Pass the new parameter to callback + function. + * graphds.h (skip_edge_callback): New function pointer type. + (graphds_dfs, graphds_scc): New function pointer parameter. + (graphds_edge_callback, for_each_edge): New parameter. + +2017-06-07 Bin Cheng + + * tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Factor + out code checking if runtime alias check is possible to below ... + Call the new function. + * tree-data-ref.c (runtime_alias_check_p): ... to new function. + * tree-data-ref.h (runtime_alias_check_p): New decalaration. + +2017-06-07 Marek Polacek + + PR sanitizer/80932 + * fold-const.c (extract_muldiv_1) : Add + TYPE_OVERFLOW_WRAPS check. + +2017-06-07 Bin Cheng + + * tree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop + if versioning is required. + * tree-vect-loop.c (vect_analyze_loop_2): Merge niter check for loop + peeling with the check for versioning. + +2017-06-07 Bin Cheng + + * tree-vectorizer.h (vect_build_loop_niters): New parameter. + * tree-vect-loop-manip.c (vect_build_loop_niters): New parameter. + Set true to new parameter if new ssa variable is defined. + (vect_gen_vector_loop_niters): Refactor. Set range information + for the new vector loop bound variable. + (vect_do_peeling): Ditto. + +2017-06-07 Bin Cheng + + * tree-affine.c (ssa.h): Include header file. + (tree_to_aff_combination): Handle (T1)(X - CST) when inner type + has wrapping overflow behavior. + +2017-06-07 Bin Cheng + + * tree-affine.c (tree_to_aff_combination): Handle (T1)(X + X). + +2017-06-07 Bin Cheng + + (aff_combination_expand): Move (T1)(X *+- CST) simplification to ... + (tree_to_aff_combination): ... here. + +2017-06-07 Bin Cheng + + * tree-ssa-loop-ivopts.c (ivopts_estimate_reg_pressure): New + reg_pressure model function. + (ivopts_global_cost_for_size): Delete. + (determine_set_costs, iv_ca_recount_cost): Call new model function + ivopts_estimate_reg_pressure. + +2017-06-07 Tamar Christina + + * config/aarch64/aarch64.c (aarch64_rtx_costs): Make sdiv more + expensive than udiv. Remove floating point cases from mod. + +2017-06-07 Tamar Christina + + * config/arm/aarch-cost-tables.h (cortexa53_extra_cost): + Increase idiv cost. + +2017-06-07 Tamar Christina + + * config/aarch64/aarch64.md + (copysignsf3): Fix mask generation. + +2017-06-07 Jakub Jelinek + + * dumpfile.h (enum tree_dump_index): Rename TDI_generic to + TDI_gimple. + (class dump_manager): Add register_dumps method. + * dumpfile.c: Include langhooks.h. + (dump_files): Use 0 instead of 3/4/5 for TDI_{original,gimple,nested}. + (FIRST_AUTO_NUMBERED_DUMP): Decrease to 1. + (FIRST_ME_AUTO_NUMBERED_DUMP): Define. + (dump_manager::dump_register): Start with 512 entries instead of 32. + (dump_manager::register_dumps): New method. + * toplev.c (general_init): Instead of invoking register_dumps + langhook, invoke register_dumps method on the dump manager. + * gimplify.c (gimplify_function_tree): Use TDI_gimple instead of + TDI_generic. + +2017-06-07 Richard Sandiford + + * doc/md.texi: Clarify the restrictions on a define_insn condition. + Say that # requires an associated define_split to exist, and that + the define_split must be suitable for use after register allocation. + +2017-06-06 Jan Hubicka + + * cfgbuild.c (find_bb_boundaries): Initialize profile of split blocks. + (compute_outgoing_frequencies): Also initialize zero counts. + (find_many_sub_basic_blocks): Do not produce uninitialized profile + around loops; preserve more of profile when nothing changes. + +2017-06-06 Jim Wilson + + * config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs): Move to + here. + * config/arm/aarch-cost-tables.h (qdf24xx_extra_costs): From here. + * config/arm/arm-cpu-cdata.h: Regenerate. + * config/arm/arm-cpu-data.h, config/arm/arm-cpu.h: Likewise. + * config/arm/arm-tables.opt, config/arm/arm-tune.md: Likewise. + * config/arm/arm-cpus.in: Delete falkor and qdf24xx entries. + * config/arm/arm.c (arm_qdf24xx_tune): Delete. + * config/arm/bpabi.h (BE8_LINK_SPEC): Delete falkor and qdf24xx + support. + * config/arm/t-aprofile (MULTILIB_MATCHES): Delete falkor and qdf24xx + support. + * config/arm/t-rmprofile: Likewise. + * doc/invoke.texi (ARM Options): Drop falkor and qdf24xx support. + +2017-06-06 David S. Miller + + PR target/80968 + * config/sparc/sparc.c (sparc_expand_prologue): Emit frame + blockage if function uses alloca. + +2017-06-06 Maxim Kuvyrkov + + * tree-ssa-loop-prefetch.c (struct mem_ref_group, struct mem_ref): + New "uid" fields to hold pretty-print IDs of group and ref. + Memory references are now identified as : + instead of using [random] addresses. + (dump_mem_details): Simplify, no functional change. + (dump_mem_ref): Simplify and make output more concise. + Replace couple of fprintf's throughout code with calls to dump_mem_ref. + (find_or_create_group): Initialize group uid. + (record_ref): Initialize ref uid. Improve debug output. + (prune_group_by_reuse, should_issue_prefetch_p,) + (should_issue_prefetch_p, schedule_prefetches, issue_prefetch_ref,) + (mark_nontemporal_store, determine_loop_nest_reuse): + Improve debug output. + +2017-06-06 Maxim Kuvyrkov + + * dbgcnt.def (prefetch): New debug counter. + * tree-ssa-loop-prefetch.c (dbgcnt.h): New include. + (schedule_prefetches): Stop issueing prefetches if debug counter + tripped. + +2017-06-06 Tom de Vries + + * doc/sourcebuild.texi (Testsuites, C Language Testsuites, + gcc.c-torture/compile): Remove mention of NO_LABEL_VALUES in fixme. + +2017-06-06 Kyrylo Tkachov + + * config/aarch64/atomics.md (atomic_compare_and_swap expander): + Use aarch64_reg_or_zero predicate for operand 4. + (aarch64_compare_and_swap define_insn_and_split): + Use aarch64_reg_or_zero predicate for operand 3. Add 'Z' constraint. + (aarch64_store_exclusive): Likewise for operand 2. + +2017-06-06 Thomas Preud'homme + + * config/arm/arm.c (arm_compute_save_reg_mask): Rename into ... + (arm_compute_save_core_reg_mask): This. + (thumb1_compute_save_reg_mask): Rename into ... + (thumb1_compute_save_core_reg_mask): This. + (arm_compute_save_reg0_reg12_mask): Adapt comment. + (arm_compute_frame_layout): Likewise. + +2017-06-06 Richard Biener + + PR tree-optimization/80974 + * tree-ssa-sccvn.c (set_ssa_val_to): Do not change but only + keep or clear leaders SSA info. + +2017-06-06 Tom de Vries + + * config/nvptx/nvptx.c (split_mode_p): New function. + (nvptx_declare_function_name, nvptx_print_operand): Use split_mode_p. + +2017-06-06 Tom de Vries + + * config/nvptx/nvptx.c (nvptx_print_operand): Use maybe_split_mode. + +2017-06-06 Jan Hubicka + + PR bootstrap/80978 + * tree-cfg.c (execute_fixup_cfg): Fix condition on when to rescale + profile. + +2017-06-06 Jan Hubicka + + * shrink-wrap.c (handle_simple_exit): Update profile. + (try_shrink_wrapping): Upate profile. + +2017-06-06 Jan Hubicka + + * predict.c (tree_estimate_probability_bb): Add LOCAL_ONLY. + (tree_guess_outgoing_edge_probabilities): New. + * predict.h (tree_guess_outgoing_edge_probabilities): Declare. + * tree-cfg.c (gimple_find_sub_bbs): Propagate profile. + +2017-06-06 Jan Hubicka + + * ipa-split.c (split_function): Initialize return bb profile. + +2017-06-06 Jan Hubicka + + * profile.c (compute_branch_probabilities): Also initialize + EXIT_BLOCK profile. + +2017-06-06 Richard Biener + + PR tree-optimization/80928 + * tree-vect-loop.c (vect_update_vf_for_slp): Amend dumps. + (vect_analyze_loop_operations): Properly guard analysis for + pure SLP case. + (vect_transform_loop): Likewise. + (vect_analyze_loop_2): Also reset SLP type on PHIs. + (vect_model_induction_cost): Do not cost for pure SLP. + (vectorizable_induction): Pass in SLP node, implement SLP vectorization + of induction in inner loop vectorization. + * tree-vect-slp.c (vect_create_new_slp_node): Handle PHIs. + (vect_get_and_check_slp_defs): Handle vect_induction_def. + (vect_build_slp_tree): Likewise. Handle PHIs as terminating the + recursion. + (vect_analyze_slp_cost_1): Cost induction. + (vect_detect_hybrid_slp_stmts): Handle PHIs. + (vect_get_slp_vect_defs): Likewise. + * tree-vect-stmts.c (vect_analyze_stmt): Handle induction. + (vect_transform_stmt): Handle SLP reductions. + * tree-vectorizer.h (vectorizable_induction): Adjust. + +2017-06-05 Michael Meissner + + * config/rs6000/rs6000.c (make_resolver_func): Update + init_lowered_empty_function call. + +2017-06-05 Bernd Edlinger + + * doc/invoke.texi: Document the -fprofile-abs-path option. + * common.opt (fprofile-abs-path): New option. + * gcov-io.h (gcov_write_filename): Declare. + * gcov-io.c (gcov_write_filename): New function. + * coverage.c (coverage_begin_function): Use gcov_write_filename. + * profile.c (output_location): Likewise. + +2017-06-05 Jan Hubicka + + * shring-wrap.c: Revert accidental commit. + +2017-06-05 Volker Reichelt + + * doc/invoke.texi (-Wduplicated-branches): Add to warning list. + +2017-06-05 Jan Hubicka + + * cfgexpand.c (expand_gimple_tailcall): Initialize profile of + new edge. + * ipa-inline.c (want_inline_self_recursive_call_p): Watch for missing + profile in callgraph edge. + * profile-count.h (apply_probability): If THIS is 0, then result is 0 + (apply_scale): Likewise. + * tree-inline.c (copy_bb, copy_edges_for_bb, copy_cfg_body): + Also scale profile when inlining function with zero profile. + (initialize_cfun): Update exit block profile even when it is zero. + * tree-ssa-threadupdate.c (clear_counts_path): Handle correctly case + when profile is read. + +2017-06-05 Michael Meissner + + * config/rs6000/rs6000.c (toplevel): Include attribs.h. + (CLONE_*): New constants to define the processors we can generate + code for with the target_clone attribute. + (rs6000_clone_map): New array to identify which clone processors + the current program is running on. + (TARGET_COMPARE_VERSION_PRIORITY): Define to enable the + target_clone attribute. + (TARGET_GENERATE_VERSION_DISPATCHER_BODY): Likewise. + (TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): Likewise. + (TARGET_OPTION_FUNCTION_VERSIONS): Likewise. + (cpu_expand_builtin): Add support for target_clone attribute. + (rs6000_valid_attribute_p): Allow "default" attribute. + (get_decl_name): New debug function to simplify printing the + current function name in debugging statements. + (rs6000_clone_priority): New functions to support the target_clone + attribute, and be able to generate code to switch between ISA 2.05 + through ISA 3.0 (power6 through power9). + (rs6000_compare_version_priority): Likewise. + (rs6000_get_function_versions_dispatcher): Likewise. + (make_resolver_func): Likewise. + (add_condition_to_bb): Likewise. + (dispatch_function_versions): Likewise. + (rs6000_generate_version_dispatcher_body): Likewise. + (rs6000_can_inline_p): Call get_decl_name for debugging usage. + (fusion_gpr_load_p): Fix a spacing issue. + * doc/extend.texi (Common Function Attributes): Document that the + PowerPC supports the target_clone attribute. + +2017-06-05 Thomas Preud'homme + + * config/arm/arm.h: explain F symbol found in description of ARM + register allocation in its legend. + +2017-06-05 Jan Hubicka + + * config/mips/frame-header-opt.c: Include profile-count.h. + * config/riscv/riscv.c: Include profile-count.h + +2017-06-05 Jan Hubicka + + * tree-ssa-loop-im.c (execute_sm_if_changed): Add FLAG_BBS parameter; + update profile. + (sm_set_flag_if_changed): Add bbs field. + (execute_sm_if_changed_flag_set): Pass BBS. + (execute_sm): Update. + +2017-06-05 Kyrylo Tkachov + + * config/aarch64/aarch64-simd.md (aarch64_store_lane0): + New pattern. + +2017-06-05 Kyrylo Tkachov + + * config/aarch64/aarch64.md (sub3_compare1_imm): New define_insn. + (peephole2): New peephole2 to emit the above. + * config/aarch64/predicates.md (aarch64_sub_immediate): New predicate. + +2017-06-05 Kyrylo Tkachov + + * config/aarch64/aarch64.c (define_peephole2 above + *sub__): New peephole. + +2017-05-23 Jan Hubicka + + * config/i386/i386.c (make_resolver_func): Update. + * Makefile.in: Add profile-count.h and profile-count.o + * auto-profile.c (afdo_indirect_call): Update to new API. + (afdo_set_bb_count): Update. + (afdo_propagate_edge): Update. + (afdo_propagate_circuit): Update. + (afdo_calculate_branch_prob): Update. + (afdo_annotate_cfg): Update. + * basic-block.h: Include profile-count.h + (struct edge_def): Turn count to profile_count. + (struct basic_block_def): Likewie. + (REG_BR_PROB_BASE): Move to profile-count.h + (RDIV): Move to profile-count.h + * bb-reorder.c (max_entry_count): Turn to profile_count. + (find_traces): Update. + (rotate_loop):Update. + (connect_traces):Update. + (sanitize_hot_paths):Update. + * bt-load.c (migrate_btr_defs): Update. + * cfg.c (RDIV): Remove. + (init_flow): Use alloc_block. + (alloc_block): Uninitialize count. + (unchecked_make_edge): Uninitialize count. + (check_bb_profile): Update. + (dump_edge_info): Update. + (dump_bb_info): Update. + (update_bb_profile_for_threading): Update. + (scale_bbs_frequencies_int): Update. + (scale_bbs_frequencies_gcov_type): Update. + (scale_bbs_frequencies_profile_count): New. + * cfg.h (update_bb_profile_for_threading): Update. + (scale_bbs_frequencies_profile_count): Declare. + * cfgbuild.c (compute_outgoing_frequencies): Update. + (find_many_sub_basic_blocks): Update. + * cfgcleanup.c (try_forward_edges): Update. + (try_crossjump_to_edge): Update. + * cfgexpand.c (expand_gimple_tailcall): Update. + (construct_exit_block): Update. + * cfghooks.c (verify_flow_info): Update. + (dump_bb_for_graph): Update. + (split_edge): Update. + (make_forwarder_block): Update. + (duplicate_block): Update. + (account_profile_record): Update. + * cfgloop.c (find_subloop_latch_edge_by_profile): Update. + (get_estimated_loop_iterations): Update. + * cfgloopanal.c (expected_loop_iterations_unbounded): Update. + (single_likely_exit): Update. + * cfgloopmanip.c (scale_loop_profile): Update. + (loopify): Update. + (set_zero_probability): Update. + (lv_adjust_loop_entry_edge): Update. + * cfgrtl.c (force_nonfallthru_and_redirect): Update. + (purge_dead_edges): Update. + (rtl_account_profile_record): Update. + * cgraph.c (cgraph_node::create): Uninitialize count. + (symbol_table::create_edge): Uninitialize count. + (cgraph_update_edges_for_call_stmt_node): Update. + (cgraph_edge::dump_edge_flags): Update. + (cgraph_node::dump): Update. + (cgraph_edge::maybe_hot_p): Update. + * cgraph.h: Include profile-count.h + (create_clone), create_edge, create_indirect_edge): Update. + (cgraph_node): Turn count to profile_count. + (cgraph_edge0: Likewise. + (make_speculative, clone): Update. + (create_edge): Update. + (init_lowered_empty_function): Update. + * cgraphclones.c (cgraph_edge::clone): Update. + (duplicate_thunk_for_node): Update. + (cgraph_node::create_clone): Update. + * cgraphunit.c (cgraph_node::analyze): Update. + (cgraph_node::expand_thunk): Update. + * final.c (dump_basic_block_info): Update. + * gimple-streamer-in.c (input_bb): Update. + * gimple-streamer-out.c (output_bb): Update. + * graphite.c (print_global_statistics): Update. + (print_graphite_scop_statistics): Update. + * hsa-brig.c: Include basic-block.h. + * hsa-dump.c: Include basic-block.h. + * hsa-gen.c (T sum_slice): Update. + (convert_switch_statements):Update. + * hsa-regalloc.c: Include basic-block.h. + * ipa-chkp.c (chkp_produce_thunks): Update. + * ipa-cp.c (struct caller_statistics): Update. + (init_caller_stats): Update. + (gather_caller_stats): Update. + (ipcp_cloning_candidate_p): Update. + (good_cloning_opportunity_p): Update. + (get_info_about_necessary_edges): Update. + (dump_profile_updates): Update. + (update_profiling_info): Update. + (update_specialized_profile): Update. + (perhaps_add_new_callers): Update. + (decide_about_value): Update. + (ipa_cp_c_finalize): Update. + * ipa-devirt.c (struct odr_type_warn_count): Update. + (struct decl_warn_count): Update. + (struct final_warning_record): Update. + (possible_polymorphic_call_targets): Update. + (ipa_devirt): Update. + * ipa-fnsummary.c (redirect_to_unreachable): Update. + * ipa-icf.c (sem_function::merge): Update. + * ipa-inline-analysis.c (do_estimate_edge_time): Update. + * ipa-inline.c (compute_uninlined_call_time): Update. + (compute_inlined_call_time): Update. + (want_inline_small_function_p): Update. + (want_inline_self_recursive_call_p): Update. + (edge_badness): Update. + (lookup_recursive_calls): Update. + (recursive_inlining): Update. + (inline_small_functions): Update. + (dump_overall_stats): Update. + (dump_inline_stats): Update. + * ipa-profile.c (ipa_profile_generate_summary): Update. + (ipa_propagate_frequency): Update. + (ipa_profile): Update. + * ipa-prop.c (ipa_make_edge_direct_to_target): Update. + * ipa-utils.c (ipa_merge_profiles): Update. + * loop-doloop.c (doloop_modify): Update. + * loop-unroll.c (report_unroll): Update. + (unroll_loop_runtime_iterations): Update. + * lto-cgraph.c (lto_output_edge): Update. + (lto_output_node): Update. + (input_node): Update. + (input_edge): Update. + (merge_profile_summaries): Update. + * lto-streamer-in.c (input_cfg): Update. + * lto-streamer-out.c (output_cfg): Update. + * mcf.c (create_fixup_graph): Update. + (adjust_cfg_counts): Update. + (sum_edge_counts): Update. + * modulo-sched.c (sms_schedule): Update. + * postreload-gcse.c (eliminate_partially_redundant_load): Update. + * predict.c (maybe_hot_count_p): Update. + (probably_never_executed): Update. + (dump_prediction): Update. + (combine_predictions_for_bb): Update. + (propagate_freq): Update. + (handle_missing_profiles): Update. + (counts_to_freqs): Update. + (rebuild_frequencies): Update. + (force_edge_cold): Update. + * predict.h: Include profile-count.h + (maybe_hot_count_p, counts_to_freqs): UPdate. + * print-rtl-function.c: Do not include cfg.h + * print-rtl.c: Include basic-block.h + * profile-count.c: New file. + * profile-count.h: New file. + * profile.c (is_edge_inconsistent): Update. + (correct_negative_edge_counts): Update. + (is_inconsistent): Update. + (set_bb_counts): Update. + (read_profile_edge_counts): Update. + (compute_frequency_overlap): Update. + (compute_branch_probabilities): Update; Initialize and deinitialize + gcov_count tables. + (branch_prob): Update. + * profile.h (bb_gcov_counts, edge_gcov_counts): New. + (edge_gcov_count): New. + (bb_gcov_count): New. + * shrink-wrap.c (try_shrink_wrapping): Update. + * tracer.c (better_p): Update. + * trans-mem.c (expand_transaction): Update. + (ipa_tm_insert_irr_call): Update. + (ipa_tm_insert_gettmclone_call): Update. + * tree-call-cdce.c: Update. + * tree-cfg.c (gimple_duplicate_sese_region): Update. + (gimple_duplicate_sese_tail): Update. + (gimple_account_profile_record): Update. + (execute_fixup_cfg): Update. + * tree-inline.c (copy_bb): Update. + (copy_edges_for_bb): Update. + (initialize_cfun): Update. + (freqs_to_counts): Update. + (copy_cfg_body): Update. + (expand_call_inline): Update. + * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update. + * tree-ssa-loop-ivcanon.c (unloop_loops): Update. + (try_unroll_loop_completely): Update. + (try_peel_loop): Update. + * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update. + * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Update. + * tree-ssa-loop-split.c (connect_loops): Update. + * tree-ssa-loop-unswitch.c (hoist_guard): Update. + * tree-ssa-reassoc.c (branch_fixup): Update. + * tree-ssa-tail-merge.c (replace_block_by): Update. + * tree-ssa-threadupdate.c (create_block_for_threading): Update. + (compute_path_counts): Update. + (update_profile): Update. + (recompute_probabilities): Update. + (update_joiner_offpath_counts): Update. + (estimated_freqs_path): Update. + (freqs_to_counts_path): Update. + (clear_counts_path): Update. + (ssa_fix_duplicate_block_edges): Update. + (duplicate_thread_path): Update. + * tree-switch-conversion.c (case_bit_test_cmp): Update. + (struct switch_conv_info): Update. + * tree-tailcall.c (decrease_profile): Update. + * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update. + * tree-vect-loop.c (scale_profile_for_vect_loop): Update. + * value-prof.c (check_counter): Update. + (gimple_divmod_fixed_value): Update. + (gimple_mod_pow2): Update. + (gimple_mod_subtract): Update. + (gimple_ic_transform): Update. + (gimple_stringop_fixed_value): Update. + * value-prof.h (gimple_ic): Update. + +2017-06-02 Carl Love + + * config/rs6000/rs6000-c: Add support for built-in functions + vector double vec_doublee (vector signed int); + vector double vec_doublee (vector unsigned int); + vector double vec_doublee (vector float); + vector double vec_doubleh (vector signed int); + vector double vec_doubleh (vector unsigned int); + vector double vec_doubleh (vector float); + vector double vec_doublel (vector signed int); + vector double vec_doublel (vector unsigned int); + vector double vec_doublel (vector float); + vector double vec_doubleo (vector signed int); + vector double vec_doubleo (vector unsigned int); + vector double vec_doubleo (vector float);. + * config/rs6000/rs6000-builtin.def: Add definitions for DOUBLEE, + DOUBLEO, DOUBLEH, DOUBLEL, UNS_DOUBLEO, UNS_DOUBLEE, UNS_DOUBLEH, + UNS_DOUBLEL. + * config/rs6000/altivec.md: Add code generator for doublee2, + unsdoubleev4si2, doubleo2, unsdoubleov4si2, doubleh2, + unsdoublehv4si2, doublel2, unsdoublelv4si2, add mode attribute + VS_sxwsp. + * config/rs6000/altivec.h: Add define for vec_doublee, vec_doubleo, + vec_doublel, vec_doubleh. + * doc/extend.texi: Update the built-in documentation file for the + new built-in functions. + +2017-06-02 David Malcolm + + PR jit/80954 + * ipa-inline-analysis.c (free_growth_caches): Set + edge_removal_hook_holder to NULL after removing it. + +2017-06-02 Sudakshina Das + + * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_SWP for + comparision with zero. + +2017-06-02 Will Schmidt + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling + for early expansion of vec_min and vec_max builtins. + (builtin_function_type): Add min/max unsigned variants to those + identified as having unsigned arguments. + +2017-06-02 Olivier Hainque + + * config/vx-common.h (DWARF_UNWIND_INFO): Switch #define to 1. + +2017-06-02 Kyrylo Tkachov + + * config/aarch64/aarch64-simd.md (*aarch64_simd_vec_copy_lane): + Use VALL_F16 iterator rather than VALL. + +2017-06-02 Kyrylo Tkachov + + * config/aarch64/aarch64.c (aarch64_split_compare_and_swap): + Emit CBNZ inside loop when doing a strong exchange and comparing + against zero. Generate the CC flags after the loop. + +2017-06-02 David Edelsohn + + * dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE_STR): New. + (dl_section_ref): New. + (dwarf2out_finish): Copy debug_line_section_label to dl_section_ref. + On AIX, append an expression to subtract the size of the + section length to dl_section_ref. + +2017-06-02 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling + for early expansion of vector absolute builtins. + +2017-06-02 Richard Biener + + * tree-vect-slp.c (vect_detect_hybrid_slp_2): Match up + what we consider a relevant use stmt with vect_detect_hybrid_slp_stmts. + +2017-06-02 Richard Biener + + PR tree-optimization/80948 + * tree-tailcall.c (find_tail_calls): Track stmts to move in + stmt order as well. + +2017-06-02 Richard Biener + + * tree-vect-loop.c (vect_analyze_loop_operations): Not relevant + PHIs are ok. + * tree-vect-stmts.c (process_use): Do not mark backedge defs + for inductions as relevant. + +2017-06-02 Richard Biener + + * tree-vect-loop.c (get_initial_def_for_induction): Inline into ... + (vectorizable_induction): ... this. Remove dead code. + +2017-06-02 Eric Botcazou + + * builtins. (expand_builtin_alloca): Remove second parameter and + infer its value from the first parameter instead. + (expand_builtin) : Adjust call to above. + +2017-06-02 Jakub Jelinek + + PR rtl-optimization/80903 + * loop-doloop.c (add_test): Unshare sequence. + +2017-06-02 Bernd Edlinger + + * doc/invoke.texi: Document the -Wsizeof-pointer-div warning. + +2017-06-01 Bernd Edlinger + + * config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): Make + static. + (xlogue_layout::get_stack_space_used, xlogue_layout::s_instances, + xlogue_layout::get_instance, logue_layout::xlogue_layout, + sp_valid_at, fp_valid_at, choose_basereg): Formatting. + (xlogue_layout::get_stub_rtx): Make static. + (xlogue_layout::get_stub_name): Avoid const-cast, make static. + (xlogue_layout::compute_stub_managed_regs): Rename to... + (xlogue_layout::count_stub_managed_regs): ...this. + (xlogue_layout::is_stub_managed_reg): New function. + (xlogue_layout::m_stub_names): Rename to... + (xlogue_layout::s_stub_names): ...this, make static. + (xlogue_layout::STUB_INDEX_OFFSET, xlogue_layout::MIN_REGS, + xlogue_layout::MAX_REGS, xlogue_layout::MAX_EXTRA_REGS, + xlogue_layout::VARIANT_COUNT, xlogue_layout::STUB_NAME_MAX_LEN, + xlogue_layout::s_stub_names): Instantiate statics. + (stub_managed_regs): Remove. + (ix86_save_reg): Use xlogue_layout::compute_stub_managed_regs. + (disable_call_ms2sysv_xlogues): Rename to... + (warn_once_call_ms2sysv_xlogues): ...this, and warn only once. + (ix86_initial_elimination_offset, ix86_expand_call): Fix call_ms2sysv + warning logic. + (ix86_static_chain): Make sure that ix86_static_chain_on_stack can't + change after reload_completed. + (ix86_can_use_return_insn_p): Use the ix86_frame data structure + directly. + (ix86_expand_prologue): Likewise. + (ix86_expand_epilogue): Likewise. + (ix86_expand_split_stack_prologue): Likewise. + (ix86_compute_frame_layout): Remove frame parameter ... + (TARGET_COMPUTE_FRAME_LAYOUT): ... and export it as a target hook. + (ix86_finalize_stack_realign_flags): Call ix86_compute_frame_layout + only if necessary. + (ix86_init_machine_status): Don't set use_fast_prologue_epilogue_nregs. + (ix86_frame): Move from here ... + * config/i386/i386.h (ix86_frame): ... to here. + (machine_function): Remove use_fast_prologue_epilogue_nregs, cache the + complete ix86_frame data structure instead. Remove some_ld_name. + +2017-06-01 Pierre-Marie de Rodat + + * dwarf2out.c (dwarf2out_late_global_decl): Add locations for + symbols that hold a DECL_VALUE_EXPR. + +2017-06-01 Martin Jambor + + PR tree-optimization/80898 + * tree-sra.c (process_subtree_disqualification): Removed. + (disqualify_candidate): Do not acll + process_subtree_disqualification. + (subtree_mark_written_and_enqueue): New function. + (propagate_all_subaccesses): Set grp_write of LHS subtree if the + RHS has been disqualified and re-queue LHS if necessary. Apart + from that, ignore disqualified RHS. + +2017-06-01 Andreas Krebbel + + * config/s390/s390.c (s390_emit_epilogue): Disable early return + address fetch for z10 or later. + +2017-06-01 Claudiu Zissulescu + + * config/arc/arc.md (tst_movb): Add guard when splitting. + +2017-06-01 Claudiu Zissulescu + + * config/arc/arc.c (arc_can_eliminate): Test against + arc_frame_pointer_needed. + +2017-06-01 Claudiu Zissulescu + + * config/arc/arc.c (arc_expand_prologue): Emit a special barrier + to prevent store reordering. + * config/arc/arc.md (UNSPEC_ARC_STKTIE): Define. + (type): Add block type. + (stack_tie): Define special instruction to be used in + expand_prologue. + +2017-06-01 Claudiu Zissulescu + + * config/arc/arc.md (commutative_binary_comparison): Remove 'I' + constraint. It is not valid for the pattern. + (noncommutative_binary_comparison): Likewise. + +2017-06-01 Claudiu Zissulescu + + * config/arc/simdext.md (movv2hi_insn): Change predicate to avoid + scaled addresses. + +2017-06-01 Claudiu Zissulescu + + * config/arc/arc.c (arc_conditional_register_usage): Allow r30 to + be used by the reg-alloc. + +2017-06-01 Claudiu Zissulescu + + * config/arc/arc.md (mulsi3): Avoid use of hard registers before + reg-alloc when having mul64 or mul32x16 instructions. + (mulsidi3): Likewise. + (umulsidi3): Likewise. + (mulsi32x16): New pattern. + (mulsi64): Likewise. + (mulsidi64): Likewise. + (umulsidi64): Likewise. + (MUL32x16_REG): Define. + (mul64_600): Use MUL32x16_REG. + (mac64_600): Likewise. + (umul64_600): Likewise. + (umac64_600): Likewise. + +2017-06-01 Claudiu Zissulescu + + * config/arc/arc.md (mulsi3_700): Make it commutative. + +2017-06-01 Jose E. Marchesi + + * config/sparc/sparc.md (*zero_extendsidi2_insn_sp64): Set insn + type for movstouw. + (*sign_extendsidi2_insn): Likewise for movstosw. + +2017-06-01 Pierre-Marie de Rodat + + * dwarf2out.c (get_discr_value): Call the get_debug_type hook on + the type of the input discriminant value. Convert the + discriminant value of signedness vary. + +2017-06-01 Volker Reichelt + + * doc/invoke.texi (-Wcatch-value): Document new shortcut. + Add to -Wall section. + +2017-06-01 Richard Biener + + PR middle-end/66313 + * fold-const.c (fold_plusminus_mult_expr): If the factored + factor may be zero use a wrapping type for the inner operation. + * tree-tailcall.c (independent_of_stmt_p): Pass in to_move bitmap + and handle moved defs. + (process_assignment): Properly guard the unary op case. Return a + tri-state indicating that moving the stmt before the call may allow + to continue. Pass through to_move. + (find_tail_calls): Handle moving unrelated defs before + the call. + +2017-05-31 Segher Boessenkool + + PR target/80618 + * config/rs6000/vector.md (*vector_uneq): Write the nor in the + splitter result in the canonical way. + +2017-05-31 Uros Bizjak + + * config/i386/i386.md (*zero_extendsidi2): Enable alternative (?r, *Yj) + also for 32bit target. Update insn attributes. + (zero-extendsidi2 splitter): Allow all registers for operand 1. + +2017-05-31 Sebastian Peryt + + * config/i386/avx512fintrin.h (_mm_mask_max_sd) + (_mm_maskz_max_sd, _mm_mask_max_ss, _mm_maskz_max_ss) + (_mm_mask_min_sd, _mm_maskz_min_sd, _mm_mask_min_ss) + (_mm_maskz_min_ss): New intrinsics. + +2017-05-31 Martin Liska + + * tree-vect-loop.c (vect_create_epilog_for_reduction): + Change comment style to one we normally use. + (vectorizable_reduction): Likewise. + (vectorizable_induction): Likewise. + * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise. + (vectorizable_call): Likewise. + (vectorizable_simd_clone_call): Likewise. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_store): Likewise. + (vectorizable_load): Likewise. + * tree-vectorizer.h: Likewise. + +2017-05-31 Alexander Monakov + + * passes.c (emergency_dump_function): New. + * tree-pass.h (emergency_dump_function): Declare. + * plugin.c (plugins_internal_error_function): Remove. + * plugin.h (plugins_internal_error_function): Remove declaration. + * toplev.c (internal_error_function): New static function. Use it... + (general_init): ...here. + +2017-05-31 Graham Markall + + * config/arc/arc.c (arc_print_operand): Handle constant operands. + (arc_rtx_costs): Add costs for new patterns. + * config/arc/arc.md: Additional *add_n and *sub_n patterns. + * config/arc/predicates.md: Add _1_2_3_operand predicate. + +2017-05-31 Richard Sandiford + + * tree-ssa-strlen.c (get_next_strinfo): New function. + (get_stridx_plus_constant): Use it. + (zero_length_string): Likewise. + (adjust_related_strinfos): Likewise. + (adjust_last_stmt): Likewise. + +2017-05-31 Richard Biener + + PR target/80880 + * config/i386/i386.c (ix86_expand_builtin): Remove assert + for arg being an SSA name when expanding IX86_BUILTIN_BNDRET. + +2017-05-31 Richard Sandiford + + * tree-vect-data-refs.c (vect_find_same_alignment_drs): Remove + loop_vinfo argument and use of dependence distance vectors. + Check instead whether the two references differ only in their + initial value and assume that they have the same alignment if the + difference is a multiple of the vector alignment. + (vect_analyze_data_refs_alignment): Update call accordingly. + +2017-05-31 Martin Liska + + PR target/79155 + * config/i386/cpuid.h: Fix typo in a comment in cpuid.h. + +2017-05-31 Bin Cheng + + * tree-vect-loop-manip.c (create_intersect_range_checks_index) + (create_intersect_range_checks): Move from ... + * tree-data-ref.c (create_intersect_range_checks_index) + (create_intersect_range_checks): ... to here. + (create_runtime_alias_checks): New function factored from ... + * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): ... + here. Call above function. + * tree-data-ref.h (create_runtime_alias_checks): New function. + +2017-05-31 Bin Cheng + + * tree-data-ref.c (prune_runtime_alias_test_list): Relax minimal + segment length for dr_b and compute it in wide_int. + +2017-05-31 Richard Biener + + PR tree-optimization/80906 + * graphite-isl-ast-to-gimple.c (copy_loop_close_phi_nodes): Get + and pass through iv_map. + (copy_bb_and_scalar_dependences): Adjust. + (translate_pending_phi_nodes): Likewise. + (copy_loop_close_phi_args): Handle code-generating IVs instead + of ICEing. + +2017-05-30 David Malcolm + + * diagnostic-color.c (color_dict): Add "type-diff". + (parse_gcc_colors): Update comment. + * doc/invoke.texi (Diagnostic Message Formatting Options): Add + -fdiagnostics-show-template-tree and -fno-elide-type. + (GCC_COLORS): Add type-diff to example. + (type-diff=): New. + (-fdiagnostics-show-template-tree): New. + (-fno-elide-type): New. + * pretty-print.c (pp_format): Pass quote and formatters[argno] to + the pp_format_decoder callback. Call any m_format_postprocessor's + "handle" method. + (pretty_printer::pretty_printer): Initialize + m_format_postprocessor. + (pretty_printer::~pretty_printer): Delete any + m_format_postprocessor. + * pretty-print.h (printer_fn): Add bool and const char ** parameters. + (class format_postprocessor): New class. + (struct pretty_printer::format_decoder): Document the new parameters. + (struct pretty_printer::m_format_postprocessor): New field. + * tree-diagnostic.c (default_tree_printer): Update for new + bool and const char ** params. + * tree-diagnostic.h (default_tree_printer): Likewise. + +2017-05-30 Segher Boessenkool + + * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): Delete. + (lwa_operand): Delete rs6000_gen_cell_microcode test. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete + rs6000_gen_cell_microcode code. + (rs6000_final_prescan_insn): Delete. + (rs6000_opt_vars): Delete the "gen-cell-microcode" and + "warn-cell-microcode" entries. + * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Delete. + * config/rs6000/rs6000.md: Delete rs6000_gen_cell_microcode tests + throughout. Change cc_reg_not_micro_cr0_operand to + cc_reg_not_cr0_operand throughout. + (*extendhi2_noload): Delete. + * config/rs6000/rs6000.opt (mgen-cell-microcode): Replace by stub. + (mwarn-cell-microcode): Delete. + * doc/invoke.texi (RS/6000 and PowerPC Options): Delete + -mgen-cell-microcode and -mwarn-cell-microcode. + +2017-05-30 Uros Bizjak + + PR target/80833 + * config/i386/constraints.md (Yd): New constraint. + (Ye): Ditto. + * config/i386/i386.md (*movti_internal): Add (?r, Ye) + and (?Yd, r) alternatives. Update insn attributes. + * config/i386/i386.md (*movti_internal): Add (?r, *Ye) + and (?*Yd, r) alternatives. Update insn attributes. + (double-mode inter-unit splitters): Add new GR<->XMM splitters. + +2017-05-30 Pierre-Marie de Rodat + + * gimplify.c (gimplify_modify_expr): Don't create a + DECL_DEBUG_EXPR link if *FROM_P does not belong to the current + function. + +2017-05-30 Wilco Dijkstra + + * config/arm/arm-builtins.c (arm_expand_builtin): Remove const. + +2017-05-30 Richard Biener + + * tree-vectorizer.h (struct _stmt_vec_info): Add reduc_type + and reduc_def fields. + (STMT_VINFO_REDUC_TYPE): New define. + (STMT_VINFO_REDUC_DEF): Likewise. + (vect_force_simple_reduction): Adjust prototype. + * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Adjust. + (vect_is_simple_reduction): Remove check_reduction argument. + (vect_force_simple_reduction): Adjust and set + STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF. + (vectorizable_reduction): Do not re-do reduction analysis + but use STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF. + * tree-parloops.c (gather_scalar_reductions): Adjust. + +2017-05-30 Richard Biener + + PR middle-end/80901 + * cfgexpand.c (expand_gimple_cond): Match up loop fixup with + split_edge code. + +2017-05-24 Robin Dapp + + * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): + Introduce unknown_misalignment parameter and remove vf. + (vect_peeling_hash_get_lowest_cost): + Pass unknown_misalignment parameter. + (vect_enhance_data_refs_alignment): + Fix unsupportable data ref treatment. + +2017-05-30 Robin Dapp + + * tree-vect-data-refs.c (vect_get_data_access_cost): + Workaround for SLP handling. + (vect_enhance_data_refs_alignment): + Compute costs for doing no peeling at all, compare to the best + peeling costs so far and avoid peeling if cheaper. + +2017-05-30 Robin Dapp + + * tree-vect-data-refs.c (vect_peeling_hash_choose_best_peeling): + Return peeling info and set costs to zero for unlimited cost + model. + (vect_enhance_data_refs_alignment): Also inspect all datarefs + with unknown misalignment. Compute and costs for unknown + misalignment, compare them to the costs for known misalignment + and choose the cheapest for peeling. + +2017-05-30 Robin Dapp + + * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Rename. + (vect_get_peeling_costs_all_drs): Create function. + (vect_peeling_hash_get_lowest_cost): + Use vect_get_peeling_costs_all_drs. + (vect_peeling_supportable): Create function. + (vect_enhance_data_refs_alignment): Use vect_peeling_supportable. + +2017-05-30 Robin Dapp + + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Create + DR_HAS_NEGATIVE_STEP. + (vect_update_misalignment_for_peel): Define DR_MISALIGNMENT. + (vect_enhance_data_refs_alignment): Use. + (vect_duplicate_ssa_name_ptr_info): Use. + * tree-vectorizer.h (dr_misalignment): Use. + (known_alignment_for_access_p): Use. + +2017-05-30 Jozef Lawrynowicz + + PR target/78838 + * config/msp430/msp430.c (gen_prefix): Return NULL when section name is + .lowtext. + (has_section_name): New function. + +2017-05-30 Martin Liska + + PR other/80909 + * auto-profile.c (get_function_decl_from_block): Fix + parenthesis. + +2017-05-30 Richard Biener + + PR middle-end/80876 + * cfgexpand.c (expand_gimple_cond): Fixup preserving loops again. + +2017-05-30 Martin Liska + + * dumpfile.c: Use newly added macro DUMP_FILE_INFO. + * dumpfile.h (struct dump_file_info): Remove ctors. + +2017-05-30 Martin Liska + + * predict.def: Fix GNU coding style. + +2017-05-29 Max Filippov + + * config/xtensa/xtensa.c (xtensa_initial_elimination_offset): + Mark 'to' argument with ATTRIBUTE_UNUSED. + +2017-05-29 Max Filippov + + * config/xtensa/xtensa.c (xtensa_emit_call): Use + HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string. + (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld + format string. + +2017-05-29 Eric Botcazou + + * doc/install.texi (Options specification): Restore entry of + --enable-sjlj-exceptions. + +2017-05-27 Michael Eager + + Revert: + 2016-01-21 Ajit Agarwal + + See https://gcc.gnu.org/ml/gcc/2017-05/msg00221.html. + + * config/microblaze/microblaze.h + (FIXED_REGISTERS): Update in macro. + (CALL_USED_REGISTERS): Update in macro. + +2017-05-27 François-Xavier Coudett + + * doc/install.texi: Add links to macOS binary distributions. + +2017-05-27 Jakub Jelinek + + PR bootstrap/80887 + Revert: + 2017-05-25 Marc Glisse + + * match.pd ((A +- CST1) +- CST2): Allow some conversions. + +2017-05-26 Martin Liska + + * dumpfile.h (enum dump_kind): Renumber TDF_* flags to be contiguous. + +2017-05-26 Martin Liska + + * cfg.c (check_bb_profile): Do not use TDF_COMMENT and print + always leading ';; '. + (dump_bb_info): Likewise. + (brief_dump_cfg): Likewise. + * cfgrtl.c (print_rtl_with_bb): Do not use TDF_COMMENT. + * dumpfile.c: Remove usage of TDF_VERBOSE. + * dumpfile.h (enum dump_kind): Likewise. + (dump_gimple_bb_header): Do not use TDF_COMMENT. + * print-tree.c (debug_verbose): Remove. + * tree-cfg.c (gimple_dump_cfg): Do not use TDF_COMMENT. + (dump_function_to_file): Remove dumps guarded with TDF_VERBOSE. + * tree-diagnostic.c (default_tree_printer): Replace + TDF_DIAGNOSTIC with TDF_SLIM. + +2017-05-26 Bin Cheng + + * tree-vect-loop-manip.c (create_intersect_range_checks_index): Pass + in parameter loop, rather than loop_vinfo. + (create_intersect_range_checks): Ditto. + (vect_create_cond_for_alias_checks): Update call to above functions. + +2017-05-26 Bin Cheng + + PR tree-optimization/80815 + * tree-data-ref.c (prune_runtime_alias_test_list): Simplify condition + for merging runtime alias checks. Handle negative DR_STEPs. + +2017-05-26 Bin Cheng + + * tree-vect-data-refs.c (Operator==, comp_dr_with_seg_len_pair): + Move from ... + * tree-data-ref.c (Operator==, comp_dr_with_seg_len_pair): To here. + * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): Factor + out code pruning runtime alias checks. + * tree-data-ref.c (prune_runtime_alias_test_list): New function + factored out from above. + * tree-vectorizer.h (struct dr_with_seg_len, dr_with_seg_len_pair_t): + Move from ... + * tree-data-ref.h (struct dr_with_seg_len, dr_with_seg_len_pair_t): + ... to here. + (prune_runtime_alias_test_list): New decalaration. + +2017-05-26 Bin Cheng + + * tree-vect-data-refs.c (compare_tree): Rename and move ... + * tree-data-ref.c (data_ref_compare_tree): ... to here. + * tree-data-ref.h (data_ref_compare_tree): New decalaration. + * tree-vect-data-refs.c (dr_group_sort_cmp): Update uses. + (operator==, comp_dr_with_seg_len_pair): Ditto. + (vect_prune_runtime_alias_test_list): Ditto. + +2017-05-26 Martin Liska + + PR ipa/80663 + * params.def: Bound partial-inlining-entry-probability param. + +2017-05-26 Marek Polacek + + PR sanitizer/80875 + * fold-const.c (fold_binary_loc) : Check if OP1 + can be negated. + +2017-05-26 Richard Biener + + PR tree-optimization/80842 + * tree-ssa-ccp.c (set_lattice_value): Always meet with the old + value. + +2017-05-26 Richard Biener + + PR tree-optimization/80844 + * tree-vectorizer.c (adjust_simduid_builtins): Propagate results. + +2017-05-25 Sebastian Peryt + + * doc/md.texi (Machine Constraints): Update x86 family + machine constraints section to match 'config/i386/constraints.md'. + +2017-05-25 Volker Reichelt + + * doc/invoke.texi (-Wcatch-value=): Document new warning option. + +2017-05-25 Nathan Sidwell + + * doc/invoke.texi (--enable-languages): Update documentation. + +2017-05-25 Martin Liska + + * dumpfile.c: Add TDF_FOLDING. + * dumpfile.h (enum dump_kind): Likewise. + * genmatch.c (dt_simplify::gen_1): Use it. + +2017-05-25 Marc Glisse + + * match.pd (view_convert (convert@0 @1)): Handle zero-extension. + +2017-05-25 Marc Glisse + + * match.pd ((A +- CST1) +- CST2): Allow some conversions. + * tree.c (drop_tree_overflow): Handle COMPLEX_CST and VECTOR_CST. + +2017-05-25 Marc Glisse + + * fold-const.c (fold_binary_loc) [(A & C) == D]: Remove transformation. + * match.pd (X == C): Rewrite it here. + (with_possible_nonzero_bits, with_possible_nonzero_bits2, + with_certain_nonzero_bits2): New predicates. + * tree-ssanames.c (get_nonzero_bits): Handle INTEGER_CST. + +2017-05-24 Nathan Sidwell + + * lto-streamer-in.c (lto_input_data_block): Adjust T const cast to + avoid warning. + + * auto-profile.c (afdo_propagate): Adjust T const cast to avoid + warning. + +2017-05-24 Segher Boessenkool + + * config/powerpcspe: New port. Files are copied from the rs6000 + port, with "rs6000" in filenames replaced by "powerpcspe". + +2017-05-24 Wilco Dijkstra + + PR rtl-optimization/80754 + * lra-remat.c (do_remat): Add overlap checks for dst_regno. + +2017-05-24 Sheldon Lobo + + * config/sparc/sparc.md (length): Return the correct value for -mflat + sibcalls to match output_sibcall. + +2017-05-24 Segher Boessenkool + + PR bootstrap/80860 + PR bootstrap/80843 + * config/rs6000/rs6000.c (struct machine_function): Add new field + n_components. + (rs6000_get_separate_components): Init that field, use it. + (rs6000_components_for_bb): Use the field. + +2017-05-24 Thomas Preud'homme + + * config/arm/arm.c (arm_expand_prologue): Fix typo in comment. + +2017-05-24 Peter Bergner + + PR middle-end/80823 + * tree-cfg.c (group_case_labels_stmt): Delete increment of "i"; + +2017-05-24 Andreas Krebbel + + PR target/80725 + * config/s390/s390.c (s390_check_qrst_address): Check incoming + address against address_operand predicate. + * config/s390/s390.md ("*indirect_jump"): Swap alternatives. + +2017-05-24 Eric Botcazou + + * var-tracking.c (track_expr_p): Do not return 0 for tracked record + parameters passed indirectly. + +2017-05-23 Uros Bizjak + + * config/i386/i386.md (*movdi_internal): Remove SSE4 + alternative 18 (?r, *v). Update insn attributes. + (*movsi_internal): Remove SSE4 alternative 13 (?r, *v). + Update insn attributes. + (*zero_extendsidi2): Remove SSE4 alternative (?r, *x). + Update insn attributes. + * config/i386/sse.md (vec_extract_0): Remove SSE4 + alternative 1 (r, v). Remove isa attribute. + * config/i386/i386.c (dimode_scalar_chain::make_vector_copies): + Always move value through stack for !TARGET_INTER_UNIT_MOVES_TO_VEC + and !TARGET_INTER_UNIT_MOVES_TO_VEC targets. + +2017-05-23 Tom de Vries + + * doc/sourcebuild.texi (Directives, Verify compiler message): Document + dg-line directive. + +2017-05-23 Jan Hubicka + + * cgraphunit.c (symbol_table::process_new_functions): Update. + * ipa-fnsummary.c (pass_data_inline_parameters): Remove. + (inline_generate_summary): Rename to ... + (ipa_fn_summary_generate): ... this one. + (inline_read_summary): Rename to ... + (ipa_fn_summary_read): ... this one. + (inline_write_summary): Rename to ... + (ipa_fn_summary_write): ... this one. + (inline_free_summary): Rename to ... + (ipa_free_fn_summary): ... this one. + (pass_data_local_fn_summary, pass_local_fn_summary, + make_pass_local_fn_summary, pass_data_ipa_free_fn_summary, + pass_ipa_free_fn_summary, make_pass_ipa_free_fn_summary, + pass_data_ipa_fn_summary, pass_ipa_fn_summary, + make_pass_ipa_fn_summary): New. + * ipa-fnsummary.h (inline_generate_summary, inline_read_summary, + inline_write_summary, inline_free_summary): Remove. + (ipa_free_fn_summary) : New. + * ipa-inline.c (ipa_inline): Update. + (pass_ipa_inline): Do not generate summaries. + * ipa.c (pass_data_ipa_free_fn_summary, pass_ipa_free_fn_summary): + Remove. + * passes.def: Replace pass_inline_parameters by pass_local_fn_summary + and add pass_ipa_fn_summary. + * tree-pass.h (make_pass_ipa_fn_summary, make_pass_local_fn_summary): + New. + (make_pass_inline_parameters): Remove. + +2017-05-23 Thomas Schwinge + + * omp-low.c (struct omp_context): Remove "default_kind" member. + Adjust all users. + + * omp-offload.c (execute_oacc_device_lower): Remove the + parallelism dimensions function attributes for unparallelized + OpenACC kernels constructs. + +2017-05-23 Martin Liska + + * cgraph.c (cgraph_node::get_create): Use symtab_node::dump_{asm_,}name + functions. + (cgraph_edge::make_speculative): Likewise. + (cgraph_edge::resolve_speculation): Likewise. + (cgraph_edge::redirect_call_stmt_to_callee): Likewise. + (cgraph_node::dump): Likewise. + * cgraph.h: Likewise. + * cgraphunit.c (analyze_functions): Likewise. + (symbol_table::compile): Likewise. + * ipa-cp.c (print_all_lattices): Likewise. + (determine_versionability): Likewise. + (initialize_node_lattices): Likewise. + (ipcp_verify_propagated_values): Likewise. + (estimate_local_effects): Likewise. + (update_profiling_info): Likewise. + (create_specialized_node): Likewise. + (perhaps_add_new_callers): Likewise. + (decide_about_value): Likewise. + (decide_whether_version_node): Likewise. + (identify_dead_nodes): Likewise. + (ipcp_store_bits_results): Likewise. + * ipa-devirt.c (dump_targets): Likewise. + (ipa_devirt): Likewise. + * ipa-icf.c (sem_item::dump): Likewise. + (sem_function::equals): Likewise. + (sem_variable::equals): Likewise. + (sem_item_optimizer::read_section): Likewise. + (sem_item_optimizer::execute): Likewise. + (congruence_class::dump): Likewise. + * ipa-inline-analysis.c (dump_ipa_call_summary): Likewise. + (dump_inline_summary): Likewise. + (estimate_node_size_and_time): Likewise. + (inline_analyze_function): Likewise. + * ipa-inline-transform.c (inline_call): Likewise. + * ipa-inline.c (report_inline_failed_reason): Likewise. + (want_early_inline_function_p): Likewise. + (edge_badness): Likewise. + (update_edge_key): Likewise. + (inline_small_functions): Likewise. + * ipa-profile.c (ipa_profile): Likewise. + * ipa-prop.c (ipa_print_node_jump_functions): Likewise. + (ipa_make_edge_direct_to_target): Likewise. + (remove_described_reference): Likewise. + (ipa_impossible_devirt_target): Likewise. + (propagate_controlled_uses): Likewise. + (ipa_print_node_params): Likewise. + (ipcp_transform_function): Likewise. + * ipa-pure-const.c (pure_const_read_summary): Likewise. + (propagate_pure_const): Likewise. + * ipa-reference.c (generate_summary): Likewise. + (read_write_all_from_decl): Likewise. + (propagate): Likewise. + (ipa_reference_read_optimization_summary): Likewise. + * ipa-utils.c (ipa_merge_profiles): Likewise. + * ipa.c (walk_polymorphic_call_targets): Likewise. + (symbol_table::remove_unreachable_nodes): Likewise. + (ipa_single_use): Likewise. + * passes.c (execute_todo): Likewise. + * predict.c (drop_profile): Likewise. + * symtab.c (symtab_node::get_dump_name): New function. + (symtab_node::dump_name): Likewise. + (symtab_node::dump_asm_name): Likewise. + (symtab_node::dump_references): Likewise. + (symtab_node::dump_referring): Likewise. + (symtab_node::dump_base): Likewise. + (symtab_node::debug_symtab): Likewise. + * tree-sra.c (convert_callers_for_node): Likewise. + * tree-ssa-structalias.c (ipa_pta_execute): Likewise. + * value-prof.c (init_node_map): Likewise. + +2017-05-23 Martin Liska + + * cgraph.h: Move symtab_node::dump_table to symbol_table::dump + and symtab_node::debug_symtab to symbol_table::debug. + * cgraphunit.c (analyze_functions): Use the renamed function. + (symbol_table::compile): Likewise. + * ipa-cp.c (ipcp_verify_propagated_values): Likewise. + * ipa-icf.c (sem_item_optimizer::execute): Likewise. + * passes.c (execute_todo): Likewise. + * symtab.c (symbol_table::dump): New function. + * tree-ssa-structalias.c (ipa_pta_execute): Use the renamed function. + +2017-05-23 Jan Hubicka + + * ipa-fnsummary.c (estimate_node_size_and_time): Do not sanity check + that nonconst implies exec. + +2017-05-23 Jan Hubicka + + * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list, + inline_edge_removal_hook, inline_edge_duplication_hook): Remove. + (inline_edge_summary_vec): Turn into ... + (ipa_call_summaries): ... this one. + (redirect_to_unreachable, edge_set_predicate, + evaluate_properties_for_edge, inline_summary_alloc, + reset_ipa_call_summary, reset_inline_summary, + inline_summary_t::duplicate): Update. + (inline_edge_duplication_hook): Turn to ... + (ipa_call_summary_t::duplicate): ... this one. + (inline_edge_removal_hook): Turn to ... + (ipa_call_summary_t::remove): ... this one. + (dump_inline_edge_summary): Turn to ... + (dump_ipa_call_summary): ... this one. + (estimate_function_body_sizes): Update. + (inline_update_callee_summaries): Update. + (remap_edge_change_prob): Update. + (remap_edge_summaries): Update. + (inline_merge_summary): Update. + (do_estimate_edge_time): Update. + (inline_generate_summary): Update. + (inline_read_section): Update. + (inline_read_summary): Update. + (inline_free_summary): Update. + * ipa-inline.c (can_inline_edge_p): Update. + (compute_inlined_call_time): Update. + (want_inline_small_function_p): Update. + (edge_badness): Update. + (early_inliner): Update. + * ipa-inline.h (inline_edge_summary): Turn to ... + (ipa_call_summary): ... this one. + (ipa_call_summary_t): New class. + (inline_edge_summary_t, inline_edge_summary_vec): Remove. + (ipa_call_summaries): New. + (inline_edge_summary): Remove. + (estimate_edge_growth): Update. + * ipa-profile.c (ipa_propagate_frequency_1): Update. + * ipa-prop.c (ipa_make_edge_direct_to_target): Update. + * ipa-split.c (execute_split_functions): Update. + * ipa.c (symbol_table::remove_unreachable_nodes): Update. + +2017-05-23 Tom de Vries + + * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware + attributes): Document rdrand effective target. + +2017-05-23 Tom de Vries + + * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware + attributes): Sort alphabetically. + +2017-05-23 Georg-Johann Lay + + * config/avr/genmultilib.awk: Use gsub instead of gensub. + +2017-05-22 Michael Meissner + + PR target/80718 + * config/rs6000/vsx.md (vsx_splat_, VSX_D iterator): Split + V2DF/V2DI splat into two separate patterns, one that handles + registers, and the other that only handles memory. Drop support + for splatting from a GPR on ISA 2.07 and then splitting the + splat into direct move and splat. + (vsx_splat__reg): Likewise. + (vsx_splat__mem): Likewise. + +2017-05-22 Segher Boessenkool + + * cfgcleanup.c (bb_is_just_return): Allow CLOBBERs. + +2017-05-22 Jakub Jelinek + + PR middle-end/80809 + * omp-low.c (finish_taskreg_remap): New function. + (finish_taskreg_scan): If unit size of ctx->record_type + is non-constant, unshare the size expression and replace + decls in it with possible outer var refs. + + PR middle-end/80809 + * gimplify.c (omp_add_variable): For GOVD_DEBUG_PRIVATE use + GOVD_SHARED rather than GOVD_PRIVATE with it. + (gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Expect + GOVD_SHARED rather than GOVD_PRIVATE with GOVD_DEBUG_PRIVATE. + + PR middle-end/80853 + * omp-low.c (lower_reduction_clauses): Pass OMP_CLAUSE_PRIVATE + as last argument to build_outer_var_ref for pointer bases of array + section reductions. + +2017-05-19 Martin Sebor + + * print-tree.c (print_node): Print DECL_READ_P flag. + +2017-05-22 Jan Hubicka + + * Makefile.in: Add ipa-fnsummary.o and ipa-fnsummary.h + * auto-profile.c: Replace ipa-inline.h by ipa-fnsummary.h + * cgraph.c: Likewise. + * cgraphunit.c: Likewise. + * gengtype.c: Likewise. + * ipa-cp.c: Likewise. + * ipa-devirt.c: Likewise. + * ipa-icf.c: Likewise. + * ipa-predicate.c: Likewise. + * ipa-profile.c: Likewise. + * ipa-prop.c: Likewise. + * ipa-split.c: Likewise. + * ipa.c: Likewise. + * ipa-inline-analysis.c (inline_summaries, ipa_call_summaries, + edge_predicate_pool, dump_inline_hints, + inline_summary::account_size_time, redirect_to_unreachable, + edge_set_predicate, set_hint_predicate, + evaluate_conditions_for_known_args, evaluate_properties_for_edge, + inline_summary_alloc, ipa_call_summary::reset, inline_summary::reset, + inline_summary_t::remove, remap_hint_predicate_after_duplication, + inline_summary_t::duplicate, ipa_call_summary_t::duplicate, + ipa_call_summary_t::remove, initialize_growth_caches, + free_growth_caches, dump_ipa_call_summary, dump_inline_summary, + debug_inline_summary, dump_inline_summaries, initialize_inline_failed, + mark_modified, unmodified_parm_1, unmodified_parm, + unmodified_parm_or_parm_agg_item, eliminated_by_inlining_prob, + set_cond_stmt_execution_predicate, set_switch_stmt_execution_predicate, + compute_bb_predicates, will_be_nonconstant_expr_predicate, + will_be_nonconstant_predicate, record_modified_bb_info, + get_minimal_bb, record_modified, param_change_prob, + phi_result_unknown_predicate, predicate_for_phi_result, + array_index_predicate, clobber_only_eh_bb_p, fp_expression_p, + estimate_function_body_sizes, compute_inline_parameters, + compute_inline_parameters_for_curren, pass_data_inline_parameters, + estimate_node_size_and_time, estimate_ipcp_clone_size_and_time, + inline_update_callee_summaries, remap_edge_change_prob, + remap_edge_summaries, remap_hint_predicate, inline_merge_summary, + inline_update_overall_summary, inline_indirect_intraprocedural_analysis, + inline_analyze_function, inline_summary_t::insert, + inline_generate_summary, read_ipa_call_summary, inline_read_section, + inline_read_summary, write_ipa_call_summary, inline_write_summary, + inline_free_summary): Move to ipa-fnsummary.h + (predicate_t): Remove. + * ipa-fnsummary.c: New file. + * ipa-inline.h: Do not include sreal.h and ipa-predicate.h + (enum inline_hints_vals, inline_hints, agg_position_info, + INLINE_SIZE_SCALE, size_time_entry, inline_summary, inline_summary_t, + inline_summaries, ipa_call_summary, ipa_call_summary_t, + ipa_call_summaries, debug_inline_summary, dump_inline_summaries, + dump_inline_summary, dump_inline_hints, inline_generate_summary, + inline_read_summary, inline_write_summary, inline_free_summary, + inline_analyze_function, initialize_inline_failed, + inline_merge_summary, inline_update_overall_summary, + compute_inline_parameters): Move to ipa-fnsummary.h + * ipa-fnsummary.h: New file. + * ipa-inline-transform.h: Include ipa-inline.h. + * ipa-inline.c: LIkewise. + +2017-05-22 Jan Hubicka + + * ipa-inline.c (edge_badness): Use inlined_time instead of + inline_summaries->get. + +2017-05-22 Jan Hubicka + + * ipa-inline.c (edge_badness): Use estimate_size_after_inlining. + +2017-05-22 Nathan Sidwell + + * doc/invoke.texi (fdump-translation-unit): Delete documentation. + (fdump-lang): Document 'raw' option. + * dumpfile.h (TDI_tu): Delete. + * dumpfile.c (dump_files): Remove translation-unit. + (FIRST_AUTO_NUMBERED_DUMP): Decrement. + +2017-05-22 Georg-Johann Lay + + * config/avr/t-avr (AWK) [t-multilib]: Remove "-v FORMAT=Makefile" + command option from $(AWK) call. + * config/avr/genmultilib.awk: Simplify and rewrite so that it + generates MULTILIB_REQUIRED instead of MULTILIB_EXCEPTIONS. + [FORMAT]: Remove handling of variable. + * config/avr/t-multilib: Regenerate. + +2017-05-22 Jan Hubicka + + * ipa-inline-analysis.c (inline_summary::reset): Do not reset + self_time. + (dump_inline_summary): Do not print self_time. + (estimate_function_body_sizes): Do not set self_time. + (compute_inline_parameters): Likewise. + (inline_read_section, inline_write_summary): Do not stream self_time. + * ipa-inline.h (inline_summary): Drop self_time. + +2017-05-22 Jan Hubicka + + * ipa-inline-analysis.c (account_size_time): Rename to ... + (inline_summary::account_size_time): ... this one. + (reset_ipa_call_summary): Turn to ... + (ipa_call_summary::reset): ... this one. + (reset_inline_summary): Turn to ... + (inline_summary::reset): ... this one. + (inline_summary_t::remove): Update. + (inline_summary_t::duplicate): Update. + (ipa_call_summary_t::remove): Update. + (dump_inline_summary): Update. + (estimate_function_body_sizes): Update. + (compute_inline_parameters): Update. + (estimate_node_size_and_time): Update. + (inline_merge_summary): Update. + (inline_update_overall_summary): Update. + (inline_read_section): Update. + (inline_write_summary): Update. + * ipa-inline.h (inline_summary): Rename entry to size_time_table; + add account_size_time and reset member functions. + (ipa_call_summary): Add reset function. + * ipa-predicate.h (predicate::operator &): Constify. + +2017-05-22 Richard Biener + + * df-scan.c (df_insn_refs_verify): Speedup when not verifying. + +2017-05-19 Jason Merrill + + * tree.c (make_tree_vec_stat, grow_tree_vec_stat): Use size_t. + +2017-05-19 Marek Polacek + + PR sanitizer/80800 + * fold-const.c (extract_muldiv_1) : Add + TYPE_OVERFLOW_WRAPS checks. + +2017-05-19 Thomas Schwinge + + * tree-core.h (enum omp_clause_default_kind): Add + "OMP_CLAUSE_DEFAULT_PRESENT". + * tree-pretty-print.c (dump_omp_clause): Handle it. + * gimplify.c (enum gimplify_omp_var_data): Add + "GOVD_MAP_FORCE_PRESENT". + (gimplify_adjust_omp_clauses_1): Map it to + "GOMP_MAP_FORCE_PRESENT". + (oacc_default_clause): Handle "OMP_CLAUSE_DEFAULT_PRESENT". + + * gimplify.c (oacc_default_clause): Clarify. + +2017-05-19 Nathan Sidwell + + LANG_HOOK_REGISTER_DUMPS + * toplev.c (general_init): Call register dump lang hook. + * doc/invoke.texi: Document -fdump-lang option family. + * dumpfile.c (dump_files): Remove class dump here. + (FIRST_AUTO_NUMBERED_DUMP): Adjust. + * dumpfile.h (tree_dump_index): Remove TDI_class. + * langhooks-def.h (lhd_register_dumps): Declare. + (LANG_HOOKS_REGISTER_DUMPS): Define. + (LANG_HOOKS_INITIALIZER): Add it. + * langhooks.c (lhd_register_dumps): Define. + * langhooks.h (struct lang_hooks): Add register_dumps. + +2017-05-19 Nathan Sidwell + + * context.h (context::set_passes): New. + * context.c (context::context): Do not create pass manager. + * toplev.c (general_init): Create pass manager here. + +2017-05-19 Segher Boessenkool + + * config/rs6000/rs6000.md (splitter to load of -1 and mask): Don't + use this splitter if two add or or instructions would also work for + the constant we want to generate. + +2017-05-19 Richard Biener + + PR build/80821 + * genmatch.c (dt_node::gen_kids_1): Add missing scope around + predicate evaluation. + +2017-05-19 Jan Hubicka + + * ipa-inline.h (ipa_call_summary): Turn sizes into signed; + add ctor. + * ipa-inline.c (want_inline_small_function_p): Do not cast to + unsigned. + +2017-05-19 Jan Hubicka + + * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list, + inline_edge_removal_hook, inline_edge_duplication_hook): Remove. + (inline_edge_summary_vec): Turn into ... + (ipa_call_summaries): ... this one. + (redirect_to_unreachable, edge_set_predicate, + evaluate_properties_for_edge, inline_summary_alloc, + reset_ipa_call_summary, reset_inline_summary, + inline_summary_t::duplicate): Update. + (inline_edge_duplication_hook): Turn to ... + (ipa_call_summary_t::duplicate): ... this one. + (inline_edge_removal_hook): Turn to ... + (ipa_call_summary_t::remove): ... this one. + (dump_inline_edge_summary): Turn to ... + (dump_ipa_call_summary): ... this one. + (estimate_function_body_sizes): Update. + (inline_update_callee_summaries): Update. + (remap_edge_change_prob): Update. + (remap_edge_summaries): Update. + (inline_merge_summary): Update. + (do_estimate_edge_time): Update. + (inline_generate_summary): Update. + (inline_read_section): Update. + (inline_read_summary): Update. + (inline_free_summary): Update. + * ipa-inline.c (can_inline_edge_p): Update. + (compute_inlined_call_time): Update. + (want_inline_small_function_p): Update. + (edge_badness): Update. + (early_inliner): Update. + * ipa-inline.h (inline_edge_summary): Turn to ... + (ipa_call_summary): ... this one. + (ipa_call_summary_t): New class. + (inline_edge_summary_t, inline_edge_summary_vec): Remove. + (ipa_call_summaries): New. + (inline_edge_summary): Remove. + (estimate_edge_growth): Update. + * ipa-profile.c (ipa_propagate_frequency_1): Update. + * ipa-prop.c (ipa_make_edge_direct_to_target): Update. + * ipa-split.c (execute_split_functions): Update. + * ipa.c (symbol_table::remove_unreachable_nodes): Update. + +2017-05-19 Richard Biener + + PR middle-end/80764 + * cfgexpand.c (expand_gimple_cond): Fix loop fixup. + +2017-05-18 Segher Boessenkool + + * config/rs6000/rs6000.c (struct machine_function): Add field + fpr_is_wrapped_separately. + (rs6000_get_separate_components): Use 64 components. Handle the + new FPR components. + (rs6000_components_for_bb): Handle the FPR components. + (rs6000_emit_prologue_components): Handle the FPR components. + (rs6000_emit_epilogue_components): Handle the FPR components. + (rs6000_set_handled_components): Handle the FPR components. + (rs6000_emit_prologue): Don't output prologue code for those FPRs + that are already separately shrink-wrapped. + (rs6000_emit_epilogue): Don't output epilogue code for those FPRs + that are already separately shrink-wrapped. + +2017-05-18 Michael Meissner + + PR target/80510 + * config/rs6000/predicates.md (simple_offsettable_mem_operand): + New predicate. + + * config/rs6000/rs6000.md (ALTIVEC_DFORM): New iterator. + (define_peephole2 for Altivec d-form load): Add peepholes to catch + cases where the register allocator uses a move and an offsettable + memory operation to/from a FPR register on ISA 2.06/2.07. + (define_peephole2 for Altivec d-form store): Likewise. + +2017-05-18 Uros Bizjak + + PR target/80799 + * config/i386/mmx.md (*mov_internal): Enable + alternatives 11, 12, 13 and 14 also for 32bit targets. + Remove alternatives 15, 16, 17 and 18. + * config/i386/sse.md (vec_concatv2di): Change + alternative (!x, *y) to (x, ?!*Yn). + +2017-05-18 Paolo Carlini + + * dumpfile.h (enum dump_kind): Remove stray comma. + +2017-05-18 Jan Hubicka + + * Makefile.in: Add ipa-predicate.o and ipa-predicate.h + * ipa-inline-analysis.c (NUM_CONDITIONS): turn into + predicate::num_conditions + (IS_NOT_CONSTANT): turn into predicate::is_not_constant. + (CHANGED): turn into predicate::changed. + (agg_position_info): Move to ipa-predicate.h + (add_condition, predicate::add_clause, predicate::operator &=, + predicate::or_with, predicate::evaluate, predicate::probability, + dump_condition, dump_clause, predicate::dump, + predicate::remap_after_duplication, predicate::remap_after_inlining, + predicate::stream_in, predicate::stream_out): Move to ipa-predicate.c + (evaluate_conditions_for_known_args): Update. + (set_cond_stmt_execution_predicate): Update. + * ipa-inline.h: Include ipa-predicate.h + (condition, inline_param_summary, conditions, agg_position_info, + predicate): Move to ipa-predicate.h + * ipa-predicate.c: New file. + * ipa-predicate.h: New file. + +2017-05-18 Wilco Dijkstra + + * final.c (leaf_function_p): Check we are not in a sequence. + +2017-05-18 Martin Liska + + * cfgrtl.c (rtl_verify_edges): Remove usage of TDF_RTL. + * dumpfile.c (dump_register): Use new enum dump_kind. + (get_dump_file_name): Likewise. + (dump_enable_all): Likewise. + (dump_switch_p_1): Likewise. + (enable_rtl_dump_file): Remove usage of TDF_RTL. + * dumpfile.h (enum dump_kind): New enum type. + (struct dump_file_info): Create constructor and + format fields and comments. + * passes.c (pass_manager::register_one_dump_file): + Use num dump_kind. + * statistics.c (statistics_early_init): Likewise. + * tree-ssa-loop-prefetch.c (dump_mem_details): Replace + TDF_TREE with TDF_SLIM. + (gather_memory_references_ref): Likewise. + +2017-05-18 Martin Liska + + * vec.h (struct vnull): Use it. + +2017-05-18 Jan Hubicka + + * ipa-inline-analysis.c (predicate_conditions): Move to ipa-inline.h + (true_predicate, false_predicate, true_predicate_p, + false_predicate_p): Remove. + (single_cond_predicate, not_inlined_predicate): Turn to member function + in ipa-inline.h + (add_condition): Update. + (add_clause): Turn to... + (predicate::add_clause): ... this one; update; allow passing NULL + as parameter. + (and_predicates): Turn to ... + (predicate::operator &=): ... this one. + (predicates_equal_p): Move to predicate::operator == in ipa-inline.h + (or_predicates): Turn to ... + (predicate::or_with): ... this one. + (evaluate_predicate): Turn to ... + (predicate::evaluate): ... this one. + (predicate_probability): Turn to ... + (predicate::probability): ... this one. + (dump_condition): Update. + (dump_predicate): Turn to ... + (predicate::dump): ... this one. + (account_size_time): Update. + (edge_set_predicate): Update. + (set_hint_predicate): UPdate. + (evaluate_conditions_for_known_args): Update. + (evaluate_properties_for_edge): Update. + (remap_predicate_after_duplication): Turn to... + (predicate::remap_after_duplication): ... this one. + (remap_hint_predicate_after_duplication): Update. + (inline_summary_t::duplicate): UPdate. + (dump_inline_edge_summary): Update. + (dump_inline_summary): Update. + (set_cond_stmt_execution_predicate): Update. + (set_switch_stmt_execution_predicate): Update. + (compute_bb_predicates): Update. + (will_be_nonconstant_expr_predicate): Update. + (will_be_nonconstant_predicate): Update. + (phi_result_unknown_predicate): Update. + (predicate_for_phi_result): Update. + (array_index_predicate): Update. + (estimate_function_body_sizes): Update. + (estimate_node_size_and_time): Update. + (estimate_ipcp_clone_size_and_time): Update. + (remap_predicate): Rename to ... + (predicate::remap_after_inlining): ... this one. + (remap_hint_predicate): Update. + (inline_merge_summary): Update. + (inline_update_overall_summary): Update. + (estimate_size_after_inlining): Update. + (read_predicate): Rename to ... + (predicate::stream_in): ... this one. + (read_inline_edge_summary): Update. + (write_predicate): Rename to ... + (predicate::stream_out): ... this one. + (write_inline_edge_summary): Update. + * ipa-inline.h (MAX_CLAUSES): Turn to predicate::max_clauses. + (clause_t): Turn to uint32_t + (predicate): Turn to class; implement constructor and operators + ==, !=, & + (size_time_entry): Update. + (inline_summary): Update. + (inline_edge_summary): Update. + +2017-05-18 Marc Glisse + + * fold-const.c (fold_binary_loc): Move transformation... + * match.pd (C - X CMP X): ... here. + +2017-05-18 Sheldon Lobo + + * config/sparc/sparc.c (sparc_option_override): Set function + alignment for -mcpu=niagara7 to 64 to match the I$ line. + * config/sparc/sparc.h (BRANCH_COST): Set the SPARC M7 branch + latency to 1. + * config/sparc/sparc.h (BRANCH_COST): Set the SPARC T4 branch + latency to 2. + * config/sparc/sol2.h: Fix a ASM_CPU32_DEFAULT_SPEC typo. + +2017-05-18 Marek Polacek + + PR sanitizer/80797 + * ubsan.c (instrument_null): Unwrap ADDR_EXPRs. + (pass_ubsan::execute): Call gimple_assign_single_p instead of + gimple_assign_load_p. + +2017-05-17 Segher Boessenkool + + PR middle-end/80692 + * real.c (do_compare): Give decimal_do_compare preference over + comparing just the signs. + +2017-05-17 Uros Bizjak + + * doc/md.texi (Canonicalization of Instructions): Describe the + canonical form of instructions that inherently set a condition + code register. + +2017-05-17 Peter Bergner + + PR middle-end/80775 + * tree-cfg.c: Move deletion of unreachable case statements to after + the merging of consecutive case labels. + +2017-05-17 Thomas Preud'homme + + * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Refer + readers to __gnu_cmse_nonsecure_call libcall for saving, clearing and + restoring of callee-saved registers. + +2017-05-17 Eric Botcazou + + * compare-elim.c (equivalent_reg_at_start): Adjust outdated comment. + * config/visium/visium.c (single_set_and_flags): Likewise. + * config/visium/visium.md (Substitutions): Likewise. + +2017-05-17 Martin Liska + + * cfg.c: Introduce dump_flags_t type and + use it instead of int type. + * cfg.h: Likewise. + * cfghooks.c: Likewise. + * cfghooks.h (struct cfg_hooks): Likewise. + * cfgrtl.c: Likewise. + * cfgrtl.h: Likewise. + * cgraph.c (cgraph_node::get_body): Likewise. + * coretypes.h: Likewise. + * domwalk.c: Likewise. + * domwalk.h: Likewise. + * dumpfile.c (struct dump_option_value_info): Likewise. + (dump_enable_all): Likewise. + (dump_switch_p_1): Likewise. + (opt_info_switch_p): Likewise. + * dumpfile.h (enum tree_dump_index): Likewise. + (struct dump_file_info): Likewise. + * genemit.c: Likewise. + * generic-match-head.c: Likewise. + * gengtype.c (open_base_files): Likewise. + * gimple-pretty-print.c: Likewise. + * gimple-pretty-print.h: Likewise. + * graph.c (print_graph_cfg): Likewise. + * graphite-scop-detection.c (dot_all_sese): Likewise. + * ipa-devirt.c (build_type_inheritance_graph): Likewise. + * loop-unroll.c (report_unroll): Likewise. + * passes.c (pass_manager::register_one_dump_file): Likewise. + * print-tree.c: Likewise. + * statistics.c: Likewise. + * tree-cfg.c: Likewise. + * tree-cfg.h: Likewise. + * tree-dfa.c: Likewise. + * tree-dfa.h: Likewise. + * tree-dump.c (dump_function): Likewise. + * tree-dump.h (struct dump_info): Likewise. + * tree-pretty-print.c: Likewise. + * tree-pretty-print.h: Likewise. + * tree-ssa-live.c: Likewise. + * tree-ssa-live.h: Likewise. + * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise. + * tree-vect-loop.c: Likewise. + * tree-vect-slp.c: Likewise. + +2017-05-16 James Greenhalgh + Bill Schmidt + + PR tree-optimization/80457 + * tree-vect-stmts.c (vect_model_simple_cost): Model the cost + of all arguments to a statement as scalar_to_vec operations. + (vectorizable_call): Adjust call to vect_model_simple_cost for + new parameter. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_comparison): Likewise. + (vect_is_simple_cond): Record the def types for operands. + (vectorizable_condition): Likewise, call vect_model_simple_cost. + * tree-vectorizer.h (vect_model_simple_cost): Add new parameter + for statement argument count. + +2017-05-16 Carl Love + + * config/rs6000/rs6000-c: Add support for built-in functions + vector unsigned long long vec_bperm (vector unsigned long long, + vector unsigned char) + vector signed long long vec_mule (vector signed int, + vector signed int) + vector unsigned long long vec_mule (vector unsigned int, + vector unsigned int) + vector signed long long vec_mulo (vector signed int, + vector signed int) + vector unsigned long long vec_mulo (vector unsigned int, + vector unsigned int) + vector signed char vec_sldw (vector signed char, + vector signed char, + const int) + vector unsigned char vec_sldw (vector unsigned char, + vector unsigned char, + const int) + vector signed short vec_sldw (vector signed short, + vector signed short, + const int) + vector unsigned short vec_sldw (vector unsigned short, + vector unsigned short, + const int) + vector signed int vec_sldw (vector signed int, + vector signed int, + const int) + vector unsigned int vec_sldw (vector unsigned int, + vector unsigned int, + const int) + vector signed long long vec_sldw (vector signed long long, + vector signed long long, + const int) + vector unsigned long long vec_sldw (vector unsigned long long, + vector unsigned long long, + const int) + * config/rs6000/rs6000-c: Add support for built-in functions + * config/rs6000/rs6000-builtin.def: Add definition for SLDW. + * config/rs6000/altivec.h: Add defintion for vec_sldw. + * doc/extend.texi: Update the built-in documentation for the + new built-in functions. + +2017-05-16 Marek Polacek + + PR sanitizer/80536 + PR sanitizer/80386 + * tree.c (save_expr): Don't fold the expression. + +2017-05-16 Uros Bizjak + + * config/i386/i386.md (*movsi_internal): Split (?rm,*y) alternative + to (?r,*Yn) and (?m,*y) alternatives, and (?*y,rm) to (?*Ym,r) + and (?*y,m). Update insn attributes. + +2017-05-16 Martin Liska + + * cgraph.c (cgraph_edge::resolve_speculation): Add default value for + flags argument of print_gimple_stmt, print_gimple_expr, + print_generic_stmt and print_generic_expr. + * cgraphclones.c (symbol_table::materialize_all_clones): Likewise. + * coretypes.h: Likewise. + * except.c (dump_eh_tree): Likewise. + * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise. + * gimple-pretty-print.h: Likewise. + * gimple-ssa-backprop.c (dump_usage_prefix): Likewise. + (backprop::push_to_worklist): Likewise. + (backprop::pop_from_worklist): Likewise. + (backprop::process_use): Likewise. + (backprop::intersect_uses): Likewise. + (note_replacement): Likewise. + * gimple-ssa-store-merging.c + (pass_store_merging::terminate_all_aliasing_chains): Likewise. + (imm_store_chain_info::coalesce_immediate_stores): Likewise. + (pass_store_merging::execute): Likewise. + * gimple-ssa-strength-reduction.c (dump_candidate): Likewise. + (ssa_base_cand_dump_callback): Likewise. + (dump_incr_vec): Likewise. + (replace_refs): Likewise. + (replace_mult_candidate): Likewise. + (create_add_on_incoming_edge): Likewise. + (create_phi_basis): Likewise. + (insert_initializers): Likewise. + (all_phi_incrs_profitable): Likewise. + (introduce_cast_before_cand): Likewise. + (replace_one_candidate): Likewise. + * gimplify.c (gimplify_expr): Likewise. + * graphite-isl-ast-to-gimple.c (is_valid_rename): Likewise. + (set_rename): Likewise. + (rename_uses): Likewise. + (copy_loop_phi_nodes): Likewise. + (add_close_phis_to_merge_points): Likewise. + (copy_loop_close_phi_args): Likewise. + (copy_cond_phi_args): Likewise. + (graphite_copy_stmts_from_block): Likewise. + (translate_pending_phi_nodes): Likewise. + * graphite-poly.c (print_pdr): Likewise. + (dump_gbb_cases): Likewise. + (dump_gbb_conditions): Likewise. + (print_scop_params): Likewise. + * graphite-scop-detection.c (build_cross_bb_scalars_def): Likewise. + (build_cross_bb_scalars_use): Likewise. + (gather_bbs::before_dom_children): Likewise. + * hsa-dump.c (dump_hsa_immed): Likewise. + * ipa-cp.c (print_ipcp_constant_value): Likewise. + (get_replacement_map): Likewise. + * ipa-inline-analysis.c (dump_condition): Likewise. + (estimate_function_body_sizes): Likewise. + * ipa-polymorphic-call.c (check_stmt_for_type_change): Likewise. + (ipa_polymorphic_call_context::get_dynamic_type): Likewise. + * ipa-prop.c (ipa_dump_param): Likewise. + (ipa_print_node_jump_functions_for_edge): Likewise. + (ipa_modify_call_arguments): Likewise. + (ipa_modify_expr): Likewise. + (ipa_dump_param_adjustments): Likewise. + (ipa_dump_agg_replacement_values): Likewise. + (ipcp_modif_dom_walker::before_dom_children): Likewise. + * ipa-pure-const.c (check_stmt): Likewise. + (pass_nothrow::execute): Likewise. + * ipa-split.c (execute_split_functions): Likewise. + * omp-offload.c (dump_oacc_loop_part): Likewise. + (dump_oacc_loop): Likewise. + * trans-mem.c (tm_log_emit): Likewise. + (tm_memopt_accumulate_memops): Likewise. + (dump_tm_memopt_set): Likewise. + (dump_tm_memopt_transform): Likewise. + * tree-cfg.c (gimple_verify_flow_info): Likewise. + (print_loop): Likewise. + * tree-chkp-opt.c (chkp_print_addr): Likewise. + (chkp_gather_checks_info): Likewise. + (chkp_get_check_result): Likewise. + (chkp_remove_check_if_pass): Likewise. + (chkp_use_outer_bounds_if_possible): Likewise. + (chkp_reduce_bounds_lifetime): Likewise. + * tree-chkp.c (chkp_register_addr_bounds): Likewise. + (chkp_mark_completed_bounds): Likewise. + (chkp_register_incomplete_bounds): Likewise. + (chkp_mark_invalid_bounds): Likewise. + (chkp_maybe_copy_and_register_bounds): Likewise. + (chkp_build_returned_bound): Likewise. + (chkp_get_bound_for_parm): Likewise. + (chkp_build_bndldx): Likewise. + (chkp_get_bounds_by_definition): Likewise. + (chkp_generate_extern_var_bounds): Likewise. + (chkp_get_bounds_for_decl_addr): Likewise. + * tree-chrec.c (chrec_apply): Likewise. + * tree-data-ref.c (dump_data_reference): Likewise. + (dump_subscript): Likewise. + (dump_data_dependence_relation): Likewise. + (analyze_overlapping_iterations): Likewise. + * tree-inline.c (expand_call_inline): Likewise. + (tree_function_versioning): Likewise. + * tree-into-ssa.c (dump_defs_stack): Likewise. + (dump_currdefs): Likewise. + (dump_names_replaced_by): Likewise. + (dump_update_ssa): Likewise. + (update_ssa): Likewise. + * tree-object-size.c (pass_object_sizes::execute): Likewise. + * tree-parloops.c (build_new_reduction): Likewise. + (try_create_reduction_list): Likewise. + (ref_conflicts_with_region): Likewise. + (oacc_entry_exit_ok_1): Likewise. + (oacc_entry_exit_single_gang): Likewise. + * tree-pretty-print.h: Likewise. + * tree-scalar-evolution.c (set_scalar_evolution): Likewise. + (get_scalar_evolution): Likewise. + (add_to_evolution): Likewise. + (get_loop_exit_condition): Likewise. + (analyze_evolution_in_loop): Likewise. + (analyze_initial_condition): Likewise. + (analyze_scalar_evolution): Likewise. + (instantiate_scev): Likewise. + (number_of_latch_executions): Likewise. + (gather_chrec_stats): Likewise. + (final_value_replacement_loop): Likewise. + (scev_const_prop): Likewise. + * tree-sra.c (dump_access): Likewise. + (disqualify_candidate): Likewise. + (create_access): Likewise. + (reject): Likewise. + (maybe_add_sra_candidate): Likewise. + (create_access_replacement): Likewise. + (analyze_access_subtree): Likewise. + (analyze_all_variable_accesses): Likewise. + (sra_modify_assign): Likewise. + (initialize_constant_pool_replacements): Likewise. + (find_param_candidates): Likewise. + (decide_one_param_reduction): Likewise. + (replace_removed_params_ssa_names): Likewise. + * tree-ssa-ccp.c (ccp_fold_stmt): Likewise. + * tree-ssa-copy.c (dump_copy_of): Likewise. + (copy_prop_visit_cond_stmt): Likewise. + * tree-ssa-dce.c (mark_operand_necessary): Likewise. + * tree-ssa-dom.c (pass_dominator::execute): Likewise. + (record_equivalences_from_stmt): Likewise. + * tree-ssa-dse.c (compute_trims): Likewise. + (delete_dead_call): Likewise. + (delete_dead_assignment): Likewise. + * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Likewise. + (forward_propagate_into_cond): Likewise. + (pass_forwprop::execute): Likewise. + * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise. + * tree-ssa-loop-im.c (invariantness_dom_walker::before_dom_children): + Likewise. + (move_computations_worker): Likewise. + (execute_sm): Likewise. + * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Likewise. + (remove_exits_and_undefined_stmts): Likewise. + (remove_redundant_iv_tests): Likewise. + * tree-ssa-loop-ivopts.c (dump_use): Likewise. + (adjust_iv_update_pos): Likewise. + * tree-ssa-math-opts.c (bswap_replace): Likewise. + * tree-ssa-phiopt.c (factor_out_conditional_conversion): Likewise. + (value_replacement): Likewise. + * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise. + * tree-ssa-pre.c (print_pre_expr): Likewise. + (get_representative_for): Likewise. + (create_expression_by_pieces): Likewise. + (insert_into_preds_of_block): Likewise. + (eliminate_insert): Likewise. + (eliminate_dom_walker::before_dom_children): Likewise. + (eliminate): Likewise. + (remove_dead_inserted_code): Likewise. + * tree-ssa-propagate.c (substitute_and_fold): Likewise. + * tree-ssa-reassoc.c (get_rank): Likewise. + (eliminate_duplicate_pair): Likewise. + (eliminate_plus_minus_pair): Likewise. + (eliminate_not_pairs): Likewise. + (undistribute_ops_list): Likewise. + (eliminate_redundant_comparison): Likewise. + (update_range_test): Likewise. + (optimize_range_tests_var_bound): Likewise. + (optimize_vec_cond_expr): Likewise. + (rewrite_expr_tree): Likewise. + (rewrite_expr_tree_parallel): Likewise. + (linearize_expr): Likewise. + (break_up_subtract): Likewise. + (linearize_expr_tree): Likewise. + (attempt_builtin_powi): Likewise. + (attempt_builtin_copysign): Likewise. + (transform_stmt_to_copy): Likewise. + (transform_stmt_to_multiply): Likewise. + (dump_ops_vector): Likewise. + * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Likewise. + (print_scc): Likewise. + (set_ssa_val_to): Likewise. + (visit_reference_op_store): Likewise. + (visit_use): Likewise. + (sccvn_dom_walker::before_dom_children): Likewise. + (run_scc_vn): Likewise. + * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): + Likewise. + (expr_hash_elt::print): Likewise. + (const_and_copies::pop_to_marker): Likewise. + (const_and_copies::record_const_or_copy_raw): Likewise. + * tree-ssa-structalias.c (compute_dependence_clique): Likewise. + * tree-ssa-uninit.c (collect_phi_def_edges): Likewise. + (dump_predicates): Likewise. + (find_uninit_use): Likewise. + (warn_uninitialized_phi): Likewise. + (pass_late_warn_uninitialized::execute): Likewise. + * tree-ssa.c (verify_vssa): Likewise. + (verify_ssa): Likewise. + (maybe_optimize_var): Likewise. + * tree-vrp.c (dump_value_range): Likewise. + (dump_all_value_ranges): Likewise. + (dump_asserts_for): Likewise. + (register_edge_assert_for_2): Likewise. + (vrp_visit_cond_stmt): Likewise. + (vrp_visit_switch_stmt): Likewise. + (vrp_visit_stmt): Likewise. + (vrp_visit_phi_node): Likewise. + (simplify_cond_using_ranges_1): Likewise. + (fold_predicate_in): Likewise. + (evrp_dom_walker::before_dom_children): Likewise. + (evrp_dom_walker::push_value_range): Likewise. + (evrp_dom_walker::pop_value_range): Likewise. + (execute_early_vrp): Likewise. + +2017-05-16 Richard Biener + + * dwarf2out.c (loc_list_from_tree_1): Do not create + DW_OP_GNU_variable_value for DECL_IGNORED_P decls. + +2017-05-16 Richard Biener + + * dwarf2out.c (resolve_variable_value_in_expr): Lookup DIE + just generated. + (note_variable_value_in_expr): If we resolved the decl ref + do not push to the stack. + +2017-05-16 Matthew Wahab + + * config/arm/arm_neon.h (vadd_f16): Use standard arithmetic + operations in fast-math mode. + (vaddq_f16): Likewise. + (vmul_f16): Likewise. + (vmulq_f16): Likewise. + (vsub_f16): Likewise. + (vsubq_f16): Likewise. + * config/arm/neon.md (add3): New. + (sub3): New. + (fma:3): New. Also remove outdated comment. + (mul3): New. + +2017-05-16 Martin Liska + + PR ipa/79849. + PR ipa/79850. + * ipa-devirt.c (warn_types_mismatch): Fix typo. + (odr_types_equivalent_p): Likewise. + +2017-05-15 Sylvestre Ledru + + * plugin.c (try_init_one_plugin): Fix ressource leaks (CID 726637). + +2017-05-15 Uros Bizjak + + PR target/80425 + * config/i386.i386.md (*zero_extendsidi2): Do not penalize + non-interunit SSE move alternatives with '?'. + (zero-extendsidi peephole2): New peephole to skip intermediate + general register in SSE zero-extend sequence. + +2017-05-15 Jeff Law + + * reorg.c (relax_delay_slots): Create a new variable to hold + the temporary target rather than clobbering TARGET_LABEL. + + * config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Add + missing argument to extract_bit_field call. + * config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Likewise. + +2017-05-15 Martin Liska + + PR driver/31468 + * gcc.c (process_command): Do not allow empty argument of -o option. + +2017-05-15 Renlin Li + + * config/aarch64/aarch64-protos.h (aarch64_expand_call): Declare. + * config/aarch64/aarch64.c (aarch64_expand_call): Define. + * config/aarch64/constraints.md (Usf): Add long call check. + * config/aarch64/aarch64.md (call): Use aarch64_expand_call. + (call_value): Likewise. + (sibcall): Likewise. + (sibcall_value): Likewise. + (call_insn): New. + (call_value_insn): New. + (sibcall_insn): Update rtx pattern. + (sibcall_value_insn): Likewise. + (call_internal): Remove. + (call_value_internal): Likewise. + (sibcall_internal): Likewise. + (sibcall_value_internal): Likewise. + (call_reg): Likewise. + (call_symbol): Likewise. + (call_value_reg): Likewise. + (call_value_symbol): Likewise. + +2017-05-14 Krister Walfridsson + + PR target/80600 + * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always add -lgcc. + +2017-05-14 Uros Bizjak + + * config/i386.i386.c (ix86_cc_modes_compatible): CCNOmode is + compatible with CCGOCmode and with CCZmode. + +2017-05-14 Martin Sebor + + PR middle-end/77671 + * gimple-fold.c (gimple_fold_builtin_sprintf): Make extern. + (gimple_fold_builtin_snprintf): Same. + * gimple-fold.h (gimple_fold_builtin_sprintf): Declare. + (gimple_fold_builtin_snprintf): Same. + * gimple-ssa-sprintf.c (get_format_string): Correct the detection + of character types. + (is_call_safe): New function. + (try_substitute_return_value): Call it. + (try_simplify_call): New function. + (pass_sprintf_length::handle_gimple_call): Call it. + +2017-05-14 Martin Sebor + + PR middle-end/80669 + * builtins.c (expand_builtin_stpncpy): Simplify. + +2017-05-14 Daniel Santos + + * config/i386/i386.opt: Add option -mcall-ms2sysv-xlogues. + * config/i386/i386.h + (x86_64_ms_sysv_extra_clobbered_registers): Change type to unsigned. + (NUM_X86_64_MS_CLOBBERED_REGS): New macro. + (struct machine_function): Add new members call_ms2sysv, + call_ms2sysv_pad_in, call_ms2sysv_pad_out and call_ms2sysv_extra_regs. + (struct machine_frame_state): New fields sp_realigned and + sp_realigned_offset. + * config/i386/i386.c + (enum xlogue_stub): New enum. + (enum xlogue_stub_sets): New enum. + (class xlogue_layout): New class. + (struct ix86_frame): New fields stack_realign_allocate_offset, + stack_realign_offset and outlined_save_offset. Modify comments to + detail stack layout when using out-of-line stubs. + (ix86_target_string): Add -mcall-ms2sysv-xlogues option. + (ix86_option_override_internal): Add sorry() for TARGET_SEH and + -mcall-ms2sysv-xlogues. + (stub_managed_regs): New static variable. + (ix86_save_reg): Add new parameter ignore_outlined to optionally omit + registers managed by out-of-line stub. + (disable_call_ms2sysv_xlogues): New function. + (ix86_compute_frame_layout): Modify re-alignment calculations, disable + m->call_ms2sysv when appropriate and compute frame layout for + out-of-line stubs. + (sp_valid_at, fp_valid_at): New inline functions. + (choose_basereg): New function. + (choose_baseaddr): Add align parameter, use choose_basereg and modify + all callers. + (ix86_emit_save_reg_using_mov, ix86_emit_restore_sse_regs_using_mov): + Use align parameter of choose_baseaddr to generated aligned SSE movs + when possible. + (pro_epilogue_adjust_stack): Modify to track + machine_frame_state::sp_realigned. + (ix86_nsaved_regs): Modify to accommodate changes to ix86_save_reg. + (ix86_nsaved_sseregs): Likewise. + (ix86_emit_save_regs): Likewise. + (ix86_emit_save_regs_using_mov): Likewise. + (ix86_emit_save_sse_regs_using_mov): Likewise. + (get_scratch_register_on_entry): Likewise. + (gen_frame_set): New function. + (gen_frame_load): Likewise. + (gen_frame_store): Likewise. + (emit_outlined_ms2sysv_save): Likewise. + (emit_outlined_ms2sysv_restore): Likewise. + (ix86_expand_prologue): Modify stack re-alignment code and call + emit_outlined_ms2sysv_save when appropriate. + (ix86_emit_leave): Clear machine_frame_state::sp_realigned. Add + parameter rtx_insn *insn, which allows the function to be used to only + generate the notes. + (ix86_expand_epilogue): Modify validity checks of frame and stack + pointers, and call emit_outlined_ms2sysv_restore when appropriate. + (ix86_expand_call): Modify to enable m->call_ms2sysv when appropriate. + * config/i386/predicates.md + (save_multiple): New predicate. + (restore_multiple): Likewise. + * config/i386/sse.md + (save_multiple): New pattern. + (save_multiple_realign): Likewise. + (restore_multiple): Likewise. + (restore_multiple_and_return): Likewise. + (restore_multiple_leave_return): Likewise. + * Makefile.in: Export HOSTCXX and HOSTCXXFLAGS to site.exp + +2017-05-14 Julia Koval + + * config/i386/i386-builtin-types.def (VOID_FTYPE_INT_INT64): New type. + * config/i386/i386-builtin.def (__builtin_ia32_xgetbv) + (__builtin_ia32_xsetbv): New builtins. + * config/i386/i386.c (ix86_expand_special_args_builtin): + Process new types. + (ix86_expand_builtin): Special expand for new intrinsics. + * config/i386/i386.md (UNSPECV_XGETBV, UNSPECV_XSETBV): New. + (xsetbv, xsetbv_rex64, xgetbv, xgetbv_rex64): New insn patterns. + * config/i386/xsaveintrin.h (_xsetbv, _getbv): New intrinsics. + +2017-05-13 Trevor Saunders + + * cfganal.c (inverted_post_order_compute): Change argument type + to vec *. + * cfganal.h (inverted_post_order_compute): Adjust prototype. + * df-core.c (rest_of_handle_df_initialize): Adjust. + (rest_of_handle_df_finish): Likewise. + (df_analyze_1): Likewise. + (df_analyze): Likewise. + (loop_inverted_post_order_compute): Change argument to be a vec *. + (df_analyze_loop): Adjust. + (df_get_n_blocks): Likewise. + (df_get_postorder): Likewise. + * df.h (struct df_d): Change field to be a vec. + * lcm.c (compute_laterin): Adjust. + (compute_available): Likewise. + * lra-lives.c (lra_create_live_ranges_1): Likewise. + * tree-ssa-dce.c (remove_dead_stmt): Likewise. + * tree-ssa-pre.c (compute_antic): Likewise. + +2017-05-13 Trevor Saunders + + * cfganal.c (connect_infinite_loops_to_exit): Adjust. + (depth_first_search::depth_first_search): Change structure init + function to this constructor. + (depth_first_search::add_bb): Rename function to this member. + (depth_first_search::execute): Likewise. + (flow_dfs_compute_reverse_finish): Adjust. + +2017-05-13 Trevor Saunders + + * ddg.c (find_nodes_on_paths): Use auto_sbitmap. + (longest_simple_path): Likewise. + * shrink-wrap.c (spread_components): Likewise. + (disqualify_problematic_components): Likewise. + (emit_common_heads_for_components): Likewise. + (emit_common_tails_for_components): Likewise. + (insert_prologue_epilogue_for_components): Likewise. + +2017-05-13 Trevor Saunders + + * tree-ssa-dse.c (dse_dom_walker): Make m_live_byes a + auto_sbitmap. + +2017-05-13 Trevor Saunders + + * df-core.c (df_set_blocks): Start using auto_bitmap. + (df_compact_blocks): Likewise. + * df-problems.c (df_rd_confluence_n): Likewise. + * df-scan.c (df_insn_rescan_all): Likewise. + (df_process_deferred_rescans): Likewise. + (df_update_entry_block_defs): Likewise. + (df_update_exit_block_uses): Likewise. + (df_entry_block_bitmap_verify): Likewise. + (df_exit_block_bitmap_verify): Likewise. + (df_scan_verify): Likewise. + * lra-constraints.c (lra_constraints): Likewise. + (undo_optional_reloads): Likewise. + (lra_undo_inheritance): Likewise. + * lra-remat.c (calculate_gen_cands): Likewise. + (do_remat): Likewise. + * lra-spills.c (assign_spill_hard_regs): Likewise. + (spill_pseudos): Likewise. + * tree-ssa-pre.c (bitmap_set_and): Likewise. + (bitmap_set_subtract_values): Likewise. + +2017-05-13 Trevor Saunders + + * haifa-sched.c (estimate_shadow_tick): Replace manual bitmap + management with auto_bitmap. + (fix_inter_tick): Likewise. + (fix_recovery_deps): Likewise. + * ira.c (add_store_equivs): Likewise. + (find_moveable_pseudos): Likewise. + (split_live_ranges_for_shrink_wrap): Likewise. + * print-rtl.c (rtx_reuse_manager::rtx_reuse_manager): Likewise. + (rtx_reuse_manager::seen_def_p): Likewise. + (rtx_reuse_manager::set_seen_def): Likewise. + * print-rtl.h (class rtx_reuse_manager): Likewise. + +2017-05-13 Trevor Saunders + + * bt-load.c (combine_btr_defs): Use auto_bitmap to manage bitmap + lifetime. + (migrate_btr_def): Likewise. + * cfgloop.c (get_loop_body_in_bfs_order): Likewise. + * df-core.c (loop_post_order_compute): Likewise. + (loop_inverted_post_order_compute): Likewise. + * hsa-common.h: Likewise. + * hsa-gen.c (hsa_bb::~hsa_bb): Likewise. + * init-regs.c (initialize_uninitialized_regs): Likewise. + * ipa-inline.c (resolve_noninline_speculation): Likewise. + (inline_small_functions): Likewise. + * ipa-reference.c (ipa_reference_write_optimization_summary): Likewise. + * ira.c (combine_and_move_insns): Likewise. + (build_insn_chain): Likewise. + * loop-invariant.c (find_invariants): Likewise. + * lower-subreg.c (propagate_pseudo_copies): Likewise. + * predict.c (tree_predict_by_opcode): Likewise. + (predict_paths_leading_to): Likewise. + (predict_paths_leading_to_edge): Likewise. + (estimate_loops_at_level): Likewise. + (estimate_loops): Likewise. + * shrink-wrap.c (try_shrink_wrapping): Likewise. + (spread_components): Likewise. + * tree-cfg.c (remove_edge_and_dominated_blocks): Likewise. + * tree-loop-distribution.c (rdg_build_partitions): Likewise. + * tree-predcom.c (tree_predictive_commoning_loop): Likewise. + * tree-ssa-coalesce.c (coalesce_ssa_name): Likewise. + * tree-ssa-phionlycprop.c (pass_phi_only_cprop::execute): Likewise. + * tree-ssa-pre.c (remove_dead_inserted_code): Likewise. + * tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise. + * tree-ssa-threadupdate.c (compute_path_counts): Likewise. + (mark_threaded_blocks): Likewise. + (thread_through_all_blocks): Likewise. + * tree-ssa.c (verify_ssa): Likewise. + (execute_update_addresses_taken): Likewise. + * tree-ssanames.c (verify_ssaname_freelists): Likewise. + +2017-05-13 Trevor Saunders + + * cfganal.c (mark_dfs_back_edges): Replace manual stack with + auto_vec. + (post_order_compute): Likewise. + (inverted_post_order_compute): Likewise. + (pre_and_rev_post_order_compute_fn): Likewise. + +2017-05-13 Trevor Saunders + + * genrecog.c (int_set::int_set): Explicitly construct our + auto_vec base class. + * vec.h (auto_vec::auto_vec): New constructor. + +2017-05-13 Trevor Saunders + + * bitmap.h (class auto_bitmap): New constructor taking + bitmap_obstack * argument. + +2017-05-13 Trevor Saunders + + * bitmap.h (class auto_bitmap): Change type of m_bits to + bitmap_head, and adjust ctor / dtor and member operators. + +2017-05-13 Uros Bizjak + + * compare-elim.c (equivalent_reg_at_start): Return NULL_RTX + when returned register mode doesn't match original mode. + +2017-05-12 Jeff Law + Jakub Jelinek + + * config/mn10300/mn10300.c (mn10300_match_ccmode): Fix where + we look for cc setter after the compare-elim changes. + * config/mn10300/mn10300.md (addsi3_flags): Fix order of patterns + within the vector to match what compare-elim now expects. + (subsi3_flags, andsi3_flags, iorsi3_flags): Likewise. + (xorsi3_flags, one_cmplsi2_flags): Likewise. + + * config/rx/rx.c (rx_match_ccmode): Fix where we look cc setter + after the compare-elim changes. + * config/rx/rx.md (abssi2_flags): Fix order of patterns within + the vector to match what compare-elim now expects. + (addsi3_flags, adc_flags, addsi3_flags peepholes): Likewise. + (andsi3_flags, negsi2_flags, one_cmplsi2_flags): Likewise. + (iorsi3_flags, rotlsi3_flags, rotrsi3_flags): Likewise. + (ashrsi3_flags, lshrsi3_flags, ashlsi3_flags): Likewise. + (ssaddsi3, subsi3_flags, sbb_flags, xorsi3_flags): Likewise. + + * config/visium/visium.c (single_set_and_flags): Fix where + we look for cc setter after the compare-elim changes. + * config/visium/visium.md (flags_subst_logic): Fix order of patterns + with the vector to match what compare-elim now expects. + (flags_subst_arith, add3_insn_set_carry): Likewise. + (add3_insn_set_overflow, addsi3_insn_set_carry): Likewise. + (addsi3_insn_set_overflow, sub3_insn_set_carry): Likewise. + (sub3_insn_set_overflow, subsi3_insn_set_carry): Likewise. + (subsi3_insn_set_overflow, negsi2_insn_set_carry): Likewise. + (neg2_insn_set_overflow): Likewise. + +2017-05-12 Jim Wilson + + PR middle-end/79794 + * expmed.c (extract_bit_field_1): Add alt_rtl argument. Before + maybe_expand_insn call, set ops[0].target. If still set after call, + set alt_rtl. Add extra arg to recursive calls. + (extract_bit_field): Add alt_rtl argument. Pass to + extract_bit_field. + * expmed.h (extract_bit_field): Fix prototype. + * expr.c (emit_group_load_1, copy_blkmode_from_reg) + (copy_blkmode_to_reg, read_complex_part, store_field): Pass extra NULL + to extract_bit_field_calls. + (expand_expr_real_1): Pass alt_rtl to expand_expr_real instead of 0. + Pass alt_rtl to extract_bit_field calls. + * calls.c (store_unaligned_arguments_into_psuedos) + load_register_parameters): Pass extra NULL to extract_bit_field calls. + * optabs.c (maybe_legitimize_operand): Clear op->target when call + gen_reg_rtx. + * optabs.h (struct expand_operand): Add target bitfield. + +2017-05-12 Uros Bizjak + + * compare-elim.c (try_eliminate_compare): Canonicalize + operation with embedded compare to + [(set (reg:CCM) (compare:CCM (operation) (immediate))) + (set (reg) (operation)]. + + * config/i386/i386.c (TARGET_FLAGS_REGNUM): New define. + +2017-05-12 Uros Bizjak + + PR target/80723 + * config/i386/i386.c (ix86_rtx_cost) [case PLUS]: Ignore the + cost of adding a carry flag for ADC instruction. + [case MINUS]: Ignore the cost of subtracting a carry flag + for SBB instruction. + +2017-05-12 Steven Munroe + + * config.gcc (powerpc*-*-*): Add bmi2intrin.h, bmiintrin.h, + and x86intrin.h + * config/rs6000/bmiintrin.h: New file. + * config/rs6000/bmi2intrin.h: New file. + * config/rs6000/x86intrin.h: New file. + +2017-05-12 Jeff Law + + * tree-vrp.c (vrp_dom_walker::before_dom_children): Push unwinding + markers. + +2017-05-12 Peter Bergner + + PR middle-end/80707 + * tree-cfg.c: Remove cfg edges of unreachable case statements. + +2017-05-12 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for + early expansion of vector divide builtins. + (builtin_function_type): Add VSX_BUILTIN_UDIV_V2DI to the list of + builtins identified as having unsigned arguments. + +2017-05-12 Will Schmidt + + * config/rs6000/rs6000.c (gimple-fold.h): New #include. + (rs6000_gimple_fold_builtin): Add handling for early GIMPLE + expansion of vector logical operations (and, andc, or, xor, + nor, orc, nand). + +2017-05-12 Will Schmidt + + * gimple-fold.c (create_tmp_reg_or_ssa_name): Remove static declaration. + * gimple-fold.h (create_tmp_reg_or_ssa_name): New prototype. + +2017-05-12 Will Schmidt + + * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for + early GIMPLE expansion of vector multiplies. + +2017-05-12 Prakhar Bahuguna + + * config/arm/arm.md (movsi): Add TARGET_32BIT in addition to the + TARGET_HAVE_MOVT conditional. + (movt splitter): Likewise. + +2017-05-12 Richard Biener + + * tree-ssa-sccvn.h (has_VN_INFO): Declare. + * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): + Fold all stmts not inplace. + +2017-05-12 Richard Biener + + PR tree-optimization/80713 + * tree-ssa-pre.c (remove_dead_inserted_code): Clear + inserted_exprs bit for not removed stmts. + +2017-05-12 Thomas Schwinge + + PR middle-end/69921 + * tree-parloops.c (create_parallel_loop): Set "oacc kernels + parallelized" attribute for parallelized OpenACC kernels. + * omp-offload.c (execute_oacc_device_lower): Use it. + + * omp-expand.c (expand_omp_target) : + Set "oacc kernels" attribute. + * omp-general.c (oacc_set_fn_attrib): Remove is_kernel formal + parameter. Adjust all users. + (oacc_fn_attrib_kernels_p): Remove function. + * omp-offload.c (execute_oacc_device_lower): Look for "oacc + kernels" attribute instead of calling oacc_fn_attrib_kernels_p. + * tree-ssa-loop.c (gate_oacc_kernels): Likewise. + * tree-parloops.c (create_parallel_loop): If oacc_kernels_p, + assert "oacc kernels" attribute is set. + +2017-05-11 Carl Love + + * config/rs6000/rs6000-c: Add support for built-in functions + vector unsigned char vec_popcnt (vector signed char) + vector unsigned char vec_popcnt (vector unsigned char) + vector unsigned short vec_popcnt (vector signed short) + vector unsigned short vec_popcnt (vector unsigned short) + vector unsigned int vec_popcnt (vector signed int) + vector unsigned int vec_popcnt (vector unsigned int) + vector unsigned long long vec_popcnt (vector signed long long) + vector unsigned long long vec_popcnt (vector unsigned long long) + vector signed long long vec_slo (vector signed long long, + vector signed char) + vector signed long long vec_slo (vector signed long long, + vector unsigned char) + vector unsigned long long vec_slo (vector unsigned long long, + vector signed char) + vector unsigned long long vec_slo (vector unsigned long long, + vector unsigned char) + * config/rs6000/rs6000-builtin.def: Add definitions for VPOPCNTUB, + VPOPCNTUH, VPOPCNTUW, and VPOPCNTUD overloads. + * config/rs6000/altivec.h: Add define for vec_popcnt, vec_popcntb, + vec_popcnth, vec_popcntw and vec_popcntd built-in functions. + * doc/extend.texi: Update the built-in documentation file for the + new built-in functions. + +2017-05-11 Michael Meissner + + * attribs.h (sorted_attr_string): Move machine independent + functions for target clone support from the i386 port to common + code. Rename ix86_function_versions to common_function_versions. + Rename make_name to make_unique_name. + (common_function_versions): Likewise. + (make_unique_name): Likewise. + (make_dispatcher_decl): Likewise. + (is_function_default_version): Likewise. + * attribs.c (attr_strcmp): Likewise. + (sorted_attr_string): Likewise. + (common_function_versions): Likewise. + (make_unique_name): Likewise. + (make_dispatcher_decl): Likewise. + (is_function_default_version): Likewise. + * config/i386/i386.c (attr_strcmp): Likewise. + (sorted_attr_string): Likewise. + (ix86_function_versions): Likewise. + (make_name): Likewise. + (make_dispatcher_decl): Likewise. + (is_function_default_version): Likewise. + (TARGET_OPTION_FUNCTION_VERSIONS): Update target function hook. + +2017-05-11 Bill Schmidt + + PR target/80695 + * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): + Account for direct move costs for vec_construct of integer + vectors. + +2017-05-11 Uros Bizjak + + PR target/80706 + * config/i386/sync.md (UNSPEC_LDX_ATOMIC): New unspec. + (UNSPEC_STX_ATOMIC): Ditto. + (loaddi_via_sse): New insn. + (storedi_via_sse): Ditto. + (atomic_loaddi_fpu): Emit loaddi_via_sse and storedi_via_sse. + Update corresponding peephole2 patterns. + (atomic_storedi_fpu): Ditto. + +2017-05-11 Julia Koval + + * config/i386/avx512fintrin.h (_mm_mask_rsqrt14_sd) + (_mm_maskz_rsqrt14_sd, _mm_mask_rsqrt14_ss, _mm_maskz_rsqrt14_ss): + New intrinsics. + * config/i386/i386-builtin.def (__builtin_ia32_rsqrt14sd_mask) + (__builtin_ia32_rsqrt14ss_mask): New builtins. + * config/i386/sse.md (rsqrt14__mask): New pattern. + +2017-05-11 Nathan Sidwell + + * graphite-poly.c: Include dumpfile.h. + + * dumpfle.h (dump_function): Declare here ... + * tree-dump.h (dump_function): ... not here. + * dumpfile.c: #include tree-cfg.h. + (dump_function): Move here from ... + * tree-dump.c (dump_function): ... here. + * gimplify.c: #include splay-tree.h, not tree-dump.h. + * graphite-poly.c: Don't include tree-dump.h. + * cgraphclones.c: Include dumpfile.h not tree-dump.h. + * print-tree.c: Likewise. + * stor-layout.c: Likewise. + * tree-nested.c: Likewise. + + * dumpfile.c (dump_start): Use TDF_FLAGS. + (dump_enable_all): Fix TDF_KIND check thinko. + +2017-05-11 Kelvin Nilsen + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + array entries to represent two legal parameterizations of the + overloaded __builtin_cmpb function, as represented by the + P6_OV_BUILTIN_CMPB constant. + (altivec_resolve_overloaded_builtin): Add special case handling + for the __builtin_cmpb function, as represented by the + P6_OV_BUILTIN_CMPB constant. + * config/rs6000/rs6000-builtin.def (BU_P6_2): New macro. + (BU_P6_64BIT_2): New macro. + (BU_P6_OVERLOAD_2): New macro + (CMPB_32): Add 32-bit compare-bytes support for 32-bit only targets. + (CMPB): Add 64-bit compare-bytes support for 32-bit and 64-bit targets. + (CMPB): Add overload support to represent both 32-bit and 64-bit + compare-bytes function. + * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add + support for TARGET_CMPB. + * config/rs6000/rs6000.h: Add support for RS6000_BTM_CMPB. + * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add + documentation of the __builtin_cmpb overloaded built-in function. + +2017-05-11 Richard Biener + + PR tree-optimization/80705 + * tree-vect-data-refs.c (vect_analyze_data_refs): DECL_NONALIASED + bases are not vectorizable. + +2017-05-11 Bin Cheng + + * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger + when counting register pressure. + +2017-05-11 Bin Cheng + + * tree-ssa-loop-ivopts.c (compare_cost_pair): New. + (iv_ca_more_deps): Renamed to ... + (iv_ca_compare_deps): ... this. + (iv_ca_extend): Extend iv_ca if NEW_CP is cheaper than OLD_CP. + +2017-05-11 Bin Cheng + + * tree-ssa-loop-ivopts.c (find_interesting_uses): Move inv vars dump + to ... + (determine_group_iv_costs): ... here. + (find_inv_vars_cb): Record inv var if it's not recorded before. + +2017-05-11 Bin Cheng + + * tree-ssa-loop-ivopts.c (allow_ip_end_pos_p): Refine comments. + (get_shiftadd_cost): Ditto. + +2017-05-11 Bin Cheng + + * tree-ssa-address.c: Include header file. + (move_hint_to_base): Return TRUE if BASE_HINT is moved to memory + address. + (add_to_parts): Refactor. + (addr_to_parts): New parameter. Update use of move_hint_to_base. + (create_mem_ref): Update use of addr_to_parts. Re-associate addr + in new order. + +2017-05-11 Bin Cheng + + PR tree-optimization/53090 + * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New enum value + COMP_IV_EXPR_2. + (extract_cond_operands): Detect condition with IV on both sides + and return COMP_IV_EXPR_2. + (find_interesting_uses_cond): Add iv_use for both IVs in condition. + (rewrite_use_compare): Simplify by removing call to function + extract_cond_operands. + +2017-05-11 Bin Cheng + + * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New. + (extract_cond_operands): Detect condition comparing against non- + invariant bound and return appropriate enum value. + (find_interesting_uses_cond): Update use of extract_cond_operands. + Handle its return value accordingly. + (determine_group_iv_cost_cond, rewrite_use_compare): Ditto. + +2017-05-11 Bin Cheng + + * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Re-associate + nonlinear iv_use computation in loop invariant sensitive way. + +2017-05-11 Bin Cheng + + * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): New. + (find_iv_candidates): Call relate_compare_use_with_all_cands. + +2017-05-11 Bin Cheng + + * tree-ssa-loop-ivopts.c (struct iv_cand): New field inv_exprs. + (dump_cand): Support iv_cand.inv_exprs. + (add_candidate_1): Record invariant exprs in iv_cand.inv_exprs + for candidates. + (iv_ca_set_no_cp, iv_ca_set_cp, free_loop_data): Support + iv_cand.inv_exprs. + +2017-05-11 Bin Cheng + + * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Move + from ... + * tree-ssa-address.c (multiplier_allowed_in_address_p): ... to here + as local function. Include necessary header files. + * tree-ssa-loop-ivopts.h (multiplier_allowed_in_address_p): Delete. + +2017-05-11 Bin Cheng + + * tree-ssa-loop-ivopts.c (autoinc_possible_for_pair): Simplify. + +2017-05-11 Bin Cheng + + * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Handle more + operators: TRUNC_DIV_EXPR, BIT_AND_EXPR, BIT_IOR_EXPR, LSHIFT_EXPR, + RSHIFT_EXPR and BIT_NOT_EXPR. + +2017-05-11 Bin Cheng + + * tree-ssa-loop-ivopts.c (get_loop_invariant_expr): Simplify. + (adjust_setup_cost): New parameter supporting round up adjustment. + (struct address_cost_data): Delete. + (force_expr_to_var_cost): Don't bound cost with spill_cost. + (split_address_cost, ptr_difference_cost): Delete. + (difference_cost, compare_aff_trees, record_inv_expr): Delete. + (struct ainc_cost_data): New struct. + (get_address_cost_ainc): New function. + (get_address_cost, get_computation_cost): Reimplement. + (determine_group_iv_cost_address): Record inv_expr for all uses of + a group. + (determine_group_iv_cost_cond): Call get_loop_invariant_expr. + (iv_ca_has_deps): Reimplemented to ... + (iv_ca_more_deps): ... this. Check if NEW_CP introduces more deps + than OLD_CP. + (iv_ca_extend): Call iv_ca_more_deps. + +2017-05-11 Bin Cheng + + * tree-ssa-address.c (struct mem_address): Move to header file. + (valid_mem_ref_p, move_fixed_address_to_symbol): Make it global. + * tree-ssa-address.h (struct mem_address): Move from C file. + (valid_mem_ref_p, move_fixed_address_to_symbol): Declare. + +2017-05-11 Bin Cheng + + * tree-affine.h (aff_combination_type): New interface. + (aff_combination_zero_p): Remove static. + (aff_combination_const_p): New interface. + (aff_combination_singleton_var_p): New interfaces. + +2017-05-11 Richard Biener + + * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): + Skip unreachable blocks and destinations. + (eliminate): Move stmt removal and fixup ... + (fini_eliminate): ... here. Skip inserted exprs. + (pass_pre::execute): Move fini_pre after fini_eliminate. + * tree-ssa-tailmerge.c: Include tree-cfgcleanup.h. + (tail_merge_optimize): Run cleanup_tree_cfg if requested by + PRE to get rid of dead code that has invalid SSA form and + split critical edges again. + +2017-05-11 Bin Cheng + + * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes. + +2017-05-11 Richard Biener + + * passes.c (execute_function_todo): Verify loops if they are + said to be up-to-date. + * cfgexpand.c (pass_expand::execute): Discard loops for -dx. + * trans-mem.c (pass_tm_edges::execute): Mark loops for fixup. + +2017-05-10 John David Anglin + + PR target/80090 + * config/pa/pa.c (pa_assemble_integer): When outputting a SYMBOL_REF, + handle calling assemble_external ourself. + + PR target/79027 + * config/pa/pa.c (pa_cannot_change_mode_class): Reject changes to/from + modes with zero size. Enhance comment. + +2017-05-10 Bill Schmidt + + * config/rs6000/rs6000.c (altivec_init_builtins): Define POWER8 + built-ins for vec_xl and vec_xst with short and char pointer + arguments. + +2017-05-10 Sebastian Peryt + + * config/i386/avx512fintrin.h (_mm_mask_max_round_sd) + (_mm_maskz_max_round_sd, _mm_mask_max_round_ss) + (_mm_maskz_max_round_ss, _mm_mask_min_round_sd) + (_mm_maskz_min_round_sd, _mm_mask_min_round_ss) + (_mm_maskz_min_round_ss): New intrinsics. + * config/i386/i386-builtin-types.def (V2DF, V2DF, V2DF, V2DF, UQI, INT) + (V4SF, V4SF, V4SF, V4SF, UQI, INT): New function type aliases. + * config/i386/i386-builtin.def (__builtin_ia32_maxsd_mask_round) + (__builtin_ia32_maxss_mask_round, __builtin_ia32_minsd_mask_round) + (__builtin_ia32_minss_mask_round): New builtins. + * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT) + (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types. + * config/i386/sse.md (_vm3): + Rename to ... + (_vm3): ... this. + (v\t{%2, %1, %0|%0, %1, %2}): + Change to ... + (v\t{%2, %1, %0|%0, %1, %2}): + ... this. + +2017-05-10 Sebastian Peryt + + * config/i386/avx512fintrin.h (_mm_mask_mul_round_sd) + (_mm_maskz_mul_round_sd, _mm_mask_mul_round_ss) + (_mm_maskz_mul_round_ss, _mm_mask_div_round_sd) + (_mm_maskz_div_round_sd, _mm_mask_div_round_ss) + (_mm_maskz_div_round_ss, _mm_mask_mul_sd, _mm_maskz_mul_sd) + (_mm_mask_mul_ss, _mm_maskz_mul_ss, _mm_mask_div_sd) + (_mm_maskz_div_sd, _mm_mask_div_ss, _mm_maskz_div_ss): New intrinsics. + * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT) + (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases. + * config/i386/i386-builtin.def (__builtin_ia32_divsd_mask_round) + (__builtin_ia32_divss_mask_round, __builtin_ia32_mulsd_mask_round) + (__builtin_ia32_mulss_mask_round): New builtins. + * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT) + (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types. + * config/i386/sse.md (_vm3): + Rename to ... + (_vm3): ... this. + (v\t{%2, %1, %0|%0, %1, %2}): + Change to ... + (v\t{%2, %1, %0|%0, %1, %2}): + ... this. + +2017-05-10 Julia Koval + + * config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d) + (_mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d) + (_mm256_setr_m128i): New intrinsics. + +2017-05-10 Julia Koval + + * config/i386/avx512fintrin.h (_mm_mask_rcp14_sd) + (_mm_maskz_rcp14_sd, _mm_mask_rcp14_ss) + (_mm_maskz_rcp14_ss): New intrinsics. + * config/i386/i386-builtin.def (__builtin_ia32_rcp14sd_mask) + (__builtin_ia32_rcp14ss_mask): New builtins. + * config/i386/sse.md (srcp14_mask): New pattern. + +2017-05-10 Peter Bergner + + PR tree-optimization/51513 + * tree-cfg.c (gimple_seq_unreachable_p): New function. + (assert_unreachable_fallthru_edge_p): Use it. + (group_case_labels_stmt): Likewise. + * tree-cfg.h: Prototype it. + * stmt.c: Include cfghooks.h and tree-cfg.h. + (emit_case_dispatch_table) : New local variable. + Use it to fill dispatch table gaps. + Test for default_label before updating probabilities. + (expand_case) : Remove unneeded initialization. + Test for unreachable default case statement and remove its edge. + Set default_label accordingly. + * tree-ssa-ccp.c (optimize_unreachable): Update comment. + +2017-05-10 Carl Love + + * config/rs6000/rs6000-c: Add support for built-in functions + vector signed char vec_neg (vector signed char) + vector signed short int vec_neg (vector short int) + vector signed int vec_neg (vector signed int) + vector signed long long vec_neg (vector signed long long) + vector float vec_neg (vector float) + vector double vec_neg (vector double) + * config/rs6000/rs6000-builtin.def: Add definitions for NEG function + overload. + * config/rs6000/altivec.h: Add define for vec_neg + * doc/extend.texi: Update the built-in documentation for the + new built-in functions. + +2017-05-10 Prathamesh Kulkarni + + PR tree-optimization/77644 + * match.pd (sqrt(x) cmp sqrt(y) -> x cmp y): New pattern. + +2017-05-10 Nathan Sidwell + + * dumpfile.h (TDI_lang_all): New. + (TDF_KIND): New. Renumber others + (TDF_LANG, TDF_TREE, TDF_RTL, TDF_IPA): Enumerate value, rather + than bits. + * dumpfile.c (dump_files): Mark language dumps as TDF_LANG. add + lang-all. + (get_dump_file_name): Adjust suffix generation. + (dump_enable_all): Use TDF_KIND. + * doc/invoke.texi (-fdump-lang-all): Document. + + * dumpfile.h: Tabify. + +2017-05-10 Wilco Dijkstra + + PR target/80671 + * config/aarch64/cortex-a57-fma-steering.c (merge_forest): + Move member access before delete. + +2017-05-10 Alexandre Oliva + + * tree-inline.c (expand_call_inline): Split block at stmt + before the call. + +2017-05-09 Michael Meissner + + PR target/68163 + * config/rs6000/rs6000.md (f32_lr): Delete mode attributes that + are now unused after splitting mov{sf,sd}_hardfloat. + (f32_lr2): Likewise. + (f32_lm): Likewise. + (f32_lm2): Likewise. + (f32_li): Likewise. + (f32_li2): Likewise. + (f32_lv): Likewise. + (f32_sr): Likewise. + (f32_sr2): Likewise. + (f32_sm): Likewise. + (f32_sm2): Likewise. + (f32_si): Likewise. + (f32_si2): Likewise. + (f32_sv): Likewise. + (f32_dm): Likewise. + (f32_vsx): Likewise. + (f32_av): Likewise. + (mov_hardfloat): Split into separate movsf and movsd pieces. + For movsf, order stores so the VSX stores occur before the GPR + store which encourages the register allocator to use a traditional + FPR instead of a GPR. For movsd, order the stores so that the GPR + store comes before the VSX stores to allow the power6 to work. + This is due to the power6 not having a 32-bit integer store + instruction from a FPR. + (movsf_hardfloat): Likewise. + (movsd_hardfloat): Likewise. + +2017-05-09 Martin Sebor + + PR translation/80280 + * config/sol2-c.c (cmn_err_flag_specs): Initialize new data member + added in r247778. + + PR translation/80280 + * config/i386/msformat-c.c (ms_printf_flag_specs): Initialize new + data member added in r247778. + (ms_scanf_flag_specs, ms_strftime_flag_specs): Same. + +2017-05-09 Nathan Sidwell + + * tree.h (tree_fits_shwi_p, tree_fits_uhwi_p): Unconditionally pure. + + * ipa-devirt.c (default_hash_traits): Skip struct-scope + typedefs. + +2017-05-09 Marek Polacek + + * doc/invoke.texi: Fix typo. + +2017-05-09 Richard Biener + + * tree-vrp.c (vrp_val_is_max): Adjust comment. + (vrp_val_is_min): Likewise. + (set_value_range_to_value): Likewise. + (set_value_range_to_nonnegative): Likewise. + (gimple_assign_nonzero_p): Likewise. + (gimple_stmt_nonzero_p): Likewise. + (vrp_int_const_binop): Likewise. Remove unreachable case. + (adjust_range_with_scev): Adjust comments. + (compare_range_with_value): Likewise. + (extract_range_from_phi_node): Likewise. + (test_for_singularity): Likewise. + +2017-05-09 Richard Biener + + * tree-vrp.c (get_single_symbol): Add assert that we don't + get overflowed constants as invariant part. + (compare_values_warnv): Add comment before the TREE_NO_WARNING + checks. Use wi::cmp instead of recursing for integer constants. + (compare_values): Just ignore whether we assumed undefined + overflow instead of failing the compare. + (extract_range_for_var_from_comparison_expr): Add comment before the + TREE_NO_WARNING sets. + (test_for_singularity): Likewise. + (extract_range_from_comparison): Do not disable optimization + when we assumed undefined overflow. + (extract_range_basic): Remove init of unused var. + +2017-05-09 Richard Biener + + * tree-vrp.c (vrp_int_const_binop): Use wide-ints and simplify. + (extract_range_from_multiplicative_op_1): Adjust. + (extract_range_from_binary_expr_1): Use int_const_binop. + +2017-05-08 Kelvin Nilsen + + PR target/80101 + * config/rs6000/power6.md: Replace store_data_bypass_p calls with + rs6000_store_data_bypass_p in seven define_bypass directives and + in several comments. + * config/rs6000/rs6000-protos.h: Add prototype for + rs6000_store_data_bypass_p function. + * config/rs6000/rs6000.c (rs6000_store_data_bypass_p): New + function implements slightly different (rs6000-specific) semantics + than store_data_bypass_p, returning false rather than aborting + with assertion error when arguments do not satisfy the + requirements of store data bypass. + (rs6000_adjust_cost): Replace six calls of store_data_bypass_p with + rs6000_store_data_bypass_p. + +2017-05-08 Max Filippov + + * config/xtensa/xtensa-protos.h + (xtensa_initial_elimination_offset): New declaration. + * config/xtensa/xtensa.c (xtensa_initial_elimination_offset): + New function. Move its body from the INITIAL_ELIMINATION_OFFSET + macro definition, add case for FRAME_POINTER_REGNUM when + FRAME_GROWS_DOWNWARD. + * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): New macro definition. + (INITIAL_ELIMINATION_OFFSET): Replace body with call to + xtensa_initial_elimination_offset. + +2017-05-08 Nathan Sidwell + + * doc/invoke.texi: Alphabetize -fdump options. + +2017-05-08 Martin Sebor + + PR translation/80280 + * config/sol2-c.c (solaris_pragma_align): Correct quoting. + +2017-05-08 Bernd Edlinger + + * target.def (compute_frame_layout): New optional target hook. + * doc/tm.texi.in (TARGET_COMPUTE_FRAME_LAYOUT): Add hook. + * doc/tm.texi (TARGET_COMPUTE_FRAME_LAYOUT): Add documentation. + * lra-eliminations.c (update_reg_eliminate): Call compute_frame_layout + target hook. + * reload1.c (verify_initial_elim_offsets): Likewise. + * config/arm/arm.c (TARGET_COMPUTE_FRAME_LAYOUT): Define. + (use_simple_return_p): Call arm_compute_frame_layout if needed. + (arm_get_frame_offsets): Split up into this ... + (arm_compute_frame_layout): ... and this function. + +2017-05-08 Richard Sandiford + + * config/aarch64/constraints.md (Usa): New constraint. + * config/aarch64/aarch64.md (*movsi_aarch64, *movdi_aarch64): Use it. + +2017-05-08 Thomas Preud'homme + + * config.gcc (arm*-*-*): Set TM_MULTILIB_CONFIG from + with_multilib_list after it has been checked. + +2017-05-08 Richard Biener + + * tree-ssa-pre.c (bitmap_set_and): Avoid bitmap copy. + (bitmap_set_subtract_values): Likewise. + +2017-05-08 Richard Biener + + * tree-vrp.c (gimple_assign_nonzero_warnv_p): Rename to ... + (gimple_assign_nonzero): ... this and remove strict_overflow_p + argument. + (gimple_stmt_nonzero_warnv_p): Rename to ... + (gimple_stmt_nonzero_p): ... this and remove strict_overflow_p + argument. + (vrp_stmt_computes_nonzero): Remove strict_overflow_p argument. + (extract_range_basic): Adjust, do not disable propagation on + strict overflow sensitive simplification. + (vrp_visit_cond_stmt): Likewise. + +2017-05-05 Jan Hubicka + + * ipa-inline-analysis.c (estimate_function_body_sizes): Recompute + body size unconditionally. + +2017-05-07 Jeff Law + + Revert: + 2017-05-06 Jeff Law + PR tree-optimization/78496 + * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging + code. + + PR tree-optimization/78496 + * tree-vrp.c (simplify_assert_expr_using_ranges): New function. + (simplify_stmt_using_ranges): Call it. + (vrp_dom_walker::before_dom_children): Extract equivalences + from an ASSERT_EXPR with an equality comparison against a + constant. + +2017-05-06 Jeff Law + + PR tree-optimization/78496 + * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging + code. + + PR tree-optimization/78496 + * tree-vrp.c (simplify_assert_expr_using_ranges): New function. + (simplify_stmt_using_ranges): Call it. + (vrp_dom_walker::before_dom_children): Extract equivalences + from an ASSERT_EXPR with an equality comparison against a + constant. + +2017-05-06 Richard Sandiford + + * lra-constraints.c (lra_copy_reg_equiv): New function. + (split_reg): Use it to copy equivalence information from the + original register to the spill register. + +2017-05-06 Richard Sandiford + + PR rtl-optimization/75964 + * simplify-rtx.c (simplify_const_relational_operation): Remove + invalid handling of comparisons of integer ABS. + +2017-05-06 Uros Bizjak + + * config/i386/i386.c (ext_80387_constant_init): Do not explicitly + initialize to zero. + (init_regs): Remove declaration. + (function_arg_advance_32): Initialize error_p as boolean variable. + +2017-05-05 Nathan Sidwell + + * store-motion.c (remove_reachable_equiv_notes): Reformat long + lines. Use for (;;). + +2017-05-05 Bill Schmidt + + * config/rs6000/rs6000.c (rs6000_vect_nonmem): New static var. + (rs6000_init_cost): Initialize rs6000_vect_nonmem. + (rs6000_add_stmt_cost): Update rs6000_vect_nonmem. + (rs6000_finish_cost): Avoid vectorizing simple copy loops with + VF=2 that require versioning. + +2017-05-05 David Malcolm + + * diagnostic.h (CARET_LINE_MARGIN): Convert from macro to const + int. + +2017-05-05 David Malcolm + + * diagnostic.h (diagnostic_override_option_index): Convert from + macro to inline function. + +2017-05-05 David Malcolm + + * diagnostic.c (last_module_changed_p): New function. + (set_last_module): New function. + (diagnostic_report_current_module): Convert macro usage to + the above functions. + * diagnostic.h (diagnostic_context::last_module): Strengthen + from const line_map * to const line_map_ordinary *. + (diagnostic_last_module_changed): Delete macro. + (diagnostic_set_last_module): Delete macro. + +2017-05-05 David Malcolm + + * diagnostic.c (diagnostic_impl): Replace report_diagnostic + with diagnostic_report_diagnostic. + (diagnostic_n_impl_richloc): Likewise. + * diagnostic.h (report_diagnostic): Delete macro. + * rtl-error.c (diagnostic_for_asm): Replace report_diagnostic + with diagnostic_report_diagnostic. + * substring-locations.c (format_warning_va): Likewise. + +2017-05-05 David Malcolm + + * diagnostic.c (diagnostic_report_diagnostic): Eliminate + save/restor of format_spec. Move option-printing code to... + (print_option_information): ...this new function, and + reimplement by simply printing to the pretty_printer, + rather than appending to the format string. + +2017-05-05 David Malcolm + + * diagnostic.c (diagnostic_report_diagnostic): Split out pragma + handling logic into... + (update_effective_level_from_pragmas): ...this new function. + +2017-05-04 Andrew Waterman + + * config/riscv/riscv.opt (mstrict-align): New option. + * config/riscv/riscv.h (STRICT_ALIGNMENT): Use it. Update comment. + (SLOW_UNALIGNED_ACCESS): Define. + (riscv_slow_unaligned_access): Declare. + * config/riscv/riscv.c (riscv_tune_info): Add slow_unaligned_access + field. + (riscv_slow_unaligned_access): New variable. + (rocket_tune_info): Set slow_unaligned_access to true. + (optimize_size_tune_info): Set slow_unaligned_access to false. + (riscv_cpu_info_table): Add entry for optimize_size_tune_info. + (riscv_valid_lo_sum_p): Use TARGET_STRICT_ALIGN. + (riscv_option_override): Set riscv_slow_unaligned_access. + * doc/invoke.texi: Add -mstrict-align to RISC-V. + +2017-05-04 Kito Cheng + + * config/riscv/riscv.md: Unify indentation. + +2017-05-05 Michael Meissner + + PR target/79038 + PR target/79202 + PR target/79203 + * config/rs6000/rs6000.md (u code attribute): Add FIX and + UNSIGNED_FIX. + (extendsi2): Add support for doing sign extension via + VUPKHSW and XXPERMDI if the value is in Altivec registers and we + don't have ISA 3.0 instructions. + (extendsi2 splitter): Likewise. + (fix_truncsi2): If we are at ISA 2.07 (VSX small integer), + generate the normal insns since SImode can now go in vector + registers. Disallow the special UNSPECs needed for previous + machines to hide SImode being used. Add new insns + fctiw{,w}__smallint if SImode can go in vector registers. + (fix_truncsi2_stfiwx): Likewise. + (fix_truncsi2_internal): Likewise. + (fixuns_truncsi2): Likewise. + (fixuns_truncsi2_stfiwx): Likewise. + (fctiwz__smallint): Likewise. + (fctiwz__mem): New combiner pattern to prevent conversion + of floating point to 32-bit integer from doing a direct move to + the GPR registers to do a store. + (fctiwz_): Break long line. + +2017-05-05 Bin Cheng + + * Makefile.in (GTFILES): Add tree-ssa-loop-ivopts.c. + * tree-ssa-loop-ivopts.c (compute_max_addr_offset): Delete. + (addr_list, addr_offset_valid_p): New. + (split_address_groups): Check offset validity with above function. + (gt-tree-ssa-loop-ivopts.h): Include header file. + +2017-05-05 Nathan Sidwell + + * config.gcc (arm*-*-*): Add missing 'fi'. + +2017-05-05 Steve Ellcey + + * doc/invoke.texi (-fopt-info): Explicitly say order of options + included in -fopt-info does not matter. + * doc/optinfo.texi (-fopt-info): Fix description of default + behavour. Explicitly say order of options included in -fopt-info + does not matter. + +2017-05-05 Thomas Preud'homme + + * config.gcc: Allow combinations of aprofile and rmprofile values for + --with-multilib-list. + * config/arm/t-multilib: New file. + * config/arm/t-aprofile: Remove initialization of MULTILIB_* + variables. Remove setting of ISA and floating-point ABI in + MULTILIB_OPTIONS and MULTILIB_DIRNAMES. Set architecture and FPU in + MULTI_ARCH_OPTS_A and MULTI_ARCH_DIRS_A rather than MULTILIB_OPTIONS + and MULTILIB_DIRNAMES respectively. Add comment to introduce all + matches. Add architecture matches for marvel-pj4 and generic-armv7-a + CPU options. + * config/arm/t-rmprofile: Likewise except for the matches changes. + * doc/install.texi (--with-multilib-list): Document the combination of + aprofile and rmprofile values and warn about pitfalls in doing that. + +2017-05-05 Wilco Dijkstra + + * config/aarch64/aarch64.md (movsi_aarch64): Remove '*' from r=w. + (movdi_aarch64): Likewise. + +2017-05-05 Jakub Jelinek + + PR tree-optimization/80632 + * tree-switch-conversion.c (struct switch_conv_info): Add target_vop + field. + (build_arrays): Initialize it for virtual phis. + (fix_phi_nodes): Use it for virtual phis. + + PR tree-optimization/80558 + * tree-vrp.c (extract_range_from_binary_expr_1): Optimize + [x, y] op z into [x op, y op z] for op & or | if conditions + are met. + +2017-05-05 Andre Vieira + Prakhar Bahuguna + + PR target/71607 + * config/arm/arm.md (use_literal_pool): Remove. + (64-bit immediate split): No longer takes cost into consideration + if arm_disable_literal_pool is enabled. + * config/arm/arm.c (arm_tls_referenced_p): Add diagnostic if TLS is + used when arm_disable_literal_pool is enabled. + (arm_max_const_double_inline_cost): Remove use of + arm_disable_literal_pool. + (push_minipool_fix): Add assert. + (arm_reorg): Add return if arm_disable_literal_pool is enabled. + * config/arm/vfp.md (no_literal_pool_df_immediate): New. + (no_literal_pool_sf_immediate): New. + +2017-05-05 Prathamesh Kulkarni + + PR tree-optimization/80613 + * tree-ssa-dce.c (propagate_necessity): Remove cases for + BUILT_IN_STRDUP and BUILT_IN_STRNDUP. + +2017-05-05 Richard Biener + + * tree-ssa-pre.c (get_or_alloc_expr_for): Simplify. + +2017-05-05 Georg-Johann Lay + + * config/avr/avr.md [flag_strict_overflow]: Remove any occurence + of this flag from insn conditions due to removal from r247495. + +2017-05-05 Wilco Dijkstra + + * config/arm/aarch-common.c (arm_early_load_addr_dep_ptr): + New function. + (arm_early_store_addr_dep_ptr): Likewise. + * config/arm/aarch-common-protos.h + (arm_early_load_addr_dep_ptr): Add prototype. + (arm_early_store_addr_dep_ptr): Likewise. + * config/arm/cortex-a53.md: Add new bypasses. + +2017-05-05 Jakub Jelinek + + * tree.c (next_type_uid): Change type to unsigned. + (type_hash_canon): Decrement back next_type_uid if + freeing a type node with the highest TYPE_UID. For INTEGER_TYPEs + also ggc_free TYPE_MIN_VALUE, TYPE_MAX_VALUE and TYPE_CACHED_VALUES + if possible. + +2017-05-04 Martin Sebor + + * builtins.c: Fix a trivial typo in a comment. + + PR middle-end/79234 + * builtins.c (check_sizes): Adjust to handle reading past the end. + Avoid printing excessive upper bound of ranges. Use %E to print + tree nodes instead of converting them to %wu. + (expand_builtin_memchr): New function. + (compute_dest_size): Rename... + (compute_objsize): ...to this. + (expand_builtin_memcpy): Adjust. + (expand_builtin_mempcpy): Adjust. + (expand_builtin_strcat): Adjust. + (expand_builtin_strcpy): Adjust. + (check_strncat_sizes): Adjust. + (expand_builtin_strncat): Adjust. + (expand_builtin_strncpy): Adjust and simplify. + (expand_builtin_memset): Adjust. + (expand_builtin_bzero): Adjust. + (expand_builtin_memcmp): Adjust. + (expand_builtin): Handle memcmp. + (maybe_emit_chk_warning): Check strncat just once. + +2017-05-04 Martin Sebor + + PR preprocessor/79214 + PR middle-end/79222 + PR middle-end/79223 + * builtins.c (check_sizes): Add inlining context and issue + warnings even when -Wno-system-headers is set. + (check_strncat_sizes): Same. + (expand_builtin_strncat): Same. + (expand_builtin_memmove): New function. + (expand_builtin_stpncpy): Same. + (expand_builtin): Handle memmove and stpncpy. + +2017-05-04 Bin Cheng + + * tree-ssa-loop-ivopts.c (struct cost_pair): Remove field inv_expr + which is not used any more. + +2017-05-04 Wilco Dijkstra + + * config/aarch64/aarch64.c (generic_tunings): Update prefetch model. + +2017-05-04 Wilco Dijkstra + + * config/aarch64/aarch64.c (cortexa35_tunings): Set jump alignment to 4. + (cortexa53_tunings): Likewise. + (cortexa57_tunings): Likewise. + (cortexa72_tunings): Likewise. + (cortexa73_tunings): Likewise. + +2017-05-04 Wilco Dijkstra + + * config/aarch64/aarch64.c (generic_tunings): Set jump alignment to 4. + Set loop alignment to 8. + +2017-05-04 Martin Sebor + + PR translation/80280 + * builtins.c (expand_builtin_object_size): Add missing quoting to + %D and like directives. + * hsa-gen.c (hsa_type_for_scalar_tree_type): Same. + (hsa_type_for_tree_type): Same. + (verify_function_arguments): Same. + * symtab.c (symbol_table::change_decl_assembler_name): Same. + * varasm.c (get_section): Same. + (mark_weak): Same. + +2017-05-04 Martin Sebor + + PR translation/80280 + * config/i386/i386.c (ix86_function_versions): Quote a %D directive. + +2017-05-04 Wilco Dijkstra + + * config/aarch64/aarch64.c (generic_addrcost_table): + Change HI/TI mode setting. + +2017-05-04 Martin Jambor + + PR tree-optimization/80622 + * tree-sra.c (comes_initialized_p): New function. + (build_accesses_from_assign): Only set write lazily when + comes_initialized_p is false. + (analyze_access_subtree): Use comes_initialized_p. + (propagate_subaccesses_across_link): Assert !comes_initialized_p + instead of testing for PARM_DECL. + +2017-05-04 Kyrylo Tkachov + + * config/aarch64/aarch64.md (prefetch); Adjust predicate and + constraint on operand 0 to allow more general addressing modes. + Adjust output template. + * config/aarch64/aarch64.c (aarch64_address_valid_for_prefetch_p): + New function. + * config/aarch64/aarch64-protos.h + (aarch64_address_valid_for_prefetch_p): Declare prototype. + * config/aarch64/constraints.md (Dp): New address constraint. + * config/aarch64/predicates.md (aarch64_prefetch_operand): New + predicate. + +2017-05-04 Jan Hubicka + + * ipa-cp.c (perform_estimation_of_a_value): Drop base_time parameter; + update use of estimate_ipcp_clone_size_and_time. + (estimate_local_effects): Update use of + estimate_ipcp_clone_size_and_time and perform_estimation_of_a_value. + * ipa-inline.h (estimate_ipcp_clone_size_and_time): Update prototype. + * ipa-inline-analysis.c (estimate_ipcp_clone_size_and_time): + Return nonspecialized time. + +2017-05-04 Richard Biener + + * tree-ssa-alias.c (get_continuation_for_phi): Improve looking + for the last VUSE which def dominates the PHI. Directly call + maybe_skip_until. + (get_continuation_for_phi_1): Remove. + +2017-05-04 Richard Sandiford + + * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Add commentary + to explain the use of truncating division. Cap the number of + iterations to the maximum given by nb_iterations_upper_bound, + if defined. + +2017-05-04 Thomas Preud'homme + + * configure.ac (--enable-mingw-wildcard): Add new configurable feature. + * configure: Regenerate. + * config.in: Regenerate. + * config/i386/driver-mingw32.c: new file. + * config/i386/x-mingw32: Add rule to build driver-mingw32.o. + * config.host: Link driver-mingw32.o on MinGW host. + * doc/install.texi: Document new --enable-mingw-wildcard configure + option. + +2017-05-04 Marek Polacek + + PR tree-optimization/80612 + * calls.c (get_size_range): Check for INTEGRAL_TYPE_P. + +2017-05-04 Prakhar Bahuguna + Andre Simoes Dias Vieira + + * config/arm/arm.md (movsi): Change TARGET_32BIT to TARGET_HAVE_MOVT. + (movt splitter): Likewise. + * config/arm/arm.c (arm_option_check_internal): Change arm_arch_thumb2 + to TARGET_HAVE_MOVT, and merge with -mslow-flash-data check. + (const_ok_for_arm): Change else to else if (TARGET_THUMB2) and add else + block for Thumb-1 with MOVT. + (thumb2_legitimate_address_p): Move code block ... + (can_avoid_literal_pool_for_label_p): ... into this new function. + (thumb1_legitimate_address_p): Add check for TARGET_HAVE_MOVT and + literal pool. + (thumb_legitimate_constant_p): Add conditional on TARGET_HAVE_MOVT + * doc/invoke.texi (-mpure-code): Change "ARMv7-M targets" for + "M-profile targets with the MOVT instruction". + +2017-05-04 Prakhar Bahuguna + + * config/arm/arm-builtins.c (arm_init_builtins): Rename + __builtin_arm_ldfscr to __builtin_arm_get_fpscr, and rename + __builtin_arm_stfscr to __builtin_arm_set_fpscr. + +2017-05-04 Martin Liska + + * tree-vrp.c (simplify_cond_using_ranges_2): Remove unused + variable cond_code. + +2017-05-04 Richard Biener + + * tree.c (array_at_struct_end_p): Handle arrays at struct + end with flexarrays more conservatively. Refactor and treat + arrays of arrays or aggregates more strict. Fix + VIEW_CONVERT_EXPR handling. Remove allow_compref argument. + * tree.c (array_at_struct_end_p): Adjust prototype. + * emit-rtl.c (set_mem_attributes_minus_bitpos): Adjust. + * gimple-fold.c (get_range_strlen): Likewise. + * tree-chkp.c (chkp_may_narrow_to_field): Likewise. + +2017-05-04 Richard Biener + + PR tree-optimization/31130 + * tree-vrp.c (needs_overflow_infinity): Remove as always returning + false. + (supports_overflow_infinity): Likewise. + (is_negative_overflow_infinity): Likewise. + (is_positive_overflow_infinity): Likewise. + (is_overflow_infinity): Likewise. + (stmt_overflow_infinity): Likewise. + (overflow_infinity_range_p): Likewise. + (usable_range_p): Remove as always returning true. + (make_overflow_infinity): Remove. + (negative_overflow_infinity): Likewise. + (positive_overflow_infinity): Likewise. + (avoid_overflow_infinity): Likewise. + (set_value_range): Adjust accordingly. + (set_value_range_to_nonnegative): Likewise, remove now unused + overflow_infinity arg. + (vrp_operand_equal_p): Adjust. + (update_value_range): Likewise. + (range_int_cst_singleton_p): Likewise. + (operand_less_p): Likewise. + (compare_values_warnv): Likewise. + (extract_range_for_var_from_comparison_expr): Likewise. + (vrp_int_const_binop): Likewise. + (zero_nonzero_bits_from_vr): Likewise. + (extract_range_from_multiplicative_op_1): Likewise. + (extract_range_from_binary_expr_1): Likewise. + (extract_range_from_unary_expr): Likewise. + (extract_range_from_comparison): Likewise. + (extract_range_basic): Likewise. + (adjust_range_with_scev): Likewise. + (compare_ranges): Likewise. + (compare_range_with_value): Likewise. + (dump_value_range): Likewise. + (test_for_singularity): Likewise, remove strict_overflow_p parameter + never used. + (simplify_cond_using_ranges): Adjust. + +2017-05-04 Pekka Jääskeläinen + + * brig-builtins.def: Added a builtin for class_f64. + * builtin-types.def: Added a builtin type needed by class_f64. + +2017-05-03 Jason Merrill + + * timevar.def: Add TV_CONSTEXPR. + +2017-05-03 David Malcolm + + * common.opt (fdiagnostics-parseable-fixits): Fix typo. + +2017-05-03 Martin Jambor + + * ipa-prop.c (ipa_update_after_lto_read): Removed. + * ipa-prop.h (ipa_update_after_lto_read): Remove declaration. + * ipa-cp.c (ipcp_propagate_stage): Do not call + ipa_update_after_lto_read. + * ipa-inline.c (ipa_inline): Likewise. + +2017-05-03 Martin Jambor + + * ipa-prop.h (ipa_edge_args): Make a class. Mark with for_user GTY + tag. Added a default constructor and a destructor. + (ipa_edge_args_sum_t): New class; + (ipa_edge_args_sum): Declare. + (ipa_edge_args_vector): Remove declaration. + (IPA_EDGE_REF): Use ipa_edge_args_sum. + (ipa_free_edge_args_substructures): Remove declaration. + (ipa_check_create_edge_args): Use ipa_edge_args_sum. + (ipa_edge_args_info_available_for_edge_p): Likewise. + * ipa-prop.c (ipa_edge_args_vector): Removed. + (edge_removal_hook_holder): Likewise. + (edge_duplication_hook_holder): Likewise. + (ipa_edge_args_sum): New variable. + (ipa_propagate_indirect_call_infos): Test ipa_edge_args_sum instead of + ipa_edge_args_vector. + (ipa_free_edge_args_substructures): Likewise. + (ipa_free_all_edge_args): Free ipa_edge_args_sum instead of + ipa_edge_args_vector. + (ipa_edge_removal_hook): Turned into method + ipa_edge_args_sum_t::remove. + (ipa_edge_duplication_hook): Turned into method + ipa_edge_args_sum_t::duplicate. + (ipa_register_cgraph_hooks): Create ipa_edge_args_sum instead of + registering edge hooks. + (ipa_unregister_cgraph_hooks): Do not unregister edge hooks. + * ipa-inline-analysis.c (estimate_function_body_sizes): Test + ipa_edge_args_sum instead of ipa_edge_args_vector. + * ipa-profile.c (ipa_profile): Likewise. + +2017-05-03 Martin Jambor + + * symbol-summary.h (function_summary): New method exists. + (function_summary::symtab_removal): Deallocate through release. + (call_summary): New class. + (gt_ggc_mx): New overload. + (gt_pch_nx): Likewise. + (gt_pch_nx): Likewise. + +2017-05-03 Jeff Law + + PR tree-optimization/78496 + * tree-vrp.c (simplify_cond_using_ranges_1): Renamed + from simplify_cond_using_ranges. Split off code to walk + backwards through casts into ... + (simplify_cond_using_ranges_2): New function. + (simplify_stmt_using_ranges): Call simplify_cond_using_ranges_1. + (execute_vrp): After identifying jump threads, call + simplify_cond_using_ranges_2. + +2017-05-03 Jan Hubicka + + PR bootstrap/80609 + * ipa-inline.h (inline_summary): Add ctor. + (create_ggc): Do not use ggc_cleared_alloc. + +2017-05-03 Jeff Downs + Rainer Orth + + * gcc.c (handle_braces): Support escaping in switch matching + text. + * doc/invoke.texi (Spec Files): Document it. + Remove superfluous @code markup in items. + +2017-05-03 David Malcolm + + * diagnostic-show-locus.c (struct column_range): New struct. + (get_affected_columns): New function. + (get_printed_columns): New function. + (struct correction): New struct. + (correction::ensure_capacity): New function. + (correction::ensure_terminated): New function. + (struct line_corrections): New struct. + (line_corrections::~line_corrections): New dtor. + (line_corrections::add_hint): New function. + (layout::print_trailing_fixits): Reimplement in terms of the new + classes. + (selftest::test_overlapped_fixit_printing): New function. + (selftest::diagnostic_show_locus_c_tests): Call it. + +2017-05-03 Nathan Sidwell + + Canonicalize canonical type hashing + * tree.h (type_hash_canon_hash): Declare. + * tree.c (type_hash_list, attribute_hash_list): Move into + type_hash_canon_hash. + (build_type_attribute_qual_variant): Break out hash code calc into + type_hash_canon_hash. + (type_hash_canon_hash): New. Generic type hash computation. + (build_range_type_1, build_array_type_1, build_function_type, + build_method_type_directly, build_offset_type, build_complex_type, + make_vector_type): Call it. + +2017-05-03 Richard Biener + + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): + When all DRs have unknown misaligned do not always peel + when there is a store but apply the same costing model as if + there were only loads. + +2017-05-03 Richard Biener + + Revert + PR tree-optimization/80492 + * tree-ssa-alias.c (decl_refs_may_alias_p): Handle + compare_base_decls returning dont-know properly. + +2017-05-03 Thomas Preud'homme + + * config/arm/iterators.md (CCSI): New mode iterator. + (arch): New mode attribute. + * config/arm/sync.md (atomic_compare_and_swap_1): Rename into ... + (atomic_compare_and_swap_1): This and ... + (atomic_compare_and_swap_1): This. Use CCSI + code iterator for success result mode. + * config/arm/arm.c (arm_expand_compare_and_swap): Adapt code to use + the corresponding new insn generators. + +2017-05-03 Bin Cheng + + Revert r247509 + 2017-05-02 Bin Cheng + * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes. + +2017-05-03 Richard Sandiford + + * tree-data-ref.h (SUB_CONFLICTS_IN_A): Wrap SUB argument in brackets. + (SUB_CONFLICTS_IN_B, SUB_LAST_CONFLICT, SUB_DISTANCE): Likewise. + (DDR_A): Wrap DDR argument in brackets. + (DDR_B, DDR_AFFINE_P, DDR_ARE_DEPENDENT, DDR_SUBSCRIPTS): Likewise. + (DDR_LOOP_NEST, DDR_INNER_LOOP, DDR_SELF_REFERENCE): Likewise. + (DDR_REVERSED_P): Likewise. + +2017-05-03 Jakub Jelinek + + PR tree-optimization/79472 + * tree-switch-conversion.c (struct switch_conv_info): Add + contiguous_range and default_case_nonstandard fields. + (collect_switch_conv_info): Compute contiguous_range and + default_case_nonstandard fields, don't clear final_bb if + contiguous_range and only the default case doesn't have the required + structure. + (check_all_empty_except_final): Set default_case_nonstandard instead + of failing if contiguous_range and the default case doesn't have empty + block. + (check_final_bb): Add SWTCH argument, don't fail if contiguous_range + and only the default case doesn't have the required constants. Skip + virtual phis. + (gather_default_values): Skip virtual phis. Allow non-NULL CASE_LOW + if default_case_nonstandard. + (build_constructors): Build constant 1 just once. Assert that default + values aren't inserted in between cases if contiguous_range. Skip + virtual phis. + (build_arrays): Skip virtual phis. + (prune_bbs): Add DEFAULT_BB argument, don't remove that bb. + (fix_phi_nodes): Don't add e2f phi arg if default_case_nonstandard. + Handle virtual phis. + (gen_inbound_check): Handle default_case_nonstandard case. + (process_switch): Adjust check_final_bb caller. Call + gather_default_values with the first non-default case instead of + default case if default_case_nonstandard. + +2017-05-02 Nathan Sidwell + + * ggc-page.c (move_ptes_to_front): Replace unsigned >0 with i-- + check. Fix formatting. + +2017-05-02 Jan Hubicka + + * ipa-inline-analysis.c (estimate_node_size_and_time): Allow roundoff + errors when comparing specialized and unspecialized times. + +2017-05-02 David Malcolm + + * diagnostic-show-locus.c + (layout::should_print_annotation_line_p): Make private. + (layout::print_annotation_line): Make private. + (layout::annotation_line_showed_range_p): Make private. + (layout::show_ruler): Make private. + (layout::print_source_line): Make private. Pass in line and + line_width, rather than calling location_get_source_line. Drop + returned value. + (layout::print_leading_fixits): New method. + (layout::print_any_fixits): Rename to... + (layout::print_trailing_fixits): ...this, and make private. + Don't print newline fixits. + (diagnostic_show_locus): Move logic for printing one row into... + (layout::print_line): ...this new function. Move the + location_get_source_line call and error-handling from + print_source_line to here. Call print_leading_fixits, and rename + print_any_fixits to print_trailing_fixits. + (selftest::test_fixit_insert_containing_newline): Update now that + newlines are partially supported. + (selftest::test_fixit_insert_containing_newline_2): New test. + (selftest::test_fixit_replace_containing_newline): Update comments. + (selftest::diagnostic_show_locus_c_tests): Call the new test. + * edit-context.c (class added_line): New class. + (class edited_line): Describe newline handling in comment. + (edited_line::actually_edited_p): New method. + (edited_line::print_content): Delete redundant decl. + (edited_line::m_predecessors): New field. + (edited_file::print_content): Call edited_line::print_content. + (edited_file::print_diff): Update to support newlines. + (edited_file::print_diff_hunk): Likewise. + (edited_file::print_run_of_changed_lines): New function. + (edited_file::print_diff_line): Convert to... + (print_diff_line): ...this. + (edited_file::get_effective_line_count): New function. + (edited_line::edited_line): Initialize new field m_predecessors. + (edited_line::~edited_line): Clean up m_predecessors. + (edited_line::apply_fixit): Handle newlines. + (edited_line::get_effective_line_count): New function. + (edited_line::print_content): New function. + (edited_line::print_diff_lines): New function. + (selftest::test_applying_fixits_insert_containing_newline): New + test. + (selftest::test_applying_fixits_replace_containing_newline): New + test. + (selftest::insert_line): New function. + (selftest::test_applying_fixits_multiple_lines): Add example of + inserting a line. + (selftest::edit_context_c_tests): Call the new tests. + +2017-05-02 Bin Cheng + + * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Delete + parameter cand. Update dump information. + (get_computation_cost): Update uses. + +2017-05-02 Bin Cheng + + * tree-ssa-loop-ivopts.c (get_computation_aff_1): New. + (get_computation_aff): Reorder parameters. Use get_computation_aff_1. + (get_computation_at, rewrite_use_address): Update use of + get_computation_aff. + +2017-05-02 Bin Cheng + + * tree-ssa-loop-ivopts.c (get_computation_at): Reorder parameters. + (get_computation): Delete. + (get_computation_cost): Implement like get_computation_cost_at. + Use get_computation_at. + (get_computation_cost_at): Delete. + (rewrite_use_nonlinear_expr): Use get_computation_at. + (rewrite_use_compare, remove_unused_ivs): Ditto. + +2017-05-02 Bin Cheng + + * tree-ssa-loop-ivopts.c (rewrite_use_address): Simple refactor. + +2017-05-02 Bin Cheng + + * tree-ssa-loop-ivopts.c (struct iv_ca): Rename n_regs to n_invs. + (ivopts_global_cost_for_size): Rename parameter and update uses. + (iv_ca_recount_cost): Update uses. + (iv_ca_set_remove_invs, iv_ca_set_no_cp): Record invariants and + candidates seperately in n_invs and n_cands. + (iv_ca_set_add_invs, iv_ca_set_cp, iv_ca_new): Ditto. + +2017-05-02 Bin Cheng + + * tree-ssa-loop-ivopts.c (struct walk_tree_data): New. + (find_inv_vars_cb): New. + (find_depends): Renamed to ... + (find_inv_vars): ... this. + (add_candidate_1, force_var_cost): Call find_inv_vars. + (split_address_cost, determine_group_iv_cost_cond): Ditto. + +2017-05-02 Bin Cheng + + * tree-ssa-loop-ivopts.c (struct cost_pair): Rename depends_on to + inv_vars. Add inv_exprs. + (struct iv_cand): Rename depends_on to inv_vars. + (struct ivopts_data): Rename max_inv_id/n_invariant_uses to + max_inv_var_id/n_inv_var_uses. Move max_inv_expr_id around. + Refactor field used_inv_exprs from has_map to array n_inv_expr_uses. + (dump_cand): Dump inv_vars. + (tree_ssa_iv_optimize_init): Support inv_vars and inv_exprs. + (record_invariant, find_depends, add_candidate_1): Ditto. + (set_group_iv_cost, force_var_cost): Ditto. + (split_address_cost, ptr_difference_cost, difference_cost): Ditto. + (get_computation_cost_at, get_computation_cost): Ditto. + (determine_group_iv_cost_generic): Ditto. + (determine_group_iv_cost_address): Ditto. + (determine_group_iv_cost_cond, autoinc_possible_for_pair): Ditto. + (determine_group_iv_costs): Ditto. + (iv_ca_recount_cost): Update call to ivopts_global_cost_for_size. + (iv_ca_set_remove_invariants): Renamed to ... + (iv_ca_set_remove_invs): ... this. Support inv_vars and inv_exprs. + (iv_ca_set_no_cp): Use iv_ca_set_remove_invs. + (iv_ca_set_add_invariants): Renamed to ... + (iv_ca_set_add_invs): ... this. Support inv_vars and inv_exprs. + (iv_ca_set_cp): Use iv_ca_set_add_invs. + (iv_ca_has_deps): Support inv_vars and inv_exprs. + (iv_ca_new, iv_ca_free, iv_ca_dump, free_loop_data): Ditto. + (create_new_ivs): Remove useless dump. + +2017-05-02 Bin Cheng + + * tree-ssa-loop-ivopts.c (get_computation_cost_at): Remove pseudo + iv_cand code. + (determine_group_iv_cost_cond, determine_iv_cost): Ditto. + (iv_ca_set_no_cp, create_new_iv): Ditto. + +2017-05-02 Bin Cheng + + * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes. + +2017-05-02 Xi Ruoyao + + * tree.h (EXPR_CILK_SPAWN): Use macro TREE_CHECK2 instead of + function tree_check2. + +2017-05-02 Martin Liska + + * doc/gcov.texi: Add missing preposition. + * gcov.c (function_info::function_info): Properly fill up + all member variables. + +2017-05-02 Tamar Christina + + * expr.c (expand_expr_real_2): Re-cost if previous costs are the same. + +2017-05-02 Tamar Christina + + * simplify-rtx.c (simplify_binary_operation_1): Add LSHIFTRT case. + +2017-05-02 Martin Liska + + PR lto/77954. + * lto-streamer-in.c (lto_read_tree_1): Remove + LTO_STREAMER_DEBUG. + * lto-streamer.c (struct tree_hash_entry): Likewise. + (struct tree_entry_hasher): Likewise. + (tree_entry_hasher::hash): Likewise. + (tree_entry_hasher::equal): Likewise. + (lto_streamer_init): Likewise. + (lto_orig_address_map): Likewise. + (lto_orig_address_get): Likewise. + (lto_orig_address_remove): Likewise. + * lto-streamer.h: Likewise. + * tree-streamer-in.c (streamer_alloc_tree): Likewise. + * tree-streamer-out.c (streamer_write_tree_header): Likewise. + +2017-05-02 Sebastian Peryt + + * config/i386/avx512fintrin.h (_mm_mask_add_round_sd) + (_mm_maskz_add_round_sd, _mm_mask_add_round_ss) + (mm_maskz_add_round_ss, _mm_mask_sub_round_sd) + (mm_maskz_sub_round_sd, _mm_mask_sub_round_ss) + (mm_maskz_sub_round_ss, _mm_mask_add_sd) + (mm_maskz_add_sd, _mm_mask_add_ss, _mm_maskz_add_ss) + (mm_mask_sub_sd, _mm_maskz_sub_sd, _mm_mask_sub_ss) + (mm_maskz_sub_ss): New intrinsics. + * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT) + (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases. + * config/i386/i386-builtin.def (__builtin_ia32_addsd_mask_round) + (__builtin_ia32_addss_mask_round, __builtin_ia32_subsd_mask_round) + (__builtin_ia32_subss_mask_round): New builtins. + * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT) + (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types. + * config/i386/sse.md (_vm3): + Renamed to ... + (_vm3): ... this. + (v\t{%2, %1, %0|%0, %1, %2}): + Changed to ... + (v\t{%2, %1, %0|%0, %1, %2}): + ... this. + +2017-05-02 Martin Jambor + + PR tree-optimization/78687 + * tree-sra.c (access): New field parent. + (process_subtree_disqualification): New function. + (disqualify_candidate): Call it. + (build_accesses_from_assign): Reset write flag if creating an + assighnment link. + (build_access_subtree): Fill in parent field and also prpagate + down grp_write flag. + (create_artificial_child_access): New parameter set_grp_write, set + grp_write to its value. + (propagate_subaccesses_across_link): Also propagate grp_write flag + values. + (propagate_all_subaccesses): Push the closest parent back to work + queue if add_access_to_work_queue returned true. + +2017-05-02 Richard Biener + + * common.opt (fstrict-overflow): Alias negative to fwrapv. + * doc/invoke.texi (fstrict-overflow): Remove all traces of + -fstrict-overflow documentation. + * tree.h (TYPE_OVERFLOW_UNDEFINED): Do not test flag_strict_overflow. + (POINTER_TYPE_OVERFLOW_UNDEFINED): Test !flag_wrapv instead of + flag_strict_overflow. + * ipa-inline.c (can_inline_edge_p): Do not test flag_strict_overflow. + * lto-opts.c (lto_write_options): Do not stream it. + * lto-wrapper.c (merge_and_complain): Do not handle it. + * opts.c (default_options_table): Do not set -fstrict-overflow. + (finish_options): Likewise do not clear it when sanitizing. + * simplify-rtx.c (simplify_const_relational_operation): Do not + test flag_strict_overflow. + +2017-05-02 Uros Bizjak + + * config/alpha/alpha.md (*add3_ieee): Merge to add3 + using enabled attribute. + (*sub3_ieee): Merge to sub3 using enabled attribute. + (*mul3_ieee): Merge to mul3 using enabled attribute. + (*div3_ieee): Merge to div3 using enabled attribute. + (*sqrt2_ieee): Merge to sqrt2 using enabled attribute. + (*fix_truncdfdi_ieee): Merge to *fix_truncdfdi2 using enabled attribute. + (*fix_truncsfdi_ieee): Merge to *fix_truncsfdi2 using enabled attribute. + (*floatdisf_ieee): Merge to floatdisf2 using enabled attribute. + (*floatdidf_ieee): Merge to floatdidf2 using enabled attribute. + (*truncdfsf2_ieee): Merge to truncdfsf2 using enabled attribute. + (*cmpdf_ieee): Merge to *cmpdf_internal using enabled attribute. + +2017-05-02 Uros Bizjak + + * config/i386/i386.c (ix86_code_end): Use {FIRST,LAST}_INT_REG. + +2017-05-02 Richard Biener + + PR tree-optimization/80591 + Revert + 2017-04-10 Richard Biener + + * tree-ssa-structalias.c (find_func_aliases): Properly handle + asm inputs. + +2017-05-02 Richard Biener + + PR tree-optimization/80549 + * tree-cfgcleanup.c (mfb_keep_latches): New helper. + (cleanup_tree_cfg_noloop): Create forwarders to known loop + headers if they do not have a preheader. + +2017-05-02 Martin Liska + + PR other/80589 + * common.opt: Fix typo. + * doc/invoke.texi: Likewise. + +2017-05-01 Jan Beulich + + * config/i386/sse.md (xop_vpermil23): Do not allow operand + swapping, add (x,x,m,x,n) alternative. + +2017-05-01 Nathan Sidwell + + * calls.c (combine_pending_stack_adjustment_and_call): Remove + unnecessary unadjusted_alignment check. + +2017-05-01 Xi Ruoyao + + PR c++/80038 + * cilk_common.c (expand_builtin_cilk_detach): Move pedigree + operations here. + * gimplify.c (gimplify_cilk_detach): New function. + (gimplify_call_expr, gimplify_modify_expr): Call it as needed. + * tree-core.h: Document EXPR_CILK_SPAWN. + * tree.h (EXPR_CILK_SPAWN): Define. + +2017-05-01 David Malcolm + + * diagnostic-show-locus.c (layout::get_expanded_location): Rewrite + to use new fixit_hint representation, using the "replace" logic. + (get_line_span_for_fixit_hint): Likewise. + (layout::print_any_fixits): Likewise. + (selftest::test_one_liner_many_fixits): Rename to... + (selftest::test_one_liner_many_fixits_1): ...this, and update + comment and expected output to reflect that the multiple fix-it + hints are now consolidated into one insertion. + (selftest::test_one_liner_many_fixits_2): New test. + (selftest::test_diagnostic_show_locus_one_liner): Update for + above. + (selftest::test_fixit_consolidation): Update for fix-it API + change. + * diagnostic.c (print_parseable_fixits): Likewise. + * edit-context.c (edited_line::m_line_events): Convert from + auto_vec to auto_vec . + (class line_event): Convert from abstract base class to a concrete + class, taking over the role of replace_event. + (class insert_event): Delete. + (class replace_event): Rename to class line_event. Convert to + half-open range. + (edit_context::add_fixits): Reimplement. + (edit_context::apply_insert): Delete. + (edit_context::apply_replace): Rename to... + (edit_context::apply_fixit): ...this. Convert to half-open range. + (edited_file::apply_insert): Delete. + (edited_file::apply_replace): Rename to... + (edited_file::apply_fixit): ...this. + (edited_line::~edited_line): Drop deletion of events. + (edited_line::apply_insert): Delete. + (edited_line::apply_replace): Rename to... + (edited_line::apply_fixit): ...this. Convert to half-open range. + Update for change to type of m_line_events. + * edit-context.h (edit_context::apply_insert): Delete. + (edit_context::apply_replace): Rename to... + (edit_context::apply_fixit): ...this. + +2017-05-01 Martin Sebor + + * gimple-ssa-sprintf.c (format_integer): Set knownrange when it's + known. + +2017-05-01 Uros Bizjak + + PR target/68491 + * config/i386/cpuid.h (__get_cpuid): Always return 0 when + __get_cpuid_max returns 0. + (__get_cpuid_count): Ditto. + +2017-05-01 Eric Botcazou + + * tree.c (substitute_in_expr) : Also inline a call if the + replacement expression is another instance of one of its arguments. + +2017-05-01 Jakub Jelinek + + PR target/79430 + * rtlanal.c (reg_set_p): If reg is a stack_pointer_rtx, also + check for stack push/pop autoinc. + * config/i386/i386.c (ix86_agi_dependent): Return false + if the only reason why modified_in_p returned true is that + addr is SP based and set_insn is a push or pop. + +2017-04-29 Jan Hubicka + + * ipa-inline.c (compute_inlined_call_time): Remove now unnecesary + overflow check. + +2017-04-29 Jan Hubicka + + PR ipa/79224 + * ipa-inline-analysis.c (dump_predicate): Add optional parameter NL. + (account_size_time): Use two predicates - exec_pred and + nonconst_pred_ptr. + (evaluate_conditions_for_known_args): Compute both clause and + nonspec_clause. + (evaluate_properties_for_edge): Evaulate both clause and nonspec_clause. + (inline_summary_t::duplicate): Update. + (estimate_function_body_sizes): Caluculate exec and nonconst predicates + separately. + (compute_inline_parameters): Likewise. + (estimate_edge_size_and_time): Update caluclation of time. + (estimate_node_size_and_time): Compute both time and nonspecialized + time. + (estimate_ipcp_clone_size_and_time): Update. + (inline_merge_summary): Update. + (do_estimate_edge_time): Update. + (do_estimate_edge_size): Update. + (do_estimate_edge_hints): Update. + (inline_read_section, inline_write_summary): Stream both new predicates. + * ipa-inline.c (compute_uninlined_call_time): Take uninlined_call_time + as argument. + (compute_inlined_call_time): Cleanup. + (big_speedup_p): Update. + (edge_badness): Update. + * ipa-inline.h (INLINE_TIME_SCALE): Remove. + (size_time_entry): Replace predicate by exec_predicate and + nonconst_predicate. + (edge_growth_cache_entry): Cache both time nad nonspecialized time. + (estimate_edge_time): Return also nonspec_time. + (reset_edge_growth_cache): Update. + +2017-04-29 Jakub Jelinek + + PR rtl-optimization/80491 + * ifcvt.c (noce_process_if_block): When looking for x setter + with missing else_bb, don't check only the insn right before + cond_earliest, but look for the last insn that x is modified in + within the same bb. + + PR rtl-optimization/80491 + * alias.c (memory_modified_in_insn_p): Return true for CALL_INSNs. + +2017-04-29 Marc Glisse + + PR tree-optimization/80487 + * tree-ssa-alias.c (stmt_kills_ref_p): Handle stpncpy and strncpy. + +2017-04-29 Prathamesh Kulkarni + + PR tree-optimization/79697 + * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Check if callee + is BUILT_IN_STRDUP, BUILT_IN_STRNDUP, BUILT_IN_REALLOC. + (propagate_necessity): Check if def_callee is BUILT_IN_STRDUP or + BUILT_IN_STRNDUP. + * gimple-fold.c (gimple_fold_builtin_realloc): New function. + (gimple_fold_builtin): Call gimple_fold_builtin_realloc. + +2017-04-28 Martin Sebor + + PR tree-optimization/80523 + * gimple-ssa-sprintf.c (target_to_host_charmap): New global variable. + (init_target_to_host_charmap, target_to_host, target_strtol10): New + functions. + (maybe_warn, format_directive, parse_directive): Use new functions. + (pass_sprintf_length::execute): Call init_target_to_host_charmap. + +2017-04-28 Marc Glisse + + * match.pd (X+Z OP Y+Z, X-Z OP Y-Z, Z-X OP Z-Y): New transformations. + +2017-04-28 Bernd Edlinger + + * configure.ac (SYSTEM_HEADER_DIR, BUILD_SYSTEM_HEADER_DIR, + target_header_dir): Set correctly. + * configure: Regenerated. + * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe. + (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR + instead of SYSTEM_HEADER_DIR. + +2017-04-28 Jan Hubicka + + * ipa-cp.c (perform_estimation_of_a_value): Turn time to sreal. + (estimate_local_effects): Likewise. + * ipa-inline.c (compute_inlined_call_time, want_inline_small_function_p, + edge_badness, inline_small_functions, dump_overall_stats): LIkewise. + * ipa-inline.h (edge_growth_cache_entry, estimate_time_after_inlining, + estimate_ipcp_clone_size_and_time, do_estimate_edge_time, + do_estimate_edge_time, estimate_edge_time): Likewise. + * ipa-inline-analysis.c (estimate_node_size_and_time, + estimate_ipcp_clone_size_and_time, do_estimate_edge_time): Likewise. + (estimate_time_after_inlining): Remove. + +2017-04-28 Martin Liska + + * doc/gcov.texi: Enhance documentation of gcov. + +2017-04-28 Martin Liska + + * doc/gcov.texi: Sort options in alphabetic order. + * doc/gcov-dump.texi: Likewise. + * doc/gcov-tool.texi: Likewise. + * gcov.c (print_usage): Likewise. + * gcov-dump.c (print_usage): Likewise. + * gcov-tool.c (print_merge_usage_message): Likewise. + (print_rewrite_usage_message): Likewise. + (print_overlap_usage_message): Likewise. + +2017-04-28 Martin Liska + + PR gcov-profile/53915 + * gcov.c (format_gcov): Print 'NAN %' when top > bottom. + +2017-04-28 Martin Liska + + PR gcov-profile/79891 + * gcov.c (add_line_counts): Assign BBs to lines just if the BB + is marked by compiler as living on a line. + (get_cycles_count): Remove usage of the union. + (output_intermediate_file): Likewise. + (find_source): Fix GNU coding style. + (accumulate_line_counts): Remove old non-all block mode. + (output_lines): Remove usage of the union. + * profile.c (output_location): Include all BBs, even if + belonging to a same line (and file) as a previous BB. + +2017-04-28 Martin Liska + + * gcov.c (process_args): Handle new argument 'w'. + (read_graph_file): Assign ID to BBs. + (output_branch_count): Display BB # if verbose flag is set. + (output_lines): Likewise for arcs. + (print_usage): Add '--verbose' option help. + * doc/gcov.texi: Document --verbose (-w) option. + +2017-04-28 Martin Liska + + * gcov.c (struct block_location_info): New struct. + (process_file): Fill up the new structure. + (read_graph_file): Replace usage of encoding by the newly added + struct. + (add_line_counts): Likewise. + (accumulate_line_counts): Remove usage of the union. + (function_info::function_info): New function. + (function_info::~function_info): Likewise. + (process_file): Call delete instead of release_function. + (release_function): Release the function. + (release_structures): Call delete instead of release_function. + (solve_flow_graph): Replace usage of num_blocks. + (find_exception_blocks): Likewise. + (output_lines): Fix GNU coding style. + +2017-04-28 Martin Liska + + PR driver/56469 + * coverage.c (coverage_remove_note_file): New function. + * coverage.h: Declare the function. + * toplev.c (finalize): Clean if an error has been seen. + +2017-04-28 Martin Liska + + PR gcov-profile/80031 + * gcov-dump.c (tag_blocks): Just print number of basic blocks. + * gcov-io.h (GCOV_TAG_BLOCKS_NUM): Remove unused macro. + * gcov.c (read_graph_file): Read just number of blocks. + * profile.c (branch_prob): Do not stream 0 flags per a basic + block. + +2017-04-28 Martin Liska + + * gcov-dump.c (tag_*): Add new argument to declarations. + (dump_gcov_file): Likewise. + (tag_blocks): Add and use new argument depth. + (tag_arcs): Likewise. + (tag_lines): Likewise. + (tag_counters): Likewise. + (tag_summary): Likewise. + (dump_working_sets): Use depth to do a proper indentation. + +2017-04-28 Jakub Jelinek + + PR bootstrap/80531 + * cgraph.h (symtab_node::debug_symtab): No longer inline. + * symtab.c (symtab_node::debug_symtab): Move definition here. + +2017-04-28 Richard Biener + + * lto-streamer.h (LTO_major_version): Bump to 7. + +2017-04-28 Richard Biener + + * tree-vrp.c (assert_info): New struct. + (add_assert_info): New helper. + (register_edge_assert_for_2): Refactor to add asserts to a vector + of assert_info. + (register_edge_assert_for_1): Likewise. + (register_edge_assert_for): Likewise. + (finish_register_edge_assert_for): New helper actually registering + asserts where live on edge. + (find_conditional_asserts): Adjust. + (find_switch_asserts): Likewise. + (evrp_dom_walker::try_find_new_range): Generalize. + (evrp_dom_walker::before_dom_children): Use register_edge_assert_for. + +2017-04-27 Marek Polacek + + PR sanitizer/80349 + * fold-const.c (fold_binary_loc) : Convert + arg10 and arg11 to itype. + +2017-04-27 Jonathan Wakely + + * doc/extend.texi (Object Size Checking): Improve grammar. + +2017-04-27 Richard Earnshaw + + PR target/80530 + * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Ensure + that the logic for permitting reciprocal estimates matches that + in use_rsqrt_p. + +2017-04-27 Jakub Jelinek + + PR c++/80534 + * tree.c (type_cache_hasher::equal): Only compare + TYPE_TYPELESS_STORAGE flag on non-aggregate element types. + (build_array_type_1): Only hash TYPE_TYPELESS_STORAGE flag on + non-aggregate element types. + * tree.h (TYPE_TYPELESS_STORAGE): Fix comment typo, add more details + about the flag on ARRAY_TYPEs in the comment, formatting fix. + +2017-04-27 Richard Biener + + PR middle-end/80533 + * emit-rtl.c (set_mem_attributes_minus_bitpos): When + stripping ARRAY_REFs from MEM_EXPR make sure we're not + keeping a reference to a trailing array. + +2017-04-27 Richard Biener + + PR middle-end/80539 + * tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not + being in loop-closed SSA form conservatively. + (chrec_fold_multiply_poly_poly): Likewise. + +2017-04-27 Tamar Christina + + PR middle-end/79665 + * expr.c (expand_expr_real_2): Move TRUNC_MOD_EXPR, FLOOR_MOD_EXPR, + CEIL_MOD_EXPR, ROUND_MOD_EXPR cases. + +2017-04-27 Jakub Jelinek + + PR target/77728 + * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): Remove. + (aarch64_function_arg_alignment): Return unsigned int again, but still + ignore TYPE_FIELDS chain decls other than FIELD_DECLs. + (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller. + Don't emit -Wpsabi note. + (aarch64_function_arg_boundary): Likewise. + (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment + caller. + +2017-04-26 Nathan Sidwell + + * tree.h (crc32_unsigned_n): Declare. + (crc32_unsigned, crc32_unsigned): Make inline. + * tree.c (crc32_unsigned_bits): Replace with ... + (crc32_unsigned_n): ... this. + (crc32_unsigned, crc32_byte): Remove. + (crc32_string): Remove unnecessary braces. + +2017-04-25 Jan Hubicka + + * ipa-cp.c (estimate_local_effects): Convert sreal to int. + * ipa-inline-analysis.c (MAX_TIME): Remove. + (account_size_time): Use sreal for time. + (dump_inline_summary): Update. + (estimate_function_body_sizes): Update. + (estimate_edge_size_and_time): Update. + (estimate_calls_size_and_time): Update. + (estimate_node_size_and_time): Update. + (inline_merge_summary): Update. + (inline_update_overall_summary): Update. + (estimate_time_after_inlining): Update. + (inline_read_section): Update. + (inline_write_summary): Update. + * ipa-inline.c (compute_uninlined_call_time): Update. + (compute_inlined_call_time): Update. + (recursive_inlining): Update. + (inline_small_functions): Update. + (dump_overall_stats): Update. + * ipa-inline.h: Include sreal.h. + (size_time_entry): Turn time to sreal. + (inline_summary): Turn self_time nad time to sreal. + +2017-04-25 Jan Hubicka + + * sreal.c: Include backend.h, tree.h, gimple.h, cgraph.h and + data-streamer.h + (sreal::stream_out, sreal::stream_in): New. + * sreal.h (sreal::stream_out, sreal::stream_in): Declare. + +2017-04-25 Jakub Jelinek + + * Makefile.in (s-options): Invoke opt-gather.awk with LC_ALL=C in the + environment. + +2017-04-25 Uros Bizjak + + PR target/70799 + * config/i386/i386.c (dimode_scalar_to_vector_candidate_p): + Handle ASHIFTRT. + (dimode_scalar_chain::compute_convert_gain): Ditto. + (dimode_scalar_chain::make_vector_copies): Ditto. + (dimode_scalar_chain::convert_reg): Ditto. + (dimode_scalar_chain::convert_insn): Ditto. + * config/i386/sse.md (VI24_AVX512BW_1): Remove mode iterator. + (VI248_AVX512BW_1): New mode iterator. + (ashr3): Merge insn pattern with + ashrv2di3 insn using VI248_AVX512BW_1 + mode iterator. + +2017-04-25 Martin Sebor + + PR tree-optimization/80497 + * gimple-ssa-sprintf.c (get_int_range): Avoid assuming all integer + constants are representable in HOST_WIDE_INT. + (parse_directive): Ditto. + +2017-04-25 Martin Sebor + + PR bootstrap/80486 + * dominance.c (dom_info::m_n_basic_blocks): Change type to unsigned. + (new_zero_array): Adjust signature. + (dom_info::dom_init): Used unsigned rather that size_t. + (dom_info::dom_info): Same. + +2017-04-25 Ramana Radhakrishnan + Jakub Jelinek + + PR target/77728 + * config/arm/arm.c: Include gimple.h. + (aapcs_layout_arg): Emit -Wpsabi note if arm_needs_doubleword_align + returns negative, increment ncrn only if it returned positive. + (arm_needs_doubleword_align): Return int instead of bool, + ignore DECL_ALIGN of non-FIELD_DECL TYPE_FIELDS chain + members, but if there is any such non-FIELD_DECL + > PARM_BOUNDARY aligned decl, return -1 instead of false. + (arm_function_arg): Emit -Wpsabi note if arm_needs_doubleword_align + returns negative, increment nregs only if it returned positive. + (arm_setup_incoming_varargs): Likewise. + (arm_function_arg_boundary): Emit -Wpsabi note if + arm_needs_doubleword_align returns negative, return + DOUBLEWORD_ALIGNMENT only if it returned positive. + +2017-04-25 Marek Polacek + + PR sanitizer/80349 + * fold-const.c (fold_binary_loc) : Convert arg0's + first argument to type. + +2017-04-25 Bill Seurer + + PR target/80482 + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Change + type checks to test for compatibility instead of equality. + +2017-04-25 Ramana Radhakrishnan + Jakub Jelinek + + PR target/77728 + * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): New + type. + (aarch64_function_arg_alignment): Return aarch64_fn_arg_alignment + struct. Ignore DECL_ALIGN of decls other than FIELD_DECL for + the alignment computation, but return their maximum in warn_alignment. + (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller. + Emit a -Wpsabi note if warn_alignment is 16 bytes, but alignment + is smaller. + (aarch64_function_arg_boundary): Likewise. Simplify using MIN/MAX. + (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment + caller. + +2017-04-25 Claudiu Zissulescu + + * config/arc/simdext.md (dmpyh): Fix typo. + +2017-04-25 Richard Biener + + PR tree-optimization/80492 + * alias.c (compare_base_decls): Handle registers with asm + specification conservatively. + * tree-ssa-alias.c (decl_refs_may_alias_p): Handle + compare_base_decls returning dont-know properly. + +2017-04-25 Claudiu Zissulescu + + * config/arc/arc.c (LEGITIMATE_OFFSET_ADDRESS_P): Delete macro. + (legitimate_offset_address_p): New function. + (arc_legitimate_address_p): Use above function. + +2017-04-25 Claudiu Zissulescu + + * config/arc/arc.c (arc_output_mi_thunk): Emit PIC calls. + +2017-04-25 Claudiu Zissulescu + + * config/arc/arc.c (arc_conditional_register_usage): Use ACCL, + ACCH registers whenever they are available. + +2017-04-25 Claudiu Zissulescu + + * config/arc/arc.c (arc_conditional_register_usage): Make D0, D1 + double regs fix when not used. + +2017-04-25 Claudiu Zissulescu + + * config/arc/arc.h (REGNO_OK_FOR_BASE_P): Consider also extension + core registers. + (REG_OK_FOR_INDEX_P_NONSTRICT): Likewise. + (REG_OK_FOR_BASE_P_NONSTRICT): Likewise. + +2017-04-25 Claudiu Zissulescu + + * config/arc/arc.c (arc_output_addsi): Check for h-register class + when emitting short ADD instructions. + +2017-04-25 Claudiu Zissulescu + + * config/arc/arc.md (cmpsi_cc_insn_mixed): Use 'h' register + constraint. + (cmpsi_cc_c_insn): Likewise. + (cbranchsi4_scratch): Compute proper instruction length using + compact_hreg_operand. + * config/arc/predicates.md (compact_hreg_operand): New predicate. + +2017-04-25 Richard Biener + + PR middle-end/80509 + * passes.c (pass_manager::pass_manager): Initialize + m_name_to_pass_map. + +2017-04-25 Richard Biener + + PR tree-optimization/79201 + * tree-ssa-sink.c (statement_sink_location): Handle calls. + +2017-04-25 Andreas Krebbel + + PR target/80464 + * config/s390/vector.md: Split MEM->GPR vector moves for + non-s_operand addresses. + +2017-04-25 Andreas Krebbel + + PR target/79895 + * config/s390/predicates.md (reload_const_wide_int_operand): New + predicate. + * config/s390/s390.md ("movti"): Remove d/P alternative. + ("movti_bigconst"): New pattern definition. + +2017-04-25 Dominik Vogt + + PR target/80080 + * s390-protos.h (s390_expand_cs_hqi): Removed. + (s390_expand_cs, s390_expand_atomic_exchange_tdsi): New prototypes. + * config/s390/s390.c (s390_emit_compare_and_swap): Handle all integer + modes as well as CCZ1mode and CCZmode. + (s390_expand_atomic_exchange_tdsi, s390_expand_atomic): Adapt to new + signature of s390_emit_compare_and_swap. + (s390_expand_cs_hqi): Likewise, make static. + (s390_expand_cs_tdsi): Generate an explicit compare before trying + compare-and-swap, in some cases. + (s390_expand_cs): Wrapper function. + (s390_expand_atomic_exchange_tdsi): New backend specific expander for + atomic_exchange. + (s390_match_ccmode_set): Allow CCZmode <-> CCZ1 mode. + * config/s390/s390.md ("atomic_compare_and_swap"): Merge the + patterns for small and large integers. Forbid symref memory operands. + Move expander to s390.c. Require cc register. + ("atomic_compare_and_swap_internal") + ("*atomic_compare_and_swap_1") + ("*atomic_compare_and_swapdi_2") + ("*atomic_compare_and_swapsi_3"): Use s_operand to forbid + symref memory operands. Remove CC mode and call s390_match_ccmode + instead. + ("atomic_exchange"): Allow and implement all integer modes. + +2017-04-25 Dominik Vogt + + * config/s390/s390.md (define_peephole2): New peephole to help + combining the load-and-test pattern with volatile memory. + +2017-04-25 Dominik Vogt + + * config/s390/s390.md ("cstorecc4"): Use load-on-condition and deal + with CCZmode for TARGET_Z196. + +2017-04-25 Jakub Jelinek + + PR rtl-optimization/80501 + * combine.c (make_compound_operation_int): Set subreg_code to SET + even for AND with mask of the sign bit of mode. + + PR rtl-optimization/80500 + * loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on + sum's initial value. + +2017-04-25 Julian Brown + Naveen H.S + + * config/aarch64/thunderx2t99.md (thunderx2t99_crc): New Reservation. + +2017-04-25 Marc Glisse + + * fold-const.c (tree_single_nonzero_warnv_p): Handle SSA_NAME. + +2017-04-25 Julian Brown + Naveen H.S + + * config/aarch64/thunderx2t99.md (thunderx2t99_aes): New Reservation. + (thunderx2t99_sha): New Reservation. + +2017-04-25 Julian Brown + Naveen H.S + + * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set): Fix + type for 1-element load. + +2017-04-24 Marc Glisse + + * match.pd (X/[ex]C CMP Y/[ex]C): New transformation. + +2017-04-24 Martin Jambor + + PR tree-optimization/80293 + * tree-sra.c (scalarizable_type_p): New parameter const_decl, make + char arrays not totally scalarizable if it is false. + (analyze_all_variable_accesses): Pass correct value in the new + parameter. Add a statistics counter. + +2017-04-24 Jan Hubicka + + PR middle-end/79931 + * ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE. + +2017-04-24 Richard Biener + + PR tree-optimization/80494 + * tree-scalar-evolution.c (analyze_scalar_evolution_1): Bail + out for complex types. + +2017-04-24 Richard Biener + + * tree-ssa-sccvn.h (run_scc_vn): Adjust prototype. + * tree-ssa-sccvn.c (print_scc): Print SCC size. + (extract_and_process_scc_for_name): Never fail but drop SCC to varying. + (DFS): Adjust and never fail. + (sccvn_dom_walker::fail): Remove. + (sccvn_dom_walker::before_dom_children): Adjust. + (run_scc_vn): Likewise and never fail. + * tree-ssa-pre.c (pass_pre::execute): Adjust. + (pass_fre::execute): Likewise. + +2017-04-24 Richard Biener + + PR tree-optimization/79725 + * tree-ssa-sink.c (statement_sink_location): Return whether + failure reason was zero uses. Move that check later. + (sink_code_in_bb): Deal with zero uses by removing the stmt + if possible. + +2017-04-24 Richard Biener + + PR c++/2972 + * tree-ssa-uninit.c (warn_uninitialized_vars): Handle some + pointer-based references. + +2017-04-24 Richard Biener + + PR bootstrap/79814 + * pass_manager.h (pass_manager::operator new): Remove. + (pass_manager::operator delete): Likewise. + * passes.c (pass_manager::operator new): Remove. + (pass_manager::operator delete): Likewise. + (pass_manager::pass_manager): Zero individual pass members. + +2017-04-23 Uros Bizjak + + PR target/70799 + * config/i386/i386.c (dimode_scalar_to_vector_candidate_p) + : Also consider variable shifts. + Check "XEXP (src, 1)" operand here. + : + Check "XEXP (src, 1)" operand here. + (dimode_scalar_chain::make_vector_copies): Detect count register + of a shift instruction. Zero extend count register from QImode + to DImode to satisfy vector shift pattern count operand predicate. + Substitute vector shift count operand with a DImode copy. + (dimode_scalar_chain::convert_reg): Ditto, zero-extend from + vector register. + +2017-04-21 Uros Bizjak + + * config/i386/i386.md (*extzvqi_mem_rex64): Move above *extzv. + Remove UNSPEC_NOREX_MEM tag. Update corresponding peephole2 pattern. + (*insvqi_1_mem_rex64): Move above insv_1. Remove + UNSPEC_NOREX_MEM tag. Update corresponding peephole2 pattern. + (UNSPEC_NOREX_MEM): Remove definition. + +2017-04-21 Richard Biener + + PR tree-optimization/79547 + * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): + Handle strlen, strcmp, strncmp, strcasecmp, strncasecmp, memcmp, + bcmp, strspn, strcspn, __builtin_object_size and __builtin_constant_p + without any constraints. + +2017-04-21 Richard Biener + + PR tree-optimization/78847 + * fold-const.c (split_tree): Handle POINTER_PLUS_EXPR. + +2017-04-21 Richard Biener + + * tree.h (build_qualified_type): Annotate with CXX_MEM_STAT_INFO. + (build_distinct_type_copy): Likewise. + (build_variant_type_copy): Likewise. + * tree.c (build_qualified_type): Pass down mem-stat info. + (build_distinct_type_copy): Likewise. + (build_variant_type_copy): Likewise. + +2017-04-21 Richard Biener + + PR tree-optimization/80237 + * tree-ssa-pre.c (find_leader_in_sets): Add third set argument, + defaulted to NULL. + (phi_translate_1): Also allow a leader in AVAIL_OUT of pred + for a simplified result. + +2016-04-21 Richard Biener + + * tree-ssa-loop-ivcanon.c (constant_after_peeling): Do not require + sth as strict as a simple_iv but a chrec without symbols and an + operand defined in the loop we are peeling (and not some subloop). + (propagate_constants_for_unrolling): Propagate all constants. + +2017-04-20 Uros Bizjak + + PR target/79804 + * config/i386/i386.c (print_reg): Remove assert for disalowed + regno values, call output_operand_lossage instead. + +2017-04-20 Uros Bizjak + + PR target/78090 + * config/i386/constraints.md (Yc): New register constraint. + * config/i386/i386.md (*float2_mixed): + Use Yc constraint for alternative 2 of operand 0. Remove + preferred_for_speed attribute. + +2017-04-20 Alexander Monakov + + * omp-low.c (lower_lastprivate_clauses): Correct handling of linear and + lastprivate clauses in SIMT case. + +2017-04-20 Volker Reichelt + + * doc/invoke.texi (-Wextra-semi): Document new warning option. + +2017-04-20 Richard Biener + + PR tree-optimization/57796 + * tree-vect-stmts.c (vect_model_store_cost): Cost scatters + as N scalar stores. + (vect_model_load_cost): Cost gathers as N scalar loads. + +2017-04-20 Richard Biener + + * ggc-page.c (ggc_allocated_p): Rename to ... + (safe_lookup_page_table_entry): ... this and return the lookup + result. + (gt_ggc_m_S): Use safe_lookup_page_table_entry. + +2017-04-20 Richard Biener + + PR tree-optimization/80453 + * tree-ssa-sccvn.h (struct vn_phi_s): Add cclhs and ccrhs members. + * tree-ssa-sccvn.c (cond_stmts_equal_p): Use recorded lhs and rhs + from the conditions. + (vn_phi_eq): Pass them down. + (vn_phi_lookup): Record them. + (vn_phi_insert): Likewise. + +2017-04-20 Matthew Fortune + + * config/mips/mips.c (mips_expand_vec_perm_const): Re-fix + uninitialized variable warning to avoid buffer overrun. + +2017-04-20 Alexander Monakov + + PR other/71250 + * doc/invoke.texi (-Wmissing-field-initializers): Mention that warning + is suppressed for '{ 0 }' in C. + +2017-04-20 Jakub Jelinek + + * BASE-VER: Set to 8.0.0. + +2017-04-20 Thomas Preud'homme + + * config/arm/arm.c (arm_elf_asm_cdtor): Create non-default + priority .init_array and .fini_array section with SECTION_NOTYPE + flag. + +2017-04-20 Jakub Jelinek + + PR middle-end/80423 + * tree.h (build_array_type): Add typeless_storage default argument. + * tree.c (type_cache_hasher::equal): Also compare + TYPE_TYPELESS_STORAGE flag for ARRAY_TYPEs. + (build_array_type): Add typeless_storage argument, set + TYPE_TYPELESS_STORAGE to it, if shared also hash it, and pass to + recursive call. + (build_nonshared_array_type): Adjust build_array_type_1 caller. + (build_array_type): Likewise. Add typeless_storage argument. + +2017-04-19 Eric Botcazou + Jakub Jelinek + + PR tree-optimization/80426 + * tree-vrp.c (extract_range_from_binary_expr_1): For an additive + operation on symbolic operands, also compute the overflow for the + invariant part when the operation degenerates into a negation. + +2017-04-19 Jakub Jelinek + + PR debug/80461 + * dwarf2out.c (modified_type_die, gen_type_die_with_usage): + Check for t with zero TYPE_QUALS_NO_ADDR_SPACE. + + PR debug/80436 + * tree-ssa-loop-manip.c (find_uses_to_rename_def): Ignore debug uses. + +2017-04-19 Georg-Johann Lay + + PR target/80462 + * config/avr/avr.c (tree.h): Include it. + (cgraph.h): Include it. + (avr_encode_section_info): Don't warn for uninitialized progmem + variable if it's just an alias. + +2017-04-19 Richard Biener + + PR ipa/65972 + * auto-profile.c (afdo_vpt_for_early_inline): Update SSA + when needed by AutoPGO. + +2017-04-19 Paulo J. Matos + + PR lto/50345 + * doc/lto.texi: Remove an extra 'that'. + +2017-04-19 Segher Boessenkool + + PR rtl-optimization/80429 + * ira.c (split_live_ranges_for_shrink_wrap): Don't split regs that + are only used in debug insns. + +2017-04-19 Eric Botcazou + Vladimir Makarov + + * config/sparc/predicates.md (input_operand): Add comment. Return + true for any memory operand when LRA is in progress. + * config/sparc/sparc.c (sparc_expand_move): Minor formatting fix. + +2017-04-18 Jeff Law + + PR target/74563 + * mips.md ({return,simple_return}_internal): Do not overwrite + operands[0]. + +2017-04-18 Jakub Jelinek + + PR tree-optimization/80443 + * tree-vrp.c (intersect_ranges): For signed 1-bit precision type, + instead of adding 1, subtract -1 and similarly instead of subtracting + 1 add -1. + +2017-04-18 Richard Sandiford + + PR rtl-optimization/80357 + * haifa-sched.c (tmp_bitmap): New variable. + (model_recompute): Handle duplicate use records. + (alloc_global_sched_pressure_data): Initialize tmp_bitmap. + (free_global_sched_pressure_data): Free it. + +2017-04-18 Bernd Edlinger + + Revert: + 2017-02-20 Bernd Edlinger + * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe. + (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR + instead of SYSTEM_HEADER_DIR. + +2017-04-18 Jeff Law + + PR middle-end/80422 + * cfgcleanup.c (try_crossjump_to_edge): Verify SRC1 and SRC2 have + predecessors after walking up the insn chain. + +2017-04-18 Jakub Jelinek + + PR debug/80263 + * dwarf2out.c (modified_type_die): Try harder not to emit internal + sizetype type into debug info. + +2017-04-18 Michael Meissner + + PR target/80099 + * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Eliminate + unneeded test for TARGET_UPPER_REGS_SF. + * config/rs6000/vsx.md (vsx_extract_v4sf_var): Likewise. + +2017-04-18 Jakub Jelinek + + PR sanitizer/80444 + * sancov.c (sancov_pass): Use gsi_start_nondebug_after_labels_bb + instead of gsi_after_labels. + +2017-04-18 Jeff Law + + * regcprop.c (maybe_mode_change): Avoid creating copies of the + stack pointer. + + Revert: + 2017-04-13 Jeff Law + * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear + in operands[1] if it is a MEM and TARGET_MIPS16 is active. + +2017-04-18 Georg-Johann Lay + + PR target/79453 + * config/avr/avr.c (intl.h): Include it. + (avr_pgm_check_var_decl) [reason]: Wrap diagnostic snippets into _(). + +2017-04-18 Martin Liska + + PR gcov-profile/78783 + * gcov-tool.c (gcov_output_files): Validate that destination + file is either removed by the tool or by a user. + +2017-04-14 Andrew Burgess + Guy Benyei + + * config/arc/arc.c (arc_reorg): Move loop_end_id into a more local + block, and do not negate it, the stored id is already negative. + +2017-04-14 Andrew Burgess + + * config/arc/arc.md (doloop_begin_i): Use @pcl assembler syntax. + +2017-04-14 Michael Meissner + + PR target/80098 + * config/rs6000/rs6000-cpus.def (OTHER_P9_VECTOR_MASKS): Define + masks of options that should be turned off if the VSX vector + options are turned off. + (OTHER_P8_VECTOR_MASKS): Likewise. + (OTHER_VSX_VECTOR_MASKS): Likewise. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Call + rs6000_disable_incompatible_switches to validate no type switches + like -mvsx. + (rs6000_incompatible_switch): New function to disallow turning on + other vector options if -mno-vsx, -mno-power8-vector, or + -mno-power9-vector are specified. + +2017-04-14 Claudiu Zissulescu + + * config/arc/arc.h (CRT_CALL_STATIC_FUNCTION): Use long calls. + +2017-04-14 Claudiu Zissulescu + + * config/arc/arc-protos.h (arc_decl_pretend_args): Remove. + * config/arc/arc.c (arc_decl_pretend_args): Likewise. + * config/arc/arc.h (CFA_FRAME_BASE_OFFSET): Likewise. + (ARG_POINTER_CFA_OFFSET): Likewise. + +2017-04-14 Claudiu Zissulescu + + * config/arc/arc.c (arc_mode_dependent_address_p): Relax + conditions to take advantage of various optimizations. + +2017-04-13 Jeff Law + + * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear + in operands[1] if it is a MEM and TARGET_MIPS16 is active. + (zero_extendsidi2_dext): Likewise. + +2017-04-13 Jakub Jelinek + + PR sanitizer/80403 + * fold-const.c (fold_ternary_loc): Revert + use op0 instead of fold_convert_loc (loc, type, arg0) part of + 2017-04-12 change. + +2017-04-13 Vladimir Makarov + + PR rtl-optimization/80343 + * lra-remat.c (update_scratch_ops): Assign original hard reg to + new scratch pseudo. + +2017-04-13 Denis Khalikov + + PR sanitizer/80414 + * ubsan.c (ubsan_expand_bounds_ifn): Pass original index + to ubsan_encode_value. + +2017-04-13 Jeff Law + + * reload1.c (eliminate_regs_1): Call gen_rtx_raw_SUBREG for SUBREGs + appearing in DEBUG_INSNs. + +2017-04-13 Martin Liska + + PR gcov-profile/80413 + * gcov-io.c (gcov_write_string): Copy to buffer just when + allocated size is greater than zero. + +2017-04-13 Jakub Jelinek + + PR debug/80321 + * dwarf2out.c (decls_for_scope): Ignore declarations of + current_function_decl in BLOCK_NONLOCALIZED_VARS. + +2017-04-12 Jan Hubicka + + PR lto/69953 + * ipa-visibility.c (non_local_p): Fix typos. + (localize_node): When localizing symbol in same comdat group, + dissolve the group only when we know external symbols are going + to be privatized. + (function_and_variable_visibility): Do not localize DECL_EXTERNAL. + +2017-04-12 Jakub Jelinek + + PR tree-optimization/79390 + * optabs.c (emit_conditional_move): If the preferred op2/op3 operand + order does not result in usable sequence, retry with reversed operand + order. + + PR sanitizer/80403 + PR sanitizer/80404 + PR sanitizer/80405 + * fold-const.c (fold_ternary_loc): Use op1 instead of arg1 as argument + to fold_build2_loc. Convert TREE_OPERAND (tem, 0) to type. Use + op0 instead of fold_convert_loc (loc, type, arg0). + +2017-04-12 Jeff Law + + * genattrtab.c (write_eligible_delay): Verify DELAY_INSN still + has a delay slot in the generated code. + + * config/cris/cris.md (cris_preferred_reload_class): Return + GENNONACR_REGS rather than GENERAL_REGS. + +2017-04-12 Jakub Jelinek + + PR c/80163 + * expr.c : For EXPAND_INITIALIZER determine SIGN_EXTEND + vs. ZERO_EXTEND based on signedness of treeop0's type rather than + signedness of the result type. + +2017-04-12 Richard Biener + Jeff Law + + PR tree-optimization/80359 + * tree-ssa-dse.c (maybe_trim_partially_dead_store): Do not + trim stores to TARGET_MEM_REFs. + +2017-04-12 Richard Biener + + PR tree-optimization/79390 + * gimple-ssa-split-paths.c (is_feasible_trace): Restrict + threading case even more. + +2017-04-12 Segher Boessenkool + + PR target/80382 + * config/rs6000/sync.md (atomic_load, atomic_store + Bernd Edlinger + + PR middle-end/79671 + * alias.c (component_uses_parent_alias_set_from): Handle + TYPE_TYPELESS_STORAGE. + (get_alias_set): Likewise. + * tree-core.h (tree_type_common): Add typeless_storage flag. + * tree.h (TYPE_TYPELESS_STORAGE): New macro. + * stor-layout.c (place_union_field): Set TYPE_TYPELESS_STORAGE + for types containing members with TYPE_TYPELESS_STORAGE. + (place_field): Likewise. + (layout_type): Likewise for ARRAY_TYPE. + * lto-streamer-out.c (hash_tree): Hash TYPE_TYPELESS_STORAGE. + * tree-streamer-in.c (unpack_ts_type_common_value_fields): Stream + TYPE_TYPELESS_STORAGE. + * tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise. + +2017-04-12 Jakub Jelinek + + PR sanitizer/80349 + * fold-const.c (fold_binary_loc) : Convert arg0's + first argument to type. + +2017-04-11 Bill Schmidt + + PR target/80376 + PR target/80315 + * config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Return + CONST0_RTX (mode) rather than const0_rtx where appropriate. + (rs6000_expand_binop_builtin): Likewise. + (rs6000_expand_ternop_builtin): Likewise; also add missing + vsx_xxpermdi_* variants; also fix typo (arg1 => arg2) for + vshasigma built-ins. + * doc/extend.texi: Document that vec_xxpermdi's third argument + must be a constant. + +2017-04-11 Uros Bizjak + + * config/i386/i386.c (dimode_scalar_chain::compute_convert_gain): + Use shift_const cost parameter when calculating gain of STV shifts. + +2017-04-11 Vladimir Makarov + + PR rtl-optimization/70478 + * lra-constraints.c (process_alt_operands): Check memory for + disfavoring memory insn operand. + +2017-04-11 Jakub Jelinek + + PR middle-end/80100 + * simplify-rtx.c (simplify_binary_operation_1) : Perform + left shift in unsigned HOST_WIDE_INT type. + + PR rtl-optimization/80385 + * simplify-rtx.c (simplify_unary_operation_1): Don't transform + (not (neg X)) into (plus X -1) for complex or non-integral modes. + + PR libgomp/80394 + * omp-low.c (scan_omp_task): Don't optimize away empty tasks + if they have any depend clauses. + +2017-04-11 Martin Liska + + PR ipa/80212 + * cgraph.c (cgraph_node::dump): Dump calls_comdat_local. + * ipa-split.c (split_function): Create a local comdat symbol + if caller is in a comdat group. + +2017-04-11 Martin Liska + + PR ipa/80212 + * ipa-cp.c (determine_versionability): Handle calls_comdat_local + flags. + +2017-04-11 Martin Sebor + + PR middle-end/80364 + * gimple-ssa-sprintf.c (get_int_range): Remove second argument and + always use the int type. Use INTEGRAL_TYPE_P() rather than testing + for INTEGER_TYPE. + (directive::set_width, directive::set_precision, format_character): + Adjust. + (parse_directive): Use INTEGRAL_TYPE_P() rather than testing for + INTEGER_TYPE. + +2017-04-11 Richard Earnshaw + + PR target/80389 + * config/arm/arm.c (arm_configure_build_target): When -mcpu and -arch + conflict, set target->arch_name instead of target->cpu_name. + +2017-04-11 Richard Biener + + PR tree-optimization/80374 + * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Use + build_zero_cst, remove fold_convertible_p check again. + +2017-04-11 Martin Liska + + PR sanitizer/70878 + * ubsan.c (instrument_object_size): Do not instrument register + variables. + +2017-04-11 Jakub Jelinek + + PR target/80381 + * config/i386/i386-builtin-types.def + (V16HI_FTYPE_V16HI_INT_V16HI_UHI_COUNT, + V16HI_FTYPE_V16HI_V8HI_V16HI_UHI_COUNT, + V16SI_FTYPE_V16SI_INT_V16SI_UHI_COUNT, + V16SI_FTYPE_V16SI_V4SI_V16SI_UHI_COUNT, + V2DI_FTYPE_V2DI_INT_V2DI_UQI_COUNT, + V2DI_FTYPE_V2DI_V2DI_V2DI_UQI_COUNT, + V32HI_FTYPE_V32HI_INT_V32HI_USI_COUNT, + V32HI_FTYPE_V32HI_V8HI_V32HI_USI_COUNT, + V4DI_FTYPE_V4DI_INT_V4DI_UQI_COUNT, + V4DI_FTYPE_V4DI_V2DI_V4DI_UQI_COUNT, + V4SI_FTYPE_V4SI_INT_V4SI_UQI_COUNT, + V4SI_FTYPE_V4SI_V4SI_V4SI_UQI_COUNT, + V8DI_FTYPE_V8DI_INT_V8DI_UQI_COUNT, + V8DI_FTYPE_V8DI_V2DI_V8DI_UQI_COUNT, + V8HI_FTYPE_V8HI_INT_V8HI_UQI_COUNT, + V8HI_FTYPE_V8HI_V8HI_V8HI_UQI_COUNT, + V8SI_FTYPE_V8SI_INT_V8SI_UQI_COUNT, + V8SI_FTYPE_V8SI_V4SI_V8SI_UQI_COUNT): New function type aliases. + * config/i386/i386-builtin.def (__builtin_ia32_pslld512_mask, + __builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask, + __builtin_ia32_psllqi512_mask, __builtin_ia32_psrad512_mask, + __builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask, + __builtin_ia32_psraqi512_mask, __builtin_ia32_psrld512_mask, + __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask, + __builtin_ia32_psrlqi512_mask, __builtin_ia32_psllwi128_mask, + __builtin_ia32_pslldi128_mask, __builtin_ia32_psllqi128_mask, + __builtin_ia32_psllw128_mask, __builtin_ia32_pslld128_mask, + __builtin_ia32_psllq128_mask, __builtin_ia32_psllwi256_mask, + __builtin_ia32_psllw256_mask, __builtin_ia32_pslldi256_mask, + __builtin_ia32_pslld256_mask, __builtin_ia32_psllqi256_mask, + __builtin_ia32_psllq256_mask, __builtin_ia32_psradi128_mask, + __builtin_ia32_psrad128_mask, __builtin_ia32_psradi256_mask, + __builtin_ia32_psrad256_mask, __builtin_ia32_psraqi128_mask, + __builtin_ia32_psraq128_mask, __builtin_ia32_psraqi256_mask, + __builtin_ia32_psraq256_mask, __builtin_ia32_psrldi128_mask, + __builtin_ia32_psrld128_mask, __builtin_ia32_psrldi256_mask, + __builtin_ia32_psrld256_mask, __builtin_ia32_psrlqi128_mask, + __builtin_ia32_psrlq128_mask, __builtin_ia32_psrlqi256_mask, + __builtin_ia32_psrlq256_mask, __builtin_ia32_psrawi256_mask, + __builtin_ia32_psraw256_mask, __builtin_ia32_psrawi128_mask, + __builtin_ia32_psraw128_mask, __builtin_ia32_psrlwi256_mask, + __builtin_ia32_psrlw256_mask, __builtin_ia32_psrlwi128_mask, + __builtin_ia32_psrlw128_mask, __builtin_ia32_psllwi512_mask, + __builtin_ia32_psllw512_mask, __builtin_ia32_psrawi512_mask, + __builtin_ia32_psraw512_mask, __builtin_ia32_psrlwi512_mask, + __builtin_ia32_psrlw512_mask): Use _COUNT suffixed function type + aliases. + * config/i386/i386.c (ix86_expand_args_builtin): Rename last_arg_count + flag to second_arg_count, handle 4 argument function type _COUNT + aliases, handle second_arg_count on second argument rather than last. + +2017-04-10 Jeff Law + + PR tree-optimization/80374 + * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Do not try to + record anything if we can not convert integer_zero_node to the + desired type. + +2017-04-10 Kelvin Nilsen + + PR target/80108 + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Enhance special handling given to the TARGET_P9_MINMAX option in + relation to certain other options. + +2017-04-10 Bin Cheng + + PR tree-optimization/80153 + * tree-ssa-loop-ivopts.c (add_iv_candidate_for_use): Check and + remove POINTER_PLUS_EXPR's base part directly, rather than through + aff_tree. + +2017-04-10 Richard Biener + Bin Cheng + + PR tree-optimization/80153 + * tree-affine.c (aff_combination_to_tree): Get base pointer from + the first element of pointer type aff_tree. Build result expr in + aff_tree's type. + (add_elt_to_tree): Convert to type unconditionally. Remove other + fold_convert calls. + * tree-ssa-loop-ivopts.c (alloc_iv): Pass in consistent types. + (rewrite_use_nonlinear_expr): Check invariant using iv information. + +2017-04-10 Richard Biener + + * tree-ssa-structalias.c (find_func_aliases): Properly handle + asm inputs. + +2017-04-10 Vladimir Makarov + + PR rtl-optimization/70478 + * lra-constraints.c (curr_small_class_check): New. + (update_and_check_small_class_inputs): New. + (process_alt_operands): Update curr_small_class_check. Disfavor + alternative insn memory operands. Check available regs for small + class operands. + +2017-03-31 Matthew Fortune + + PR target/80057 + * config/mips/mips.opt (-mvirt): Update description. + * doc/invoke.texi (-mvirt): Likewise. + +2017-04-10 Richard Biener + + PR middle-end/80362 + * fold-const.c (fold_binary_loc): Look at unstripped ops when + looking for NEGATE_EXPR in -A / -B to A / B folding. + +2017-04-10 Martin Liska + + PR gcov-profile/80224 + * gcov.c (print_usage): Fix usage string. + (get_gcov_intermediate_filename): Remove. + (output_gcov_file): Use both for normal and intermediate format. + (generate_results): Do not initialize special file for + intermediate format. + +2017-04-10 Richard Biener + + PR tree-optimization/80304 + * tree-ssa-loop-im.c (ref_indep_loop_p_1): Also recurse + for safelen. + +2017-04-10 Nathan Sidwell + + PR target/79905 + * config/rs6000/rs6000.c (rs6000_vector_type): New. + (rs6000_init_builtins): Use it. + +2016-04-10 Kyrylo Tkachov + + * config/arm/arm.md (): Add mode to SET source. + (): Likewise. + +2017-04-10 Richard Biener + + PR middle-end/80344 + * gimplify.c (is_gimple_mem_rhs_or_call): Allow CLOBBERs. + +2017-04-10 Jakub Jelinek + + PR target/80324 + * config/i386/avx512fintrin.h (_mm512_reduce_add_epi32, + _mm512_reduce_mul_epi32, _mm512_reduce_and_epi32, + _mm512_reduce_or_epi32, _mm512_mask_reduce_add_epi32, + _mm512_mask_reduce_mul_epi32, _mm512_mask_reduce_and_epi32, + _mm512_mask_reduce_or_epi32, _mm512_reduce_min_epi32, + _mm512_reduce_max_epi32, _mm512_reduce_min_epu32, + _mm512_reduce_max_epu32, _mm512_mask_reduce_min_epi32, + _mm512_mask_reduce_max_epi32, _mm512_mask_reduce_min_epu32, + _mm512_mask_reduce_max_epu32, _mm512_reduce_add_ps, + _mm512_reduce_mul_ps, _mm512_mask_reduce_add_ps, + _mm512_mask_reduce_mul_ps, _mm512_reduce_min_ps, _mm512_reduce_max_ps, + _mm512_mask_reduce_min_ps, _mm512_mask_reduce_max_ps, + _mm512_reduce_add_epi64, _mm512_reduce_mul_epi64, + _mm512_reduce_and_epi64, _mm512_reduce_or_epi64, + _mm512_mask_reduce_add_epi64, _mm512_mask_reduce_mul_epi64, + _mm512_mask_reduce_and_epi64, _mm512_mask_reduce_or_epi64, + _mm512_reduce_min_epi64, _mm512_reduce_max_epi64, + _mm512_mask_reduce_min_epi64, _mm512_mask_reduce_max_epi64, + _mm512_reduce_min_epu64, _mm512_reduce_max_epu64, + _mm512_mask_reduce_min_epu64, _mm512_mask_reduce_max_epu64, + _mm512_reduce_add_pd, _mm512_reduce_mul_pd, _mm512_mask_reduce_add_pd, + _mm512_mask_reduce_mul_pd, _mm512_reduce_min_pd, _mm512_reduce_max_pd, + _mm512_mask_reduce_min_pd, _mm512_mask_reduce_max_pd): New intrinsics. + +2017-04-08 Vladimir Makarov + + PR rtl-optimization/70478 + * lra-constraints.c: Reverse the last patch. + +2017-04-08 Andreas Tobler + + * config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME. + Add comment for WCHAR_T. + +2017-04-08 Martin Liska + + Revert: + 2017-04-07 Martin Liska + + PR ipa/80212 + * ipa-split.c (split_function): Add function part to a same comdat + group. + +2017-04-08 Aaron Sawdey + + PR target/80358 + * config/rs6000/rs6000.c (expand_block_compare): Fix boundary check. + +2017-04-07 Pat Haugen + + * rs6000/rs6000.c (vec_load_pendulum): Rename... + (vec_pairing): ...to this. + (power9_sched_reorder2): Rewrite code for pairing vector/vecload insns. + (rs6000_sched_init): Adjust for name change. + (struct rs6000_sched_context): Likewise. + (rs6000_init_sched_context): Likewise. + (rs6000_set_sched_context): Likewise. + +2017-04-07 Jakub Jelinek + + PR target/80322 + PR target/80323 + PR target/80325 + PR target/80326 + * config/i386/avxintrin.h (_mm256_cvtsd_f64, _mm256_cvtss_f32): New + intrinsics. + * config/i386/avx512fintrin.h (_mm512_int2mask, _mm512_mask2int, + _mm512_abs_ps, _mm512_mask_abs_ps, _mm512_abs_pd, _mm512_mask_abs_pd, + _mm512_cvtsd_f64, _mm512_cvtss_f32): Likewise. + +2017-04-07 Andreas Tobler + + * config/aarch64/aarch64-freebsd.h: Define WCHAR_TYPE. + +2017-04-07 Vladimir Makarov + + PR rtl-optimization/70703 + * ira-color.c (update_conflict_hard_regno_costs): Use + int64_t instead of HOST_WIDE_INT. + +2017-04-07 Vladimir Makarov + + PR rtl-optimization/70478 + * lra-constraints.c (process_alt_operands): Disfavor alternative + insn memory operands. + +2017-04-07 Jeff Law + + * config/iq2000/iq2000.c (final_prescan_insn): Do not separate a + CALL and NOTE_INSN_CALL_ARG_LOCATION. + +2017-04-07 Martin Liska + + PR target/79889 + * config/aarch64/aarch64.c (aarch64_process_target_attr): + Show error message instead of an ICE. + +2017-04-07 Martin Liska + + PR ipa/80212 + * ipa-split.c (split_function): Add function part to a same comdat + group. + +2017-04-07 Richard Biener + + PR middle-end/80341 + * tree.c (get_unwidened): Also handle ! for_type case for + INTEGER_CSTs. + * convert.c (do_narrow): Split out from ... + (convert_to_integer_1): ... here. Do not pass final truncation + type to get_unwidened for TRUNC_DIV_EXPR. + +2017-04-07 Richard Biener + + * tree-affine.c (wide_int_ext_for_comb): Take type rather + than aff_tree. + (aff_combination_const): Adjust. + (aff_combination_scale): Likewise. + (aff_combination_add_elt): Likewise. + (aff_combination_add_cst): Likewise. + (aff_combination_convert): Likewise. + (add_elt_to_tree): Likewise. Remove unused argument. + (aff_combination_to_tree): Adjust calls to add_elt_to_tree. + +2017-04-07 Sebastian Huber + + * config/arm/arm.h (ARM_DEFAULT_SHORT_ENUMS): Provide default + definition. + * config/arm/arm.c (arm_default_short_enums): Use + ARM_DEFAULT_SHORT_ENUMS. + * config/arm/rtems.h (ARM_DEFAULT_SHORT_ENUMS): Define. + +2017-04-06 Jakub Jelinek + + PR debug/80234 + * dwarf2out.c (gen_member_die): Handle C++17 inline static data + members with redundant out-of-class redeclaration. + +2017-04-06 Uros Bizjak + + PR target/80286 + * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): New pattern. + * config/i386/i386.md (*zero_extendsidi2): + Add (?*x,*x) and (?*v,*v) alternatives. + +2017-04-06 Uros Bizjak + + PR target/79733 + * config/i386/i386.c (ix86_expand_builtin) + : Determine insn operand + mode from insn data. Convert operands to insn operand mode. + Copy operands that don't satisfy insn predicate to a register. + +2017-04-06 Sam Thursfield + + * config/rs6000/x-aix: Increase memory limit for genautomata on AIX. + Update comments. + +2017-04-06 Richard Biener + + PR tree-optimization/80334 + * tree-ssa-loop-ivopts.c (rewrite_use_address): Properly + preserve alignment of accesses. + +2017-04-06 Richard Biener + + PR tree-optimization/80262 + * tree-sra.c (build_ref_for_offset): Preserve address-space + information. + * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): + Drop useless address-space information on MEM_REF offsets. + +2017-04-05 Andreas Schwab + + * builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): Fix type. + +2017-04-05 Vladimir Makarov + + PR rtl-optimization/70703 + * ira-color.c (update_conflict_hard_regno_costs): Use + HOST_WIDE_INT instead of long. + +2017-04-05 Uros Bizjak + + PR target/80298 + * config/i386/mmintrin.h: Add -msse target option when __SSE__ is + not defined for x86_64 target. Add -mmmx target option when __SSE2__ + is not defined. + * config/i386/mm3dnow.h: Add -msse target when __SSE__ is not defined + for x86_64 target. Handle -m3dnowa option. + +2017-04-05 Vladimir Makarov + + PR rtl-optimization/70703 + * ira-color.c (update_costs_from_allocno): Use the smallest mode. + (update_conflict_hard_regno_costs): Use long instead of unsigned + arithmetic for cost calculation. + +2017-04-05 Jakub Jelinek + Bernd Edlinger + + PR sanitizer/80308 + * asan.c (asan_store_shadow_bytes): Fix location of last_chunk_value + for big endian. + +2017-04-05 Eric Botcazou + + PR target/78002 + * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Replace + ptr_mode with Pmode throughout. + * config/aarch64/aarch64.md (probe_stack_range_ + + PR target/79890 + * config/s390/s390.c (s390_register_info_gprtofpr): Return if + call_eh_return is true. + +2017-04-05 Andreas Krebbel + + * config/s390/s390-c.c (s390_resolve_overloaded_builtin): + Initialize last_match_fntype_index. + +2017-04-05 Jakub Jelinek + + PR target/80310 + * tree-nvr.c: Include internal-fn.h. + (pass_return_slot::execute): Ignore internal calls without + direct optab. + +2017-04-04 Jakub Jelinek + Richard Biener + + PR c++/80297 + * genmatch.c (capture::gen_transform): For GENERIC unshare_expr + captures used multiple times, except for the last use. + * generic-match-head.c: Include gimplify.h. + +2017-04-04 Jakub Jelinek + + PR tree-optimization/79390 + * target.h (struct noce_if_info): Declare. + * targhooks.h (default_noce_conversion_profitable_p): Declare. + * target.def (noce_conversion_profitable_p): New target hook. + * ifcvt.h (struct noce_if_info): New type, moved from ... + * ifcvt.c (struct noce_if_info): ... here. + (noce_conversion_profitable_p): Renamed to ... + (default_noce_conversion_profitable_p): ... this. No longer + static nor inline. + (noce_try_store_flag_constants, noce_try_addcc, + noce_try_store_flag_mask, noce_try_cmove, noce_try_cmove_arith, + noce_convert_multiple_sets): Use targetm.noce_conversion_profitable_p + instead of noce_conversion_profitable_p. + * config/i386/i386.c: Include ifcvt.h. + (ix86_option_override_internal): Don't override + PARAM_MAX_RTL_IF_CONVERSION_INSNS default. + (ix86_noce_conversion_profitable_p): New function. + (TARGET_NOCE_CONVERSION_PROFITABLE_P): Redefine. + * config/i386/x86-tune.def (X86_TUNE_ONE_IF_CONV_INSN): Adjust comment. + * doc/tm.texi.in (TARGET_NOCE_CONVERSION_PROFITABLE_P): Add. + * doc/tm.texi: Regenerated. + +2017-04-04 Bill Schmidt + + * doc/extend.texi (PowerPC AltiVec Built-in Functions): Grammar + correction. + +2017-04-04 Thomas Preud'homme + + PR target/80307 + * config/arm/arm.c (thumb1_rtx_costs): Give a cost of 32 + instructions for small multiply cores. + +2017-04-04 Jeff Law + + * config/mips/mips.c (mips_multi_add): Zero initialize the newly + added member. + (mips_expand_vec_perm_const): Initialize elements in orig_perm + that are not set by the loop over the elements. + +2017-04-04 Jakub Jelinek + + PR target/80286 + * config/i386/i386.c (ix86_expand_args_builtin): If op has scalar + int mode, convert_modes it to mode as unsigned, otherwise use + lowpart_subreg to mode rather than SImode. + * config/i386/sse.md (ashr3, + ashr3, ashr3, 3): + Use DImode instead of SImode for the shift count operand. + * config/i386/mmx.md (mmx_ashr3, mmx_3): + Likewise. + +2017-04-04 Richard Biener + + PR middle-end/80281 + * match.pd (A + (-B) -> A - B): Make sure to preserve unsigned + arithmetic done for the negate or the plus. Simplify. + (A - (-B) -> A + B): Likewise. + * fold-const.c (split_tree): Make sure to not negate pointers. + +2017-04-04 Segher Boessenkool + + PR rtl-optimization/60818 + * simplify-rtx.c (simplify_binary_operation_1): Do not replace + a compare of comparisons with the thing compared if this results + in a different machine mode. + +2017-04-03 Jonathan Wakely + + * alias.c (base_alias_check): Fix typo in comment. + * cgraph.h (class ipa_polymorphic_call_context): Likewise. + * cgraphunit.c (symbol_table::compile): Likewise. + * collect2.c (maybe_run_lto_and_relink): Likewise. + * config/arm/arm.c (arm_thumb1_mi_thunk): Likewise. + * config/avr/avr-arch.h (avr_arch_info_t): Likewise. + * config/avr/avr.c (avr_map_op_t): Likewise. + * config/cr16/cr16.h (DATA_ALIGNMENT): Likewise. + * config/epiphany/epiphany.c (TARGET_ARG_PARTIAL_BYTES): Likewise. + * config/epiphany/epiphany.md (movcc): Likewise. + * config/i386/i386.c (legitimize_pe_coff_extern_decl): Likewise. + * config/m68k/m68k.c (struct _sched_ib, m68k_sched_variable_issue): + Likewise. + * config/mips/mips.c (mips_save_restore_reg): Likewise. + * config/rx/rx.c (rx_is_restricted_memory_address): Likewise. + * config/s390/s390.c (Z10_EARLYLOAD_DISTANCE): Likewise. + * config/sh/sh.c (sh_rtx_costs): Likewise. + * fold-const.c (fold_truth_andor): Likewise. + * genautomata.c (collapse_flag): Likewise. + * gengtype.h (struct type::u::s): Likewise. + * gensupport.c (has_subst_attribute, add_mnemonic_string): Likewise. + * input.c (FORMAT_AMOUNT): Likewise. + * ipa-cp.c (class ipcp_lattice, agg_replacements_to_vector) + (known_aggs_to_agg_replacement_list): Likewise. + * ipa-inline-analysis.c: Likewise. + * ipa-inline.h (estimate_edge_time, estimate_edge_hints): Likewise. + * ipa-polymorphic-call.c + (ipa_polymorphic_call_context::restrict_to_inner_class): Likewise. + * loop-unroll.c (analyze_insn_to_expand_var): Likewise. + * lra.c (lra_optional_reload_pseudos, lra_subreg_reload_pseudos): + Likewise. + * modulo-sched.c (apply_reg_moves): Likewise. + * omp-expand.c (build_omp_regions_1): Likewise. + * trans-mem.c (struct tm_wrapper_hasher): Likewise. + * tree-ssa-loop-ivopts.c (may_eliminate_iv): Likewise. + * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Likewise. + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise. + * value-prof.c: Likewise. + * var-tracking.c (val_reset): Likewise. + +2017-04-03 Richard Biener + + PR tree-optimization/80275 + * fold-const.c (split_address_to_core_and_offset): Handle + POINTER_PLUS_EXPR. + +2017-04-03 Eric Botcazou + + * tree-nested.c (get_descriptor_type): Make sure that the alignment of + descriptors is at least equal to that of functions. + +2017-04-02 Uros Bizjak + + * config/i386/sse.md (movdi_to_sse): Add missing DONE. + +2017-04-02 Uros Bizjak + + PR target/80250 + * config/i386/sse.md (mov): Remove insn pattern. + (mov): New expander. + (*mov_internal): New insn and split pattern. + +2017-03-31 Segher Boessenkool + + PR rtl-optimization/79405 + * fwprop.c (propagations_left): New variable. + (forward_propagate_into): Decrement it. + (fwprop_init): Initialize it. + (fw_prop): If the variable has reached zero, stop propagating. + (fwprop_addr): Ditto. + +2017-03-31 Jakub Jelinek + + PR debug/79255 + * dwarf2out.c (decls_for_scope): If BLOCK_NONLOCALIZED_VAR is + a FUNCTION_DECL, pass it as decl instead of origin to + process_scope_var. + +2017-03-31 Alexander Monakov + + * config/nvptx/nvptx.c (nvptx_output_softstack_switch): Correct format + string. + +2017-03-31 Pat Haugen + + PR target/80107 + * config/rs6000/rs6000.md (extendhi2): Add test for + TARGET_VSX_SMALL_INTEGER. + +2017-03-31 Bill Schmidt + + * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add + reference to the OpenPOWER 64-Bit ELF V2 ABI Specification. + +2017-03-31 Matthew Fortune + + * config/mips/mips-msa.md (msa_vec_extract_): Update + extraction from odd-numbered MSA register. + +2017-03-31 Jakub Jelinek + + PR middle-end/80173 + * expmed.c (store_bit_field_1): Don't attempt to create + a word subreg out of hard registers wider than word if they + have HARD_REGNO_NREGS of 1 for their mode. + + PR middle-end/80163 + * varasm.c (initializer_constant_valid_p_1): Disallow sign-extending + conversions to integer types wider than word and pointer. + + PR debug/80025 + * cselib.h (rtx_equal_for_cselib_1): Add depth argument. + (rtx_equal_for_cselib_p): Pass 0 to it. + * cselib.c (cselib_hasher::equal): Likewise. + (rtx_equal_for_cselib_1): Add depth argument. If depth + is 128, don't look up VALUE locs and punt. Increment + depth in recursive calls when walking VALUE locs. + +2017-03-31 Bernd Edlinger + + * gcov.c (md5sum_to_hex): Fix output of MD5 hex bytes. + (make_gcov_file_name): Use the canonical path name for generating + the MD5 value. + (read_line): Fix handling of files with ascii null bytes. + +2017-03-30 Matthew Fortune + + * config/mips/mips.c (mips_expand_vector_init): Create a const_vector + to initialise a vector register instead + of using a const_int. + +2017-03-30 Jakub Jelinek + + PR translation/80189 + * gimplify.c (omp_default_clause): Use %qs instead of %s in + diagnostic messages. + +2017-03-30 Peter Bergner + + PR target/80246 + * config/rs6000/dfp.md (dfp_dxex_): Update mode of operand 0. + (dfp_diex_): Update mode of operand 1. + * doc/extend.texi (dxex, dxexq): Document change to return type. + (diex, diexq): Document change to argument type. + +2017-03-30 Martin Jambor + + PR ipa/77333 + * cgraph.h (cgraph_build_function_type_skip_args): Declare. + * cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that + it reflects the signature changes performed at the callee side. + * cgraphclones.c (build_function_type_skip_args): Make public, renamed + to cgraph_build_function_type_skip_args. + (build_function_decl_skip_args): Adjust call to the above function. + +2017-03-30 Jakub Jelinek + + PR target/80206 + * config/i386/sse.md + (_vextract_mask): Use + register as dest whenever it is a MEM not rtx_equal_p to the + corresponding dup operand, and when forcing into reg move the + reg into the memory afterwards. + (_vextract_mask): + Likewise. Use instead of + for the force_reg mode. + (avx512vl_vextractf128): Use register as dest either + always when a MEM, or when it is a MEM not rtx_equal_p to the + corresponding dup operand, or even not when it is a CONST_VECTOR + depending on the mode and lo vs. hi. + (avx512dq_vextract64x2_1_maskm): Remove extraneous + parens. + (avx512f_vextract32x4_1_maskm): Likewise. + (avx512dq_vextract64x2_1): + Likewise. Require that operands[2] is even. + (avx512f_vextract32x4_1): + Remove extraneous parens. Require that operands[2] is a multiple + of 4. + (vec_extract_lo_): Don't bother testing if + operands[0] is a MEM if , the predicates/constraints + disallow memory then. + +2017-03-30 Richard Biener + + PR tree-optimization/77498 + * tree-ssa-pre.c (phi_translate_1): Do not allow simplifications + to non-constants over backedges. + +2017-03-29 Segher Boessenkool + + PR rtl-optimization/80233 + * combine.c (combine_instructions): Only take NONDEBUG_INSN_P insns + as last_combined_insn. Do not test for BARRIER_P separately. + +2017-03-29 Andreas Schwab + + PR ada/80146 + * calls.c (prepare_call_address): Convert funexp to Pmode before + copying to temp reg. + +2017-03-29 Bill Schmidt + + PR tree-optimization/80158 + * gimple-ssa-strength-reduction.c (replace_mult_candidate): + Handle possible future case of more than one alternate + interpretation. + (replace_rhs_if_not_dup): Likewise. + (replace_one_candidate): Likewise. + +2017-03-28 Vladimir Makarov + + PR rtl-optimization/80193 + * ira.c (ira): Do not check allocation for LRA. + +2017-03-28 Alexander Monakov + + * config/nvptx/nvptx-protos.h (nvptx_output_simt_enter): Declare. + (nvptx_output_simt_exit): Declare. + * config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Use + cfun->machine->unisimt_location. Handle NULL unisimt_predicate. + (init_softstack_frame): Move initialization of crtl->is_leaf to... + (nvptx_declare_function_name): ...here. Emit declaration of local + memory space buffer for omp_simt_enter insn. + (nvptx_output_unisimt_switch): New. + (nvptx_output_softstack_switch): New. + (nvptx_output_simt_enter): New. + (nvptx_output_simt_exit): New. + * config/nvptx/nvptx.h (struct machine_function): New fields + has_simtreg, unisimt_location, simt_stack_size, simt_stack_align. + * config/nvptx/nvptx.md (UNSPECV_SIMT_ENTER): New unspec. + (UNSPECV_SIMT_EXIT): Ditto. + (omp_simt_enter_insn): New insn. + (omp_simt_enter): New expansion. + (omp_simt_exit): New insn. + * config/nvptx/nvptx.opt (msoft-stack-reserve-local): New option. + + * internal-fn.c (expand_GOMP_SIMT_ENTER): New. + (expand_GOMP_SIMT_ENTER_ALLOC): New. + (expand_GOMP_SIMT_EXIT): New. + * internal-fn.def (GOMP_SIMT_ENTER): New internal function. + (GOMP_SIMT_ENTER_ALLOC): Ditto. + (GOMP_SIMT_EXIT): Ditto. + * target-insns.def (omp_simt_enter): New insn. + (omp_simt_exit): Ditto. + * omp-low.c (struct omplow_simd_context): New fields simt_eargs, + simt_dlist. + (lower_rec_simd_input_clauses): Implement SIMT privatization. + (lower_rec_input_clauses): Likewise. + (lower_lastprivate_clauses): Handle SIMT privatization. + + * omp-offload.c: Include langhooks.h, tree-nested.h, stor-layout.h. + (ompdevlow_adjust_simt_enter): New. + (find_simtpriv_var_op): New. + (execute_omp_device_lower): Handle IFN_GOMP_SIMT_ENTER, + IFN_GOMP_SIMT_ENTER_ALLOC, IFN_GOMP_SIMT_EXIT. + + * tree-inline.h (struct copy_body_data): New field dst_simt_vars. + * tree-inline.c (expand_call_inline): Handle SIMT privatization. + (copy_decl_for_dup_finish): Ditto. + + * tree-ssa.c (execute_update_addresses_taken): Handle GOMP_SIMT_ENTER. + +2017-03-28 Uros Bizjak + + PR target/53383 + * config/i386/i386.c (ix86_option_override_internal): Always + allow -mpreferred-stack-boundary=3 for 64-bit targets. + +2017-03-28 Bin Cheng + + * tree-vect-loop.c (optimize_mask_stores): Add bb to the right loop. + +2017-03-28 Bin Cheng + + * tree-vect-loop-manip.c (slpeel_add_loop_guard): New param and + mark new edge's irreducible flag accordign to it. + (vect_do_peeling): Check loop preheader edge's irreducible flag + and pass it to function slpeel_add_loop_guard. + +2017-03-28 Richard Sandiford + + PR tree-optimization/80218 + * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds): + Update block frequencies and counts. + +2017-03-28 Richard Biener + + PR tree-optimization/78644 + * tree-ssa-ccp.c (evaluate_stmt): When we may not use the value + of a simplification result we may not use it at all. + +2017-03-28 Richard Biener + + PR ipa/80205 + * tree-inline.c (copy_phis_for_bb): Do not create PHI node + without arguments, generate default definition of a SSA name. + +2017-03-28 Richard Biener + + PR middle-end/80222 + * gimple-fold.c (gimple_fold_indirect_ref): Do not touch + TYPE_REF_CAN_ALIAS_ALL references. + * fold-const.c (fold_indirect_ref_1): Likewise. + +2017-03-28 Martin Liska + + PR ipa/80104 + * cgraphunit.c (cgraph_node::expand_thunk): Mark argument of a + thunk call as DECL_GIMPLE_REG_P when vector or complex type. + +2017-03-28 Claudiu Zissulescu + Thomas Petazzoni + + * config/arc/arc.h (CPP_SPEC): Add subtarget_cpp_spec. + (EXTRA_SPECS): Define. + (SUBTARGET_EXTRA_SPECS): Likewise. + (SUBTARGET_CPP_SPEC): Likewise. + * config/arc/elf.h (EXTRA_SPECS): Renamed to + SUBTARGET_EXTRA_SPECS. + * config/arc/linux.h (SUBTARGET_CPP_SPEC): Define. + +2017-03-28 Claudiu Zissulescu + + * config/arc/simdext.md (vst64_insn): Update pattern. + (vld32wh_insn): Likewise. + (vld32wl_insn): Likewise. + (vld64_insn): Likewise. + (vld32_insn): Likewise. + +2017-03-28 Marek Polacek + + PR sanitizer/80067 + * fold-const.c (fold_comparison): Use protected_set_expr_location + instead of SET_EXPR_LOCATION. + +2017-03-28 Markus Trippelsdorf + + * tree.c (add_expr): Avoid name lookup warning. + +2017-03-27 Jeff Law + + PR tree-optimization/80216 + * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Fix typo in + function name. Limit recursion depth. + (record_temporary_equivalences): Corresponding changes. + +2017-03-27 Jonathan Wakely + + * doc/invoke.texi (-Wno-narrowing): Reorder so default behavior is + covered first. + +2017-03-27 Jakub Jelinek + + PR target/80102 + * reg-notes.def (REG_CFA_NOTE): Define. Use it for CFA related + notes. + * cfgcleanup.c (reg_note_cfa_p): New array. + (insns_have_identical_cfa_notes): New function. + (old_insns_match_p): Don't cross-jump in between /f + and non-/f instructions. If both i1 and i2 are frame related, + verify all CFA notes, their order and content. + +2017-03-27 Michael Meissner + + PR target/78543 + * config/rs6000/rs6000.md (bswaphi2_extenddi): Combine bswap + HImode and SImode with zero extend to DImode to one insn. + (bswap2_extenddi): Likewise. + (bswapsi2_extenddi): Likewise. + (bswaphi2_extendsi): Likewise. + (bswaphi2): Combine bswap HImode and SImode into one insn. + Separate memory insns from swapping register. + (bswapsi2): Likewise. + (bswap2): Likewise. + (bswaphi2_internal): Delete, no longer used. + (bswapsi2_internal): Likewise. + (bswap2_load): Split bswap HImode/SImode into separate load, + store, and gpr<-gpr swap insns. + (bswap2_store): Likewise. + (bswaphi2_reg): Register only splitter, combine with the splitter. + (bswaphi2 splitter): Likewise. + (bswapsi2_reg): Likewise. + (bswapsi2 splitter): Likewise. + (bswapdi2): If we have the LDBRX and STDBRX instructions, split + the insns into load, store, and register/register insns. + (bswapdi2_ldbrx): Likewise. + (bswapdi2_load): Likewise. + (bswapdi2_store): Likewise. + (bswapdi2_reg): Likewise. + +2017-03-27 Gunther Nikl + + * system.h (HAVE_DESIGNATED_INITIALIZERS): Fix non C++ case. + (HAVE_DESIGNATED_UNION_INITIALIZERS): Likewise. + +2017-03-27 Kelvin Nilsen + + PR target/80103 + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Edit and + add comments. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Add + special handling for target option conflicts between dform + options (-mpower9-dform, -mpower9-dform-vector, + -mpower9-dform-scalar) and -mno-direct-move. + +2017-03-27 Richard Biener + + PR tree-optimization/80181 + * tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED. + +2017-03-27 Claudiu Zissulescu + + * config/arc/predicates.md (move_double_src_operand): Replace the + call to move_double_src_operand with a call to address_operand. + +2017-03-27 Claudiu Zissulescu + + * config/arc/elf.h (ARGET_ARC_TP_REGNO_DEFAULT): Define. + * config/arc/linux.h (ARGET_ARC_TP_REGNO_DEFAULT): Likewise. + * config/arc/arc.opt (mtp-regno): Use ARGET_ARC_TP_REGNO_DEFAULT. + +2017-03-27 Claudiu Zissulescu + + * config/arc/predicates.md (long_immediate_loadstore_operand): + Consider scaled addresses cases. + +2017-03-27 Claudiu Zissulescu + + * config/arc/arc.c (arc_epilogue_uses): BLINK should be also + restored when in interrupt. + * config/arc/arc.md (simple_return): ARCv2 rtie instruction + doesn't have delay slot. + +2017-03-27 Richard Biener + + PR ipa/79776 + * tree-ssa-structalias.c (associate_varinfo_to_alias): Skip + inlined thunk clones. + +2017-03-27 Jakub Jelinek + + PR sanitizer/80168 + * asan.c (instrument_derefs): Copy over last operand from + original COMPONENT_REF to the new COMPONENT_REF with + DECL_BIT_FIELD_REPRESENTATIVE. + * ubsan.c (instrument_object_size): Likewise. + +2017-03-27 Richard Biener + + PR tree-optimization/80170 + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Make + sure DR/SCEV didnt fold in constants we do not see when looking + at the reference base alignment. + +2017-03-27 Richard Biener + + PR middle-end/80171 + * gimple-fold.c (fold_ctor_reference): Properly guard against + NULL return value from canonicalize_constructor_val. + +2017-03-25 Uros Bizjak + + PR target/80180 + * config/i386/i386.c (ix86_expand_builtin) + : Do not expand arg0 between + flags reg setting and flags reg using instructions. + : Ditto. Use non-flags reg + clobbering instructions to zero extend op2. + +2017-03-25 Gerald Pfeifer + + * doc/install.texi (Configuration) <--with-aix-soname>: + Update link to AIX ld. + +2017-03-25 Bernd Schmidt + + PR rtl-optimization/80160 + PR rtl-optimization/80159 + * lra-assigns.c (must_not_spill_p): Tighten new test to also take + reg_alternate_class into account. + +2017-03-24 Vladimir Makarov + + PR target/80148 + * lra-assigns.c (assign_by_spills): Add spilled non-reload pseudos + to consider in curr_insn_transform. + +2017-03-24 Jakub Jelinek + + * genrecog.c (validate_pattern): Add VEC_SELECT validation. + * genmodes.c (emit_min_insn_modes_c): Call emit_mode_nunits + and emit_mode_inner. + +2017-03-24 Andreas Krebbel + + * config/s390/s390-builtins.def: Add VXE builtins. Add a flags + argument to the overloaded builtin variants. Use the new flag to + deprecate certain builtin variants. + * config/s390/s390-builtin-types.def: Add new builtin types. + * config/s390/s390-builtins.h: Support new flags field for + overloaded builtins. + * config/s390/s390-c.c (OB_DEF_VAR): New flags field. + (s390_macro_to_expand): Enable vector float data type. + (s390_cpu_cpp_builtins_internal): Indicate support of the new + builtins by incrementing the __VEC__ version number. + (s390_expand_overloaded_builtin): Support expansion of vec_xl and + vec_xst. + (s390_resolve_overloaded_builtin): Emit error messages depending + on the builtin flags. + * config/s390/s390.c (s390_expand_builtin): Support additional + flags argument. Change error message to match the messages + emitted in s390-c.c. + * config/s390/s390.md: New UNSPEC_* constants. + (op_type): Add new instruction types. + * config/s390/vecintrin.h: Add new builtins and test data class + constants. + * config/s390/vx-builtins.md (V_HW_32_64): Add V4SF. + (V_HW_4, VEC_HW, VECF_HW): New mode iterators. + (VEC_INEXACT, VEC_NOINEXACT): New constants. + ("vec_splats", "vec_insert", "vec_promote") + ("vec_insert_and_zero", "vec_mergeh") + ("vec_mergel"): V_HW -> VEC_HW. + + ("vlrlrv16qi", "vstrlrv16qi", "vbpermv16qi", "vec_msumv2di") + ("vmslg", "*vftci_cconly", "vftci_intcconly") + ("*vftci", "vftci_intcc", "vec_double_s64") + ("vec_double_u64", "vfmin", "vfmax"): New definition. + + ("and_av2df3", "and_cv2df3", "vec_andc_av2df3") + ("vec_andc_cv2df3", "xor_av2df3", "xor_cv2df3", "vec_nor_av2df3") + ("vec_nor_cv2df3", "ior_av2df3", "ior_cv2df3", "vec_nabs") + ("*vftcidb", "*vftcidb_cconly", "vftcidb"): Remove definition. + + ("vec_all_v2df", "vec_any_v2df") + ("vec_scatter_elementv4si_DI", "vec_cmpv2df") + ("vec_di_to_df_s64", "vec_di_to_df_u64", "vec_df_to_di_u64") + ("vfidb", "*vldeb", "*vledb", "*vec_cmpv2df_cconly") + ("vec_cmpeqv2df_cc", "vec_cmpeqv2df_cc", "vec_cmphv2df_cc") + ("vec_cmphev2df_cc", "*vec_cmpeqv2df_cc") + ("*vec_cmphv2df_cc", "*vec_cmphev2df_cc"): Enable new modes as ... + + ("vec_all_", "vec_any_") + ("vec_scatter_element_DI") + ("vec_cmp", "vcdgb", "vcdlgb", "vclgdb") + ("vec_fpint", "vflls") + ("vflrd", "*vec_cmp_cconly", "vec_cmpeq_cc") + ("vec_cmpeq_cc", "vec_cmph_cc", "vec_cmphe_cc") + ("*vec_cmpeq_cc", "*vec_cmph_cc") + ("*vec_cmphe_cc"): ... these. + + ("vec_ctd_s64", "vec_ctsl", "vec_ctul", "vec_st2f"): Use rounding + mode constant instead of magic value. + +2017-03-24 Andreas Krebbel + + * config/s390/s390.c (s390_expand_vec_compare): Support other + vector floating point modes than just V2DF. + (s390_expand_vcond): Likewise. + (s390_hard_regno_mode_ok): Allow SFmode values in VRs. + (s390_cannot_change_mode_class): Prevent mode changes between TF + and V1TF in vector registers. + * config/s390/s390.md (DF, SF): New mode attributes. + ("*cmp_ccs", "add3", "sub3", "mul3") + ("fma4", "fms4", "div3", "*neg2"): Add + SFmode support for VRs. + * config/s390/vector.md (V_HW, V_HW2, VT_HW, ti*, nonvec): Add new + vector fp modes. + (VFT, VF_HW): New mode iterators. + (vw, sdx): New mode attributes. + ("addv2df3", "subv2df3", "mulv2df3", "divv2df3", "sqrtv2df2") + ("fmav2df4","fmsv2df4", "negv2df2", "absv2df2", "*negabsv2df2") + ("smaxv2df3", "sminv2df3", "*vec_cmpv2df_nocc") + ("vec_cmpuneqv2df", "vec_cmpltgtv2df", "vec_orderedv2df") + ("vec_unorderedv2df"): Adjust the v2df only patterns to support + also the new vector floating point modes. Renaming to ... + + ("add3", "sub3", "mul3", "div3") + ("sqrt2", "fma4", "fms4", "neg2") + ("abs2", "negabs2", "smax3") + ("smin3", "*vec_cmp_nocc") + ("vec_cmpuneq", "vec_cmpltgt", "vec_ordered") + ("vec_unordered"): ... these. + + ("neg_fma4", "neg_fms4", "*smax3_vxe") + ("*smin3_vxe", "*sminv2df3_vx", "*vec_extendv4sf") + ("*vec_extendv2df"): New insn definitions. + +2017-03-24 Andreas Krebbel + + * config/s390/s390.md ("*adddi3_sign", "*subdi3_sign", "mulditi3") + ("mulditi3_2", "*muldi3_sign"): New patterns. + ("muldi3", "*muldi3", "mulsi3", "*mulsi3"): Add an expander and + rename the pattern definition. + +2017-03-24 Andreas Krebbel + + * config/s390/s390.md ("indirect_jump"): Turn insn definition into + expander. + ("*indirect_jump", "*indirect2_jump"): New pattern definitions. + +2017-03-24 Andreas Krebbel + + * config/s390/s390.c (s390_expand_vec_init): Use vllezl + instruction if possible. + * config/s390/vector.md (vec_halfnumelts): New mode + attribute. + ("*vec_vllezlf"): New pattern. + +2017-03-24 Andreas Krebbel + + * config/s390/vector.md ("popcountv16qi2", "popcountv8hi2") + ("popcountv4si2", "popcountv2di2"): Rename to ... + ("popcount2", "popcountv8hi2_vx", "popcountv4si2_vx") + ("popcountv2di2_vx"): ... these and add !TARGET_VXE to the + condition. + ("popcount2_vxe"): New pattern. + +2017-03-24 Andreas Krebbel + + * common/config/s390/s390-common.c (processor_flags_table): Add + arch12. + * config.gcc: Add arch12. + * config/s390/driver-native.c (s390_host_detect_local_cpu): + Default to arch12 for unknown CPU model numbers. + * config/s390/s390-builtins.def: Add B_VXE builtin flag. + * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Adjust + PROCESSOR_max sanity check. + * config/s390/s390-opts.h (enum processor_type): Add + PROCESSOR_ARCH12. + * config/s390/s390.c (processor_table): Add arch12. + (s390_expand_builtin): Add check for B_VXE flag. + (s390_issue_rate): Add PROCESSOR_ARCH12. + (s390_get_sched_attrmask): Likewise. + (s390_get_unit_mask): Likewise. + (s390_sched_score): Enable z13 scheduling for arch12. + (s390_sched_reorder): Likewise. + (s390_sched_variable_issue): Likewise. + * config/s390/s390.h (enum processor_flags): Add PF_ARCH12 and + PF_VXE. + (s390_tune_attr): Use z13 scheduling also for arch12. + (TARGET_CPU_ARCH12, TARGET_CPU_ARCH12_P, TARGET_CPU_VXE) + (TARGET_CPU_VXE_P, TARGET_ARCH12, TARGET_ARCH12_P, TARGET_VXE) + (TARGET_VXE_P): New macros. + * config/s390/s390.md: Add arch12 to cpu attribute. Add arch12 + and vxe to cpu_facility. Add arch12 and vxe to enabled attribute. + * config/s390/s390.opt: Add arch12 as processor_type. + +2017-03-24 Andreas Krebbel + + * config/s390/s390.md + ("fixuns_truncdddi2", "fixuns_trunctddi2") + ("fixuns_trunc2"): Merge into ... + ("fixuns_trunc2"): New expander. + + ("fixuns_trunc2", "fixuns_truncsi2"): + Rename expanders to ... + + ("fixuns_trunc2_emu") + ("fixuns_truncdddi2_emu"): ... these. + + ("fixuns_truncsi2_emu"): New expander. + + ("*fixuns_truncdfdi2_z13"): Rename to ... + ("*fixuns_truncdfdi2_vx"): ... this. + +2017-03-24 Andreas Krebbel + + * config/s390/2964.md: Remove the single element vector compare + instructions which are no longer used. + * config/s390/s390.c (s390_select_ccmode): Remove handling of + vector CCmodes. + (s390_canonicalize_comparison): Remove handling of DFmode + compares. + (s390_expand_vec_compare_scalar): Remove function. + (s390_emit_compare): Don't call s390_expand_vec_compare_scalar. + * config/s390/s390.md ("*vec_cmpdf_cconly"): Remove + pattern. + ("*cmp_ccs"): Add wfcdb instruction. + +2017-03-24 Andreas Krebbel + + * config/s390/s390.md ("mov_64dfp" DD_DF): Use vleig for loading a + FP zero. + ("*mov_64" DD_DF): Remove the vector instructions. These + will anyway by matched by mov_64dfp. + +2017-03-24 Andreas Krebbel + + * config/s390/s390.md ("mov" SD_SF): Change vleg/vsteg to + vlef/vstef. Add missing operand to vleif. + +2017-03-24 Andreas Krebbel + + * config/s390/s390.c (s390_expand_vec_init): Enable vector load + pair for all vector types with 64 bit elements. + * config/s390/vx-builtins.md (V_HW_64): Move mode iterator to ... + * config/s390/vector.md (V_HW_64): ... here. + (V_128_NOSINGLE): New mode iterator. + ("vec_init"): Use V_128 as mode iterator. + ("*vec_splat"): Use V_128_NOSINGLE mode iterator. + ("*vec_tf_to_v1tf", "*vec_ti_to_v1ti"): New pattern definitions. + ("*vec_load_pairv2di"): Change to ... + ("*vec_load_pair"): ... this one. + +2017-03-24 Andreas Krebbel + + * config/s390/constraints.md: Add comments. + (jKK): Reject element sizes > 8 bytes. + * config/s390/s390.c (s390_split_ok_p): Enable splitting also for + s_operands. + * config/s390/s390.md: Add the s_operand checks formerly in + s390_split_ok_p to various splitters where they are still + required. + * config/s390/vector.md ("mov" V_128): Add GPR alternatives + for 128 bit vectors. Plus two splitters. + +2017-03-24 Andreas Krebbel + + * config/s390/s390.md: Rename the cpu facilty vec to vx throughout + the file. + +2017-03-24 Andreas Krebbel + + PR target/79893 + * config/s390/s390-c.c (s390_adjust_builtin_arglist): Issue an + error if the boundary argument is not constant. + +2017-03-24 Jakub Jelinek + + PR rtl-optimization/80112 + * loop-doloop.c (doloop_condition_get): Don't check condition + if cmp isn't SET with IF_THEN_ELSE src. + +2017-03-24 Bill Schmidt + + PR tree-optimization/80158 + * gimple-ssa-strength-reduction.c (replace_mult_candidate): When + replacing a candidate statement, also replace it for the + candidate's alternate interpretation. + (replace_rhs_if_not_dup): Likewise. + (replace_one_candidate): Likewise. + +2017-03-24 Richard Biener + + PR tree-optimization/80167 + * graphite-isl-ast-to-gimple.c + (translate_isl_ast_to_gimple::is_valid_rename): Handle default-defs + properly. + (translate_isl_ast_to_gimple::get_rename): Likewise. + +2017-03-23 Kelvin Nilsen + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Change + handling of certain combinations of target options, including the + combinations -mpower8-vector vs. -mno-vsx, -mpower9-vector vs. + -mno-power8-vector, and -mpower9_dform vs. -mno-power9-vector. + +2017-03-23 Kyrylo Tkachov + + PR target/71436 + * config/arm/arm.md (*load_multiple): Add reload_completed to + matching condition. + +2017-03-23 Bill Schmidt + Richard Biener + + PR tree-optimization/79908 + PR tree-optimization/80136 + * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has + been cast away, gimplify_and_add suffices. + +2017-03-23 Markus Trippelsdorf + + * tree-vrp.c (identify_jump_threads): Delete avail_exprs. + +2017-03-23 Richard Biener + + PR tree-optimization/80032 + * gimplify.c (gimple_push_cleanup): Forced unconditional + cleanups still have to go to the conditional_cleanups + sequence. + +2017-03-22 Jakub Jelinek + + PR tree-optimization/80072 + * tree-ssa-reassoc.c (struct operand_entry): Change id field type + to unsigned int. + (next_operand_entry_id): Change type to unsigned int. + (sort_by_operand_rank): Make sure to return the right return value + even if unsigned fields are bigger than INT_MAX. + (struct oecount): Change cnt and id type to unsigned int. + (oecount_hasher::equal): Formatting fix. + (oecount_cmp): Make sure to return the right return value + even if unsigned fields are bigger than INT_MAX. + (undistribute_ops_list): Change next_oecount_id type to unsigned int. + + PR c++/80129 + * gimplify.c (gimplify_modify_expr_rhs) : Clear + TREE_READONLY on result if writing it more than once. + + PR sanitizer/80110 + * doc/invoke.texi (-fsanitize=thread): Document that with + -fnon-call-exceptions atomics are not able to throw + exceptions. + + PR sanitizer/80110 + * tsan.c: Include tree-eh.h. + (instrument_builtin_call): Call maybe_clean_eh_stmt or + maybe_clean_or_replace_eh_stmt where needed. + (instrument_memory_accesses): Add cfg_changed argument. + Call gimple_purge_dead_eh_edges on each block and set *cfg_changed + if it returned true. + (tsan_pass): Adjust caller. Return TODO_cleanup_cfg if cfg_changed. + + PR rtl-optimization/63191 + * config/i386/i386.c (ix86_delegitimize_address): Turn into small + wrapper function, moved the whole old content into ... + (ix86_delegitimize_address_1): ... this. New inline function. + (ix86_find_base_term): Use ix86_delegitimize_address_1 with + true as last argument instead of ix86_delegitimize_address. + +2017-03-22 Wilco Dijkstra + + * config/aarch64/aarch64.c (generic_branch_cost): Copy + cortexa57_branch_cost. + +2017-03-22 Wilco Dijkstra + + * config/aarch64/aarch64.c (generic_tunings): Add AES fusion. + +2017-03-21 Aaron Sawdey + + PR target/80123 + * doc/md.texi (Constraints): Document wA constraint. + * config/rs6000/constraints.md (wA): New. + * config/rs6000/rs6000.c (rs6000_debug_reg_global): Add wA reg_class. + (rs6000_init_hard_regno_mode_ok): Init wA constraint. + * config/rs6000/rs6000.h (RS6000_CONSTRAINT_wA): New. + * config/rs6000/vsx.md (vsx_splat_): Use wA constraint. + +2017-03-22 Cesar Philippidis + + PR c++/80029 + * gimplify.c (is_oacc_declared): New function. + (oacc_default_clause): Use it to set default flags for acc declared + variables inside parallel regions. + (gimplify_scan_omp_clauses): Strip firstprivate pointers for acc + declared variables. + (gimplify_oacc_declare): Gimplify the declare clauses. Add the + declare attribute to any decl as necessary. + +2017-03-22 Thomas Preud'homme + + PR target/80082 + * config/arm/arm-isa.h (isa_bit_lpae): New feature bit. + (ISA_ARMv7ve): Add isa_bit_lpae to the definition. + * config/arm/arm-protos.h (arm_arch7ve): Rename into ... + (arm_arch_lpae): This. + * config/arm/arm.c (arm_arch7ve): Rename into ... + (arm_arch_lpae): This. Define it in term of isa_bit_lpae. + * config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of + arm_arch_lpae. + +2017-03-22 Martin Liska + + PR target/79906 + * config/rs6000/rs6000.c (rs6000_inner_target_options): Show + error message instead of an ICE. + +2017-03-21 Bill Schmidt + + * doc/extend.texi (6.11 Additional Floating Types): Revise. + +2017-03-21 Kelvin Nilsen + + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add + comments. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Add + comments. + +2017-03-21 Martin Sebor + + * doc/extend.texi: Use "cannot" instead of "can't." + * doc/hostconfig.texi: Same. + * doc/install.texi: Same. + * doc/invoke.texi: Same. + * doc/loop.texi: Same. + * doc/md.texi: Same. + * doc/objc.texi: Same. + * doc/rtl.texi: Same. + * doc/tm.texi: Same. + * doc/tm.texi.in: Same. + * doc/trouble.texi: Same. + +2017-03-21 Alexandre Oliva + + PR debug/63238 + * dwarf2out.c (struct checksum_attributes): Add at_alignment. + (collect_checksum_attributes): Set it. + (die_checksum_ordered): Use it. + +2017-03-21 Bill Schmidt + + PR tree-optimization/79908 + * tree-stdarg.c (expand_ifn_va_arg_1): Revert the following + change: For a VA_ARG whose LHS has been cast away, use + force_gimple_operand to construct the side effects. + +2017-03-21 David Malcolm + + PR translation/80001 + * omp-offload.c (oacc_loop_fixed_partitions): Make diagnostics + more amenable to translation. + (oacc_loop_auto_partitions): Likewise. + +2017-03-21 Marek Polacek + Martin Sebor + + PR tree-optimization/80109 + * gimple-ssa-warn-alloca.c (alloca_call_type): Only call get_range_info + on INTEGRAL_TYPE_P. + +2017-03-21 Jakub Jelinek + Segher Boessenkool + + PR target/80125 + * combine.c (can_combine_p): Revert the 2017-03-20 change, only + check reg_used_between_p between insn and one of succ or succ2 + depending on if succ is artificial insn not inserted into insn + stream. + +2017-03-21 Martin Liska + + PR gcov-profile/80081 + * Makefile.in: Add gcov-dump and fix installation of gcov-tool. + * doc/gcc.texi: Include gcov-dump stuff. + * doc/gcov-dump.texi: New file. + +2017-03-21 Toma Tabacu + + PR rtl-optimization/79150 + * config/mips/mips.c (mips_block_move_loop): Emit a NOP after the + conditional jump, if the jump is the last insn of the loop. + +2017-03-21 Bill Schmidt + Richard Biener + + PR tree-optimization/79908 + * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has + been cast away, use force_gimple_operand to construct the side + effects. + +2017-03-21 Martin Liska + + PR libfortran/79956 + * simplify-rtx.c (simplify_immed_subreg): Initialize a variable + to NULL. + +2017-03-21 Brad Spengler + + PR plugins/80094 + * plugin.c (htab_hash_plugin): New function. + (add_new_plugin): Use it and adjust. + (parse_plugin_arg_opt): Adjust. + (init_one_plugin): Likewise. + +2017-03-21 Richard Biener + + PR tree-optimization/80032 + * gimplify.c (gimple_push_cleanup): Add force_uncond parameter, + if set force the cleanup to happen unconditionally. + (gimplify_target_expr): Push inserted clobbers with force_uncond + to avoid them being removed by control-dependent DCE. + +2017-03-21 Richard Biener + + PR tree-optimization/80122 + * tree-inline.c (copy_bb): Do not expans va-arg packs or + va_arg_pack_len when the inlined call stmt requires pack + expansion itself. + * tree-inline.h (struct copy_body_data): Make call_stmt a gcall *. + +2017-03-21 Jakub Jelinek + + PR sanitizer/78158 + * tsan.c (instrument_builtin_call): If the memory model argument + is not a constant, assume it is valid. + + PR c/67338 + * fold-const.c (round_up_loc): Negate divisor in unsigned type to + avoid UB. + +2017-03-20 Segher Boessenkool + + PR rtl-optimization/79910 + * combine.c (can_combine_p): Do not allow combining an I0 or I1 + if its dest is used by an insn before I2 (other than the combined + insns themselves, which are properly handled already). + +2017-03-20 Segher Boessenkool + + Revert: + 2017-03-17 Bernd Schmidt + + * combine.c (record_used_regs): New static function. + (try_combine): Handle situations where there is an additional + instruction between I2 and I3 which needs to have a LOG_LINK + updated. + + Revert: + 2017-03-17 Jim Wilson + + * combine.c (try_combine): Delete redundant i1 test. Call + prev_nonnote_nondebug_insn instead of prev_nonnote_insn. + +2017-03-20 Aaron Sawdey + + PR target/80083 + * config/rs6000/rs6000.md (*movsi_internal1): Fix constraints for + alternatives 13/14. + +2017-03-20 Bill Schmidt + + PR tree-optimization/80054 + * gimple-ssa-strength-reduction.c (all_phi_incrs_profitable): Fail + the optimization if a PHI or any of its arguments is not dominated + by the candidate's basis. Use gphi* rather than gimple* as + appropriate. + (replace_profitable_candidates): Clean up a gimple* variable that + should be a gphi* variable. + +2017-03-20 Martin Sebor + + PR c++/52477 + * doc/extend.texi (attribute constructor): Document present limitation. + +2017-03-20 Kelvin Nilsen + + PR target/79963 + * config/rs6000/altivec.h (vec_all_ne): Under __cplusplus__ and + __POWER9_VECTOR__ #ifdef control, change template definition to + use Power9-specific built-in function. + (vec_any_eq): Likewise. + * config/rs6000/vector.md (vector_ae_v2di_p): Change the flag used + to control outcomes from this test. + (vector_ae_p): For VEC_F modes, likewise. + +2017-03-20 Ian Lance Taylor + + * config/i386/i386.c (ix86_function_regparm): Save an extra + register for -fsplit-stack with DECL_STATIC_CHAIN. + +2017-03-17 Palmer Dabbelt + + PR target/79912 + * config/riscv/riscv.c (riscv_preferred_reload_class): Remove. + (TARGET_PREFERRED_RELOAD_CLASS): Likewise. + +2017-03-17 Palmer Dabbelt + + * config/riscv/riscv.c (riscv_print_operand): Use "fence + iorw,ow". + * config/riscv/sync.mc (mem_thread_fence_1): Use "fence + iorw,iorw". + +2017-03-20 Marek Polacek + + PR sanitizer/80063 + * asan.c (DEF_SANITIZER_BUILTIN): Use do { } while (0). + +2017-03-20 Richard Biener + + PR tree-optimization/80113 + * graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Do not + allocate extra SSA name for PHI def. + (add_close_phis_to_outer_loops): Likewise. + (add_close_phis_to_merge_points): Likewise. + (copy_loop_close_phi_args): Likewise. + (copy_cond_phi_nodes): Likewise. + +2017-03-20 Martin Liska + + PR middle-end/79753 + * tree-chkp.c (chkp_build_returned_bound): Do not build + returned bounds for a LHS that's not a BOUNDED_P type. + +2017-03-20 Martin Liska + + PR target/79769 + PR target/79770 + * tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST, + COMPLEX_CST and VECTOR_CST. + +2017-03-20 Andreas Krebbel + + PR target/78857 + * config/s390/s390.md ("cmp_ccs_0"): Add a clobber of the + target operand. A new splitter adds the clobber statement in case + the target operand is dead anyway. + +2017-03-19 Gerald Pfeifer + + * doc/install.texi (Specific) : No longer refer + to age-old versions of binutils and glibc. + +2017-03-18 Segher Boessenkool + + * doc/contrib.texi (Contributors): Remove duplicate entry for myself. + +2017-03-18 Gerald Pfeifer + + * doc/contrib.texi (Contributors): Add Segher Boessenkool. + +2017-03-18 Gerald Pfeifer + + * doc/install.texi (Specific) : Remove old + requirement for binutils 2.13. + +2017-03-17 Jim Wilson + + * combine.c (try_combine): Delete redundant i1 test. Call + prev_nonnote_nondebug_insn instead of prev_nonnote_insn. + +2017-03-17 Palmer Dabbelt : Add riscv32-*-elf, + riscv32-*-linux, riscv64-*-elf, riscv64-*-linux to the table of + contents. + : Re-arrange section + : Add a note about requiring binutils 2.28. + : Likewise. + : Likewise + : Likewise. + +2017-03-17 Richard Earnshaw + + PR target/80052 + * aarch64.opt(verbose-cost-dump): Fix typo. + +2017-03-17 Pat Haugen + + PR target/79951 + * config/rs6000/rs6000.md (copysign3_fcpsgn): Test + for VECTOR_UNIT_VSX_P (mode) too. + +2017-03-17 Bernd Schmidt + + * reload.c (find_reloads): When reloading a nonoffsettable address, + use RELOAD_OTHER for it and its address reloads. + + PR rtl-optimization/79910 + * combine.c (record_used_regs): New static function. + (try_combine): Handle situations where there is an additional + instruction between I2 and I3 which needs to have a LOG_LINK + updated. + +2017-03-17 Jeff Law + + PR tree-optimization/71437 + * tree-vrp.c (simplify_stmt_for_jump_threading): Lookup the + conditional in the hash table first. + (vrp_dom_walker::before_dom_children): Extract condition from + ASSERT_EXPR. Record condition, its inverion and any implied + conditions as well. + +2017-03-17 Marek Polacek + Markus Trippelsdorf + + PR tree-optimization/80079 + * gimple-ssa-store-merging.c (class pass_store_merging): Initialize + m_stores_head. + +2017-03-17 Richard Biener + + PR middle-end/80075 + * tree-eh.c (stmt_could_throw_1_p): Only handle gimple assigns. + Properly verify the LHS before the RHS possibly claims to be + handled. + (stmt_could_throw_p): Hande gimple conds fully here. Clobbers + do not throw. + +2017-03-17 Martin Jambor + + * doc/invoke.texi (Option Options): Include -fipa-vrp in the list. + (List of -O2 options): Likewise. + (-fipa-bit-cp): Replace "ipa" with "interprocedural." + (-fipa-vrp) New. + +2017-03-17 Tom de Vries + + * gcov-dump.c (print_usage): Print bug_report_url. + +2017-03-17 Richard Biener + + PR middle-end/80050 + * genmatch.c (parser::next): Remove pointless check for CPP_EOF. + (parser::peek): Likewise. + +2017-03-17 Richard Biener + + PR tree-optimization/80048 + * sese.c (free_sese_info): Properly release rename_map and + copied_bb_map elements. + +2017-03-16 Alexandre Oliva + + * gimple-ssa-store-merging.c (struct imm_store_chain_info): + Add linked-list forward and backlinks. Insert on + construction, remove on destruction. + (class pass_store_merging): Add m_stores_head field. + (pass_store_merging::terminate_and_process_all_chains): + Iterate over m_stores_head list. + (pass_store_merging::terminate_all_aliasing_chains): + Likewise. + (pass_store_merging::execute): Check for debug stmts first. + Push new chains onto the m_stores_head stack. + +2017-03-16 Michael Meissner + + PR target/71294 + * config/rs6000/vsx.md (vsx_splat_, VSX_D iterator): Allow a + SPLAT operation on ISA 2.07 64-bit systems that have direct move, + but no MTVSRDD support, by doing MTVSRD and XXPERMDI. + +2017-03-16 Jeff Law + + PR tree-optimization/71437 + * tree-ssa-dom.c (dom_opt_dom_walker): Remove thread_across_edge + member function. Implementation moved into after_dom_children + member function and into the threader's thread_outgoing_edges + function. + (dom_opt_dom_walker::after_dom_children): Simplify by moving + some code into new thread_outgoing_edges. + * tree-ssa-threadedge.c (thread_across_edge): Make static and simplify + definition. Simplify marker handling (do it here). Assume we always + have the available expression and the const/copies tables. + (thread_outgoing_edges): New function extracted from tree-ssa-dom.c + and tree-vrp.c + * tree-ssa-threadedge.h (thread_outgoing_edges): Declare. + * tree-vrp.c (equiv_stack): No longer file scoped. + (vrp_dom_walker): New class. + (vrp_dom_walker::before_dom_children): New member function. + (vrp_dom_walker::after_dom_children): Likewise. + (identify_jump_threads): Setup domwalker. Use it rather than + walking edges in a random order by hand. Simplify setup/finalization. + (finalize_jump_threads): Remove. + (vrp_finalize): Do not call identify_jump_threads here. + (execute_vrp): Do it here instead and call thread_through_all_blocks + here too. + + PR tree-optimization/71437 + * tree-ssa-dom.c (pfn_simplify): Add basic_block argument. All + callers changed. + (simplify_stmt_for_jump_threading): Add basic_block argument. All + callers changed. + (lhs_of_dominating_assert): Moved from here into tree-vrp.c. + (dom_opt_dom_walker::thread_across_edge): Remove + handle_dominating_asserts argument. All callers changed. + (record_temporary_equivalences_from_stmts_at_dest): Corresponding + changes. Remove calls to lhs_of_dominating_assert. Other + uses of handle_dominating_asserts turn into unconditional code + (simplify_control_stmt_condition_1): Likewise. + (simplify_control_stmt_condition): Likewise. + (thread_through_normal_block, thread_across_edge): Likewise. + * tree-ssa-threadedge.h (thread_across_edge): Corresponding changes. + * tree-vrp.c (lhs_of_dominating_assert): Move here. Return original + object if it is not an SSA_NAME. + (simplify_stmt_for_jump_threading): Call lhs_of_dominating_assert + before calling into the VRP specific simplifiers. + (identify_jump_threads): Remove handle_dominating_asserts + argument. + +2017-03-16 Jakub Jelinek + + PR fortran/79886 + * tree-diagnostic.c (default_tree_printer): No longer static. + * tree-diagnostic.h (default_tree_printer): New prototype. + +2017-03-16 Tamar Christina + + * config/aarch64/aarch64-simd.md (*aarch64_simd_mov) + Change ins into fmov. + +2017-03-16 Kyrylo Tkachov + + * config/aarch64/iterators.md (h_con): Return "x" for V4HF and V8HF. + * config/aarch64/aarch64-simd.md (*aarch64_fma4_elt_from_dup): + Use h_con constraint for operand 1. + (*aarch64_fnma4_elt_from_dup): Likewise. + (*aarch64_mulx_elt_from_dup): Likewise for operand 2. + +2017-03-15 Jeff Law + + PR tree-optimization/71437 + * tree-ssa-dom.c (derive_equivalences_from_bit_ior): New function. + (record_temporary_equivalences): Use it. + + PR tree-optimization/71437 + * tree-ssa-dom.c (struct cond_equivalence): Moved from here into + tree-ssa-scopedtables. + (lookup_avail_expr, build_and_record_new_cond): Likewise. + (record_conditions, record_cond, vuse_eq): Likewise. + (record_edge_info): Adjust to API tweak of record_conditions. + (simplify_stmt_for_jump_threading): Similarly for lookup_avail_expr. + (record_temporary_equivalences, optimize_stmt): Likewise. + (eliminate_redundant_computations): Likewise. + (record_equivalences_from_stmt): Likewise. + * tree-ssa-scopedtables.c: Include options.h and params.h. + (vuse_eq): New function, moved from tree-ssa-dom.c + (build_and_record_new_cond): Likewise. + (record_conditions): Likewise. Accept vector of conditions rather + than edge_equivalence structure for first argument. + for the first argument. + (avail_exprs_stack::lookup_avail_expr): New member function, moved + from tree-ssa-dom.c. + (avail_exprs_stack::record_cond): Likewise. + * tree-ssa-scopedtables.h (struct cond_equivalence): Moved here + from tree-ssa-dom.c. + (avail_exprs_stack): Add new member functions lookup_avail_expr + and record_cond. + (record_conditions): Declare. + +2017-03-15 Vladimir Makarov + + PR target/80017 + * lra-constraints.c (process_alt_operands): Increase reject for + reloading an input/output operand. + +2017-03-15 Michael Meissner + + PR target/79038 + * config/rs6000/rs6000.md (float2): Define + insns to convert from signed/unsigned char/short to IEEE 128-bit + floating point. + (floatuns2): Likewise. + +2017-03-15 Uros Bizjak + + PR target/80019 + * config/i386/i386.c (ix86_vector_duplicate_value): Create + subreg of inner mode for values already in registers. + +2017-03-15 Bernd Schmidt + + * config/c6x/c6x.c (hwloop_optimize): Handle case where the old + iteration reg is used after the loop. + +2017-03-14 Martin Sebor + + PR tree-optimization/79800 + * gimple-ssa-sprintf.c (format_floating: Add argument. Handle + precision in negative-positive range. + (format_floating): Call non-const overload with adjusted precision. + +2017-03-14 Michael Meissner + + PR target/79947 + * config/rs6000/rs6000.h (TARGET_FRSQRTES): Add check for + -mpowerpc-gfxopt. + +2017-03-14 Martin Sebor + + PR middle-end/80020 + * builtin-attrs.def (ATTR_ALLOC_SIZE_2_NOTHROW_LIST): New macro. + * builtins.def (aligned_alloc): Use it. + + PR c/79936 + * Makefile.in (GTFILES): Add calls.c. + * calls.c: Include "gt-calls.h". + +2017-03-14 Bernd Schmidt + + PR rtl-optimization/79728 + * regs.h (struct target_regs): New field + x_contains_allocatable_regs_of_mode. + (contains_allocatable_regs_of_mode): New macro. + * reginfo.c (init_reg_sets_1): Initialize it, and change + contains_reg_of_mode so it includes global regs as well. + * reload.c (push_reload): Use contains_allocatable_regs_of_mode + rather than contains_regs_of_mode. + +2017-03-14 Martin Liska + + * doc/invoke.texi: Document options that can't be combined with + -fcheck-pointer-bounds. + +2017-03-14 Martin Liska + + PR middle-end/79831 + * doc/invoke.texi (-Wchkp): Document the option. + +2017-03-14 Martin Liska + + * Makefile.in: Install gcov-dump. + +2017-03-14 Martin Liska + + * multiple_target.c (expand_target_clones): Bail out for + an invalid attribute. + +2017-03-14 Richard Biener + + * alias.c (struct alias_set_entry): Pack properly. + * cfgloop.h (struct loop): Likewise. + * cse.c (struct set): Likewise. + * ipa-utils.c (struct searchc_env): Likewise. + * loop-invariant.c (struct invariant): Likewise. + * lra-remat.c (struct cand): Likewise. + * recog.c (struct change_t): Likewise. + * rtl.h (struct address_info): Likewise. + * symbol-summary.h (function_summary): Likewise. + * tree-loop-distribution.c (struct partition): Likewise. + * tree-object-size.c (struct object_size_info): Likewise. + * tree-ssa-loop-ivopts.c (struct cost_pair): Likewise. + * tree-ssa-threadupdate.c (struct ssa_local_info_t): Likewise. + * tree-vect-data-refs.c (struct _vect_peel_info): Likewise. + * tree-vect-slp.c (struct _slp_oprnd_info): Likewise. + * tree-vect-stmts.c (struct simd_call_arg_info): Likewise. + * tree-vectorizer.h (struct _loop_vec_info): Likewise. + (struct _stmt_vec_info): Likewise. + +2017-03-14 Martin Liska + + PR target/79892 + * multiple_target.c (create_dispatcher_calls): Check that + a target can create a function dispatcher. + +2017-03-14 Martin Liska + + PR lto/66295 + * multiple_target.c (expand_target_clones): Drop local.local + flag for default implementation. + +2017-03-14 Richard Biener + + PR tree-optimization/80030 + * tree-vect-stmts.c (vectorizable_store): Plug memleak. + +2017-03-13 Kito Cheng + + * config/riscv/riscv.c (riscv_emit_float_compare>: Use + gcc_fallthrough() instead of __attribute__((fallthrough)); + +2017-03-13 Gerald Pfeifer + + * doc/gcc.texi: Remove "up" link to (DIR). + * doc/gccint.texi: Ditto. + +2017-03-13 Gerald Pfeifer + + * doc/install.texi (Specific) : Remove reference to + binutils 2.13. + +2017-03-13 Jeff Law + + * config/riscv/riscv.c (riscv_emit_float_compare): Use fallthru + attribute rather than comments. + + * config/pdp11/pdp11.md (movmemhi): Adjust operand numbers to + match_scratch operand is highest. + +2017-03-13 Martin Liska + + PR middle-end/78339 + * ipa-pure-const.c (warn_function_noreturn): If the declarations + is a CHKP clone, use original declaration. + +2017-03-13 Claudiu Zissulescu + + * config/arc/arc.c (arc_init): Use multiplier whenever we have it. + (arc_conditional_register_usage): Use a different allocation order + when optimizing for size. + * common/config/arc/arc-common.c (arc_option_optimization_table): + Section anchors default on when optimizing for size. + +2017-03-13 Claudiu Zissulescu + + * config/arc/arc.md (*tst_bitfield_tst): Fix pattern. + +2017-03-13 Claudiu Zissulescu + + * config/arc/arc.c (arc_output_addsi): Emit code density adds. + * config/arc/arc.md (cpu_facility): Add cd variant. + (*movqi_insn): Add code density variant. + (*movhi_insn): Likewise. + (*movqi_insn): Likewise. + (*addsi3_mixed): Likewise. + (subsi3_insn): Likewise. + +2017-03-13 Claudiu Zissulescu + + * config/arc/arc.md (movsi_cond_exec): Update constraint. + +2017-03-13 Claudiu Zissulescu + + * config/arc/arc.c (arc_legitimize_pic_address): Handle PIC + expressions with MINUS and UNARY ops. + +2017-03-13 Kyrylo Tkachov + + PR target/79911 + * config/arm/neon.md (vec_sel_widen_ssum_lo3): + Rename to... + (vec_sel_widen_ssum_lo3): ... This. Avoid mismatch + between vec_select and vector argument. + (vec_sel_widen_ssum_hi3): Rename to... + (vec_sel_widen_ssum_hi3): ... This. Likewise. + (vec_sel_widen_usum_lo3): Rename to... + (vec_sel_widen_usum_lo3): ... This. + (vec_sel_widen_usum_hi3): Rename to... + (vec_sel_widen_usum_hi3): ... This. + +2017-03-13 Richard Biener + + PR other/79991 + * params.def (vect-max-peeling-for-alignment): Fix typo. + +2017-03-12 Gerald Pfeifer + + * doc/install.texi (Specific) : Remove description of + issue that only occurred with binutils below 2.18. + +2017-03-12 Gerald Pfeifer + + * doc/install.texi (Specific) : No longer + refer to binutils 2.11/2.12 minimum. + +2017-03-12 Gerald Pfeifer + + * doc/install.texi (Specific) : Remove link to + ftp.kernel.org and simplify binutils requirement. + +2017-03-11 Gerald Pfeifer + + * doc/invoke.texi (Warning Options): Fix spelling of link-time + optimization. + (Optimize Options): Ditto. Also remove redundancy. + +2017-03-10 David Malcolm + + PR translation/79848 + * ipa-devirt.c (warn_types_mismatch): Simplify uses of "%<%s%>" to + "%qs". + * ipa-pure-const.c (suggest_attribute): Likewise. Convert _ + to G_ to avoid double translation. + +2017-03-10 David Malcolm + + PR translation/79923 + * auto-profile.c (get_combined_location): Convert leading + character of diagnostics to lower case and remove trailing period. + (read_profile): Likewise for various diagnostics. + * config/arm/arm.c (arm_option_override): Remove trailing period + from various diagnostics. + * config/msp430/msp430.c (msp430_expand_delay_cycles): Likewise. + (msp430_expand_delay_cycles): Likewise. + +2017-03-10 David Malcolm + + PR target/79925 + * config/aarch64/aarch64.c (aarch64_validate_mcpu): Quote the + full command-line argument, rather than just "str". + (aarch64_validate_march): Likewise. + (aarch64_validate_mtune): Likewise. + +2017-03-10 Bernd Schmidt + + PR rtl-optimization/78911 + * lra-assigns.c (must_not_spill_p): New function. + (spill_for): Use it. + +2017-03-10 Jakub Jelinek + + PR tree-optimization/79981 + * tree-vrp.c (extract_range_basic): Handle IMAGPART_EXPR of + ATOMIC_COMPARE_EXCHANGE ifn result. + (stmt_interesting_for_vrp, vrp_visit_stmt): Handle + IFN_ATOMIC_COMPARE_EXCHANGE. + +2017-03-10 David Malcolm + + PR driver/79875 + * opts.c (parse_sanitizer_options): Add missing question mark to + "did you mean" message. + +2017-03-10 Bill Schmidt + + * config/rs6000/rs6000-builtin.def (VMULEUB_UNS): Remove orphaned + built-in. + (VMULEUH_UNS): Likewise. + (VMULOUB_UNS): Likewise. + (VMULOUH_UNS): Likewise. + * config/rs6000/rs6000.c (builtin_function_type): Remove + references to ALTIVEC_BUILTIN_VMUL[EO]U[BH]_UNS. + +2017-03-10 David Malcolm + + PR bootstrap/79952 + * read-rtl-function.c (function_reader::read_rtx_operand): Update + x with result of extra_parsing_for_operand_code_0. + (function_reader::extra_parsing_for_operand_code_0): Convert + return type from void to rtx, returning x. When reading + SYMBOL_REF with SYMBOL_FLAG_HAS_BLOCK_INFO, reallocate x to the + larger size containing struct block_symbol. + +2017-03-10 Segher Boessenkool + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow + -mfloat128-hardware without -m64. + +2017-03-10 Will Schmidt + + PR target/79941 + * config/rs6000/rs6000.c (builtin_function_type): Add VMUL*U[HB] + entries to the case statement that marks unsigned arguments to + overloaded functions. + +2017-03-10 Kelvin Nilsen + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Fix + two typographic errors in the handling of TARGET_UPPER_REGS_DI. + +2017-03-10 Pat Haugen + + PR target/79907 + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Test + TARGET_UPPER_REGS_DI when setting 'wi' constraint regclass. + +2017-03-10 Martin Liska + + PR target/65705 + PR target/69804 + * toplev.c (process_options): Enable MPX with LSAN and UBSAN. + * tree-chkp.c (chkp_walk_pointer_assignments): Verify that + FIELD != NULL. + +2017-03-10 Olivier Hainque + + * tree-switch-conversion (array_value_type): Start by resetting + candidate type to it's main variant. + +2017-03-10 Jakub Jelinek + + PR rtl-optimization/79909 + * combine.c (try_combine): Use simplify_replace_rtx on individual + CALL_INSN_FUNCTION_USAGE elements instead of replace_rtx on copy_rtx + of the whole CALL_INSN_FUNCTION_USAGE. + + PR tree-optimization/79972 + * gimple-ssa-warn-alloca.c (alloca_call_type): Only call + get_range_info on SSA_NAMEs. Formatting fixes. + +2017-03-10 Richard Biener + Jakub Jelinek + + PR tree-optimization/77975 + * tree-ssa-loop-niter.c (get_base_for): Allow phi argument from latch + edge to be constant. + (get_val_for): For constant x return it. Formatting fix. + (loop_niter_by_eval): Avoid pointless looping if the next iteration + would use the same bases as the current one. + +2017-03-09 Bill Schmidt + + * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Use rotate + instead of vec_select for V1TImode. + * conifg/rs6000/vsx.md (VSX_LE): Remove mode iterator that is no + longer needed. + (VSX_LE_128): Add V1TI to this mode iterator. + (*vsx_le_perm_load_): Change to use VSX_D mode iterator. + (*vsx_le_perm_store_): Likewise. + (pre-reload splitter for VSX stores): Likewise. + (post-reload splitter for VSX stores): Likewise. + (*vsx_xxpermdi2_le_): Likewise. + (*vsx_lxvd2x2_le_): Likewise. + (*vsx_stxvd2x2_le_): Likewise. + +2017-03-09 Michael Eager + + Correct failures with --enable-checking=yes,rtl. + + * config/microblaze/microblaze.c (microblaze_expand_shift): + Replace GET_CODE test with CONST_INT_P and INTVAL test with + test for const0_rtx. + * config/microblaze/microblaze.md (ashlsi3_byone, ashrsi3_byone, + lshrsi3_byone): Replace INTVAL with test for const1_rtx. + +2017-03-09 Richard Biener + + PR tree-optimization/79977 + * graphite-scop-detection.c (scop_detection::merge_sese): + Handle the case of extra exits to blocks dominating the entry. + +2017-03-09 Toma Tabacu + + * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes): + Document rdynamic. + +2017-03-09 Vladimir Makarov + + PR rtl-optimization/79949 + * lra-constraints.c (process_alt_operands): Check memory when + trying to predict a cycle. Print about the overall increase. + +2017-03-09 Richard Biener + + PR middle-end/79971 + * gimple-expr.c (useless_type_conversion_p): Preserve + TYPE_SATURATING for fixed-point types. + +2017-03-09 Richard Biener + + PR ipa/79970 + * ipa-prop.c (ipa_modify_formal_parameters): Avoid changing + alignment of BLKmode params. + +2017-03-09 Kyrylo Tkachov + + PR target/79913 + * config/aarch64/iterators.md (VALL_F16_NO_V2Q): New mode iterator. + (VALL_NO_V2Q): Likewise. + (VDQF_DF): Delete. + * config/aarch64/aarch64-simd.md + (aarch64_dup_lane_): Use VALL_F16_NO_V2Q + iterator. + (*aarch64_simd_vec_copy_lane_): Use + VALL_NO_V2Q mode iterator. + (*aarch64_vgetfmulx): Use VDQF iterator. + +2017-03-09 Martin Liska + + PR tree-optimization/79631 + * tree-chkp-opt.c (chkp_is_constant_addr): Call + tree_int_cst_sign_bit just for INTEGER constants. + +2017-03-09 Martin Liska + + PR target/65705 + PR target/69804 + * toplev.c (process_options): Disable -fcheck-pointer-bounds with + sanitizers. + +2017-03-09 Marek Polacek + + PR c++/79672 + * tree.c (inchash::add_expr): Handle TREE_VEC. + +2017-03-09 Martin Liska + + PR ipa/79764 + (chkp_narrow_size_and_offset): New function. + (chkp_parse_array_and_component_ref): Support BIT_FIELD_REF. + (void chkp_parse_bit_field_ref): New function. + (chkp_make_addressed_object_bounds): Add case for BIT_FIELD_REF. + (chkp_process_stmt): Use chkp_parse_bit_field_ref. + +2017-03-09 Martin Liska + + PR ipa/79761 + * tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param. + (chkp_find_bounds_1): Remove gcc_unreachable. + +2017-03-09 Jakub Jelinek + + PR sanitizer/79944 + * asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and + BUILT_IN_SYNC*, determine the access type from the size suffix and + always build a MEM_REF with that type. Handle forgotten + BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16. + + PR target/79932 + * config/i386/avx512vlintrin.h (_mm256_cmpge_epi32_mask, + _mm256_cmpge_epi64_mask, _mm256_cmpge_epu32_mask, + _mm256_cmpge_epu64_mask, _mm256_cmple_epi32_mask, + _mm256_cmple_epi64_mask, _mm256_cmple_epu32_mask, + _mm256_cmple_epu64_mask, _mm256_cmplt_epi32_mask, + _mm256_cmplt_epi64_mask, _mm256_cmplt_epu32_mask, + _mm256_cmplt_epu64_mask, _mm256_cmpneq_epi32_mask, + _mm256_cmpneq_epi64_mask, _mm256_cmpneq_epu32_mask, + _mm256_cmpneq_epu64_mask, _mm256_mask_cmpge_epi32_mask, + _mm256_mask_cmpge_epi64_mask, _mm256_mask_cmpge_epu32_mask, + _mm256_mask_cmpge_epu64_mask, _mm256_mask_cmple_epi32_mask, + _mm256_mask_cmple_epi64_mask, _mm256_mask_cmple_epu32_mask, + _mm256_mask_cmple_epu64_mask, _mm256_mask_cmplt_epi32_mask, + _mm256_mask_cmplt_epi64_mask, _mm256_mask_cmplt_epu32_mask, + _mm256_mask_cmplt_epu64_mask, _mm256_mask_cmpneq_epi32_mask, + _mm256_mask_cmpneq_epi64_mask, _mm256_mask_cmpneq_epu32_mask, + _mm256_mask_cmpneq_epu64_mask, _mm_cmpge_epi32_mask, + _mm_cmpge_epi64_mask, _mm_cmpge_epu32_mask, _mm_cmpge_epu64_mask, + _mm_cmple_epi32_mask, _mm_cmple_epi64_mask, _mm_cmple_epu32_mask, + _mm_cmple_epu64_mask, _mm_cmplt_epi32_mask, _mm_cmplt_epi64_mask, + _mm_cmplt_epu32_mask, _mm_cmplt_epu64_mask, _mm_cmpneq_epi32_mask, + _mm_cmpneq_epi64_mask, _mm_cmpneq_epu32_mask, _mm_cmpneq_epu64_mask, + _mm_mask_cmpge_epi32_mask, _mm_mask_cmpge_epi64_mask, + _mm_mask_cmpge_epu32_mask, _mm_mask_cmpge_epu64_mask, + _mm_mask_cmple_epi32_mask, _mm_mask_cmple_epi64_mask, + _mm_mask_cmple_epu32_mask, _mm_mask_cmple_epu64_mask, + _mm_mask_cmplt_epi32_mask, _mm_mask_cmplt_epi64_mask, + _mm_mask_cmplt_epu32_mask, _mm_mask_cmplt_epu64_mask, + _mm_mask_cmpneq_epi32_mask, _mm_mask_cmpneq_epi64_mask, + _mm_mask_cmpneq_epu32_mask, _mm_mask_cmpneq_epu64_mask): Move + definitions outside of __OPTIMIZE__ guarded section. + + PR target/79932 + * config/i386/avx512bwintrin.h (_mm512_packs_epi32, + _mm512_maskz_packs_epi32, _mm512_mask_packs_epi32, + _mm512_packus_epi32, _mm512_maskz_packus_epi32, + _mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__ + guarded section. + +2017-03-09 Andreas Krebbel + + * config/s390/vx-builtins.md ("vfee", "vfeez") + ("vfenez"): Add missing constraints. + +2017-03-08 Martin Sebor + + PR target/79928 + * config/nds32/nds32.c (nds32_option_override): + Fix misspelled diagnostic. + +2017-03-08 Jakub Jelinek + + PR c/79940 + * gimplify.c (gimplify_omp_for): Replace index var in outer + taskloop statement with an artificial variable and add + OMP_CLAUSE_PRIVATE clause for it. + +2017-03-08 Richard Biener + + PR tree-optimization/79955 + * tree-ssa-uninit.c (warn_uninitialized_vars): Do not warn + for accesses that are completely outside of the variable. + +2017-03-08 Andrew Haley + + PR tree-optimization/79943 + * tree-ssa-loop-split.c (compute_new_first_bound): When + calculating the new upper bound, (END-BEG) should be added, not + subtracted. + +2017-03-08 Jakub Jelinek + + * config/avr/avr.md (setmemhi): Make sure match_dup + operand number comes before match_scratch. + +2017-03-08 Richard Biener + + PR tree-optimization/79920 + * tree-vect-slp.c (vect_create_mask_and_perm): Remove and inline + with ncopies == 1 to ... + (vect_transform_slp_perm_load): ... here. Properly compute + all element loads by iterating VF times over the group. Do + not handle ncopies (computed in a broken way) in + vect_create_mask_and_perm. + +2017-03-08 Jakub Jelinek + + PR sanitizer/79904 + * internal-fn.c (expand_vector_ubsan_overflow): If arg0 or arg1 + is a uniform vector, use uniform_vector_p return value instead of + building ARRAY_REF on folded VIEW_CONVERT_EXPR to array type. + +2017-03-07 Marek Polacek + + PR middle-end/79809 + * gimple-ssa-warn-alloca.c (pass_walloca::gate): Use HOST_WIDE_INT. + (alloca_call_type): Likewise. + +2017-03-07 Martin Liska + + * gcov.c (process_args): Put comment to correct location. + +2017-03-07 Martin Liska + + PR middle-end/68270 + * tree-chkp.c (chkp_may_narrow_to_field): Add new argument ref. + Use array_at_struct_end_p instead of DECL_CHAIN (field). + (chkp_narrow_bounds_for_field): Likewise. + (chkp_parse_array_and_component_ref): Pass one more argument to + call. + +2017-03-07 Richard Biener + + * tree-vect-loop-manip.c (slpeel_add_loop_guard): Preserve + preheaders. + +2017-03-07 Segher Boessenkool + + * config/i386/i386.c (ix86_local_alignment): Align most aggregates + of 16 bytes and more to 16 bytes, not those of 16 bits and more. + +2017-03-07 Kyrylo Tkachov + + PR c/79855 + * params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Add full stop + to end of description. + (PARAM_MAX_STORES_TO_MERGE): Likewise. + +2017-03-07 Jakub Jelinek + + PR rtl-optimization/79901 + * config/i386/sse.md (*avx512bw_3): Renamed to + ... + (*avx512f_3): ... this. + (3 with maxmin code iterator): Use VI8_AVX2_AVX512F + iterator instead of VI8_AVX2_AVX512BW. + + PR rtl-optimization/79901 + * expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no + min/max expander, expand it using expand_vec_cond_expr. + + PR sanitizer/79897 + * ubsan.c (ubsan_encode_value): Call mark_addressable on the + temporary. + +2017-03-06 Jakub Jelinek + + PR c++/79821 + * dwarf2out.h (dw_vec_const): Change array type from unsigned char * + to void * for PCH reasons. + * dwarf2out.c (output_loc_operands, output_die): Cast + v.val_vec.array to unsigned char *. + +2017-03-06 John David Anglin + + PR target/77850 + * config/pa/pa-64.h (PAD_VARARGS_DOWN): Don't pad down complex and + vector types. + +2017-03-06 Vladimir Makarov + + PR rtl-optimization/79571 + * lra-constraints.c (process_alt_operands): Calculate static + reject and subtract it from overall when only addresses will be + reloaded. + +2017-03-06 Julia Koval + + PR target/79793 + * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): Set + incoming stack boundary to 128 for 64-bit targets. + +2017-03-06 Richard Biener + + PR tree-optimization/79894 + * tree-vectorizer.c (vectorize_loops): Set loop_vectorized_call + to NULL after folding it. + +2017-03-06 Richard Biener + + PR tree-optimization/79824 + * tree-vect-stmts.c (get_group_load_store_type): Fix alignment + check disabling peeling for gaps. + +2017-03-06 Toma Tabacu + + * doc/sourcebuild.texi (Effective-Target Keywords, Environment + attributes): Document gettimeofday. + +2017-03-06 Robin Dapp + + * config/s390/s390.c (s390_option_override_internal): Set + PARAM_MIN_VECT_LOOP_BOUND + +2017-03-06 Robin Dapp + + * config/s390/s390.c (s390_asm_output_function_label): Use nopr %r0. + * config/s390/s390.md: Likewise. + +2017-03-06 Jakub Jelinek + + PR target/79812 + * config/i386/sse.md (VI8F_256_512): Remove mode iterator. + (_perm): Rename to ... + (avx2_perm): ... this. Use VI8F_256 iterator instead + of VI8F_256_512. + (_perm_mask): Rename to ... + (avx512vl_perm_mask): ... this. Use VI8F_256 iterator instead + of VI8F_256_512. + (_perm_1): Rename to ... + (avx2_perm_1): New define_expand. + (avx512f_perm_mask): Likewise. + (avx512f_perm_1): New define_insn. + (_vec_dup_1): Fix up vec_select mode. + +2017-03-06 Prachi Godbole + + * config/mips/mips-msa.md (msa_fmax_a_, msa_fmin_a_, + msa_max_a_, msa_min_a_): Introduce mode interator for + if_then_else. + (smin3, smax3): Change operand print code from 'B' to 'E'. + +2017-03-06 Martin Liska + + PR sanitize/79783 + * asan.c (asan_expand_poison_ifn): Do not expand ASAN_POISON + when having a SSA NAME w/o VAR_DECL assigned to it. + +2017-03-06 Prachi Godbole + + * config/mips/mips-msa.md (msa_dotp__d, msa_dpadd__d, + msa_dpsub__d): Fix MODE for vec_select. + +2017-03-06 Prachi Godbole + + * config/mips/mips.c (mips_gen_const_int_vector): Change type of last + argument. + * config/mips/mips-protos.h (mips_gen_const_int_vector): Likewise. + +2017-03-06 Richard Biener + + * lto-streamer.c (lto_check_version): Use %qs in diagnostics. + * plugin.c (register_plugin_info): Likewise. + * tree-chkp.c (chkp_make_static_const_bounds): Likewise. + +2017-03-05 Jakub Jelinek + + * config/i386/sse.md (sse_storehps, sse_storelps, + avx__, + avx512f__, + avx512f__256): Require + in condition that at least one operand is not a MEM. + +2017-03-03 Jakub Jelinek + + PR middle-end/79805 + * internal-fn.def (ATOMIC_BIT_TEST_AND_SET, ATOMIC_BIT_TEST_AND_RESET, + ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_COMPARE_EXCHANGE): Remove + ECF_NOTHROW. + * gimple-fold.c (fold_builtin_atomic_compare_exchange): Set + gimple_call_nothrow_p flag based on whether original builtin can throw. + If it can, emit following stmts on the fallthrough edge. + * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Similarly, except + don't create new bb if inserting just debug stmts on the edge, try to + insert them on the fallthru bb or just reset debug stmts. + +2017-03-03 Segher Boesssenkool + + PR target/43763 + * config/rs6000/rs6000.c (rs6000_final_prescan_insn): Save and + restore recog_data (including the operand rtxes inside it) around + the call to get_insn_template. + +2017-03-03 Martin Sebor + + PR tree-optimization/79699 + * context.c (context::~context): Free MPFR caches to avoid + a memory leak on program exit. + +2017-03-03 Kyrylo Tkachov + + * config/aarch64/aarch64.c (aarch64_float_const_representable_p): + Use wide_int::ulow () instead of .elt (0). + +2017-03-03 Uros Bizjak + + * config/i386/i386.md (*pushtf): Change *roF constraint to *roC. + (*pushxf): Limit oF constraint to 32bit targets and add oC + constraint for 64bit targets. + (pushxf splitter): Use PUSH_ROUNDING to calculate stack adjustment. + (*pushdf): Change rmF constraint to rmC. + +2017-03-03 Martin Liska + + * tree-ssa-loop-prefetch.c (pass_loop_prefetch::execute): + Remove unused variable. + +2017-03-03 Jakub Jelinek + + PR target/79807 + * config/i386/i386.c (ix86_expand_multi_arg_builtin): If target + is a memory operand, increase num_memory. + (ix86_expand_args_builtin): Likewise. + +2017-03-03 Jan Hubicka + + PR lto/79760 + * ipa-devirt.c (maybe_record_node): Properly handle + __cxa_pure_virtual visibility. + +2017-03-03 Martin Liska + + PR tree-optimization/79803 + * tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Remove + assert. + (pass_loop_prefetch::execute): Disabled optimization if an + assumption about L1 cache size is not met. + +2017-03-03 Martin Liska + + PR rtl-optimization/79574 + * gcse.c (struct gcse_expr): Use HOST_WIDE_INT instead of int. + (hash_scan_set): Likewise. + (dump_hash_table): Likewise. + (hoist_code): Likewise. + +2017-03-03 Richard Biener + + * fixed-value.c (fixed_from_string): Restore use of elt (1) + in place of uhigh (). + (fixed_convert_from_real): Likewise. + +2017-03-03 Uros Bizjak + + PR target/79514 + * config/i386/i386.md (*pushxf_rounded): Use Pmode instead of DImode. + +2017-03-03 Richard Biener + + PR middle-end/79818 + * match.pd ( X +- C1 CMP C2 -> X CMP C2 -+ C1): Add missing + TYPE_OVERFLOW_UNDEFINED check. + +2017-03-02 Bill Schmidt + + * config/rs6000/vector.md (vector_ne__p): Correct operand + numbers. + (vector_ae__p): Likewise. + (vector_nez__p): Likewise. + (vector_ne_v2di_p): Likewise. + (vector_ae_v2di_p): Likewise. + (vector_ne__p): Likewise. + * config/rs6000/vsx.md (vsx_tsqrt2_fg): Correct operand + numbers. + (vsx_tsqrt2_fe): Likewise. + +2017-03-02 Uros Bizjak + + PR target/79514 + * config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern. + +2017-03-02 Jakub Jelinek + + PR rtl-optimization/79780 + * cprop.c (one_cprop_pass): When second and further conditional trap + in a single basic block is turned into an unconditional trap, turn it + into a deleted note to avoid RTL verification failures. + +2017-03-02 Richard Biener + + * fold-const.c (const_binop): Use ulow () instead of elt (0). + +2017-03-02 Richard Biener + + PR tree-optimization/79345 + PR c++/42000 + * tree-ssa-alias.c (walk_aliased_vdefs_1): Take a limit + param and abort the walk, returning -1 if it is hit. + (walk_aliased_vdefs): Take a limit param and pass it on. + * tree-ssa-alias.h (walk_aliased_vdefs): Add a limit param, + defaulting to 0 and return a signed int. + * tree-ssa-uninit.c (struct check_defs_data): New struct. + (check_defs): New helper. + (warn_uninitialized_vars): Use walk_aliased_vdefs to warn + about uninitialized memory. + * fixed-value.c (fixed_from_string): Use ulow/uhigh to avoid + bogus uninitialized warning. + (fixed_convert_from_real): Likewise. + +2017-03-02 Bin Cheng + + PR tree-optimization/66768 + * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr + iv_use if base object can't be determined. + +2017-03-02 Jakub Jelinek + + PR tree-optimization/79345 + * gensupport.h (struct pattern_stats): Add min_scratch_opno field. + * gensupport.c (get_pattern_stats_1) : Update it. + (get_pattern_stats): Initialize it. + * genemit.c (gen_expand): Verify match_scratch numbers come after + match_operand/match_dup numbers. + * config/i386/i386.md (mul3_highpart): Swap match_dup and + match_scratch numbers. + * config/i386/sse.md (avx2_gathersi, avx2_gatherdi): + Likewise. + * config/s390/s390.md (trunctdsd2): Likewise. + +2017-03-02 Richard Biener + + * wide-int.h (wide_int_storage::operator=): Implement in terms + of wi::copy. + +2017-03-02 Richard Biener + + PR tree-optimization/79777 + * tree-ssa-pre.c (eliminate_insert): Give up if we simplify + the to insert expression to sth existing. + +2017-03-01 Martin Sebor + + PR middle-end/79692 + * gimple-ssa-sprintf.c + (directive::known_width_and_precision): New function. + (format_integer): Use it. + (get_mpfr_format_length): Consider the full range of precision + when computing %g output with the # flag. Set the likely byte + count to 3 rather than 1 when precision is indeterminate. + (format_floating): Correct the lower bound of precision. + +2017-03-01 Bill Schmidt + + * doc/invoke.texi: Document default code model for 64-bit Linux. + +2017-03-01 Aaron Sawdey + + PR target/79752 + * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit + udiv rather than div since input pattern is unsigned. + +2017-03-01 Uros Bizjak + + * config/i386/i386.c (print_reg): Warn for values of + unsupported size in integer register. + +2017-03-01 Michael Meissner + + PR target/79439 + * config/rs6000/predicates.md (current_file_function_operand): Do + not allow self calls to be local if the function is replaceable. + +2017-03-01 Kelvin Nilsen + + PR target/79395 + * config/rs6000/altivec.h (vec_ctz and others): Change the + preprocessor macro that controls conditional compilation from + _ARCH_PWR9 to __POWER9_VECTOR__. + (vec_all_ne): Change parameterization of __altivec_scalar_pred + macro expansion under preprocessor #ifdef __POWER9_VECTOR__ + control (instead of _ARCH_PWR9 control) so that template + definition uses power9-specific function. + (vec_any_eq): Likewise. + (vec_all_ne): Change macro definition to use a power9-specific + expansion under #ifdef __POWER9_VECTOR__ control (instead of + _ARCH_PWR9 control). + (vec_any_eq) Likewise. + * config/rs6000/rs6000-builtin.def (CMPNEF): Remove BU_P9V_AV_2 + expansion for CMPNEF to remove support for xvcmpnesp instruction. + (CMPNED): Remove BU_P9V_AV2 expansion for CMPNED to remove + support for xvcmpnedp instruction. + (VCMPNEB_P): Replace BU_P9V_AV_P macro expansion with BU_P9V_AV_2 + macro expansion so that Power9 implementation of vec_all_ne does + not use the AltiVec predicate framework. + (VCMPNEH_P): Likewise. + (VCMPNEW_P): Likewise. + (VCMPNED_P): Likewise. + (VCMPNEFP_P): Likewise. + (VCMPNEDP_P): Likewise. + (VCMPAEB_P): Add BU_P9V_AV_2 macro expansion to change + implementation of vec_any_eq to not use AltiVec predicate + framework. + (VCMPAEH_P): Likewise. + (VCMPAEW_P): Likewise. + (VCMPAED_P): Likewise. + (VCMPAEFP_P): Likewise. + (VCMPAEDP_P): Likewise. + (VCMPNE_P): Replace BU_P9V_OVERLOAD_P macro expansion with + BU_P9V_OVERLOAD_2 so that Power9 implementation of vec_all_ne does + not use the AltiVec predicate framework. + (VCMPAE_P): Add BU_P9V_OVERLOAD_2 macro to change implementation + of vec_any_eq to not use AltiVec predicate framework. + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add + support for predefined __POWER9_VECTOR__ macro to indicate that + Power9 instruction selection is enabled. + (altivec_overloaded_builtins): Remove extraneous + ALTIVEC_BUILTIN_VEC_CMPNE entry for overloaded + function argument types RS6000_BTI_bool_V16QI and + RS6000_BTI_bool_V16QI. Remove erroneous ALTIVEC_BUILTIN_VEC_CMPNE + entry for overloaded function argument types RS6000_BTI_bool_V4SI + andRS6000_BTI_bool_V4SI, mapping to P9V_BUILTIN_CMPNEB. Remove + two entries mapping to P9V_BUITIN_CMPNED and one entry mapping to + P9V_BUILTIN_CMPNEF to force use of instructions not specific to + Power9 for implementations of vec_cmpne. Change the signature for + all definitions of the overloaded P9V_BUILTIN_VEC_CMPNE_P function + (representing vec_all_ne) to remove the previously described first + argument of type RS6000_BTI_INTSI, as this was an artifact of + reliance on the AltiVec predicate framework, which is no longer + used in the implementation of these functions. Add + P9V_BUILTIN_VEC_VCMPAE_P entries (representing the vec_anyeq + function) to match all of the P9V_BUILTIN_VEC_VCMNE_P entries + since, unlike the AltiVec predicate framework implementation, we + do not share function descriptors between vec_alle and vec_anyeq. + (altivec_resolve_overloaded_builtin): Add SFmode and DFmode to the + set of modes that receive special treatment even when + TARGET_P9_VECTOR is true. The special treatment emits code that + does not depend on Power9 instructions. + * config/rs6000/vector.md (vector_ne__p): Change this + define_expand to not rely on AltiVec predicate framework. + (vector_ae_p): New define_expand to represent vec_any_eq + function. + (vector_ne_v2di_p): Change this define_expand to not rely on + AltiVec predicate framework. + (vector_ae_v2di_p): New define_expand to represent vec_any_eq + function. + (vector_ne__p): Change this define_expand to not rely on + AltiVec predicate framework. + (vector_ae_p): New define_expand to represent vec_any_eq + function. + * config/rs6000/vsx.md (*vsx_ne__p): For modes VSX_EXTRACT_I + (V16QI, V8HI, V4SI), correct a typo in the code emitted for this + define_insn pattern. + (*vsx_ne__p): For modes VSX_F (V4SF and V2DF), remove this + define_insn pattern because the xvcmpne. instruction is not + supported. + (vcmpne): Remove this define_insn because xvcmpne + instruction is not supported. + +2017-03-01 Jakub Jelinek + + * config/nvptx/nvptx.c: Include intl.h. + +2017-03-01 Martin Jambor + + PR lto/78140 + * ipa-prop.h (ipa_bits): Removed field known. + (ipa_jump_func): Removed field vr_known. Changed fields bits and m_vr + to pointers. Adjusted their comments to warn about their sharing. + (ipcp_transformation_summary): Change bits to a vector of pointers. + (ipa_check_create_edge_args): Moved to ipa-prop.c, declare. + (ipa_get_ipa_bits_for_value): Declare. + * tree-vrp.h (value_range): Mark as GTY((for_user)). + * ipa-prop.c (ipa_bit_ggc_hash_traits): New. + (ipa_bits_hash_table): Likewise. + (ipa_vr_ggc_hash_traits): Likewise. + (ipa_vr_hash_table): Likewise. + (ipa_print_node_jump_functions_for_edge): Adjust for bits and m_vr + being pointers and vr_known being removed. + (ipa_set_jf_unknown): Likewise. + (ipa_get_ipa_bits_for_value): New function. + (ipa_set_jfunc_bits): Likewise. + (ipa_get_value_range): New overloaded functions. + (ipa_set_jfunc_vr): Likewise. + (ipa_compute_jump_functions_for_edge): Use the above functions to + construct bits and vr parts of jump functions. + (ipa_check_create_edge_args): Move here from ipa-prop.h, also allocate + ipa_bits_hash_table and ipa_vr_hash_table if they do not already + exist. + (ipcp_grow_transformations_if_necessary): Also allocate + ipa_bits_hash_table and ipa_vr_hash_table if they do not already + exist. + (ipa_node_params_t::duplicate): Do not copy bits, just pointers to + them. Fix too long lines. + (ipa_write_jump_function): Adjust for bits and m_vr being pointers and + vr_known being removed. + (ipa_read_jump_function): Use new setter functions to construct bits + and vr parts of jump functions or set them to NULL. + (write_ipcp_transformation_info): Adjust for bits being pointers. + (read_ipcp_transformation_info): Likewise. + (ipcp_update_bits): Likewise. Fix excessively long lines a trailing + space. + Include gt-ipa-prop.h. + * ipa-cp.c (propagate_bits_across_jump_function): Adjust for bits + being pointers. + (ipcp_store_bits_results): Likewise. + (propagate_vr_across_jump_function): Adjust for m_vr being a pointer. + Do not write to existing jump functions but use a temporary instead. + +2017-03-01 Jakub Jelinek + + PR c++/79681 + * fold-const.c (make_bit_field_ref): If orig_inner is COMPONENT_REF, + attempt to use its first operand as BIT_FIELD_REF base. + +2017-03-01 Richard Biener + + PR middle-end/79721 + * tree-chrec.c (chrec_evaluate): Perform computation of Newtons + interpolating formula in wrapping arithmetic. + (chrec_apply): Convert chrec_evaluate return value to wanted type. + +2017-03-01 Jakub Jelinek + + PR tree-optimization/79734 + * tree-vect-generic.c (expand_vector_condition): Optimize + AVX512 vector boolean VEC_COND_EXPRs into bitwise operations. + Handle VEC_COND_EXPR where comparison has different inner width from + type's inner width. + +2017-02-28 Sandra Loosemore + + * doc/invoke.texi (ARC Options): Copy-edit to fix punctuation, + markup, and similar issues. Remove @opindex entries for things + that aren't options. Add missing -mmpy-option entries. + +2017-02-28 Jakub Jelinek + + PR tree-optimization/79737 + * gimple-ssa-store-merging.c (encode_tree_to_bitpos): If bitlen is + a multiple of BITS_PER_UNIT and !BYTES_BIG_ENDIAN, clear + tmpbuf[byte_size - 1]. Call natice_encode_expr with byte_size - 1 + instead of byte_size. Formatting fix. + (shift_bytes_in_array_right): Formatting fix. + +2017-02-28 Eric Botcazou + + PR target/79749 + * config/sparc/sparc.c (sparc_frame_pointer_required): Add missing + condition on optimize for the leaf function test. + +2017-02-28 Martin Liska + + PR lto/79625 + * read-rtl-function.c (function_reader::handle_unknown_directive): + Bail out when one uses -flto. + +2017-02-28 Martin Liska + + * common.opt: Replace space with tabular for options of + type. + * config/i386/i386.opt: Show value for + -mlarge-data-threshold. + * opts.c (print_filtered_help): Do not display number in hexadecimal + format. + +2017-02-28 Martin Liska + + * common.opt: Fix --help=option -Q for options which are of + an enum type. + +2017-02-28 Uros Bizjak + + * config/i386/i386.c (print_reg): Error out for values + of 8-bit size in invalid integer register. + +2017-02-28 Martin Sebor + + PR tree-optimization/79691 + * passes.def (pass_all_optimizations_g): Enable pass_sprintf_length. + +2017-02-28 Jakub Jelinek + + PR target/79729 + * config/i386/i386.c (ix86_print_operand) : Replace + gcc_unreachable with output_operand_lossage. + +2017-02-28 Richard Biener + + PR tree-optimization/79740 + * tree-ssa-sccvn.c (vn_nary_op_insert_into): Allow redundant + inserts. + (visit_nary_op): Insert the nary into the hashtable if we + pattern-matched sth. + * tree-ssa-pre.c (eliminate_insert): Robustify. + +2017-02-28 Richard Biener + + PR middle-end/79731 + * fold-const.c (decode_field_reference): Reject out-of-bound + accesses. + +2017-02-28 Jakub Jelinek + + * config/i386/i386.c: Include intl.h. + (ix86_option_override_internal): Use cond ? G_("...") : G_("...") + instead of just cond ? "..." : "...". + * config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Likewise. + * coverage.c (read_counts_file): Likewise. + * omp-offload.c: Include intl.h. + (oacc_loop_fixed_partitions): Use cond ? G_("...") : G_("...") instead + of just cond ? "..." : "...". + * gcov.c (read_count_file): Use cond ? N_("...") : N_("...") instead + of just cond ? "..." : "...". + +2017-02-28 Richard Earnshaw + + PR target/79742 + * config/arm/parsecpu.awk (gen_data): Set tuning target to 'tune for' + entry, if present. + * config/arm/arm-cpus.in (cortex-m0plus.small-multiply): Correct + 'tune for' CPU name. + * config/arm/arm-cpu-data.h: Regenerated. + +2017-02-28 Richard Biener + + PR tree-optimization/79732 + * tree-inline.c (expand_call_inline): Do not shadow var. + +2017-02-28 Richard Biener + + PR tree-optimization/79723 + * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Preserve + address-space properly. + +2017-02-28 Thomas Schwinge + + * doc/optinfo.texi (Optimization groups): Fix option used for + OPTGROUP_ALL. + * doc/invoke.texi (-fopt-info): Document "omp". + * dumpfile.h: Sort OPTGROUP_OMP before OPTGROUP_VEC. + (OPTGROUP_ALL): Add OPTGROUP_OMP. + * hsa-gen.c (pass_data_gen_hsail): Use OPTGROUP_OMP. + * ipa-hsa.c (pass_data_ipa_hsa): Likewise. + * omp-simd-clone.c (pass_data_omp_simd_clone): Likewise. + + * dumpfile.h (OPTGROUP_OPENMP): Rename to OPTGROUP_OMP. Adjust + all users. + * dumpfile.c (optgroup_options): Instead of "openmp", associate + OPTGROUP_OMP with "omp". + +2017-02-27 Pat Haugen + + PR target/79544 + * config/rs6000/rs6000-c.c (struct altivec_builtin_types): Use VSRAD + for arithmetic shift of unsigned V2DI. + +2017-02-27 Claudiu Zissulescu + + * config.gcc (arc*-): Clean up, use arc/big.h, arc/elf.h, and + arc/linux.h headers. + * config/arc/arc.h (TARGET_OS_CPP_BUILTINS): Remove. + (LINK_SPEC): Likewise. + (ARC_TLS_EXTRA_START_SPEC): Likewise. + (EXTRA_SPECS): Likewise. + (STARTFILE_SPEC): Likewise. + (ENDFILE_SPEC): Likewise. + (LIB_SPEC): Likewise. + (TARGET_SDATA_DEFAULT): Likewise. + (TARGET_MMEDIUM_CALLS_DEFAULT): Likewise. + (MULTILIB_DEFAULTS): Likewise. + (DWARF2_UNWIND_INFO): Likewise. + * config/arc/big.h: New file. + * config/arc/elf.h: Likewise. + * config/arc/linux.h: Likewise. + * config/arc/t-uClibc: Remove. + +2017-02-27 Bin Cheng + + PR tree-optimization/77536 + * tree-ssa-loop-manip.c (niter_for_unrolled_loop): New function. + (tree_transform_and_unroll_loop): Use above function to compute the + estimated niter of unrolled loop and use it when scaling profile. + Also use count info rather than frequency if it's non-zero. + * tree-ssa-loop-manip.h niter_for_unrolled_loop(): New declaration. + * tree-vect-loop.c (scale_profile_for_vect_loop): New function. + (vect_transform_loop): Call above function. + +2017-02-27 Richard Biener + + PR tree-optimization/45397 + * tree-ssa-pre.c (eliminate_insert): Handle BIT_AND_EXPR. + * tree-ssa-sccvn.c (valueized_wider_op): New helper. + (visit_nary_op): Add pattern matching for CSEing sign-changed + or truncated operations with wider ones. + +2017-02-27 Richard Biener + + PR tree-optimization/79690 + * tree-vect-stmts.c (vectorizable_store): Use vector type + built from the DR with address-space. + +2017-02-26 Gerald Pfeifer + + * doc/invoke.texi (Optimize Options): Refine the description + of asan-use-after-return. + +2017-02-25 Alan Modra + + PR rtl-optimization/79584 + * lra-constraints.c (base_to_reg): Reload ad->base, the entire + base, not ad->base_term, the reg within base. Remove assertion + that ad->base == ad->base_term. Replace gen_int_mode using + bogus mode with const0_rtx. + +2017-02-25 Jakub Jelinek + + PR middle-end/79396 + * tree-eh.c (operation_could_trap_p, stmt_could_throw_1_p): Handle + FMA_EXPR like tcc_binary or tcc_unary. + + * tree-ssa-loop-niter.c (number_of_iterations_exit): Simplify warning. + + PR debug/77589 + * dwarf2out.c (struct dw_loc_list_struct): Add noted_variable_value + bitfield. + (size_of_loc_descr): Handle DW_OP_GNU_variable_value. + (output_loc_operands): Handle DW_OP_call_ref and + DW_OP_GNU_variable_value. + (struct variable_value_struct): New type. + (struct variable_value_hasher): Likewise. + (variable_value_hash): New variable. + (string_types): Remove. + (copy_loc_descr): New function. + (add_loc_descr_to_each): Clarify comment. Use copy_loc_descr. + (prepend_loc_descr_to_each): New function. + (add_loc_list): Fix comment typo. Use prepend_loc_descr_to_each + instead of add_loc_descr_to_each if the first argument is single + location list and the second has multiple. + (resolve_args_picking_1): Handle DW_OP_GNU_variable_value. + (loc_list_from_tree_1): For early_dwarf, emit DW_OP_GNU_variable_value + when looking for variable value which doesn't have other location info. + (loc_list_from_tree): Formatting fix. + (gen_array_type_die): Simplify DW_AT_string_length handling. + (adjust_string_types): Remove. + (gen_subprogram_die): Don't call adjust_string_types nor test/set + string_types. Call resolve_variable_values. + (prune_unused_types_walk_loc_descr): Handle DW_OP_GNU_variable_value. + (resolve_addr_in_expr): Likewise. Add A argument. + (copy_deref_exprloc): Remove deref argument. Adjust for the + original expression being DW_OP_GNU_variable_value with optionally + DW_OP_stack_value after it instead of DW_OP_call4 with DW_OP_deref + optionally after it. + (optimize_string_length): Rework for DW_OP_GNU_variable_value. + (resolve_addr): Adjust optimize_string_length and resolve_addr_in_expr + callers. Set remove_AT_byte_size if removing DW_AT_string_length. + (variable_value_hasher::hash, variable_value_hasher::equal): New + methods. + (resolve_variable_value_in_expr, resolve_variable_value, + resolve_variable_values, note_variable_value_in_expr, + note_variable_value): New functions. + (dwarf2out_early_finish): Call note_variable_value on all toplevel + DIEs. + +2017-02-24 Jakub Jelinek + + PR c/79677 + * opts.h (handle_generated_option): Add GENERATED_P argument. + * opts-common.c (handle_option): Adjust function comment. + (handle_generated_option): Add GENERATED_P argument, pass it to + handle_option. + (control_warning_option): Pass false to handle_generated_option + GENERATED_P. + * opts.c (maybe_default_option): Pass true to handle_generated_option + GENERATED_P. + * optc-gen.awk: Likewise. + +2017-02-24 Segher Boessenkool + + * config/sh/sh.md (tstsi_t): If operands[0] is a SUBREG instead of + a REG, look at the REG it is a SUBREG of. + (splitter for cmpeqsi_t): Ditto. + +2017-02-24 Segher Boessenkool + + * config/pa/pa.c (pa_combine_instructions): Do not share RTL. Make + the special USEs with the pattern of the insn, not the insn itself. + +2017-02-24 Matthew Fortune + + PR target/79473 + * doc/invoke.texi: Document -mload-store-pairs. + +2017-02-24 Segher Boessenkool + Sandra Loosemore + + * config/nios2/nios2.c (nios2_simple_const_p): Returns false if the + argument isn't a CONST_INT. + (nios2_alternate_compare_const): Assert op is a CONST_INT. + (nios2_valid_compare_const_p): Assert op is a CONST_INT. + (nios2_validate_compare): Bypass alternate compare logic if *op2 + is not a CONST_INT. + (ldstwm_operation_p): Return false if first_base is not a REG or + if first_offset is not a CONST_INT. + +2017-02-24 Segher Boessenkool + + * config/cris/cris.md: Use correct operand in a define_peephole2. + +2017-02-24 Segher Boessenkool + + * config/c6x/c6x.c (predicate_insn): Do not incorrectly share RTL. + +2017-02-24 Segher Boessenkool + + * config/arc/arc.c (arc_ccfsm_advance): Only take the PATTERN of + this_insn if it is an INSN or JUMP_INSN. + (force_offsettable): Look at base, not at addr. + * config/arc/predicates.md (brcc_nolimm_operator): Don't call INTVAL + on things that aren't necessarily CONST_INTs. + +2017-02-24 Uros Bizjak + + * doc/invoke.texi (x86 Options, -mfpmath=sse): Mention that + -mfpmath=sse is the default also for x86-32 targets with SSE2 + instruction set when @option{-ffast-math} is enabled + +2017-02-24 Jeff Law + + PR rtl-optimizatoin/79286 + * ira.c (update_equiv_regs): Drop may_trap_p exception to + dominance test. + +2017-02-24 Richard Biener + + PR tree-optimization/79389 + * gimple-ssa-split-paths.c (is_feasible_trace): Properly skip + debug insns. + +2017-02-24 Aldy Hernandez + + * tree-ssa-loop-niter.c (number_of_iterations_exit): Update + function comment to reflect reality. + (loop_exits_before_overflow): Fix typo in function description. + +2017-02-24 Richard Biener + + PR tree-optimization/79389 + * gimple-ssa-split-paths.c (is_feasible_trace): Verify more + properly that a threading opportunity exists. Detect conditional + copy/constant propagation opportunities. + +2017-02-23 Eric Botcazou + + * config/visium/visium.md (type): Add trap. + (b): New mode attribute. + (*btst): Rename into... + (*btst): ...this and adjust. + (*cbranchsi4_btst_insn): Rename into... + (*cbranch4_btst_insn): ...this and adjust. + (trap): New define_insn. + +2017-02-23 Jakub Jelinek + + PR tree-optimization/79389 + * ifcvt.c (struct noce_if_info): Add rev_cond field. + (noce_reversed_cond_code): New function. + (noce_emit_store_flag): Use rev_cond if non-NULL instead of + reversed_comparison_code. Formatting fix. + (noce_try_store_flag): Test rev_cond != NULL in addition to + reversed_comparison_code. + (noce_try_store_flag_constants): Likewise. + (noce_try_store_flag_mask): Likewise. + (noce_try_addcc): Use rev_cond if non-NULL instead of + reversed_comparison_code. + (noce_try_cmove_arith): Likewise. Formatting fixes. + (noce_try_minmax, noce_try_abs): Clear rev_cond. + (noce_find_if_block): Initialize rev_cond. + (find_cond_trap): Call noce_get_condition with then_bb == trap_bb + instead of false as last argument never attempt to reverse it + afterwards. + +2017-02-23 Bin Cheng + + PR tree-optimization/79663 + * tree-predcom.c (combine_chains): Process refs in reverse order + only for ZERO length chains, and add explaining comment. + +2017-02-23 Jeff Law + + PR tree-optimization/79578 + * tree-ssa-dse.c (clear_bytes_written_by): Use OEP_ADDRESS_OF + in call to operand_equal_p. + +2017-01-23 Dominique d'Humieres + + PR target/71017 + * config/i386/cpuid.h: Fix another undefined behavior. + +2017-02-23 Richard Biener + + PR tree-optimization/79683 + * tree-vect-stmts.c (vect_analyze_stmt): Do not overwrite + vector types for data-refs. + +2017-02-23 Martin Liska + + * params.def (PARAM_MIN_NONDEBUG_INSN_UID): Change default to 0. + +2017-02-23 Jakub Jelinek + + PR middle-end/79665 + * internal-fn.c (get_range_pos_neg): Moved to ... + * tree.c (get_range_pos_neg): ... here. No longer static. + * tree.h (get_range_pos_neg): New prototype. + * expr.c (expand_expr_real_2) : If both arguments + are known to be in between 0 and signed maximum inclusive, try to + expand both unsigned and signed divmod and use the cheaper one from + those. + +2017-02-22 Jeff Law + + PR tree-optimization/79578 + * tree-ssa-dse.c (clear_bytes_written_by): Use operand_equal_p + to compare base operands. + +2017-02-22 Segher Boessenkool + + PR target/79211 + * config/rs6000/rs6000.md (*fsel4): Use + gpc_reg_operand instead of fpr_reg_operand. + +2017-02-22 Sameera Deshpande + + * config/mips/mips.c (mips_return_in_memory): Force FP + vector types to be returned in memory for o32 ABI. + +2017-02-22 Jakub Jelinek + + * dwarf2out.c (gen_variable_die): For -gdwarf-5, use DW_TAG_variable + instead of DW_TAG_member for static data member declarations and don't + set no_linkage_name for static inline data members. + (gen_member_die): For -gdwarf-5 don't change DW_TAG_variable + to DW_TAG_member. + +2017-02-22 Martin Liska + + * doc/invoke.texi: Replace inequality signs with square brackets + for -Wnormalized. + +2017-02-22 Matthew Fortune + + PR target/78660 + * lra-constraints.c (simplify_operand_subreg): Handle + WORD_REGISTER_OPERATIONS targets. + +2017-02-22 Jakub Jelinek + + PR target/70465 + * reg-stack.c (emit_swap_insn): Treat (float_extend:?F (mem:?F)) + and (const_double:?F) like (mem:?F) for the purpose of fxch %st(1) + elimination by swapping fld*. + +2017-02-22 Richard Biener + + PR tree-optimization/79673 + * tree-ssa-pre.c (compute_avail): Use wide_int_to_tree to + convert the [TARGET_]MEM_REF offset INTEGER_CST, scrapping off + irrelevant address-space qualifiers and avoiding a + ADDR_SPACE_CONVERT_EXPR from fold_convert. + +2017-02-22 Richard Biener + + PR tree-optimization/79666 + * tree-vrp.c (extract_range_from_binary_expr_1): Make sure + to not symbolically negate if that may introduce undefined + overflow. + +2017-02-22 Martin Liska + + PR lto/79587 + * data-streamer-in.c (streamer_read_gcov_count): Remove assert. + * data-streamer-out.c (streamer_write_gcov_count_stream): + Likewise. + * value-prof.c (stream_out_histogram_value): Make assert more + precise based on type of counter. + +2017-02-21 Uros Bizjak + + PR target/79593 + * config/i386/i386.md (standard_x87sse_constant_load splitter): + Use nonimmediate_operand instead of memory_operand for operand 1. + (float-extend standard_x87sse_constant_load splitter): Ditto. + +2017-02-21 Jeff Law + + PR tree-optimization/79621 + * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Ignore + blocks with edges to themselves. + +2017-02-21 Jakub Jelinek + + PR target/79633 + * tree-chkp-opt.c (chkp_optimize_string_function_calls): Use + is_gimple_call instead of comparing gimple_code with GIMPLE_CALL. + Use gimple_call_builtin_p. + + PR target/79570 + * sel-sched.c (moveup_expr_cached): Don't call sel_bb_head + on temporarily removed DEBUG_INSNs. + + PR tree-optimization/79649 + * tree-loop-distribution.c (classify_partition): Give up on + non-generic address space loads/stores. + +2017-02-21 Aldy Hernandez + + * doc/loop.texi (Loop manipulation): Remove nonexistent + tree_ssa_loop_version from the documentation. + * cfgloopmanip.c (loop_version): Document CONDITION_BB argument. + +2017-02-21 Jakub Jelinek + + PR target/79494 + * config/i386/i386.c (ix86_expand_split_stack_prologue): Call + make_reg_eh_region_note_nothrow_nononlocal on call_insn. + * config/rs6000/rs6000.c: Include except.h. + (rs6000_expand_split_stack_prologue): Call + make_reg_eh_region_note_nothrow_nononlocal on the call insn. + +2017-02-21 Martin Jambor + + PR lto/79579 + * ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges + have been analyzed. + +2017-02-21 Martin Jambor + + * common.opt (-fipa-cp-alignment): Mark as ignored and preserved + for backward compatibility only. + * doc/invoke.texi (Option Summary): Remove all references to + -fipa-cp-alignment. + +2017-02-21 Matthew Fortune + + PR target/78660 + Revert: + 2017-02-20 Matthew Fortune + + * lra-constraints.c (curr_insn_transform): Handle + WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs. + +2017-02-21 Martin Liska + + * config/i386/i386.opt: Replace -masm-dialect with -masm. + +2017-02-21 Thomas Schwinge + + PR translation/79638 + * config/nvptx/nvptx.c (ENTRY_TEMPLATE): Single out "%ntid.y". + +2017-02-21 Eric Botcazou + + PR ada/67205 + * config/arm/arm.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define. + (arm_function_ok_for_sibcall): Return false for an indirect call by + descriptor if all the argument registers are used. + (arm_relayout_function): Use FUNCTION_ALIGNMENT macro to adjust the + alignment of the function. + +2017-02-21 Jakub Jelinek + + PR tree-optimization/61441 + * simplify-rtx.c (simplify_const_unary_operation): For + -fsignaling-nans and sNaN operand, return NULL_RTX rather than + the sNaN unmodified. + +2017-02-20 Bernd Edlinger + + * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe. + (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR + instead of SYSTEM_HEADER_DIR. + +2017-02-20 Gerald Pfeifer + Martin Liška + + * doc/invoke.texi (use-after-scope-direct-emission-threshold): + Fix typos and grammar, use active voice, and clarify. + +2017-02-20 Marek Polacek + + PR middle-end/79537 + * gimplify.c (gimplify_expr): Handle unused *&&L;. + + PR sanitizer/79558 + * ubsan.c (ubsan_type_descriptor): Check if TYPE_MAX_VALUE is null. + +2017-02-20 Jakub Jelinek + + PR target/79568 + * config/i386/i386.c (ix86_expand_builtin): Handle + OPTION_MASK_ISA_AVX512VL and OPTION_MASK_ISA_64BIT in + ix86_builtins_isa[fcode].isa as a requirement of those + flags and any other flag in the bitmask. + (ix86_init_mmx_sse_builtins): Use 0 instead of + ~OPTION_MASK_ISA_64BIT as mask. + * config/i386/i386-builtin.def (__builtin_ia32_rdtsc, + __builtin_ia32_rdtscp, __builtin_ia32_pause, __builtin_ia32_bsrsi, + __builtin_ia32_rdpmc, __builtin_ia32_rolqi, __builtin_ia32_rolhi, + __builtin_ia32_rorqi, __builtin_ia32_rorhi): Likewise. + +2017-02-20 Matthew Fortune + + PR target/78012 + * lra-constraints.c (split_reg): Check requested split mode + is supported by the register. + +2017-02-20 Matthew Fortune + + * lra-constraints.c (simplify_operand_subreg): Remove early + return false. + +2017-02-20 Matthew Fortune + + PR target/78660 + * lra-constraints.c (curr_insn_transform): Tighten condition + for converting SUBREG reloads from OP_OUT to OP_INOUT. + +2017-02-20 Matthew Fortune + + PR target/78660 + * lra-constraints.c (curr_insn_transform): Handle + WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs. + +2017-02-19 Uros Bizjak + + Revert: + 2016-05-30 Uros Bizjak + + * config/i386/sync.md (mfence_nosse): Use "lock orl $0, -4(%esp)". + +2017-02-19 Jonathan Wakely + + PR c++/69523 + * doc/invoke.texi (C++ Dialect Options) [-Wliteral-suffix]: Update + description. + +2017-02-19 Prathamesh Kulkarni + + * gimple-pretty-print.c (dump_ternary_rhs): Adjust gimple dump format + for FMA_EXPR. + +2017-02-18 Jakub Jelinek + + * final.c (last_columnnum, override_columnnum): New variables. + (final_start_function): Set last_columnnum, pass it to begin_prologue + hook and pass 0 to dwarf2out_begin_prologue. + (final_scan_insn): Update override_columnnum. Pass last_columnnum + to source_line debug hook. + (notice_source_line): Compute last_columnnum and for debug_column_info + return true on column changes. + * debug.h (struct gcc_debug_hooks): Add column argument to + source_line and begin_prologue hooks. + (debug_nothing_int_charstar_int_bool): Remove prototype. + (debug_nothing_int_int_charstar, + debug_nothing_int_int_charstar_int_bool): New prototypes. + (dwarf2out_begin_prologue): Add column argument. + * debug.c (do_nothing_debug_hooks): Adjust source_line and + begin_prologue hooks. + (debug_nothing_int_charstar_int_bool): Remove. + (debug_nothing_int_int_charstar, + debug_nothing_int_int_charstar_int_bool): New functions. + * dwarf2out.c (dwarf2out_begin_prologue): Add column argument, pass it + through to dwarf2out_source_line. + (dwarf2_lineno_debug_hooks): Adjust begin_prologue hook. + (dwarf2out_source_line): Add column argument, emit it if requested. + * sdbout.c (sdbout_source_line, sdbout_begin_prologue): Add column + arguments. + * xcoffout.h (xcoffout_begin_prologue, xcoffout_source_line): Likewise. + * xcoffout.c (xcoffout_begin_prologue, xcoffout_source_line): Likewise. + * vmsdbgout.c (vmsdbgout_begin_prologue): Add column argument, pass it + through to dwarf2out_begin_prologue. + (vmsdbgout_source_line): Add column argument, pass it through to + dwarf2out_source_line. + * dbxout.c (dbxout_begin_prologue): Add column argument, adjust + dbxout_source_line caller. + (dbxout_source_line): Add column argument. + + * common.opt (gno-column-info, gcolumn-info): New options. + * dwarf2out.c (dwarf2_lineno_debug_hooks): Formatting fix. + (check_die): Also test for multiple DW_AT_decl_column attributes. + (add_src_coords_attributes, dwarf2out_imported_module_or_decl_1): Add + DW_AT_decl_column if requested. + (gen_subprogram_die): Compare and/or add also DW_AT_decl_column + if requested. + (gen_variable_die): Likewise. + (add_call_src_coords_attributes): Add DW_AT_call_column if requested. + * doc/invoke.texi (-gcolumn-info, -gno-column-info): Document. + + PR target/79569 + * config/i386/i386.opt (m3dnowa): Replace Undocumented with Report. + * common/config/i386/i386-common.c (OPTION_MASK_ISA_3DNOW_A_SET): Define. + (ix86_handle_option): Handle OPT_m3dnowa. + * doc/invoke.texi (-m3dnowa): Document. + * doc/extend.texi (__builtin_ia32_pmulhuw, __builtin_ia32_pf2iw): Use + -m3dnowa instead of -m3dnow -march=athlon. + + PR target/79559 + * config/i386/i386.c (ix86_print_operand): Use output_operand_lossage + instead of gcc_assert for K, r and R code checks. Formatting fixes. + +2017-02-17 Bill Schmidt + + PR target/79261 + * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add + support for CODE_FOR_vsx_xxpermdi_v2d[fi]_be. + * config/rs6000/rs6000.md (reload_gpr_from_vsx): Call + generator for vsx_xxpermdi__be. + * config/rs6000/vsx.md (vsx_xxpermdi_): Remove logic to + force big-endian semantics. + (vsx_xxpermdi__be): New define_expand with same + implementation as previous version of vsx_xxpermdi_. + +2017-02-17 Jakub Jelinek + + PR tree-optimization/79327 + * gimple-ssa-sprintf.c (format_integer): Remove likely_adjust + variable, its initialization and use. + +2017-02-17 Julia Koval + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_RDPID_SET): New. + (OPTION_MASK_ISA_PKU_UNSET): New. + (ix86_handle_option): Handle -mrdpid. + * config/i386/cpuid.h (bit_RDPID): New. + * config/i386/driver-i386.c (host_detect_local_cpu): + Detect RDPID feature. + * config/i386/i386-builtin.def (__builtin_ia32_rdpid): New. + * config/i386/i386-c.c (ix86_target_macros_internal): + Handle RDPID flag. + * config/i386/i386.c (ix86_target_string): Add -mrdpid to isa2_opts. + (ix86_valid_target_attribute_inner_p): Add "rdpid". + (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID. + * config/i386/i386.h (TARGET_RDPID, TARGET_RDPID_P): New. + * config/i386/i386.md (define_insn "rdpid"): New. + * config/i386/i386.opt Add -mrdpid. + * config/i386/immintrin.h (_rdpid_u32): New. + +2017-02-17 Vladimir Makarov + + PR rtl-optimization/79541 + * lra-constraints.c (curr_insn_transform): Remove wrong asm insn + instead of transforming it into USE. + +2017-02-17 Segher Boessenkool + + * config/rs6000/rs6000.md (extendsfdf2): Remove default arguments. + If HONOR_SNANS (SFmode) force the input to a register. + (*extendsfdf2_fpr): Add !HONOR_SNANS (SFmode) condition. + (*extendsfdf2_snan): New pattern, used when using SNaNs; it generates + an frsp or similar insn. + +2017-02-17 Martin Liska + + PR rtl-optimization/79577 + * params.def (selsched-max-sched-times): Increase minimum to 1. + +2017-02-17 Martin Liska + + PR rtl-optimization/79574 + * gcse.c (want_to_gcse_p): Prevent integer overflow. + +2017-02-17 Martin Liska + + PR tree-optimization/79529 + * tree-ssa-loop-unswitch.c (is_maybe_undefined): Use + ssa_defined_default_def_p to handle cases which are implicitly + defined. + * tree-ssa.c (ssa_defined_default_def_p): New function. + (ssa_undefined_value_p): Use ssa_defined_default_def_p to handle cases + which are implicitly defined. + * tree-ssa.h (ssa_defined_default_def_p): Declare. + +2017-02-17 Richard Biener + + PR middle-end/79576 + * params.def (max-ssa-name-query-depth): Limit to 10. + +2017-02-17 Richard Biener + + PR tree-optimization/79552 + * tree-ssa-structalias.c (visit_loadstore): Properly verify + default defs. + +2017-02-17 Richard Biener + + PR bootstrap/79567 + * genmatch.c (output_line_directive): Handle DIR_SEPARATOR_2. + +2017-02-17 Marek Polacek + + PR middle-end/79536 + * fold-const.c (fold_negate_expr_1): Renamed from fold_negate_expr. + (fold_negate_expr): New wrapper. + +2017-02-16 Sandra Loosemore + + * doc/invoke.texi (C++ Dialect Options) [-Wno-non-template-friend]: + Correct terminology and de-emphasize pre-standard behavior. + +2017-02-16 Alan Modra + + PR rtl-optimization/79286 + * ira.c (def_dominates_uses): New function. + (update_equiv_regs): Don't create an equivalence for insns that + may trap where the register def does not dominate the use. + +2017-02-16 Vladimir Makarov + + PR rtl-optimization/78127 + * lra.c (lra): Call lra_eliminate before finish the loop after + lra_constraint. + +2017-02-16 Richard Biener + + * graphite.h: Do not include isl/isl_val_gmp.h, instead include + isl/isl_val.h. + * graphite-isl-ast-to-gimple.c (gmp_cst_to_tree): Remove. + (gcc_expression_from_isl_expr_int): Use generic isl_val interface. + * graphite-sese-to-poly.c: Do not include isl/isl_val_gmp.h. + (isl_val_int_from_wi): New function. + (extract_affine_gmp): Rename to ... + (extract_affine_wi): ... this, take a widest_int. + (extract_affine_int): Just wrap extract_affine_wi. + (add_param_constraints): Use isl_val_int_from_wi. + (add_loop_constraints): Likewise, and extract_affine_wi. + +2017-02-15 Jeff Law + + PR middle-end/79521 + * ira-costs.c (scan_one_insn): Check have_regs_of_mode before calling + ira_init_register_move_cost_if_necessary. + +2017-02-15 Martin Sebor + + PR middle-end/32003 + * doc/invoke.texi (-fdump-final-insns): Replace option accidentally + removed in a prior commit. + +2017-02-15 Bin Cheng + + PR tree-optimization/79347 + * tree-vect-loop-manip.c (vect_do_peeling): Maintain profile + counters during peeling. + +2017-02-15 Thomas Schwinge + + * Makefile.in (site.exp): Remove "set ISLVER". + +2017-02-15 Jakub Jelinek + + PR target/79487 + * real.c (real_from_integer): Call real_convert even for decimal. + +2017-02-15 Dominik Vogt + + PR target/79421 + * config/s390/s390.c: define TARGET_CUSTOM_FUNCTION_DESCRIPTORS. + +2017-02-14 Andrew Pinski + + * config/aarch64/aarch64-cores.def (thunderx2t99): Move to under 'C" + cores and change the partno/implementer to be correct. + (thunderx2t99p1): New core which replaces thunderx2t99 and still has + the 'B" as the implementer. + * config/aarch64/aarch64-tune.md: Regenerate. + +2017-02-14 Carl Love + + * config/rs6000/rs6000.c: Add case statement entry to make the + xvcvuxdsp built-in argument unsigned. + * config/rs6000/vsx.md: Fix the source and return operand types so they + match the instruction definitions from the ISA document. Fix typo + in the instruction generation for the (define_insn "vsx_xvcvuxdsp" + statement. + +2017-02-14 Vladimir Makarov + + PR target/79282 + * lra-int.h (struct lra_operand_data, struct lra_insn_reg): Add + member early_clobber_alts. + * lra-lives.c (reg_early_clobber_p): New. + (process_bb_lives): Use it. + * lra.c (new_insn_reg): New arg early_clobber_alts. Use it. + (debug_operand_data): Initialize early_clobber_alts. + (setup_operand_alternative): Set up early_clobber_alts. + (collect_non_operand_hard_regs): Ditto. Pass early clobber + alternatives to new_insn_reg. + (add_regs_to_insn_regno_info): Add arg early_clobber_alts. Use + it. + (lra_update_insn_regno_info): Pass the new arg. + +2017-02-14 Jakub Jelinek + + PR middle-end/79505 + * omp-offload.c (free_oacc_loop): Release loop->ifns vector. + (new_oacc_loop_raw): Don't clear already cleared fields. + + PR target/79481 + * config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd, + _mm512_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd, + _mm512_prefetch_i64gather_ps): New inline functions and macros. + +2017-02-14 Uros Bizjak + + PR target/79495 + * config/i386/i386.md (*movxf_internal): Add (o,rC) alternative. + +2017-02-14 H.J. Lu + + PR target/79498 + * config/i386/i386.c (timode_scalar_chain::convert_insn): Insert + the extra instruction to the right place to store 128-bit constant + when needed. + +2017-02-14 Martin Sebor + + PR middle-end/79448 + * gimple-ssa-sprintf.c (format_directive): Avoid issuing INT_MAX + warning for strings of unknown length. + +2017-02-13 Segher Boessenkool + + * config.gcc (supported_defaults) [powerpc*-*-*]: Update. + +2017-02-14 Jeff Law + + PR target/79404 + * ira-costs.c (scan_one_insn): Initialize register move costs + for pseudos seen in USE/CLOBBER insns. + + PR tree-optimization/79095 + * tree-vrp.c (extract_range_from_binary_expr_1): For EXACT_DIV_EXPR, + if the numerator has the range ~[0,0] make the resultant range ~[0,0]. + (extract_range_from_binary_expr): For MINUS_EXPR with no derived range, + if the operands are known to be not equal, then the resulting range + is ~[0,0]. + (intersect_ranges): If the new range is ~[0,0] and the old range is + wide, then prefer ~[0,0]. + * tree-vrp.c (overflow_comparison_p_1): New function. + (overflow_comparison_p): New function. + * tree-vrp.c (register_edge_assert_for_2): Register additional asserts + if NAME is used in an overflow test. + (vrp_evaluate_conditional_warnv_with_ops): If the ops represent an + overflow check that can be expressed as an equality test, then adjust + ops to be that equality test. + +2017-02-14 Andreas Krebbel + + * config/s390/s390-builtin-types.def: Remove flags argument. + * config/s390/s390.c (s390_init_builtins): Likewise. + +2017-02-14 Martin Liska + + * tree-ssa-loop-unswitch.c (hoist_guard): Release get_loop_body + vector. Fix trailing white spaces. + +2017-02-14 James Greenhalgh + + * config/aarch64/aarch64.c (aarch64_simd_container_mode): Handle + HFmode. + +2017-02-14 Kyrylo Tkachov + + PR rtl-optimization/68664 + * config/arm/arm.c (arm_sched_can_speculate_insn): + New function. Declare prototype. + (TARGET_SCHED_CAN_SPECULATE_INSN): Define. + +2017-02-14 Kyrylo Tkachov + + PR rtl-optimization/68664 + * config/aarch64/aarch64.c (aarch64_sched_can_speculate_insn): + New function. + (TARGET_SCHED_CAN_SPECULATE_INSN): Define. + +2017-02-14 Amit Pawar + + * config/i386/i386.c (znver1_cost): Fix the alignment for function and + max skip bytes for function, loop and jump. + +2017-02-14 Prathamesh Kulkarni + + * gimple-pretty-print.c (dump_unary_rhs): Adjust dump format for + ABS_EXPR for gimple dump. + +2017-02-14 Jakub Jelinek + + PR target/79462 + * config/sh/sh.c (expand_cbranchdi4): Don't clear operands[4]. + + PR tree-optimization/79408 + * tree-vrp.c (simplify_div_or_mod_using_ranges): Handle also the + case when on TRUNC_MOD_EXPR op0 is INTEGER_CST. + (simplify_stmt_using_ranges): Call simplify_div_or_mod_using_ranges + also if rhs1 is INTEGER_CST. + +2017-02-14 Richard Biener + + PR middle-end/79432 + * tree-into-ssa.c (insert_phi_nodes): When the function can + have abnormal edges rewrite SSA names with broken use-def + dominance out of SSA and register them for PHI insertion. + +2017-02-13 Martin Sebor + + PR middle-end/79496 + * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): Avoid + clearing info.nowrite flag when snprintf size argument is a range. + +2017-02-13 Jakub Jelinek + + * cprop.c (cprop_jump): Add missing space in string literal. + * tree-ssa-structalias.c (rewrite_constraints): Likewise. + (get_constraint_for_component_ref): Likewise. + * df-core.c (df_worklist_dataflow_doublequeue): Likewise. + * tree-outof-ssa.c (insert_partition_copy_on_edge): Likewise. + * lra-constraints.c (process_alt_operands): Likewise. + * ipa-inline.c (inline_small_functions): Likewise. + * tree-ssa-sccvn.c (visit_reference_op_store): Likewise. + * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise. + * trans-mem.c (diagnose_tm_1_op): Likewise. + * omp-grid.c (grid_find_single_omp_among_assignments): Likewise. + (grid_parallel_clauses_gridifiable): Likewise. + + * config/nvptx/mkoffload.c (process): Add space in between + , and %d. + + * config/i386/i386.h (REG_CLASS_NAMES): Add , in between + "MOD4_SSE_REGS" and "ALL_REGS". + + * spellcheck.c (test_data): Add , in between "foo" and "food". + +2017-02-13 Aaron Sawdey + + PR target/79449 + * config/rs6000/rs6000.c (expand_block_compare): Make sure runtime + boundary crossing check and subsequent code generation agree. + +2017-02-13 Kyrylo Tkachov + + * config/aarch64/aarch64.c (has_memory_op): Delete. + (aarch64_madd_needs_nop): Use contains_mem_rtx_p instead of + has_memory_op. + +2017-02-13 Jakub Jelinek + + PR rtl-optimization/79388 + PR rtl-optimization/79450 + * combine.c (distribute_notes): When removing TEM_INSN for which + corresponding dest has last value recorded, invalidate that last + value. + +2017-02-13 Kyrylo Tkachov + + * config/arm/arm.c (arm_print_tune_info): Use ASM_COMMENT_START instead + of explicit '@'. Add missing assembly comment marker on branch costs + printout. + +2017-02-13 Nathan Sidwell + + * gengtype-lex.l (): Add '/'. + +2017-02-13 Martin Liska + + PR c/79471 + * calls.c (expand_call): Replace XALLOCAVEC with XCNEWVEC. + +2017-02-13 Richard Biener + + * configure.ac (HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS): + Remove. + * configure: Re-generate. + * config.in: Likewise. + * graphite-dependences.c: Simplify as if + HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS was defined. + * graphite-isl-ast-to-gimple.c: Likewise. + * graphite-optimize-isl.c: Likewise. + * graphite-poly.c: Likewise. + * graphite-sese-to-poly.c: Likewise. + * graphite.h: Likewise. + * toplev.c: Include isl/version.h and use isl_version () for + printing the ISL version. + * doc/install.texi: Update ISL requirement. + +2017-02-12 Gerald Pfeifer + + * doc/standards.texi (Standards): Update reference to + Objective-C 2.0. + +2017-02-12 Gerald Pfeifer + + * doc/extend.texi (Named Address Spaces): sourceware.org now + defaults to https. + * doc/install.texi (Binaries): Ditto. + (Specific): Ditto. + +2017-02-11 Sandra Loosemore + + * doc/cpp.texi: Replace "stringify"/"stringification" with C + standard terminology "stringize"/"stringizing" throughout. + * doc/cppinternals.texi: Likewise. + +2017-02-11 Sandra Loosemore + + * doc/extend.texi: Fix some spelling mistakes and typos. + * doc/invoke.texi: Likewise. + +2017-02-11 Jan Hubicka + + PR ipa/79224 + * params.def (inline-min-speedup) Change from 10 to 8. + +2017-02-11 Jakub Jelinek + + * doc/invoke.texi (fopenmp): Bump OpenMP version from 4.0 to + 4.5. + +2017-02-11 Jan Hubicka + + PR ipa/79224 + * ipa-inline-analysis.c (get_minimal_bb): New function. + (record_modified): Use it. + (remap_edge_change_prob): Handle also ancestor functions. + +2017-02-11 Gerald Pfeifer + + * doc/contrib.texi (Contributors): Remove broken link into + the Mauve CVS repository. + +2017-02-11 Jakub Jelinek + + PR middle-end/79454 + * internal-fn.c (expand_vector_ubsan_overflow): Use piece-wise + result computation whenever lhs doesn't have vector mode, not + just when it has BLKmode. + +2017-02-10 Gerald Pfeifer + + * doc/makefile.texi (profiledbootstrap): Refer to the + installation instructions only in textual form. + +2017-02-10 Aaron Sawdey + + PR target/79295 + * config/rs6000/altivec.md (bcd): Fix constraints. + +2017-02-10 Gerald Pfeifer + + * doc/install.texi (Specific): Use https for blackfin.uclinux.org. + (Specific): Update mingw-w64 reference. + (Binaries): Ditto. + (Specific): Remove broken link to Renesas RX processor. + +2017-02-10 Richard Biener + + * toplev.c (process_options): Do not mention obsolete graphite + options when printing sorry message about missing graphite support. + Mention -floop-nest-optimize. + +2017-02-10 Christophe Lyon + + * config/aarch64/arm_neon.h (vtst_p8): Rewrite without asm. + (vtst_p16): Likewise. + (vtstq_p8): Likewise. + (vtstq_p16): Likewise. + (vtst_p64): New. + (vtstq_p64): Likewise. + * config/arm/arm_neon.h (vgetq_lane_p64): New. + (vset_lane_p64): New. + (vsetq_lane_p64): New. + +2017-02-10 Jakub Jelinek + + PR tree-optimization/79411 + * tree-ssa-reassoc.c (is_reassociable_op): Return false if + stmt operands are SSA_NAMEs used in abnormal phis. + (can_reassociate_p): Return false if op is SSA_NAME used in abnormal + phis. + +2017-02-09 Jan Hubicka + + PR ipa/70795 + * cgraphunit.c (cgraph_node::add_new_function): Set externally_visible + flag if needed. + +2017-02-09 Jan Hubicka + + * tree-ssa-loop-unswitch.c (hoist_guard): Update profile. + +2017-02-09 Jakub Jelinek + + * omp-offload.c (oacc_loop_auto_partitions): Use || instead of | + to avoid warning. + + PR c/79413 + * gimplify.h (is_gimple_sizepos): Only test for INTEGER_CST constants, + not arbitrary TREE_CONSTANT. + + PR c/79431 + * gimplify.c (gimplify_adjust_omp_clauses): Ignore + "omp declare target link" attribute unless is_global_var. + * omp-offload.c (find_link_var_op): Likewise. + +2017-02-09 Nathan Sidwell + Chung-Lin Tang + + * gimplify.c (gimplify_scan_omp_clauses): No special handling for + OMP_CLAUSE_TILE. + (gimplify_adjust_omp_clauses): Don't delete TILE. + (gimplify_omp_for): Deal with TILE. + * internal-fn.c (expand_GOACC_TILE): New function. + * internal-fn.def (GOACC_DIM_POS): Comment may be overly conservative. + (GOACC_TILE): New. + * omp-expand.c (struct oacc_collapse): Add tile and outer fields. + (expand_oacc_collapse_init): Add LOC paramter. Initialize tile + element fields. + (expand_oacc_collapse_vars): Add INNER parm, adjust for tiling, + avoid DIV for outermost collapse var. + (expand_oacc_for): Insert tile element loop as needed. Adjust. + Remove out of date comments, fix whitespace. + * omp-general.c (omp_extract_for_data): Deal with tiling. + * omp-general.h (enum oacc_loop_flags): Add OLF_TILE flag, + adjust OLF_DIM_BASE value. + (struct omp_for_data): Add tiling field. + * omp-low.c (scan_sharing_clauses): Allow OMP_CLAUSE_TILE. + (lower_oacc_head_mark): Add OLF_TILE as appropriate. Ensure 2 levels + for auto loops. Remove default auto determining, moved to + oacc_loop_fixed_partitions. + * omp-offload.c (struct oacc_loop): Change 'ifns' to vector of call + stmts, add e_mask field. + (oacc_dim_call): New function, abstracted out from oacc_thread_numbers. + (oacc_thread_numbers): Use oacc_dim_call. + (oacc_xform_tile): New. + (new_oacc_loop_raw): Initialize e_mask, adjust for ifns vector. + (finish_oacc_loop): Adjust for ifns vector. + (oacc_loop_discover_walk): Append loop abstraction sites to list, + add case for GOACC_TILE fns. + (oacc_loop_xform_loop): Delete. + (oacc_loop_process): Iterate over call list directly, and add + handling for GOACC_TILE fns. + (oacc_loop_fixed_partitions): Determine default auto, deal with TILE, + dump partitioning. + (oacc_loop_auto_partitions): Add outer_assign parm. Assign all but + vector partitioning to outer loops. Assign 2 partitions to loops + when available. Add TILE handling. + (oacc_loop_partition): Adjust oacc_loop_auto_partitions call. + (execite_oacc_device_lower): Process GOACC_TILE fns, + ignore unknown specs. + * tree-nested.c (convert_nonlocal_omp_clauses): Allow OMP_CLAUSE_TILE. + * tree.c (omp_clause_num_ops): Adjust TILE ops. + * tree.h (OMP_CLAUSE_TILE_ITERVAR, OMP_CLAUSE_TILE_COUNT): New. + +2017-02-09 Gerald Pfeifer + + * configure.ac (ACX_BUGURL): Update. + * configure: Regenerate. + +2017-02-09 Richard Biener + + PR tree-optimization/69823 + * graphite-scop-detection.c (scop_detection::harmful_loop_in_region): + Properly enumerate all BBs in the region. Use auto_vec/auto_bitmap. + +2017-02-09 Andrew Burgess + + * config/arc/arc-c.def: Add __NPS400__ definition. + * config/arc/arc.h (CPP_SPEC): Don't define __NPS400__ here. + (TARGET_NPS400): Define. + +2017-02-09 Andrew Burgess + + * config/arc/arc-arch.h (arc_arch_t): Move unchanged to earlier in + file. + (arc_cpu_t): Change base_architecture field, arch, to a arc_arc_t + pointer, arch_info. + (arc_cpu_types): Fill the arch_info field with a pointer into the + arc_arch_types table. + (arc_selected_cpu): Declare. + * config/arc/arc.c (arc_selected_cpu): Make global. + (arc_selected_arch): Delete. + (arc_base_cpu): Delete. + (arc_override_options): Remove references to deleted variables, + update access to arch information. + (ARC_OPT): Update access to arch information. + (ARC_OPTX): Likewise. + * config/arc/arc.h (arc_base_cpu): Remove declaration. + (TARGET_ARC600): Update access to arch information. + (TARGET_ARC601): Likewise. + (TARGET_ARC700): Likewise. + (TARGET_EM): Likewise. + (TARGET_HS): Likewise. + * config/arc/driver-arc.c (arc_cpu_to_as): Update access to arch + information. + +2017-02-08 Pat Haugen + + PR target/78604 + * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Invert + condition/operands for integer GE/LE/GEU/LEU operations. + +2017-02-08 Segher Boessenkool + + PR translation/79397 + * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling + of AltiVec. + +2017-02-08 Martin Jambor + + PR ipa/79375 + * ipa-prop.c (ipa_alloc_node_params): Make static, return bool + whether allocation happened. + (ipa_initialize_node_params): Do not call ipa_alloc_node_params if + nothing was allocated. + +2017-02-08 Jakub Jelinek + + PR tree-optimization/79408 + * tree-vrp.c (simplify_div_or_mod_using_ranges): If op1 is not + constant, but SSA_NAME with a known integer range, use the minimum + of that range instead of op1 to determine if modulo can be replaced + with its first operand. + +2016-02-08 Kyrylo Tkachov + + * config/riscv/riscv.c (riscv_build_integer_1): Avoid use of INT16_MAX. + +2017-02-08 Richard Biener + + PR tree-optimization/71824 + * graphite-scop-detection.c (scop_detection::build_scop_breadth): + Check all loops contained in the merged region. + +2017-02-07 Andrew Pinski + + * config/aarch64/aarch64.md (popcount2): New pattern. + +2017-02-07 Andrew Pinski + + * config/aarch64/aarch64-cores.def (thunderx): Disable LSE. + (thunderxt88): Likewise. + (thunderxt81): Disable LSE and change v8.1 to v8. + (thunderxt83): Likewise. + +2017-02-07 Jakub Jelinek + Richard Biener + + PR middle-end/79399 + * ira-int.h (struct target_ira_int): Change x_max_struct_costs_size + type from int to size_t. + * ira-costs.c (struct_costs_size): Change type from int to size_t. + +2017-02-07 Jakub Jelinek + + PR rtl-optimization/79386 + * cprop.c (bypass_conditional_jumps): Initialize + bypass_last_basic_block already before splitting bbs after + unconditional traps... + (bypass_conditional_jumps): ... rather than here. + + PR target/79299 + * config/i386/sse.md (xtg_mode, gatherq_mode): New mode attrs. + (*avx512f_gathersi, *avx512f_gathersi_2, + *avx512f_gatherdi, *avx512f_gatherdi_2): Use them, + fix -masm=intel patterns. + +2017-02-07 Richard Biener + + PR tree-optimization/79256 + PR middle-end/79278 + * builtins.c (get_object_alignment_2): Use min_align_of_type + to extract alignment for MEM_REFs to honor BIGGEST_FIELD_ALIGNMENT + and ADJUST_FIELD_ALIGN. + + * doc/tm.texi.in (ADJUST_FIELD_ALIGN): Adjust to take additional + type parameter. + * doc/tm.texi: Regenerate. + * stor-layout.c (layout_decl): Adjust. + (update_alignment_for_field): Likewise. + (place_field): Likewise. + (min_align_of_type): Likewise. + * config/arc/arc.h (ADJUST_FIELD_ALIGN): Adjust. + * config/epiphany/epiphany.h (ADJUST_FIELD_ALIGN): Likewise. + * config/epiphany/epiphany.c (epiphany_adjust_field_align): Likewise. + * config/frv/frv.h (ADJUST_FIELD_ALIGN): Likewise. + * config/frv/frv.c (frv_adjust_field_align): Likewise. + * config/i386/i386.h (ADJUST_FIELD_ALIGN): Likewise. + * config/i386/i386.c (x86_field_alignment): Likewise. + * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise. + * config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Likewise. + * config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise. + * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise. + * config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Likewise. + * config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p): + Likewise. + + Revert + 2017-01-30 Richard Biener + + PR tree-optimization/79256 + * targhooks.c (default_builtin_vector_alignment_reachable): Honor + BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus + alignment on TYPE. + +2017-02-07 Toma Tabacu + + * config/mips/mips.c (mips_expand_builtin_insn): Convert the QImode + argument of the pshufh, psllh, psllw, psrah, psraw, psrlh, psrlw + builtins to SImode and emit a zero-extend, if necessary. + +2017-02-06 Palmer Dabbelt + + * docs/invoke.texi (RISC-V Options): Alphabetize. + +2017-02-06 Palmer Dabbelt + + * doc/invoke.texi (RISC-V Options): Use two spaces to separate + options. + +2017-02-06 Palmer Dabbelt + + * config/riscv/riscv.c: New file. + * common/config/riscv/riscv-common.c: Likewise. + * config.gcc: Likewise. + * config/riscv/constraints.md: Likewise. + * config/riscv/elf.h: Likewise. + * config/riscv/generic.md: Likewise. + * config/riscv/linux.h: Likewise. + * config/riscv/multilib-generator: Likewise. + * config/riscv/peephole.md: Likewise. + * config/riscv/pic.md: Likewise. + * config/riscv/predicates.md: Likewise. + * config/riscv/riscv-builtins.c: Likewise. + * config/riscv/riscv-c.c: Likewise. + * config/riscv/riscv-ftypes.def: Likewise. + * config/riscv/riscv-modes.def: Likewise. + * config/riscv/riscv-opts.h: Likewise. + * config/riscv/riscv-protos.h: Likewise. + * config/riscv/riscv.h: Likewise. + * config/riscv/riscv.md: Likewise. + * config/riscv/riscv.opt: Likewise. + * config/riscv/sync.md: Likewise. + * config/riscv/t-elf-multilib: Likewise. + * config/riscv/t-linux: Likewise. + * config/riscv/t-linux-multilib: Likewise. + * config/riscv/t-riscv: Likewise. + * configure.ac: Likewise. + * doc/contrib.texi: Add Kito Cheng, Palmer Dabbelt, and Andrew + Waterman as RISC-V maintainers. + * doc/install.texi: Add RISC-V entries. + * doc/invoke.texi: Add RISC-V options section. + * doc/md.texi: Add RISC-V constraints section. + * configure: Regenerated. + +2017-02-06 Michael Meissner + + PR target/66144 + * config/rs6000/vector.md (vcond): Allow the true and + false values to be constant vectors with all 0 or all 1 bits set. + (vcondu): Likewise. + * config/rs6000/predicates.md (vector_int_reg_or_same_bit): New + predicate. + (fpmask_comparison_operator): Update comment. + (vecint_comparison_operator): New predicate. + * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Optimize + vector conditionals when the true and false values are constant + vectors with all 0 bits or all 1 bits set. + +2017-02-06 Martin Sebor + + PR tree-optimization/79376 + * gimple-fold.c (get_range_strlen): Set the minimum length to zero. + +2017-02-06 Uros Bizjak + + * config/i386/sse.md (vector modes -> vec_extract* splitter): Use + explicit subreg RTX with operand 1. Use VECTOR_MODE_P predicate + to simplify split condition. + +2017-02-06 Jakub Jelinek + + * omp-expand.c (oxpand_omp_atomic_fetch_op, + expand_omp_atomic_pipeline): Return false if can_atomic_load_p is + false. + +2017-02-06 Segher Boessenkool + + PR rtl-optimization/68664 + * target.def (can_speculate_insn): New hook. + * doc/tm.texi.in (TARGET_SCHED_CAN_SPECULATE_INSN): New hook. + * doc/tm.texi: Regenerate. + * sched-rgn.c (can_schedule_ready_p): Use the new hook. + * config/rs6000/rs6000.c (TARGET_SCHED_CAN_SPECULATE_INSN): New macro. + (rs6000_sched_can_speculate_insn): New function. + +2017-02-06 Jakub Jelinek + + PR tree-optimization/79284 + * tree-vectorizer.h (VECT_SCALAR_BOOLEAN_TYPE_P): Define. + * tree-vect-stmts.c (vect_get_vec_def_for_operand, + vectorizable_mask_load_store, vectorizable_operation, + vect_is_simple_cond, get_same_sized_vectype): Use it instead + of comparing TREE_CODE of a type against BOOLEAN_TYPE. + * tree-vect-patterns.c (check_bool_pattern, search_type_for_mask_1, + vect_recog_bool_pattern, vect_recog_mask_conversion_pattern): Likewise. + * tree-vect-slp.c (vect_get_constant_vectors): Likewise. + * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise. + Remove redundant gimple_code (stmt) == GIMPLE_ASSIGN test after + is_gimple_assign (stmt). Replace another such test with + is_gimple_assign (stmt). + +2017-02-06 Georg-Johann Lay + + PR target/78883 + * config/avr/avr.c (rtl-iter.h): Include it. + (TARGET_LEGITIMATE_COMBINED_INSN): New hook define... + (avr_legitimate_combined_insn): ...and implementation. + +2017-02-06 Dominik Vogt + + * config/s390/predicates.md ("larl_operand"): Use macros from hwint.h. + * config/s390/s390.c (s390_const_operand_ok) + (s390_canonicalize_comparison, s390_extract_part) + (s390_single_part, s390_contiguous_bitmask_nowrap_p) + (s390_contiguous_bitmask_p, s390_rtx_costs) + (legitimize_pic_address): Likewise. + * config/s390/s390.md ("clzdi2", "clztidi2"): Likewise. + * config/s390/vx-builtins.md ("vec_genbytemaskv16qi") + ("vec_permi", "vfae", "*vfaes", "vstrc") + ("*vstrcs"): Use UINTVAL() to set unsigned HOST_WIDE_INT. + * config/s390/vector.md ("vec_vfenes"): Likewise. + +2017-02-06 Georg-Johann Lay + + * config/avr/avr.md (*addhi3_zero_extend): Add alternative where + REGNO($0) == REGNO($1). + +2017-02-06 Andreas Krebbel + + * config/s390/linux.h(SIZE_TYPE): Add comment. + +2017-02-06 Julian Brown + Naveen H.S + Virendra Pathak + + * config/aarch64/aarch64-cores.def: Change the scheduler + to Thunderx2t99. + * config/aarch64/aarch64.md: Include thunderx2t99.md. + * config/aarch64/thunderx2t99.md: New file. + +2017-02-05 Gerald Pfeifer + + * doc/standards.texi (Go Language): Update link to language + standard. + +2017-02-05 Jan Hubicka + + * tree-eh.c (lower_resx): Sanitize profile. + (cleanup_empty_eh_move_lp): Likewise. + +2017-02-05 Jan Hubicka + + PR tree-ssa/79347 + * cfgloopmanip.c (lv_adjust_loop_entry_edge, loop_version): Add + ELSE_PROB. + * cfgloopmanip.h (loop_version): Update prototype. + * modulo-sched.c (sms_schedule): Update call of loop_version. + * tree-if-conv.c(version_loop_for_if_conversion): Likewise. + * tree-parloops.c (gen_parallel_loop): Likewise. + * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Likewise. + * tree-ssa-loop-split.c (split_loop): Likewise. + * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Likewise. + * tree-vect-loop-manip.c (vect_loop_versioning): Likewise. + +2017-02-05 Martin Liska + + PR bootstrap/78985 + * config/s390/s390.c (s390_gimplify_va_arg): Initialize local + variable to NULL. + (print_operand_address): Initialize a struct to zero. + +2017-02-05 Gerald Pfeifer + + * doc/contrib.texi (Contributors): Refer to Hans Boehm's + garbage collector only in textual form. + +2017-02-05 Gerald Pfeifer + + * doc/extend.texi (x86 specific memory model extensions for + transactional memory): Simplify a phrase. + +2017-02-05 Eric Botcazou + + PR target/79353 + * config/sparc/sync.md (atomic_loaddi_1): Replace 'U' constraint with + 'r', 'm' constraint with 'T' and !TARGET_ARCH64 with TARGET_ARCH32. + (atomic_storedi_1): Likewise. + +2017-02-04 Jakub Jelinek + + PR tree-optimization/79338 + * tree-parloops.c (gather_scalar_reductions): Don't call + vect_analyze_loop_form for loop->inner before destroying loop's + loop_vinfo. + +2017-02-03 Martin Sebor + + PR tree-optimization/79327 + * gimple-ssa-sprintf.c (tree_digits): Avoid adding the base prefix + when precision has resulted in leading zeros. + (format_integer): Adjust the likely counter to assume an unknown + argument that may be zero is non-zero. + +2017-02-03 Jason Merrill + + PR c++/78689 + * tree-inline.c (copy_tree_body_r) [COND_EXPR]: Revert change to + avoid copying non-taken branch. + +2017-02-03 Jakub Jelinek + + PR tree-optimization/79340 + * tree-vect-loop.c (vectorizable_reduction): Release + vec_defs elements after safe_splicing them into other vectors. + Formatting fixes. + + PR tree-optimization/79327 + * gimple-ssa-sprintf.c (adjust_range_for_overflow): If returning + true, always set *argmin and *argmax to TYPE_{MIN,MAX}_VALUE of + dirtype. + (format_integer): Use wide_int_to_tree instead of build_int_cst + + to_?hwi. If argmin is NULL, just set argmin and argmax to + TYPE_{MIN,MAX}_VALUE of argtype. Simplify and fix computation + of shortest and longest sequence. + +2017-02-03 Uros Bizjak + + * config/i386/i386.c (dimode_scalar_chain::convert_reg): + Use pextrd for TARGET_SSE4_1 when creating scalar copy. + +2017-02-03 Walter Lee + + PR target/78862 + * config/tilegx/tilegx.md (tilegx_expand_prologue): Add blockage + after initial stackframe link reg save. + * config/tilepro/tilepro.md (tilepro_expand_prologue): Likewise. + +2017-02-03 Jakub Jelinek + + PR target/79354 + * config/rs6000/rs6000.md (movsi_from_sf): Use wb constraint instead of + wu for stxssp alternative. + +2017-02-03 Martin Sebor + + PR tree-optimization/79352 + * gimple-fold.c (get_range_strlen): Add argument. + (get_range_strlen): Change return type to bool. + (get_maxval_strlen): Pass in a dummy argument. + * gimple-fold.h (get_range_strlen): Change return type to bool. + * gimple-ssa-sprintf.c (get_string_length): Set unlikely counter. + * tree.h (array_at_struct_end_p): Add argument. + * tree.c (array_at_struct_end_p): Handle it. + +2017-02-03 Martin Liska + + PR lto/66295 + * multiple_target.c (create_dispatcher_calls): Redirect edge + from a caller of a dispatcher. + (expand_target_clones): Make the clones local. + (ipa_target_clone): Do both target clones and resolvers. + (ipa_dispatcher_calls): Remove the pass. + (pass_dispatcher_calls::gate): Likewise. + (make_pass_dispatcher_calls): Likewise. + * passes.def (pass_target_clone): Put as very first IPA early + pass. + +2017-02-03 Martin Liska + + * symtab.c (symtab_node::binds_to_current_def_p): Bail out + in case of a function with ifunc attribute. + +2017-02-03 Martin Liska + + * cgraph.c (cgraph_node::dump): Dump function version info. + * symtab.c (symtab_node::dump_base): Add missing new line. + +2017-02-02 Jan Hubicka + + * tree-ssa-ifcombine.c (update_profile_after_ifcombine): New function. + (ifcombine_ifandif): Use it. + +2017-02-03 Martin Liska + + * doc/invoke.texi: Document default value for + use-after-scope-direct-emission-threshold. + +2017-02-03 Martin Liska + + PR tree-optimization/79339 + * gimple-ssa-sprintf.c (format_floating_max): Call mpfr_clear. + (format_floating): Likewise. + +2017-02-03 Martin Liska + + PR ipa/79337 + * ipa-prop.c (ipa_node_params_t::insert): Remove current + implementation. + (ipa_node_params_t::remove): Likewise. + * ipa-prop.h (ipa_node_params::ipa_node_params): Make default + initialization from removed ipa_node_params_t::insert. + (ipa_node_params::~ipa_node_params): Move from removed + ipa_node_params_t::release. + * symbol-summary.h (symbol_summary::m_released): New member. + Do not release a summary twice. Do not allow to call finalizer + for types of a summary that live in GGC memory. + +2017-02-02 Naveen H.S + + * config/aarch64/aarch64.c (thunderx2t99_tunings): Enable AES and + cmp_branch fusion. + +2017-02-02 Martin Sebor + + PR middle-end/79275 + * gimple-ssa-sprintf.c (get_string_length): Set lower bound to zero. + (format_string): Tighten up the range of output for non-constant + strings and correct the expected range for wide non-constant strings. + +2017-02-02 Martin Sebor + + * doc/invoke.texi (-maccumulate-args): Fix bad grammar. + + PR middle-end/32003 + * doc/invoke.texi (-fdump-tree-): Remove pass-specific options from + index. + (-fdump-tree-@var): Add to index and document how to come up + with pass-specific option and dump file names. + (-fdump-passes): Clarify where to look for output. + +2017-02-02 Jan Hubicka + + PR middle-end/77445 + * tree-ssa-threadbackward.c (profitable_jump_thread_path): Dump + statistics of the analyzed path; allow threading for speed when + any of BBs along the path are optimized for speed. + +2017-02-02 Eric Botcazou + + PR middle-end/78468 + * emit-rtl.c (init_emit): Add ??? comment for problematic alignment + settings of the virtual registers. + + Revert again + 2016-08-23 Dominik Vogt + + * explow.c (get_dynamic_stack_size): Take known alignment of stack + pointer + STACK_DYNAMIC_OFFSET into account when calculating the size + needed. + +2017-02-02 Andreas Krebbel + + * config/s390/vx-builtins.md ("vec_ceil", "vec_floor") + ("vec_trunc", "vec_roundc", "vec_round"): Remove expanders. + +2017-02-02 Andreas Krebbel + + * config/s390/s390.md: Add missing comments with the expanded + mnemonics. + * config/s390/vector.md: Likewise. + * config/s390/vx-builtins.md: Likewise. + +2017-02-02 Jakub Jelinek + + PR target/79197 + * config/rs6000/rs6000.md (*fixuns_truncdi2_fctiduz): Rename to ... + (fixuns_truncdi2): ... this, remove previous expander. Put all + conditions on a single line. + +2017-02-02 Andreas Krebbel + + * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename + __S390_VX__ to __VX__. + +2017-02-01 Andrew Pinski + + * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Pass + stmt_info to record_stmt_cost. + (vect_get_known_peeling_cost): Pass stmt_info if known to + record_stmt_cost. + * config/aarch64/aarch64-protos.h (cpu_vector_cost): Split + cpu_vector_cost field into + scalar_int_stmt_cost and scalar_fp_stmt_cost. Split vec_stmt_cost + field into vec_int_stmt_cost and vec_fp_stmt_cost. + * config/aarch64/aarch64.c (generic_vector_cost): Update for the + splitting of scalar_stmt_cost and vec_stmt_cost. + (thunderx_vector_cost): Likewise. + (cortexa57_vector_cost): LIkewise. + (exynosm1_vector_cost): Likewise. + (xgene1_vector_cost): Likewise. + (thunderx2t99_vector_cost): Improve after the splitting of the two + fields. + (aarch64_builtin_vectorization_cost): Update for the splitting of + scalar_stmt_cost and vec_stmt_cost. + +2017-02-01 Torvald Riegel + Richard Henderson + + * builtins.c (fold_builtin_atomic_always_lock_free): Make "lock-free" + conditional on existance of a fast atomic load. + * optabs-query.c (can_atomic_load_p): New function. + * optabs-query.h (can_atomic_load_p): Declare it. + * optabs.c (expand_atomic_exchange): Always delegate to libatomic if + no fast atomic load is available for the particular size of access. + (expand_atomic_compare_and_swap): Likewise. + (expand_atomic_load): Likewise. + (expand_atomic_store): Likewise. + (expand_atomic_fetch_op): Likewise. + * testsuite/lib/target-supports.exp + (check_effective_target_sync_int_128): Remove x86 because it provides + no fast atomic load. + (check_effective_target_sync_int_128_runtime): Likewise. + +2017-02-01 Richard Biener + + * graphite.c: Include tree-vectorizer.h for find_loop_location. + (graphite_transform_loops): Provide opt-info for optimized nests. + * tree-parloop.c (parallelize_loops): Provide opt-info for + parallelized loops. + +2017-02-01 Richard Biener + + PR middle-end/79315 + * tree-cfg.c (move_stmt_op): Never set TREE_BLOCK when it + was not set before. + +2017-02-01 Richard Biener + + PR tree-optimization/71824 + * graphite-scop-detection.c (scop_detection::build_scop_breadth): + Verify the loops are valid in the merged SESE region. + (scop_detection::can_represent_loop_1): Check analyzing the + evolution of the number of iterations in the region succeeds. + +2017-01-31 Ian Lance Taylor + + * config/i386/i386.c (ix86_expand_split_stack_prologue): Add + REG_ARGS_SIZE note to 32-bit push insns and call insn. + +2017-01-31 David Malcolm + + PR preprocessor/79210 + * input.c (get_substring_ranges_for_loc): Replace line_width + assertion with error-handling. + +2017-01-31 Richard Biener + + PR tree-optimization/77318 + * graphite-sese-to-poly.c (extract_affine): Fix assert. + (create_pw_aff_from_tree): Take loop parameter. + (add_condition_to_pbb): Pass loop of the condition to + create_pw_aff_from_tree. + +2017-01-31 Jakub Jelinek + + * config/s390/s390.c (s390_asan_shadow_offset): New function. + (TARGET_ASAN_SHADOW_OFFSET): Redefine. + +2017-01-31 Michael Meissner + + PR target/78597 + PR target/79038 + * config/rs6000/rs6000-protos.h (convert_float128_to_int): Delete, + no longer used. + (convert_int_to_float128): Likewise. + * config/rs6000/rs6000.c (convert_float128_to_int): Likewise. + (convert_int_to_float128): Likewise. + * config/rs6000/rs6000.md (UNSPEC_IEEE128_MOVE): Likewise. + (UNSPEC_IEEE128_CONVERT): Likewise. + (floatsi2, FLOAT128 iterator): Bypass calling + rs6000_expand_float128_convert if we have IEEE 128-bit hardware. + Use local variables for IBM extended format. + (fix_truncsi2, FLOAT128 iterator): Likewise. + (fix_truncsi2_fprs): Likewise. + (fixuns_trunc2): Likewise. + (floatuns2, IEEE128 iterator): Likewise. + (fix_si2_hw): Rework the IEEE 128-bt hardware support + to know that we can now have integers of all sizes in vector + registers. + (fix_di2_hw): Likewise. + (float_si2_hw): Likewise. + (fix_si2_hw): Likewise. + (fixuns_si2_hw): Likewise. + (float_di2_hw): Likewise. + (float_di2_hw): Likewise. + (float_si2_hw): Likewise. + (floatuns_di2_hw): Likewise. + (floatuns_si2_hw): Likewise. + (xscvqpwz_): Delete, no longer used. + (xscvqpdz_): Likewise. + (xscvdqp_): Likewise. + (ieee128_mfvsrd_64bit): Likewise. + (ieee128_mfvsrd_32bit): Likewise. + (ieee128_mfvsrwz): Likewise. + (ieee128_mtvsrw): Likewise. + (ieee128_mtvsrd_64bit): Likewise. + (ieee128_mtvsrd_32bit): Likewise. + +2017-01-31 Martin Liska + + PR ipa/79285 + * ipa-prop.c (ipa_free_all_node_params): Call release method + instead of ~sumbol_summary to not to trigger double times + dtor of hash_map. + +2017-01-31 Aldy Hernandez + + PR tree-optimization/71691 + * bitmap.h (class auto_bitmap): New. + * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Call + is_maybe_undefined instead of ssa_undefined_value_p. + +2017-01-31 Andreas Krebbel + + * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename + __S390_ARCH_LEVEL__ to __ARCH__. + +2017-01-31 Jakub Jelinek + + PR tree-optimization/79267 + * value-prof.c (gimple_ic): Only drop lhs for noreturn calls + if should_remove_lhs_p is true. + +2017-01-30 Alexandre Oliva + + PR debug/63238 + * dwarf2out.c (clone_as_declaration): Drop DW_AT_alignment. + (add_alignment_attribute): New. + (base_type_die): Add alignment attribute. + (subrange_type_die): Likewise. + (modified_type_die): Likewise. + (gen_array_type_die): Likewise. + (gen_descr_array_type_die: Likewise. + (gen_enumeration_type_die): Likewise. + (gen_subprogram_die): Likewise. + (gen_variable_die): Likewise. + (gen_field_die): Likewise. + (gen_ptr_to_mbr_type_die): Likewise. + (gen_struct_or_union_type_die): Likewise. + (gen_subroutine_type_die): Likewise. + (gen_typedef_die): Likewise. + (base_type_cmp): Compare alignment attribute. + +2017-01-30 Aaron Sawdey + + PR target/79170 + * config/rs6000/altivec.md (*setb_internal): Rename to setb_signed. + (setb_unsigned) New pattern for setb with CCUNS. + * config/rs6000/rs6000.c (expand_block_compare): Use a different + subfc./subfe sequence to avoid overflow problems. Generate a + shorter sequence with cmpld/setb for power9. + * config/rs6000/rs6000.md (subf3_carry_dot2): Add a new pattern + for generating subfc. instruction. + (cmpstrsi): Add TARGET_POPCNTD predicate as the generate sequence + now uses this instruction. + +2017-01-30 Ian Lance Taylor + + PR debug/79289 + * dwarf2out.c (gen_type_die_with_usage): When picking a variant + for FUNCTION_TYPE/METHOD_TYPE, use the first matching one. + +2017-01-30 Martin Sebor + + * gimple-ssa-sprintf.c (fmtresult::adjust_for_width_or_precision): + Move constant to the right of a relational operator. + (get_mpfr_format_length, format_character, format_string): Ditto. + (should_warn_p, maybe_warn): Same. + + * doc/invoke.texi (-Wformat-truncation=1): Fix typo. + +2017-01-30 Maxim Ostapenko + + PR lto/79061 + * asan.c (get_translation_unit_decl): Remove function. + (asan_add_global): Force has_dynamic_init to zero in LTO mode. + +2017-01-30 Martin Liska + + PR gcov-profile/79259 + * opts.c (common_handle_option): Enable flag_ipa_bit_cp w/ + -fprofile-generate. + +2017-01-30 Martin Liska + + PR bootstrap/78985 + * config/aarch64/cortex-a57-fma-steering.c (func_fma_steering::analyze): + Initialize variables with NULL value. + +2017-01-30 Richard Earnshaw + + PR target/79260 + * config.gcc (arm*-*-*): Add arm/arm-flags.h and arm/arm-isa.h to + tm_p_file. + * arm/arm-protos.h: Don't directly include arm-flags.h and arm-isa.h. + +2017-01-30 Richard Biener + + PR tree-optimization/79276 + * tree-vrp.c (process_assert_insertions): Properly adjust common + when removing a duplicate. + +2017-01-30 Richard Biener + + PR tree-optimization/79256 + * targhooks.c (default_builtin_vector_alignment_reachable): Honor + BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus + alignment on TYPE. + * tree.c (build_aligned_type): Set TYPE_USER_ALIGN. + +2017-01-30 Dominik Vogt + + PR target/79240 + * config/s390/s390.md ("*rsbg__srl_bitmask") + ("*rsbg__sll_bitmask") + ("*extzv__srl") + ("*extzv__sll"): + Use contiguous_bitmask_nowrap_operand. + +2017-01-29 Bill Schmidt + + PR target/79268 + * config/rs6000/altivec.h (vec_xl): Revise #define. + (vec_xst): Likewise. + +2017-01-27 Uros Bizjak + + * config/i386/i386.c (print_reg): Use REGNO instead of true_regnum. + +2017-01-27 Bernd Schmidt + + PR rtl-optimization/79194 + * cprop.c (one_cprop_pass): Move deletion of code after unconditional + traps before call to bypass_conditional_jumps. + +2017-01-27 Vladimir Makarov + + PR tree-optimization/71374 + * lra-constraints.c (check_conflict_input_operands): New. + (match_reload): Use it. + +2017-01-27 Vladimir Makarov + + PR target/79131 + * lra-assigns.c (find_hard_regno_for_1): Take endianess for into + account to calculate conflict_set. + +2017-01-27 Bin Cheng + + PR rtl-optimization/78559 + * combine.c (try_combine): Discard REG_EQUAL and REG_EQUIV for + other_insn in combine. + +2017-01-27 Pekka Jääskeläinen + + * builtin-types.def: Use unsigned_char_type_node for BT_UINT8. Use + uint16_type_node for BT_UINT16. + +2017-01-27 David Malcolm + + * doc/sourcebuild.texi (Testsuites): Add "GIMPLE Tests" and + "RTL Tests" to menu. + (GIMPLE Tests): New node. + (RTL Tests): New node. + +2017-01-27 Richard Biener + + PR tree-optimization/79245 + * tree-loop-distribution.c (distribute_loop): Apply cost + modeling also to detected patterns. + +2017-01-27 Richard Biener + + PR tree-optimization/71433 + * tree-vrp.c (register_new_assert_for): Revert earlier changes. + (compare_assert_loc): New function. + (process_assert_insertions): Sort and optimize assert locations + to remove duplicates and push down identical assertions on + edges to their destination block. + +2017-01-27 Richard Biener + + PR tree-optimization/79244 + * tree-vrp.c (remove_range_assertions): Forcefully propagate + out SSA names even if abnormal. + +2017-01-27 Jakub Jelinek + + * realmpfr.h: Poison MPFR_RND{N,Z,U,D}. + * gimple-ssa-sprintf.c (format_floating_max): Use GMP_RNDN + instead of MPFR_RNDN. + +2017-01-27 Richard Earnshaw + + PR target/79239 + * arm.c (arm_option_override): Don't call build_target_option_node + until after doing all option overrides. + (arm_valid_target_attribute_tree): Likewise. + +2017-01-27 Martin Liska + + * doc/invoke.texi (-fprofile-arcs): Document profiling support + for {cd}tors and C++ {cd}tors. + +2017-01-27 Dominik Vogt + + * config/s390/s390.md ("*setmem_long_and") + ("*setmem_long_and_31z"): Use zero_extend instead of and. + +2017-01-26 Martin Sebor + + * gimple-ssa-sprintf.c (format_floating): Simplify the computation + of precision. + +2017-01-26 Martin Sebor + + * gimple-ssa-sprintf.c (format_floating): Test HAVE_XFmode and + HAVE_DFmode before using XFmode or DFmode. + (parse_directive): Avoid using the z length modifier to avoid + the ISO C++98 does not support the ‘z’ gnu_printf length modifier. + + PR middle-end/78703 + * gimple-ssa-sprintf.c (adjust_for_width_or_precision): Change + to accept adjustment as an array. + (get_int_range): New function. + (struct directive): Make width and prec arrays. + (directive::set_width, directive::set_precision): Call get_int_range. + (format_integer, format_floating): Handle width and precision ranges. + (format_string, parse_directive): Same. + +2017-01-26 Jakub Jelinek + + PR debug/79129 + * dwarf2out.c (generate_skeleton_bottom_up): For children with + comdat_type_p set, just clone them, but keep the children in the + original DIE. + + PR debug/78835 + * dwarf2out.c (prune_unused_types): Mark all functions with DIEs + which have direct callers with -fvar-tracking-assignments enabled + in the current TU. + (resolve_addr): Avoid adding skeleton DIEs for DW_AT_call_origin + inside of type units. + +2017-01-26 Martin Sebor + + PR middle-end/78703 + * gimple-ssa-sprintf.c (struct result_range): Add likely and + unlikely counters. + (struct format_result): Replace number_chars, number_chars_min, + and number_chars_max with a single member of struct result_range. + Remove bounded. + (format_result::operator+=): Adjust. + (struct fmtresult): Remove bounded. Handle likely and unlikely + counters. + (fmtresult::adjust_for_width_or_precision): New function. + (fmtresult:type_max_digits): New function. + (bytes_remaining): Handle likely and unlikely counters. + (min_bytes_remaining): Remove. + (format_percent): Simplify. + (format_integer, format_floating): Set likely and unlikely counters. + (get_string_length, format_character, format_string): Same. + (format_plain, should_warn_p): New function. + (maybe_warn): Call should_warn_p. Update diagnostic messages + and handle those for all directives, including plain strings. + (format_directive): Handle likely and unlikely counters. + Remove unnecessary quoting from diagnostics. Add an informational + note. + (add_bytes): Remove. + (pass_sprintf_length::compute_format_length): Simplify. + (try_substitute_return_value): Handle likely and unlikely counters. + +2017-01-26 Carl Love + + * config/rs6000/rs6000-c (altivec_overloaded_builtins): Remove + bogus entries for the P8V_BUILTIN_VEC_VGBBD built-ins + +2017-01-26 Vladimir Makarov + + PR target/79131 + * lra-assigns.c (setup_live_pseudos_and_spill_after_risky): Take + endianess for subregs into account. + * lra-constraints.c (lra_constraints): Do risky transformations + always on the first iteration. + * lra-lives.c (check_pseudos_live_through_calls): Add arg + last_call_used_reg_set. + (process_bb_lives): Define and use last_call_used_reg_set. + * lra.c (lra): Always continue after lra_constraints on the first + iteration. + +2017-01-26 Kirill Yukhin + + * gcc.target/i386/avx512bw-kshiftlq-2.c: Use unsigned long long + constant. + * gcc.target/i386/avx512bw-kshiftrq-2.c: Ditto. + +2017-01-26 Jakub Jelinek + + * config/i386/avx512fintrin.h (_ktest_mask16_u8, + _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): Move to ... + * config/i386/avx512dqintrin.h (_ktest_mask16_u8, + _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): ... here. + * config/i386/i386-builtin.def (__builtin_ia32_ktestchi, + __builtin_ia32_ktestzhi, __builtin_ia32_kaddhi): Use + OPTION_MASK_ISA_AVX512DQ instead of OPTION_MASK_ISA_AVX512F. + * config/i386/sse.md (SWI1248_AVX512BWDQ2): New mode iterator. + (kadd, ktest): Use it instead of SWI1248_AVX512BWDQ. + +2017-01-26 Marek Polacek + + PR c/79199 + * fold-const.c (operand_equal_p) [COND_EXPR]: Use OP_SAME_WITH_NULL + for the third operand. + +2017-01-26 Jakub Jelinek + + PR middle-end/79236 + * omp-low.c (struct omp_context): Add simt_stmt field. + (scan_omp_for): Return omp_context *. + (scan_omp_simd): Set simt_stmt on the non-_simt_ SIMD + context to the _simt_ SIMD stmt. + (lower_omp_for): For combined SIMD with sibling _simt_ + SIMD, make sure to use the same decls in _looptemp_ + clauses as in the sibling. + +2017-01-26 David Sherwood + + PR middle-end/79212 + * gimplify.c (omp_notice_variable): Add GOVD_SEEN flag to variables in + all contexts. + +2017-01-26 Jakub Jelinek + + PR target/70465 + * reg-stack.c (emit_swap_insn): Instead of fld a; fld b; fxchg %st(1); + emit fld b; fld a; if possible. + + * brig-builtins.def: Update copyright years. + * config/arm/arm_acle_builtins.def: Update copyright years. + +2017-01-25 Michael Meissner + + PR target/79179 + * config/rs6000/vsx.md (vsx_extract__store): Use wY + constraint instead of o for the stxsd instruction. + +2017-01-25 Carl Love + + * config/rs6000/rs6000-c (altivec_overloaded_builtins): Fix order + of entries for ALTIVEC_BUILTIN_VEC_PACKS and P8V_BUILTIN_VEC_VGBBD. + +2017-01-25 Jonathan Wakely + + * doc/invoke.texi (C++ Dialect Options): Fix typo. + +2017-01-25 Richard Biener + + PR tree-optimization/69264 + * target.def (vector_alignment_reachable): Improve documentation. + * doc/tm.texi: Regenerate. + * targhooks.c (default_builtin_vector_alignment_reachable): Simplify + and add a comment. + * tree-vect-data-refs.c (vect_supportable_dr_alignment): Revert + earlier changes with respect to TYPE_USER_ALIGN. + (vector_alignment_reachable_p): Likewise. Improve dumping. + +2016-01-25 Kyrylo Tkachov + + PR target/79145 + * config/arm/arm.md (xordi3): Force constant operand into a register + for TARGET_IWMMXT. + +2016-01-25 Kyrylo Tkachov + + * doc/invoke.texi (-fstore-merging): Correct default optimization + levels at which it is enabled. + (-O): Move -fstore-merging from list to... + (-O2): ... Here. + +2017-01-25 Richard Biener + + PR debug/78363 + * omp-expand.c: Include debug.h. + (expand_omp_taskreg): Make sure to generate early debug before + outlining anything from a function. + (expand_omp_target): Likewise. + (grid_expand_target_grid_body): Likewise. + +2017-01-25 Maxim Ostapenko + + PR lto/79061 + * asan.c (get_translation_unit_decl): New function. + (asan_add_global): Extract modules file name from globals + TRANSLATION_UNIT_DECL name. + +2017-01-24 Eric Botcazou + + PR target/77439 + * config/arm/arm.c (arm_function_ok_for_sibcall): Add back restriction + for long calls with APCS frame and VFP. + +2017-01-24 David Malcolm + + * cfg.c (original_copy_tables_initialized_p): New function. + * cfg.h (original_copy_tables_initialized_p): New decl. + * cfgrtl.c (relink_block_chain): Guard the call to + free_original_copy_tables with a call to + original_copy_tables_initialized_p. + * cgraph.h (symtab_node::native_rtl_p): New decl. + * cgraphunit.c (symtab_node::native_rtl_p): New function. + (symtab_node::needed_p): Don't assert for early assembly output + for __RTL functions. + (cgraph_node::finalize_function): Set "force_output" for __RTL + functions. + (cgraph_node::analyze): Bail out early for __RTL functions. + (analyze_functions): Update assertion to support __RTL functions. + (cgraph_node::expand): Bail out early for __RTL functions. + * final.c (rest_of_clean_state): Don't call delete_tree_ssa for + __RTL functions. + * function.h (struct function): Update comment for field + "pass_startwith". + * gimple-expr.c: Include "tree-pass.h". + (gimple_has_body_p): Return false for __RTL functions. + * Makefile.in (OBJS): Add run-rtl-passes.o. + * pass_manager.h (gcc::pass_manager::get_rest_of_compilation): New + accessor. + (gcc::pass_manager::get_clean_slate): New accessor. + * passes.c: Include "insn-addr.h". + (should_skip_pass_p): Add logging. Update logic for running + "expand" to be compatible with both __GIMPLE and __RTL. Guard + property-provider override so it is only done for gimple passes. + Don't skip dfinit. + (skip_pass): New function. + (execute_one_pass): Call skip_pass when skipping passes. + * read-md.c (md_reader::read_char): Support filtering + the input to a subset of line numbers. + (md_reader::md_reader): Initialize fields + m_first_line and m_last_line. + (md_reader::read_file_fragment): New function. + * read-md.h (md_reader::read_file_fragment): New decl. + (md_reader::m_first_line): New field. + (md_reader::m_last_line): New field. + * read-rtl-function.c (function_reader::create_function): Only + create cfun if it doesn't already exist. Set PROP_rtl on cfun's + curr_properties. Set DECL_INITIAL to a dummy block. + (read_rtl_function_body_from_file_range): New function. + * read-rtl-function.h (read_rtl_function_body_from_file_range): + New decl. + * run-rtl-passes.c: New file. + * run-rtl-passes.h: New file. + +2017-01-24 Jeff Law + + * config/microblaze/microblaze.h (ASM_FORMAT_PRIVATE_NAME): Increase + buffer size. + +2017-01-24 Bin Cheng + + PR tree-optimization/79159 + * tree-ssa-loop-niter.c (get_cst_init_from_scev): New function. + (record_nonwrapping_iv): Improve boundary using above function if no + value range information. + +2017-01-24 Pekka Jääskeläinen + Martin Jambor + + * brig-builtins.def: New file. + * builtins.def (DEF_HSAIL_BUILTIN): New macro. + (DEF_HSAIL_ATOMIC_BUILTIN): Likewise. + (DEF_HSAIL_SAT_BUILTIN): Likewise. + (DEF_HSAIL_INTR_BUILTIN): Likewise. + (DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN): Likewise. + * builtin-types.def (BT_INT8): New. + (BT_INT16): Likewise. + (BT_UINT8): Likewise. + (BT_UINT16): Likewise. + (BT_FN_ULONG): Likewise. + (BT_FN_UINT_INT): Likewise. + (BT_FN_UINT_ULONG): Likewise. + (BT_FN_UINT_LONG): Likewise. + (BT_FN_UINT_PTR): Likewise. + (BT_FN_ULONG_PTR): Likewise. + (BT_FN_INT8_FLOAT): Likewise. + (BT_FN_INT16_FLOAT): Likewise. + (BT_FN_UINT32_FLOAT): Likewise. + (BT_FN_UINT16_FLOAT): Likewise. + (BT_FN_UINT8_FLOAT): Likewise. + (BT_FN_UINT64_FLOAT): Likewise. + (BT_FN_UINT16_UINT32): Likewise. + (BT_FN_UINT32_UINT16): Likewise. + (BT_FN_UINT16_UINT16_UINT16): Likewise. + (BT_FN_INT_PTR_INT): Likewise. + (BT_FN_UINT_PTR_UINT): Likewise. + (BT_FN_LONG_PTR_LONG): Likewise. + (BT_FN_ULONG_PTR_ULONG): Likewise. + (BT_FN_VOID_UINT64_UINT64): Likewise. + (BT_FN_UINT8_UINT8_UINT8): Likewise. + (BT_FN_INT8_INT8_INT8): Likewise. + (BT_FN_INT16_INT16_INT16): Likewise. + (BT_FN_INT_INT_INT): Likewise. + (BT_FN_UINT_FLOAT_UINT): Likewise. + (BT_FN_FLOAT_UINT_UINT): Likewise. + (BT_FN_ULONG_UINT_UINT): Likewise. + (BT_FN_ULONG_UINT_PTR): Likewise. + (BT_FN_ULONG_ULONG_ULONG): Likewise. + (BT_FN_UINT_UINT_UINT): Likewise. + (BT_FN_VOID_UINT_PTR): Likewise. + (BT_FN_UINT_UINT_PTR: Likewise. + (BT_FN_UINT32_UINT64_PTR): Likewise. + (BT_FN_INT_INT_UINT_UINT): Likewise. + (BT_FN_UINT_UINT_UINT_UINT): Likewise. + (BT_FN_UINT_UINT_UINT_PTR): Likewise. + (BT_FN_UINT_ULONG_ULONG_UINT): Likewise. + (BT_FN_ULONG_ULONG_ULONG_ULONG): Likewise. + (BT_FN_LONG_LONG_UINT_UINT): Likewise. + (BT_FN_ULONG_ULONG_UINT_UINT): Likewise. + (BT_FN_VOID_UINT32_UINT64_PTR): Likewise. + (BT_FN_VOID_UINT32_UINT32_PTR): Likewise. + (BT_FN_UINT_UINT_UINT_UINT_UINT): Likewise. + (BT_FN_UINT_FLOAT_FLOAT_FLOAT_FLOAT): Likewise. + (BT_FN_ULONG_ULONG_ULONG_UINT_UINT): Likewise. + * doc/frontends.texi: List BRIG FE. + * doc/install.texi (Testing): Add BRIG tesring requirements. + * doc/invoke.texi (Overall Options): Mention BRIG. + * doc/standards.texi (Standards): Doucment BRIG HSA version. + +2017-01-24 Richard Biener + + PR translation/79208 + * ipa-devirt.c (odr_types_equivalent_p): Fix typo in diagnostic. + +2017-01-24 Martin Jambor + + PR bootstrap/79198 + * ipa-prop.c (ipa_free_all_node_params): Call summary destructor. + * ipa-prop.c (ipa_node_params_t::insert): Initialize fields known_csts + and known_contexts. + +2017-01-24 Aldy Hernandez + + PR middle-end/79123 + * gimple-ssa-warn-alloca.c (alloca_call_type): Make sure + casts from signed to unsigned really don't have a range. + +2017-01-24 Markus Trippelsdorf + + * gimple-ssa-sprintf.c (format_floating): Change MPFR_RNDx to + GMP_RNDx for compatiblity. + +2017-01-24 Martin Liska + + PR bootstrap/79132 + * tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Insert assert + that would prevent us to call alloca with -1 as argument. + +2017-01-24 Jakub Jelinek + + * dwarf2out.c (output_compilation_unit_header, output_file_names): + Avoid -Wformat-security warning. + +2017-01-23 Andrew Pinski + + * config/aarch64/aarch64.c (thunderx2t99_addrcost_table): Improve + cost table. + +2017-01-23 Martin Sebor + + PR middle-end/78703 + * gimple-ssa-sprintf.c (warn_level): New global. + (format_integer): Use it here and throughout the rest of the file. + Use the same switch to compute sign as base. + (maybe_warn): New function. + (format_directive): Factor out warnings into maybe_warn. + Add debugging output. Use warn_level. + (add_bytes): Use warn_level. + (pass_sprintf_length::compute_format_length): Add debugging output. + (try_substitute_return_value): Same. + (pass_sprintf_length::handle_gimple_call): Set and use warn_level. + + PR middle-end/78703 + * gimple-ssa-sprintf.c (struct format_result): Remove constant member. + (struct fmtresult, format_integer, format_floating): Adjust. + (fmtresult::fmtresult): Set max correctly in two argument ctor. + (get_string_length, format_string,format_directive): Same. + (pass_sprintf_length::compute_format_length): Same. + (try_substitute_return_value): Simplify slightly. + + PR middle-end/78703 + * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust formatting. + (fmtresult::operator+=): Outlined. + (struct fmtresult): Add ctors. + (struct conversion_spec): Rename... + (struct directive): ...to this. Add and remove data members. + (directive::set_width, directive::set_precision): New functions. + (format_percent): Use fmtresult ctor. + (get_width_and_precision): Remove. + (format_integer): Make naming changes. Avoid computing width and + precision. + (format_floating): Same. Adjust indentation. + (format_character, format_none): New functions. + (format_string): Moved character handling to format_character. + (format_directive): Remove arguments, change return type. + (parse_directive): New function. + (pass_sprintf_length::compute_format_length): Move directive + parsing to parse_directive. + +2017-01-23 Jakub Jelinek + + * tree.h (assign_assembler_name_if_neeeded): Rename to ... + (assign_assembler_name_if_needed): ... this. + * tree.c (assign_assembler_name_if_neeeded): Rename to ... + (assign_assembler_name_if_needed): ... this. + (free_lang_data_in_cgraph): Adjust callers. + * cgraphunit.c (cgraph_node::analyze): Likewise. + * omp-expand.c (expand_omp_taskreg, expand_omp_target): + Likewise. + +2017-01-23 Richard Biener + + PR tree-optimization/79088 + PR tree-optimization/79188 + * tree-ssa-threadupdate.c (mark_threaded_blocks): Move code + resetting loop bounds after last path deletion. Reset loop + bounds of the target loop, make code match the comments. + * tree-ssa-threadbackwards.c (pass_early_thread_jumps::execute): + Make sure loops need no fixups. + +2017-01-23 Kelvin Nilsen + + * config/rs6000/rs6000-builtin.def (VSIEDPF): Add scalar insert + exponent support with double type for first argument. + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Changed + type returned by __builtin_vec_extract_sig, + __builtin_vec_extract_sig_sp, and __builtin_vec_extract_sig_dp + functions from "vector int" to "vector unsigned int" or from + "vector long long int" to "vector unsigned long long int". + Changed type returned by __builtin_vec_extract_exp, + __builtin_vec_extract_exp_sp, and __builtin_vec_extract_exp_dp + functions from "vector int" to "vector unsigned int" or from + "vector long long int" to "vector unsigned long long int". + Changed return type of __builtin_vec_test_data_class, + __builtin_vec_test_data_class_sp, and + __builtin_vec_test_data_class_dp from "vector int" to + "vector bool int" or from "vector long long int" to "vector bool + long long int" and changed second argument type from "unsigned + int" to "int". Added new overloaded function forms "vector float + __builtin_vec_insert_exp (vector float, vector unsigned int)" and + "vector float __builtin_vec_insert_exp_sp (vector float, vector + unsigned int)" and "vector double __builtin_vec_insert_exp (vector + double, vector unsigned long long int)" and "vector double + __builtin_vec_insert_exp_dp (vector double, vector unsigned long + long int)". Changed return type of + __builtin_scalar_test_data_class and + __builtin_scalar_test_data_class_sp and + __builtin_scalar_test_data_class_dp from "unsigned int" to "bool + int" and changed second argument from "unsigned int" to "int". + Changed type returned by __builtin_scalar_test_neg, + __builtin_scalar_test_neg_sp, and __builtin_scalar_test_neg_dp + from "int" to "bool int". Added new overloaded function form + "double __builtin_scalar_insert_exp (double, unsigned long long int)". + * config/rs6000/vsx.md (xsiexpdpf): New insn for scalar insert + exponent double-precision with floating point first argument. + * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust + documentation of scalar_test_data_class, scalar_test_neg, + scalar_extract_sig, scalar_extract_exp, scalar_insert_exp, + vector_extract_exp, vec_extract_sig, vec_insert_exp, and + vec_test_data_class built-in functions to reflect refinements in + their type signatures. + +2017-01-23 Andreas Tobler + + * config/aarch64/aarch64.c (aarch64_elf_asm_constructor): Increase + size of buf. + (aarch64_elf_asm_destructor): Likewise. + +2017-01-23 Bernd Schmidt + + PR rtl-optimization/78634 + * config/i386/i386.c (ix86_max_noce_ifcvt_seq_cost): New function. + (TARGET_MAX_NOCE_IFCVT_SEQ_COST): Define. + * ifcvt.c (noce_try_cmove): Add missing cost check. + + PR rtl-optimization/71724 + * combine.c (if_then_else_cond): Look for situations where it is + beneficial to undo the work of one of the recursive calls. + +2017-01-23 Bin Cheng + + PR tree-optimization/70754 + * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE. + (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE. Insert + combined stmt before it if not NULL. + (combine_chains): Process refs reversely and compute dominance point + for root ref. + +2017-01-23 Martin Liska + + PR tree-optimization/79196 + * tree-ssa-strlen.c (fold_strstr_to_memcmp): Rename to ... + (fold_strstr_to_strncmp): ... this. Fold the pattern to strncmp + instead of memcmp. + (strlen_optimize_stmt): Call the renamed function. + +2017-01-23 Michael Matz + + PR tree-optimization/78384 + * tree-ssa-loop-split.c (patch_loop_exit): Use correct edge. + +2017-01-23 Richard Biener + + PR tree-optimization/79186 + * tree-vrp.c (register_new_assert_for): Make sure we've seen + both incoming edges before moving an assert. + +2017-01-23 Martin Jambor + + * ipa-prop.c (load_from_param_1): Removed. + (load_from_unmodified_param): Bits from load_from_param_1 put back + here. + (load_from_param): Removed. + (compute_complex_assign_jump_func): Removed stmt2 and just replaced it + with stmt. Reverted back to use of load_from_unmodified_param. + +2017-01-23 Martin Jambor + + PR ipa/79108 + * ipa-prop.h (ipa_param_descriptor): Anotate with with GTY(()). + (ipa_node_params): Annotate with GTY((for_user)). Make descriptors + field a pointer to garbage collected vector, mark lattices and + ipcp_orig_node with GTY((skip)). + (ipa_get_param_count): Adjust to descriptors being a pointer. + (ipa_get_param): Likewise. + (ipa_get_type): Likewise. + (ipa_get_param_move_cost): Likewise. + (ipa_set_param_used): Likewise. + (ipa_get_controlled_uses): Likewise. + (ipa_set_controlled_uses): Likewise. + (ipa_is_param_used): Likewise. + (ipa_node_params_t): Move into garbage collector. New methods insert + and remove. + (ipa_node_params_sum): Annotate wth GTY(()). + (ipa_check_create_node_params): Adjust to ipa_node_params_sum being + garbage collected. + (ipa_load_from_parm_agg): Adjust declaration. + * ipa-icf.c (param_used_p): Adjust to descriptors being a pointer. + * ipa-profile.c (ipa_profile): Likewise. + * ipa-prop.c (ipa_get_param_decl_index_1): Likewise. + (ipa_populate_param_decls): Make descriptors parameter garbage + collected. + (ipa_dump_param): Adjust to descriptors being a pointer. + (ipa_alloc_node_params): Likewise. + (ipa_initialize_node_params): Likewise. + (load_from_param_1): Make descriptors parameter garbage collected. + (load_from_unmodified_param): Likewise. + (load_from_param): Likewise. + (ipa_load_from_parm_agg): Likewise. + (ipa_node_params::~ipa_node_params): Removed. + (ipa_free_all_node_params): Remove call to delete operator. + (ipa_node_params_t::insert): New. + (ipa_node_params_t::remove): Likewise. + (ipa_node_params_t::duplicate): Adjust to descriptors being a pointer, + copy known_csts and known_contexts vectors. + (ipa_read_node_info): Adjust to descriptors being a pointer. + (ipcp_modif_dom_walker): Make m_descriptors field garbage + collected. + (ipcp_transform_function): Make descriptors variable garbage + collected. + +2017-01-23 Andrew Senkevich + + * config/i386/avx512bwintrin.h: Add k-mask test, kortest intrinsics. + * config/i386/avx512dqintrin.h: Ditto. + * config/i386/avx512fintrin.h: Ditto. + * config/i386/i386.c: Handle new builtins. + * config/i386/i386-builtin.def: Add new builtins. + * config/i386/sse.md (ktest, kortest): New. + (UNSPEC_KORTEST, UNSPEC_KTEST): New. + +2017-01-23 Jakub Jelinek + Martin Liska + + * asan.h: Define ASAN_USE_AFTER_SCOPE_ATTRIBUTE. + * asan.c (asan_expand_poison_ifn): Support stores and use + appropriate ASAN report function. + * internal-fn.c (expand_ASAN_POISON_USE): New function. + * internal-fn.def (ASAN_POISON_USE): Declare. + * tree-into-ssa.c (maybe_add_asan_poison_write): New function. + (maybe_register_def): Create ASAN_POISON_USE when sanitizing. + * tree-ssa-dce.c (eliminate_unnecessary_stmts): Remove + ASAN_POISON calls w/o LHS. + * tree-ssa.c (execute_update_addresses_taken): Create clobber + for ASAN_MARK (UNPOISON, &x, ...) in order to prevent usage of a LHS + from ASAN_MARK (POISON, &x, ...) coming to a PHI node. + * gimplify.c (asan_poison_variables): Add attribute + use_after_scope_memory to variables that really needs to live + in memory. + * tree-ssa.c (is_asan_mark_p): Do not rewrite into SSA when + having the attribute. + +2017-01-23 Martin Liska + + * asan.c (create_asan_shadow_var): New function. + (asan_expand_poison_ifn): Likewise. + * asan.h (asan_expand_poison_ifn): New declaration. + * internal-fn.c (expand_ASAN_POISON): Likewise. + * internal-fn.def (ASAN_POISON): New builtin. + * sanopt.c (pass_sanopt::execute): Expand + asan_expand_poison_ifn. + * tree-inline.c (copy_decl_for_dup_finish): Make function + external. + * tree-inline.h (copy_decl_for_dup_finish): Likewise. + * tree-ssa.c (is_asan_mark_p): New function. + (execute_update_addresses_taken): Rewrite local variables + (identified just by use-after-scope as addressable) into SSA. + +2017-01-22 Gerald Pfeifer + + * doc/install.texi (Specific): opensource.apple.com uses https + now. Remove trailing slash. + +2017-01-22 Gerald Pfeifer + + * README.Portability: Remove note on an Irix compatibility issue. + +2017-01-22 Dimitry Andric + + * gcov.c (INCLUDE_ALGORITHM): Define. + (INCLUDE_VECTOR): Define. + No longer include and directly. + +2017-01-21 Gerald Pfeifer + + * doc/extend.texi (Thread-Local): Change www.akkadia.org reference + to https. + * doc/invoke.texi (Code Gen Options): Ditto. + +2017-01-21 Jan Hubicka + + PR lto/78407 + * cfg.c (update_bb_profile_for_threading): Fix updating of probablity. + +2017-01-21 Bernd Schmidt + + rtl-optimization/79125 + * cprop.c (local_cprop_pass): Handle cases where we make an + unconditional trap. + +2017-01-20 Segher Boessenkool + + PR target/61729 + PR target/77850 + * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to + read from, for big endian. + +2017-01-20 Jiong Wang + + * config/aarch64/aarch64-builtins.c (aarch64_init_builtins): Register + register pauth builtins for LP64 only. + +2017-01-20 Marek Polacek + + PR c/79152 + * gimplify.c (should_warn_for_implicit_fallthrough): Handle consecutive + non-case labels. + +2017-01-20 Alexander Monakov + + * omp-expand.c (expand_omp_simd): Clear PROP_gimple_lomp_dev regardless + of safelen status. + * omp-offload.c (pass_omp_device_lower::gate): Use PROP_gimple_lomp_dev. + * passes.c (dump_properties): Handle PROP_gimple_lomp_dev. + * tree-inline.c (expand_call_inline): Propagate PROP_gimple_lomp_dev. + +2017-01-20 Kyrylo Tkachov + + PR target/71270 + * config/arm/arm.c (neon_valid_immediate): Reject vector constants + in big-endian mode when they are not a single duplicated value. + +2017-01-20 Richard Biener + + * BASE-VER: Bump to 7.0.1. + +2017-01-20 Alexander Monakov + + * omp-low.c (omplow_simd_context): New struct. Use it... + (lower_rec_simd_input_clauses): ...here and... + (lower_rec_input_clauses): ...here to hold common data. Adjust all + references to idx, lane, max_vf, is_simt. + +2017-01-20 Graham Markall + + * config/arc/arc.h (LINK_SPEC): Use arclinux_nps emulation when + mcpu=nps400. + +2017-01-20 Martin Jambor + + * hsa.h: Renaed to hsa-common.h. Adjusted a comment. + * hsa.c: Renaed to hsa-common.c. Change include of gt-hsa.h to + gt-hsa-common.h. + * Makefile.in (OBJS): Rename hsa.o to hsa-common.o. + (GTFILES): Rename hsa.c to hsa-common.c. + * hsa-brig.c: Change include of hsa.h to hsa-common.h. + * hsa-dump.c: Likewise. + * hsa-gen.c: Likewise. + * hsa-regalloc.c: Likewise. + * ipa-hsa.c: Likewise. + * omp-expand.c: Likewise. + * omp-low.c: Likewise. + * toplev.c: Likewise. + +2017-01-20 Marek Polacek + + PR c/64279 + * doc/invoke.texi: Document -Wduplicated-branches. + * fold-const.c (operand_equal_p): Handle MODIFY_EXPR, INIT_EXPR, + COMPOUND_EXPR, PREDECREMENT_EXPR, PREINCREMENT_EXPR, + POSTDECREMENT_EXPR, POSTINCREMENT_EXPR, CLEANUP_POINT_EXPR, EXPR_STMT, + STATEMENT_LIST, and RETURN_EXPR. For non-pure non-const functions + return 0 only when not OEP_LEXICOGRAPHIC. + (fold_build_cleanup_point_expr): Use the expression + location when building CLEANUP_POINT_EXPR. + * tree-core.h (enum operand_equal_flag): Add OEP_LEXICOGRAPHIC. + * tree.c (add_expr): Handle error_mark_node. + +2017-01-20 Martin Liska + + PR lto/69188 + * tree-profile.c (init_ic_make_global_vars): Do not call + finalize_decl. + (gimple_init_gcov_profiler): Likewise. + +2017-01-20 Martin Liska + + PR ipa/71190 + * cgraph.h (maybe_create_reference): Remove argument and + update comment. + * cgraphclones.c (cgraph_node::create_virtual_clone): Remove one + argument. + * ipa-cp.c (create_specialized_node): Likewise. + * symtab.c (symtab_node::maybe_create_reference): Handle + VAR_DECLs and ADDR_EXPRs and select ipa_ref_use type. + +2017-01-20 Martin Liska + + * read-rtl-function.c (function_reader::create_function): Use + build_decl instread of build_decl_stat. + +2017-01-20 Andrew Senkevich + + * config/i386/avx512bwintrin.h: Add k-mask registers shift intrinsics. + * config/i386/avx512dqintrin.h: Ditto. + * config/i386/avx512fintrin.h: Ditto. + * config/i386/i386-builtin-types.def: Add new types. + * config/i386/i386.c: Handle new types. + * config/i386/i386-builtin.def (__builtin_ia32_kshiftliqi) + (__builtin_ia32_kshiftlihi, __builtin_ia32_kshiftlisi) + (__builtin_ia32_kshiftlidi, __builtin_ia32_kshiftriqi) + (__builtin_ia32_kshiftrihi, __builtin_ia32_kshiftrisi) + (__builtin_ia32_kshiftridi): New. + * config/i386/sse.md (k): Rename *k. + +2017-01-19 Segher Boessenkool + + PR target/78875 + PR target/79140 + * config/rs6000/rs6000.c (TARGET_STACK_PROTECT_GUARD): Unconditionally + define to rs6000_init_stack_protect_guard. + (rs6000_init_stack_protect_guard): New function. + +2017-01-19 Matthew Fortune + Yunqiang Su + + * config.gcc (supported_defaults): Add madd4. + (with_madd4): Add validation. + (all_defaults): Add madd4. + * config/mips/mips.opt (mmadd4): New option. + * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for + mmadd4. + (TARGET_CPU_CPP_BUILTINS): Add builtin_define for + __mips_no_madd4. + (ISA_HAS_UNFUSED_MADD4): Gate with mips_madd4. + (ISA_HAS_FUSED_MADD4): Likewise. + * doc/invoke.texi (-mmadd4): Document the new option. + * doc/install.texi (--with-madd4): Document the new option. + +2017-01-19 Jiong Wang + + * config/aarch64/aarch64-builtins.c (enum aarch64_builtins): New + entries for AARCH64_PAUTH_BUILTIN_XPACLRI, + AARCH64_PAUTH_BUILTIN_PACIA1716, AARCH64_PAUTH_BUILTIN_AUTIA1716. + (aarch64_init_pauth_hint_builtins): New. + (aarch64_init_builtins): Call aarch64_init_pauth_hint_builtins. + (aarch64_expand_builtin): Expand new builtins. + +2017-01-19 Jiong Wang + + * reg-notes.def (CFA_TOGGLE_RA_MANGLE): New reg-note. + * combine-stack-adj.c (no_unhandled_cfa): Handle + REG_CFA_TOGGLE_RA_MANGLE. + * dwarf2cfi.c (dwarf2out_frame_debug): Handle REG_CFA_TOGGLE_RA_MANGLE. + * config/aarch64/aarch64.c (aarch64_expand_prologue): Generates DWARF + info for return address signing. + (aarch64_expand_epilogue): Likewise. + +2017-01-19 Jiong Wang + + * config/aarch64/aarch64-opts.h (aarch64_function_type): New enum. + * config/aarch64/aarch64-protos.h + (aarch64_return_address_signing_enabled): New declaration. + * config/aarch64/aarch64.c (aarch64_return_address_signing_enabled): + New function. + (aarch64_expand_prologue): Sign return address before it's pushed onto + stack. + (aarch64_expand_epilogue): Authenticate return address fetched from + stack. + (aarch64_override_options): Sanity check for ILP32 and ISA level. + (aarch64_attributes): New function attributes for "sign-return-address". + * config/aarch64/aarch64.md (UNSPEC_AUTI1716, UNSPEC_AUTISP, + UNSPEC_PACI1716, UNSPEC_PACISP, UNSPEC_XPACLRI): New unspecs. + ("*do_return"): Generate combined instructions according to key index. + ("sp", " + + * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Enable + -mpower9-minmax by default for -mcpu=power9. + (ISA_3_MASKS_IEEE): Require -mvsx-small-integer to enable IEEE + 128-bit floating point. + +2017-01-20 Alan Modra + + * config/rs6000/rs6000.md (cmpstrnsi, cmpstrsi): Fail if + optimizing for size. + +2017-01-20 Alan Modra + + PR target/79144 + * config/rs6000/rs6000.c (expand_strn_compare): Get the asm name + for strcmp and strncmp from corresponding builtin decl. + +2017-01-19 Uros Bizjak + + * config.gcc (x86_64-*-rtems*): Use i386/rtemself.h + instead of i386/rtems-64.h. + * config/i386/rtems-64.h: Remove. + +2017-01-19 Uros Bizjak + + PR target/78478 + Revert: + 2013-11-05 Uros Bizjak + + * config/i386/rtemself.h (LONG_DOUBLE_TYPE_SIZE): New define. + +2017-01-19 Tamar Christina + + * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup): + Change int to HOST_WIDE_INT. + * config/aarch64/aarch64-protos.h + (aarch64_simd_gen_const_vector_dup): Likewise. + * config/aarch64/aarch64-simd.md: Add copysign3. + +2017-01-19 David Malcolm + + * langhooks-def.h (lhd_type_for_size): New decl. + (LANG_HOOKS_TYPE_FOR_SIZE): Define as lhd_type_for_size. + * langhooks.c (lhd_type_for_size): New function, taken from + lto_type_for_size. + +2017-01-19 Pat Haugen + + * config/rs6000/power9.md (power9-alu): Remove 'cmp' type and add + define_bypass for CR latency. + (power9-cracked-alu): Update bypass latency and remove power9-branch. + (power9-alu2): Add define_bypass for CR latency. + (power9-cmp): New. + (power9-mul): Update insn latency. + (power9-mul-compare): Update insn latency, bypass latency and remove + power9-branch. + +2016-01-19 Kyrylo Tkachov + + * config/aarch64/aarch64-protos.h (aarch64_nopcrelative_literal_loads): + Delete. + * config/aarch64/aarch64.md + (aarch64_reload_movcp): Delete reference to + aarch64_nopcrelative_literal_loads. + (aarch64_reload_movcp): Likewise. + +2017-01-19 Chenghua Xu + + * config/mips/mips.h (ISA_HAS_FUSED_MADD4): Enable for + TARGET_LOONGSON_3A. + (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_LOONGSON_3A. + +2017-01-19 Doug Gilmore + + PR target/78176 + * config.gcc (supported_defaults): Add lxc1-sxc1. + (with_lxc1_sxc1): Add validation. + (all_defaults): Add lxc1-sxc1. + * config/mips/mips.opt (mlxc1-sxc1): New option. + * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for + mlxc1-sxc1. + (TARGET_CPU_CPP_BUILTINS): Add builtin_define for + __mips_no_lxc1_sxc1. + (ISA_HAS_LXC1_SXC1): Gate with mips_lxc1_sxc1. + * doc/invoke.texi (-mlxc1-sxc1): Document the new option. + * doc/install.texi (--with-lxc1-sxc1): Document the new option. + +2017-01-19 Richard Biener + + PR tree-optimization/72488 + * tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make + sure to restore SSA info. + * tree-ssa.c (verify_ssa): Verify SSA info is not shared. + +2017-01-19 Richard Earnshaw + + PR rtl-optimization/79121 + * expr.c (expand_expr_real_2, case LSHIFT_EXPR): Look at the signedness + of the inner type when shifting an extended value. + +2017-01-17 Jan Hubicka + + PR lto/78407 + * symtab.c (symtab_node::equal_address_to): Fix comparing of + interposable aliases. + +2017-01-18 Peter Bergner + + PR target/78516 + * config/rs6000/spe.md (mov_si_e500_subreg0): Fix constraints. + Use the evmergelohi instruction. + (mov_si_e500_subreg4_2_le): Likewise. + (mov_sitf_e500_subreg8_2_be): Likewise. + (mov_sitf_e500_subreg12_2_le): Likewise. + (mov_si_e500_subreg0_2_le): Fix constraints. + (mov_si_e500_subreg4_2_be): Likewise. + (mov_sitf_e500_subreg8_2_le): Likewise. + (mov_sitf_e500_subreg12_2_be): Likewise. + +2017-01-18 Bill Schmidt + + * config/rs6000/altivec.md (altivec_vbpermq): Change "type" + attribute from vecsimple to vecperm. + (altivec_vbpermq2): Likewise. + +2017-01-18 Bill Schmidt + + PR target/79040 + * config/rs6000/altivec.h: Fix typo of vec_cntlz to vec_cnttz. + +2017-01-18 Aaron Sawdey + * config/rs6000/rs6000-protos.h (expand_strn_compare): Add arg. + * config/rs6000/rs6000.c (expand_strn_compare): Add ability to expand + strcmp. Fix bug where comparison didn't stop with zero byte. Fix + case where N arg is SIZE_MAX. + * config/rs6000/rs6000.md (cmpstrnsi): Args to expand_strn_compare. + (cmpstrsi): Add pattern. + +2017-01-18 Michael Meissner + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + __builtin_vec_revb builtins. + * config/rs6000/rs6000-builtins.def (P9V_BUILTIN_XXBRQ_V16QI): Add + built-in functions to support generation of the ISA 3.0 XXBR + vector byte reverse instructions. + (P9V_BUILTIN_XXBRQ_V1TI): Likewise. + (P9V_BUILTIN_XXBRD_V2DI): Likewise. + (P9V_BUILTIN_XXBRD_V2DF): Likewise. + (P9V_BUILTIN_XXBGW_V4SI): Likewise. + (P9V_BUILTIN_XXBGW_V4SF): Likewise. + (P9V_BUILTIN_XXBGH_V8HI): Likewise. + (P9V_BUILTIN_VEC_REVB): Likewise. + * config/rs6000/vsx.md (p9_xxbrq_v1ti): New insns/expanders to + generate the ISA 3.0 XXBR vector byte reverse instructions. + (p9_xxbrq_v16qi): Likewise. + (p9_xxbrd_, VSX_D iterator): Likewise. + (p9_xxbrw_, VSX_W iterator): Likewise. + (p9_xxbrh_v8hi): Likewise. + * config/rs6000/altivec.h (vec_revb): Define if ISA 3.0. + * doc/extend.texi (RS/6000 Altivec Built-ins): Document the + vec_revb built-in functions. + +2017-01-18 Uros Bizjak + + PR rtl-optimization/78952 + * config/i386/i386.md (any_extract): New code iterator. + (*insvqi_2): Use any_extract for source operand. + (*insvqi_3): Use any_shiftrt for source operand. + +2017-01-18 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_sched_adjust_priority) + New function. + (TARGET_SCHED_ADJUST_PRIORITY): Define target hook. + +2017-01-18 Matthias Klose + + * doc/install.texi: Allow default for --with-target-bdw-gc-include. + +2016-01-18 Bill Schmidt + + * config/rs6000/altivec.h (vec_bperm): Change #define. + * config/rs6000/altivec.md (UNSPEC_VBPERMD): New enum constant. + (altivec_vbpermq2): New define_insn. + (altivec_vbpermd): Likewise. + * config/rs6000/rs6000-builtin.def (VBPERMQ2): New monomorphic + function interface. + (VBPERMD): Likewise. + (VBPERM): New polymorphic function interface. + * config/rs6000/r6000-c.c (altivec_overloaded_builtins_table): + Add entries for P9V_BUILTIN_VEC_VBPERM. + * doc/extend.texi: Add interfaces for vec_bperm. + +2017-01-18 Andreas Krebbel + + * config/s390/s390-c.c (s390_expand_overloaded_builtin): Downcase + first letter of error messages. + (s390_resolve_overloaded_builtin): Likewise. + * config/s390/s390.c (s390_expand_builtin): Likewise. + (s390_invalid_arg_for_unprototyped_fn): Likewise. + (s390_valid_target_attribute_inner_p): Likewise. + * config/s390/s390.md ("tabort"): Likewise. + +2017-01-18 Toma Tabacu + + * config/mips/mips.h (ISA_HAS_DIV3): Remove unused macro. + (ISA_AVOID_DIV_HILO): New macro. + (ISA_HAS_DIV): Use new ISA_AVOID_DIV_HILO macro. + (ISA_HAS_DDIV): Likewise. + +2017-01-18 Markus Trippelsdorf + + * doc/invoke.texi (fabi-version): Correct number of occurrences. + +2017-01-18 Markus Trippelsdorf + + * doc/invoke.texi (fabi-version): Spelling fix. + +2017-01-18 Markus Trippelsdorf + + PR c++/70182 + * doc/invoke.texi (fabi-version): Mention mangling fix for + operator names. + +2017-01-18 Markus Trippelsdorf + + PR c++/77489 + * doc/invoke.texi (fabi-version): Document discriminator mangling. + +2017-01-17 Segher Boessenkool + + PR target/78875 + * config/rs6000/rs6000-opts.h (stack_protector_guard): New enum. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Handle + the new options. + * config/rs6000/rs6000.md (stack_protect_set): Handle the new more + flexible settings. + (stack_protect_test): Ditto. + * config/rs6000/rs6000.opt (mstack-protector-guard=, + mstack-protector-guard-reg=, mstack-protector-guard-offset=): New + options. + * doc/invoke.texi (Option Summary) [RS/6000 and PowerPC Options]: + Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and + -mstack-protector-guard-offset=. + (RS/6000 and PowerPC Options): Ditto. + +2017-01-17 Uros Bizjak + + * config/i386/i386.h (MASK_CLASS_P): New define. + * config/i386/i386.c (inline_secondary_memory_needed): Ensure that + there are no registers from different register sets also when + mask registers are used. Update function comment. + * config/i386/i386.md (*movsi_internal): Split (*k/*krm) alternative + to (*k/*r) and (*k/*km) alternatives. + +2017-01-17 Wilco Dijkstra + + * config/aarch64/aarch64.md (eh_return): Remove pattern and splitter. + * config/aarch64/aarch64.h (AARCH64_EH_STACKADJ_REGNUM): Remove. + (EH_RETURN_HANDLER_RTX): New define. + * config/aarch64/aarch64.c (aarch64_frame_pointer_required): + Force frame pointer in EH return functions. + (aarch64_expand_epilogue): Add barrier for eh_return. + (aarch64_final_eh_return_addr): Remove. + (aarch64_eh_return_handler_rtx): New function. + * config/aarch64/aarch64-protos.h (aarch64_final_eh_return_addr): + Remove. + (aarch64_eh_return_handler_rtx): New prototype. + +2017-01-17 Bill Schmidt + + * config/rs6000/altivec.h (vec_rlmi): New #define. + (vec_vrlnm): Likewise. + (vec_rlnm): Likewise. + * config/rs6000/altivec.md (UNSPEC_VRLMI): New UNSPEC enum value. + (UNSPEC_VRLNM): Likewise. + (VIlong): New mode iterator. + (altivec_vrlmi): New define_insn. + (altivec_vrlnm): Likewise. + * config/rs6000/rs6000-builtin.def (VRLWNM): New monomorphic + function entry. + (VRLDNM): Likewise. + (RLNM): New polymorphic function entry. + (VRLWMI): New monomorphic function entry. + (VRLDMI): Likewise. + (RLMI): New polymorphic function entry. + * config/rs6000/r6000-c.c (altivec_overloaded_builtin_table): Add + new entries for P9V_BUILTIN_VEC_RLMI and P9V_BUILTIN_VEC_RLNM. + * doc/extend.texi: Add description of vec_rlmi, vec_rlnm, and + vec_vrlnm. + +2017-01-17 Jakub Jelinek + + PR debug/78839 + * dwarf2out.c (field_byte_offset): Restore the + PCC_BITFIELD_TYPE_MATTERS behavior for INTEGER_CST DECL_FIELD_OFFSET + and DECL_FIELD_BIT_OFFSET. Use fold_build2 instead of build2 + fold. + (analyze_variants_discr, gen_variant_part): Use fold_build2 instead + of build2 + fold. + +2017-01-17 Eric Botcazou + + PR ada/67205 + * config/aarch64/aarch64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define + +2017-01-17 Jakub Jelinek + + PR debug/71669 + * dwarf2out.c (add_data_member_location_attribute): For constant + offset bitfield emit for -gdwarf-5 DW_AT_data_bit_offset attribute + instead of DW_AT_data_member_location, DW_AT_bit_offset and + DW_AT_byte_size attributes. + +2017-01-17 Eric Botcazou + + * config/rs6000/rs6000.c (rs6000_emit_move): Also use a TOC reference + after forcing to constant memory when the code model is medium. + +2017-01-17 Julia Koval + + PR target/76731 + * config/i386/avx512fintrin.h + (_mm512_i32gather_ps): Change __addr type to void const*. + (_mm512_mask_i32gather_ps): Ditto. + (_mm512_i32gather_pd): Ditto. + (_mm512_mask_i32gather_pd): Ditto. + (_mm512_i64gather_ps): Ditto. + (_mm512_mask_i64gather_ps): Ditto. + (_mm512_i64gather_pd): Ditto. + (_mm512_mask_i64gather_pd): Ditto. + (_mm512_i32gather_epi32): Ditto. + (_mm512_mask_i32gather_epi32): Ditto. + (_mm512_i32gather_epi64): Ditto. + (_mm512_mask_i32gather_epi64): Ditto. + (_mm512_i64gather_epi32): Ditto. + (_mm512_mask_i64gather_epi32): Ditto. + (_mm512_i64gather_epi64): Ditto. + (_mm512_mask_i64gather_epi64): Ditto. + (_mm512_i32scatter_ps): Change __addr type to void*. + (_mm512_mask_i32scatter_ps): Ditto. + (_mm512_i32scatter_pd): Ditto. + (_mm512_mask_i32scatter_pd): Ditto. + (_mm512_i64scatter_ps): Ditto. + (_mm512_mask_i64scatter_ps): Ditto. + (_mm512_i64scatter_pd): Ditto. + (_mm512_mask_i64scatter_pd): Ditto. + (_mm512_i32scatter_epi32): Ditto. + (_mm512_mask_i32scatter_epi32): Ditto. + (_mm512_i32scatter_epi64): Ditto. + (_mm512_mask_i32scatter_epi64): Ditto. + (_mm512_i64scatter_epi32): Ditto. + (_mm512_mask_i64scatter_epi32): Ditto. + (_mm512_i64scatter_epi64): Ditto. + (_mm512_mask_i64scatter_epi64): Ditto. + * config/i386/avx512pfintrin.h + (_mm512_mask_prefetch_i32gather_pd): Change __addr type to void const*. + (_mm512_mask_prefetch_i32gather_ps): Ditto. + (_mm512_mask_prefetch_i64gather_pd): Ditto. + (_mm512_mask_prefetch_i64gather_ps): Ditto. + (_mm512_prefetch_i32scatter_pd): Change __addr type to void*. + (_mm512_prefetch_i32scatter_ps): Ditto. + (_mm512_mask_prefetch_i32scatter_pd): Ditto. + (_mm512_mask_prefetch_i32scatter_ps): Ditto. + (_mm512_prefetch_i64scatter_pd): Ditto. + (_mm512_prefetch_i64scatter_ps): Ditto. + (_mm512_mask_prefetch_i64scatter_pd): Ditto. + (_mm512_mask_prefetch_i64scatter_ps): Ditto. + * config/i386/avx512vlintrin.h + (_mm256_mmask_i32gather_ps): Change __addr type to void const*. + (_mm_mmask_i32gather_ps): Ditto. + (_mm256_mmask_i32gather_pd): Ditto. + (_mm_mmask_i32gather_pd): Ditto. + (_mm256_mmask_i64gather_ps): Ditto. + (_mm_mmask_i64gather_ps): Ditto. + (_mm256_mmask_i64gather_pd): Ditto. + (_mm_mmask_i64gather_pd): Ditto. + (_mm256_mmask_i32gather_epi32): Ditto. + (_mm_mmask_i32gather_epi32): Ditto. + (_mm256_mmask_i32gather_epi64): Ditto. + (_mm_mmask_i32gather_epi64): Ditto. + (_mm256_mmask_i64gather_epi32): Ditto. + (_mm_mmask_i64gather_epi32): Ditto. + (_mm256_mmask_i64gather_epi64): Ditto. + (_mm_mmask_i64gather_epi64): Ditto. + (_mm256_i32scatter_ps): Change __addr type to void*. + (_mm256_mask_i32scatter_ps): Ditto. + (_mm_i32scatter_ps): Ditto. + (_mm_mask_i32scatter_ps): Ditto. + (_mm256_i32scatter_pd): Ditto. + (_mm256_mask_i32scatter_pd): Ditto. + (_mm_i32scatter_pd): Ditto. + (_mm_mask_i32scatter_pd): Ditto. + (_mm256_i64scatter_ps): Ditto. + (_mm256_mask_i64scatter_ps): Ditto. + (_mm_i64scatter_ps): Ditto. + (_mm_mask_i64scatter_ps): Ditto. + (_mm256_i64scatter_pd): Ditto. + (_mm256_mask_i64scatter_pd): Ditto. + (_mm_i64scatter_pd): Ditto. + (_mm_mask_i64scatter_pd): Ditto. + (_mm256_i32scatter_epi32): Ditto. + (_mm256_mask_i32scatter_epi32): Ditto. + (_mm_i32scatter_epi32): Ditto. + (_mm_mask_i32scatter_epi32): Ditto. + (_mm256_i32scatter_epi64): Ditto. + (_mm256_mask_i32scatter_epi64): Ditto. + (_mm_i32scatter_epi64): Ditto. + (_mm_mask_i32scatter_epi64): Ditto. + (_mm256_i64scatter_epi32): Ditto. + (_mm256_mask_i64scatter_epi32): Ditto. + (_mm_i64scatter_epi32): Ditto. + (_mm_mask_i64scatter_epi32): Ditto. + (_mm256_i64scatter_epi64): Ditto. + (_mm256_mask_i64scatter_epi64): Ditto. + (_mm_i64scatter_epi64): Ditto. + (_mm_mask_i64scatter_epi64): Ditto. + * config/i386/i386-builtin-types.def (V16SF_V16SF_PCFLOAT_V16SI_HI_INT) + (V8DF_V8DF_PCDOUBLE_V8SI_QI_INT, V8SF_V8SF_PCFLOAT_V8DI_QI_INT) + (V8DF_V8DF_PCDOUBLE_V8DI_QI_INT, V16SI_V16SI_PCINT_V16SI_HI_INT) + (V8DI_V8DI_PCINT64_V8SI_QI_INT, V8SI_V8SI_PCINT_V8DI_QI_INT) + (V8DI_V8DI_PCINT64_V8DI_QI_INT, V2DF_V2DF_PCDOUBLE_V4SI_QI_INT) + (V4DF_V4DF_PCDOUBLE_V4SI_QI_INT, V2DF_V2DF_PCDOUBLE_V2DI_QI_INT) + (V4DF_V4DF_PCDOUBLE_V4DI_QI_INT, V4SF_V4SF_PCFLOAT_V4SI_QI_INT) + (V8SF_V8SF_PCFLOAT_V8SI_QI_INT, V4SF_V4SF_PCFLOAT_V2DI_QI_INT) + (V4SF_V4SF_PCFLOAT_V4DI_QI_INT, V2DI_V2DI_PCINT64_V4SI_QI_INT) + (V4DI_V4DI_PCINT64_V4SI_QI_INT, V2DI_V2DI_PCINT64_V2DI_QI_INT) + (V4DI_V4DI_PCINT64_V4DI_QI_INT, V4SI_V4SI_PCINT_V4SI_QI_INT) + (V8SI_V8SI_PCINT_V8SI_QI_INT, V4SI_V4SI_PCINT_V2DI_QI_INT) + (V4SI_V4SI_PCINT_V4DI_QI_INT, VOID_PFLOAT_HI_V16SI_V16SF_INT) + (VOID_PFLOAT_QI_V8SI_V8SF_INT, VOID_PFLOAT_QI_V4SI_V4SF_INT) + (VOID_PDOUBLE_QI_V8SI_V8DF_INT, VOID_PDOUBLE_QI_V4SI_V4DF_INT) + (VOID_PDOUBLE_QI_V4SI_V2DF_INT, VOID_PFLOAT_QI_V8DI_V8SF_INT) + (VOID_PFLOAT_QI_V4DI_V4SF_INT, VOID_PFLOAT_QI_V2DI_V4SF_INT) + (VOID_PDOUBLE_QI_V8DI_V8DF_INT, VOID_PDOUBLE_QI_V4DI_V4DF_INT) + (VOID_PDOUBLE_QI_V2DI_V2DF_INT, VOID_PINT_HI_V16SI_V16SI_INT) + (VOID_PINT_QI_V8SI_V8SI_INT, VOID_PINT_QI_V4SI_V4SI_INT) + (VOID_PLONGLONG_QI_V8SI_V8DI_INT, VOID_PLONGLONG_QI_V4SI_V4DI_INT) + (VOID_PLONGLONG_QI_V4SI_V2DI_INT, VOID_PINT_QI_V8DI_V8SI_INT) + (VOID_PINT_QI_V4DI_V4SI_INT, VOID_PINT_QI_V2DI_V4SI_INT) + (VOID_PLONGLONG_QI_V8DI_V8DI_INT, VOID_QI_V8SI_PCINT64_INT_INT) + (VOID_PLONGLONG_QI_V4DI_V4DI_INT, VOID_PLONGLONG_QI_V2DI_V2DI_INT) + (VOID_HI_V16SI_PCINT_INT_INT, VOID_QI_V8DI_PCINT64_INT_INT) + (VOID_QI_V8DI_PCINT_INT_INT): Remove. + (V16SF_V16SF_PCVOID_V16SI_HI_INT, V8DF_V8DF_PCVOID_V8SI_QI_INT) + (V8SF_V8SF_PCVOID_V8DI_QI_INT, V8DF_V8DF_PCVOID_V8DI_QI_INT) + (V16SI_V16SI_PCVOID_V16SI_HI_INT, V8DI_V8DI_PCVOID_V8SI_QI_INT) + (V8SI_V8SI_PCVOID_V8DI_QI_INT, V8DI_V8DI_PCVOID_V8DI_QI_INT) + (VOID_PVOID_HI_V16SI_V16SF_INT, VOID_PVOID_QI_V8SI_V8DF_INT) + (VOID_PVOID_QI_V8DI_V8SF_INT, VOID_PVOID_QI_V8DI_V8DF_INT) + (VOID_PVOID_HI_V16SI_V16SI_INT, VOID_PVOID_QI_V8SI_V8DI_INT) + (VOID_PVOID_QI_V8DI_V8SI_INT, VOID_PVOID_QI_V8DI_V8DI_INT) + (V2DF_V2DF_PCVOID_V4SI_QI_INT, V4DF_V4DF_PCVOID_V4SI_QI_INT) + (V2DF_V2DF_PCVOID_V2DI_QI_INT, V4DF_V4DF_PCVOID_V4DI_QI_INT + (V4SF_V4SF_PCVOID_V4SI_QI_INT, V8SF_V8SF_PCVOID_V8SI_QI_INT) + (V4SF_V4SF_PCVOID_V2DI_QI_INT, V4SF_V4SF_PCVOID_V4DI_QI_INT) + (V2DI_V2DI_PCVOID_V4SI_QI_INT, V4DI_V4DI_PCVOID_V4SI_QI_INT) + (V2DI_V2DI_PCVOID_V2DI_QI_INT, V4DI_V4DI_PCVOID_V4DI_QI_INT) + (V4SI_V4SI_PCVOID_V4SI_QI_INT, V8SI_V8SI_PCVOID_V8SI_QI_INT) + (V4SI_V4SI_PCVOID_V2DI_QI_INT, V4SI_V4SI_PCVOID_V4DI_QI_INT) + (VOID_PVOID_QI_V8SI_V8SF_INT, VOID_PVOID_QI_V4SI_V4SF_INT) + (VOID_PVOID_QI_V4SI_V4DF_INT, VOID_PVOID_QI_V4SI_V2DF_INT) + (VOID_PVOID_QI_V4DI_V4SF_INT, VOID_PVOID_QI_V2DI_V4SF_INT) + (VOID_PVOID_QI_V4DI_V4DF_INT, VOID_PVOID_QI_V2DI_V2DF_INT) + (VOID_PVOID_QI_V8SI_V8SI_INT, VOID_PVOID_QI_V4SI_V4SI_INT) + (VOID_PVOID_QI_V4SI_V4DI_INT, VOID_PVOID_QI_V4SI_V2DI_INT) + (VOID_PVOID_QI_V4DI_V4SI_INT, VOID_PVOID_QI_V2DI_V4SI_INT) + (VOID_PVOID_QI_V4DI_V4DI_INT, VOID_PVOID_QI_V2DI_V2DI_INT) + (VOID_QI_V8SI_PCVOID_INT_INT, VOID_HI_V16SI_PCVOID_INT_INT) + (VOID_QI_V8DI_PCVOID_INT_INT): Add. + * config/i386/i386.c (ix86_init_mmx_sse_builtins): Adjust builtin + definitions accordingly. + +2017-01-17 Kito Cheng + Kuan-Lin Chen + + PR target/79079 + * internal-fn.c (expand_mul_overflow): Use convert_modes instead of + gen_lowpart. + +2017-01-17 Vladimir Makarov + + PR target/79058 + * ira-conflicts.c (ira_build_conflicts): Update total conflict + hard regs for inner regno. + +2017-01-17 Martin Liska + + PR ipa/71207 + * ipa-polymorphic-call.c (contains_type_p): Fix wrong + assumption and add comment. + +2017-01-17 Nathan Sidwell + + * ipa-visibility.c (localize_node): New function, broken out of ... + (function_and_variable_visibility): ... here. Call it. + +2017-01-17 Jan Hubicka + + PR middle-end/77445 + * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): + correctly set frequency of oudgoing edge. + (duplicate_thread_path): Fix profile updating. + +2017-01-17 Jakub Jelinek + + PR other/79046 + * configure.ac: Add GCC_BASE_VER. + * Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get + version from BASE-VER file. + (CFLAGS-gcc.o): Add -DBASEVER=$(BASEVER_s). + (gcc.o): Depend on $(BASEVER). + * common.opt (dumpfullversion): New option. + * gcc.c (driver_handle_option): Handle OPT_dumpfullversion. + * doc/invoke.texi: Document -dumpfullversion. + * doc/install.texi: Document --with-gcc-major-version-only. + * configure: Regenerated. + +2017-01-17 Richard Biener + + PR tree-optimization/71433 + * tree-vrp.c (register_new_assert_for): Merge same asserts + on all incoming edges. + (process_assert_insertions_for): Handle insertions at the + beginning of BBs. + +2017-01-17 Gerald Pfeifer + + * config/i386/cygwin.h (LIBGCJ_SONAME): Remove. + * config/i386/mingw32.h (LIBGCJ_SONAME): Remove. + +2017-01-17 Kaz Kojima + + PR target/78633 + * config/sh/sh.md (cmpeqsi_t+1): Call copy_rtx to avoid invalid + RTL sharing. + +2017-01-17 Alan Modra + + PR target/79066 + * config/rs6000/rs6000.md (elf_high, elf_low): Disable when pic. + * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Don't allow + symbolic stack limit when pic. + +2017-01-16 Martin Sebor + + PR tree-optimization/78608 + * gimple-ssa-sprintf.c (tree_digits): Avoid negating TYPE_MIN. + +2017-01-16 Jeff Law + + Revert: + 2016-12-02 Tadek Kijkowski + * Makefile.in (PREPROCESSOR_DEFINES): Add a level of indirection + for several include directories that may be relative to sysroot. + * config/i386/x-mingw32 (gplus_includedir): Define. + (gplus_tool_includedir, gplus_backward_include_dir): Likewise. + (native_system_includedir): Likewise. + * config/i386/mingw32.h (STANDARD_STARTFILE_PREFIX_1): Do not + override if TARGET_SYSTEM_ROOT is defined. + (NATIVE_SYSTEM_HEADER_DIR): Likewise. + + PR tree-optimization/79090 + PR tree-optimization/33562 + PR tree-optimization/61912 + PR tree-optimization/77485 + * tree-ssa-dse.c (compute_trims): Accept STMT argument. Dump STMT + and computed trims into the dump file. + +2017-01-17 Uros Bizjak + + * config/i386/i386.h (LIMIT_RELOAD_CLASS): Remove. + +2017-01-16 Jakub Jelinek + + PR c/79089 + * gimplify.c (gimplify_init_constructor): If want_value and + object == lhs, unshare lhs to avoid invalid tree sharing. Formatting + fix. + + PR target/79080 + * loop-doloop.c (doloop_modify): Call unshare_all_rtl_in_chain on + sequence. Formatting fixes. + (doloop_optimize): Formatting fixes. + + PR driver/49726 + * gcc.c (debug_level_greater_than_spec_func): New function. + (static_spec_functions): Add debug-level-gt spec function. + (ASM_DEBUG_SPEC, cpp_options): Use %:debug-level-gt(0) instead of + !g0. + * config/darwin.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise. + * config/darwin9.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise. + * common.opt (g, gcoff, gdwarf, gdwarf-, ggdb, gno-pubnames, + gpubnames, ggnu-pubnames, gno-record-gcc-switches, + grecord-gcc-switches, gno-strict-dwarf, gstrict-dwarf, gstabs, + gstabs+, gtoggle, gvms, gxcoff, gxcoff+): Add Driver flag. + +2017-01-16 Uros Bizjak + + * config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and + QImode fixups to general and mask registers only. + +2017-01-16 Carl Love + + * config/rs6000/rs6000-c (altivec_overloaded_builtins): Add support + for built-in functions + vector signed char vec_nabs (vector signed char) + vector signed short vec_nabs (vector signed short) + vector signed int vec_nabs (vector signed int) + vector signed long long vec_nabs (vector signed long long) + vector float vec_nabs (vector float) + vector double vec_nabs (vector double) + * config/rs6000/rs6000-builtin.def: Add definitions for NABS functions + and NABS overload. + * config/rs6000/altivec.md: New define_expand nabs2 types + * config/rs6000/altivec.h: New define for vec_nabs built-in function. + * doc/extend.texi: Update the documentation file for the new built-in + functions. + +2017-01-16 Martin Sebor + + * gimple-ssa-sprintf.c (format_directive): Correct a typo in a warning + message. + +2017-01-16 Bill Schmidt + + * config/rs6000/rs6000.c (rtx_is_swappable_p): Change + UNSPEC_VSX__XXSPLTD to require special splat handling. + +2017-01-16 David Malcolm + + PR bootstrap/78616 + * system.h: Poison strndup. + +2017-01-16 Alan Modra + + PR target/79098 + * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Don't + use a switch. + +2017-01-16 Georg-Johann Lay + + * config/avr/avr.h (BRANCH_COST) [reload_completed]: Increase by 4. + +2017-01-15 Uros Bizjak + + * config/i386/i386.c (ix86_legitimate_combined_insn): Do not + call recog here. Assert that INSN_CODE (insn) is non-negative. + +2017-01-15 Segher Boessenkool + + PR target/72749 + * cfgrtl.c (rtl_split_edge): Also patch jump insns that jump to the + fallthrough. + * haifa-sched.c (dump_insn_stream): Don't crash if there is a label + in the currently scheduled RTL fragment. + +2017-01-15 Segher Boessenkool + + PR rtl-optimization/78751 + * ifcvt.c (find_cond_trap): If we generated a non-existing insn, + give up. + +2017-01-14 Jeff Law + + PR tree-optimization/79090 + * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject zero length and + variable length stores. + (compute_trims): Delete dead assignment to *trim_tail. + (dse_dom_walker::dse_optimize_stmt): Optimize mem* calls with + zero length. + +2017-01-14 Bernd Schmidt + + PR rtl-optimization/78626 + PR rtl-optimization/78727 + * cprop.c (one_cprop_pass): Collect unconditional traps in the middle + of a block, and split such blocks after everything else is finished. + +2017-01-14 Alan Modra + + PR target/72749 + * combine.c (recog_for_combine_1): Set INSN_CODE before calling + target legitimate_combined_insn. + * config/rs6000/rs6000.c (TARGET_LEGITIMATE_COMBINED_INSN): Define. + (rs6000_legitimate_combined_insn): New function. + * config/rs6000/rs6000.md (UNSPEC_DOLOOP): Delete, and remove + all uses. + (ctr_internal3): Rename from *ctr_internal5. + (ctr_internal4): Rename from *ctr_internal6. + (ctr_internal1, ctr_internal2): Remove '*' from name. + +2017-01-14 Gerald Pfeifer + + * doc/frontends.texi (G++ and GCC): Remove references to Java. + +2017-01-13 Jeff Law + + PR tree-optimization/33562 + PR tree-optimization/61912 + PR tree-optimization/77485 + * tree-ssa-dse.c (delete_dead_call): Accept gsi rather than + a statement. + (delete_dead_assignment): Likewise. + (dse_dom_walker::dse_optimize_stmt): Pass in the gsi rather than + statement to delete_dead_call and delete_dead_assignment. + +2017-01-13 David Malcolm + + PR c/78304 + * substring-locations.c (format_warning_va): Strengthen case 1 so + that both endpoints of the substring must be within the format + range for just the substring to be printed. + +2017-01-13 Uros Bizjak + + * config/i386/i386.opt (msgx): Use ix86_isa_flags2 variable. + * config/i386/i386.c (ix86_target_string): Add missing options + to isa_opts and reorder options by implied ISAs. Rename isa_opts2 to + isa2_opts, ix86_flag_opts to flag2_opts, ix86_target_other to + flags_other and ix86_target_other to flags2_other. Display unknown + isa2 options. + (ix86_valid_target_attribute_inner_p): Add missing options and + reorder options by implied ISAs, as in ix86_target_string. + +2017-01-13 Richard Sandiford + + * hash-table.h (hash_table::too_empty_p): New function. + (hash_table::expand): Use it. + (hash_table::traverse): Likewise. + (hash_table::empty_slot): Use sizeof (value_type) instead of + sizeof (PTR) to convert bytes to elements. Shrink the table + if the current size is excessive for the current number of + elements. + +2017-01-13 Richard Sandiford + + * ira-costs.c (record_reg_classes): Break from the inner loop + early once alt_fail is known to be true. Update outer loop + handling accordingly. + +2017-01-13 Jeff Law + + * tree-ssa-dse.c (decrement_count): New function. + (increment_start_addr, maybe_trim_memstar_call): Likewise. + (dse_dom_walker::optimize_stmt): Call maybe_trim_memstar_call directly + when we know the partially dead statement is a mem* function. + + PR tree-optimization/61912 + PR tree-optimization/77485 + * tree-ssa-dse.c: Include expr.h. + (maybe_trim_constructor_store): New function. + (maybe_trim_partially_dead_store): Call maybe_trim_constructor_store. + + PR tree-optimization/33562 + PR tree-optimization/61912 + PR tree-optimization/77485 + * doc/invoke.texi: Document new dse-max-object-size param. + * params.def (PARM_DSE_MAX_OBJECT_SIZE): New PARAM. + * tree-ssa-dse.c: Include params.h. + (dse_store_status): New enum. + (initialize_ao_ref_for_dse): New, partially extracted from + dse_optimize_stmt. + (valid_ao_ref_for_dse, normalize_ref): New. + (setup_live_bytes_from_ref, compute_trims): Likewise. + (clear_bytes_written_by, maybe_trim_complex_store): Likewise. + (maybe_trim_partially_dead_store): Likewise. + (maybe_trim_complex_store): Likewise. + (dse_classify_store): Renamed from dse_possibly_dead_store_p. + Track what bytes live from the original store. Return tri-state + for dead, partially dead or live. + (dse_dom_walker): Add constructor, destructor and new private members. + (delete_dead_call, delete_dead_assignment): New extracted from + dse_optimize_stmt. + (dse_optimize_stmt): Make a member of dse_dom_walker. + Use initialize_ao_ref_for_dse. + + PR tree-optimization/33562 + PR tree-optimization/61912 + PR tree-optimization/77485 + * sbitmap.h (bitmap_count_bits): Prototype. + (bitmap_clear_range, bitmap_set_range): Likewise. + * sbitmap.c (bitmap_clear_range): New function. + (bitmap_set_range, sbitmap_popcount, bitmap_count_bits): Likewise. + +2017-01-13 Martin Liska + + PR ipa/79043 + * function.c (set_cfun): Add new argument force. + * function.h (set_cfun): Likewise. + * ipa-inline-transform.c (inline_call): Use the function when + strict alising from is dropped for function we inline to. + +2017-01-13 Richard Biener + + * tree-pretty-print.c (dump_generic_node): Fix inverted condition + for dumping GIMPLE INTEGER_CSTs. + +2017-01-13 Rainer Orth + + * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __STDC_VERSION__ + to 201112L since C++17. + +2017-01-13 Maxim Ostapenko + + PR sanitizer/78887 + * asan.c (asan_needs_odr_indicator_p): Don't emit ODR indicators + if -fsanitize=kernel-address is present. + +2017-01-13 Richard Biener + + * tree-pretty-print.c (dump_generic_node): Dump INTEGER_CSTs + as _Literal ( type ) number in case usual suffixes do not + preserve all information. + +2017-01-13 Richard Biener + + PR tree-optimization/77283 + * gimple-ssa-split-paths.c: Include gimple-ssa.h, tree-phinodes.h + and ssa-iterators.h. + (is_feasible_trace): Implement a cost model based on joiner + PHI node uses. + +2017-01-12 Michael Meissner + + PR target/79004 + * config/rs6000/rs6000.md (FP_ISA3): Do not optimize converting + char or short to __float128/_Float128 directly. + +2017-01-12 Martin Sebor + + to -Wformat-overflow. + * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust. + (min_bytes_remaining): Same. + (get_string_length): Same. + (format_string): Same. + (format_directive): Same. + (add_bytes): Same. + (pass_sprintf_length::handle_gimple_call): Same. + +2017-01-12 Jakub Jelinek + + * gimple-ssa-sprintf.c (try_substitute_return_value): Remove + info.nowrite calls with no lhs that can't throw. Return bool + whether gsi_remove has been called or not. + (pass_sprintf_length::handle_gimple_call): Return bool whether + try_substitute_return_value called gsi_remove. Formatting fix. + (pass_sprintf_length::execute): Don't use gsi_remove if + handle_gimple_call returned true. + + PR bootstrap/79069 + * cfgrtl.c (rtl_tidy_fallthru_edge): For any_uncondjump_p that can't + be removed due to side-effects, don't remove following barrier nor + turn the successor edge into fallthru edge. + +2017-01-12 Bill Schmidt + + PR target/79044 + * config/rs6000/rs6000.c (insn_is_swappable_p): Mark + element-reversing loads and stores as not swappable. + +2017-01-12 Nathan Sidwell + Nicolai Stange + + * combine.c (try_combine): Don't ignore result of overlap checking + loop. Combine overlap & asm check into single loop. + +2017-01-12 Richard Biener + + * tree-pretty-print.c (dump_generic_node): Provide -gimple + variant for MEM_REF. Sanitize INTEGER_CST for -gimple. + +2017-01-12 Richard Biener + + * tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION + and TS_TARGET_OPTION directly derive from TS_BASE. + * tree-core.h (tree_optimization_option): Derive from tree_base. + (tree_target_option): Likewise. + +2017-01-11 Uros Bizjak + + * config/i386/i386.c (memory_address_length): Increase len + only when rip_relative_addr_p returns false. + +2017-01-11 Julia Koval + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_SGX_UNSET): New. + (OPTION_MASK_ISA_SGX_SET): New. + (ix86_handle_option): Handle OPT_msgx. + * config.gcc: Added sgxintrin.h. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect sgx. + * config/i386/i386-c.c (ix86_target_macros_internal): Define __SGX__. + * config/i386/i386.c (ix86_target_string): Add -msgx. + (PTA_SGX): New. + (ix86_option_override_internal): Handle new options. + (ix86_valid_target_attribute_inner_p): Add sgx. + * config/i386/i386.h (TARGET_SGX, TARGET_SGX_P): New. + * config/i386/i386.opt: Add msgx. + * config/i386/sgxintrin.h: New file. + * config/i386/x86intrin.h: Add sgxintrin.h. + +2017-01-11 Jakub Jelinek + + PR c++/71537 + * fold-const.c (maybe_nonzero_address): Return 1 for function + local objects. + (tree_single_nonzero_warnv_p): Don't handle function local objects + here. + + PR c++/72813 + * gcc.c (default_compilers): Don't add -o %g.s for -S -save-temps + of c-header. + +2017-01-11 David Malcolm + + PR driver/78877 + * opts.c: Include "spellcheck.h" + (struct string_fragment): New struct. + (struct edit_distance_traits): New + struct. + (get_closest_sanitizer_option): New function. + (parse_sanitizer_options): Offer suggestions for unrecognized arguments. + +2017-01-11 Jakub Jelinek + + * dwarf2out.c (DWARF_COMPILE_UNIT_HEADER_SIZE): For DWARF5 decrease + by 12. + (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): Always + DWARF_COMPILE_UNIT_HEADER_SIZE plus 12. + (DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE): Define. + (calc_base_type_die_sizes): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE + for initial die_offset if dwarf_split_debug_info. + (output_comp_unit): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE for + initial next_die_offset if dwo_id is non-NULL. Don't emit padding + fields. + (output_skeleton_debug_sections): Formatting fix. Use + DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE instead of + DWARF_COMPILE_UNIT_HEADER_SIZE. Don't emit padding. + +2017-01-11 Wilco Dijkstra + + * config/arm/cortex-a53.md: Add bypasses for + cortex_a53_r2f_cvt. + (cortex_a53_r2f): Only use for transfers. + (cortex_a53_f2r): Likewise. + (cortex_a53_r2f_cvt): Add reservation for conversions. + (cortex_a53_f2r_cvt): Likewise. + +2017-01-11 Tamar Christina + + * config/arm/arm_neon.h: Add __artificial__ and gnu_inline + to all inlined functions, change static to extern. + +2017-01-11 Christophe Lyon + + PR target/78253 + * config/arm/arm.c (legitimize_pic_address): Handle reference to + weak symbol. + (arm_assemble_integer): Likewise. + +2017-01-11 Richard Earnshaw + + * config.gcc: Use new awk script to check CPU, FPU and architecture + parameters for --with-... options. + * config/arm/parsecpu.awk: New file + * config/arm/arm-cpus.in: New file. + * config/arm/arm-opts.h: Include arm-cpu.h instead of processing .def + files. + * config/arm/arm.c: Include arm-cpu-data.h instead of processing .def + files. + * config/arm/t-arm: Update dependency rules. + * common/config/arm/arm-common.c: Include arm-cpu-cdata.h instead + of processing .def files. + * config/arm/genopt.sh: Deleted. + * config/arm/gentune.sh: Deleted. + * config/arm/arm-cores.def: Deleted. + * config/arm/arm-arches.def: Deleted. + * config/arm/arm-fpus.def: Deleted. + * config/arm/arm-tune.md: Regenerated. + * config/arm/arm-tables.opt: Regenerated. + * config/arm/arm-cpu.h: New generated file. + * config/arm/arm-cpu-data.h: New generated file. + * config/arm/arm-cpu-cdata.h: New generated file. + +2017-01-11 Maxim Ostapenko + + PR lto/79042 + * lto-cgraph.c (lto_output_varpool_node): Pack dynamically_initialized + bit. + (input_varpool_node): Unpack dynamically_initialized bit. + +2017-01-11 Eric Botcazou + + PR rtl-optimization/79032 + * lra-constraints.c (simplify_operand_subreg): In the MEM case, test + the alignment of the adjusted memory reference against that of MODE, + instead of the alignment of the original memory reference. + +2017-01-11 Martin Jambor + + * hsa.c (hsa_callable_function_p): Revert addition of DECL_ARTIFICIAL + test. + * ipa-hsa.c (process_hsa_functions): Only duplicate non-artificial + decorated functions. + +2017-01-11 Richard Biener + + * tree-vrp.c (evrp_dom_walker::before_dom_children): Also + set range/nonnull info for PHI results. Do not set it on + stmts marked for removal. + +2017-01-10 Eric Botcazou + + * expr.c (store_field): In the bitfield case, fetch the return value + from the registers before applying a single big-endian adjustment. + Always do a final load for a BLKmode value not larger than a word. + +2017-01-10 David Malcolm + + PR c++/77949 + * input.c (selftest::test_accessing_ordinary_linemaps): Verify + that we correctly handle column numbers greater than + LINE_MAP_MAX_COLUMN_NUMBER. + +2017-01-10 Martin Sebor + + PR middle-end/78245 + * gimple-ssa-sprintf.c (get_destination_size): Call + {init,fini}object_sizes. + * tree-object-size.c (addr_object_size): Adjust. + (pass_through_call): Adjust. + (pass_object_sizes::execute): Adjust. + * tree-object-size.h (fini_object_sizes): Declare. + +2017-01-10 Martin Sebor + + PR tree-optimization/78775 + * builtins.c (get_size_range): Move... + * calls.c: ...to here. + (alloc_max_size): Accept zero argument. + (operand_signed_p): Remove. + (maybe_warn_alloc_args_overflow): Call get_size_range. + * calls.h (get_size_range): Declare. + +2017-01-10 Joe Seymour + + * config/msp430/driver-msp430.c (msp430_mcu_data): Sync with data + from TI's devices.csv file as of September 2016. + * config/msp430/msp430.c (msp430_mcu_data): Likewise. + +2017-01-10 Sandra Loosemore + + * doc/extend.texi: Tweak formatting to fix overfull hbox warnings. + * doc/invoke.texi: Likewise. + * doc/md.texi: Likewise. + * doc/objc.texi: Likewise. + +2017-01-10 Joshua Conner + + * config/arm/fuchsia-elf.h: New file. + * config/fuchsia.h: New file. + * config.gcc (*-*-fuchsia*): Set native_system_header_dir. + (aarch64*-*-fuchsia*, arm*-*-fuchsia*, x86_64-*-fuchsia*): Add to + targets. + * config.host: (aarch64*-*-fuchsia*, arm*-*-fuchsia*): Add to hosts. + +2016-01-10 Richard Biener + + PR tree-optimization/79034 + * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds): + Propagate out degenerate PHIs in the joiner. + +2017-01-10 Martin Liska + + * ipa-icf.c (sort_sem_items_by_decl_uid): New function. + (sort_congruence_classes_by_decl_uid): Likewise. + (sort_congruence_class_groups_by_decl_uid): Likewise. + (sem_item_optimizer::merge_classes): Sort class, groups in these + classes and members in the groups by DECL_UID of declarations. + This would make merge operations stable. + +2017-01-10 Martin Liska + + * ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Remove + usage of m_classes_vec. + (sem_item_optimizer::~sem_item_optimizer): Likewise. + (sem_item_optimizer::get_group_by_hash): Likewise. + (sem_item_optimizer::subdivide_classes_by_equality): Likewise. + (sem_item_optimizer::subdivide_classes_by_sensitive_refs): Likewise. + (sem_item_optimizer::verify_classes): Likewise. + (sem_item_optimizer::process_cong_reduction): Likewise. + (sem_item_optimizer::dump_cong_classes): Likewise. + (sem_item_optimizer::merge_classes): Likewise. + * ipa-icf.h (congruence_class_hash): Rename from + congruence_class_group_hash. Remove declaration of m_classes_vec. + +2017-01-10 Andrew Senkevich + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET, + OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET): New. + * config.gcc: Add avx512vpopcntdqintrin.h. + * config/i386/avx512vpopcntdqintrin.h: New. + * config/i386/cpuid.h (bit_AVX512VPOPCNTDQ): New. + * config/i386/i386-builtin-types.def: Add new types. + * config/i386/i386-builtin.def (__builtin_ia32_vpopcountd_v16si, + __builtin_ia32_vpopcountd_v16si_mask, __builtin_ia32_vpopcountq_v8di, + __builtin_ia32_vpopcountq_v8di_mask): New. + * config/i386/i386-c.c (ix86_target_macros_internal): Define + __AVX512VPOPCNTDQ__. + * config/i386/i386.c (ix86_target_string): Add -mavx512vpopcntdq. + (PTA_AVX512VPOPCNTDQ): Define. + * config/i386/i386.h (TARGET_AVX512VPOPCNTDQ, + TARGET_AVX512VPOPCNTDQ_P): Define. + * config/i386/i386.opt: Add mavx512vpopcntdq. + * config/i386/immintrin.h: Include avx512vpopcntdqintrin.h. + * config/i386/sse.md (define_insn "vpopcount"): New. + +2017-01-01 Jan Hubicka + + PR middle-end/77484 + * predict.def (PRED_CALL): Set to 67. + +2017-01-09 Eric Botcazou + + * expr.c (store_field): In the bitfield case, if the value comes from + a function call and is of an aggregate type returned in registers, do + not modify the field mode; extract the value in all cases if the mode + is BLKmode and the size is not larger than a word. + +2017-01-09 Dominique d'Humieres + + PR target/71017 + * config/i386/cpuid.h: Fix undefined behavior. + +2017-01-04 Jeff Law + + PR tree-optimization/79007 + PR tree-optimization/67955 + * tree-ssa-alias.c (same_addr_size_stores_p): Only need to be + conservative for pt.null when flag_non_call_exceptions is on. + +2017-01-09 Jakub Jelinek + + PR translation/79019 + PR translation/79020 + * params.def (PARAM_INLINE_MIN_SPEEDUP, + PARAM_IPA_CP_SINGLE_CALL_PENALTY, + PARAM_USE_AFTER_SCOPE_DIRECT_EMISSION_THRESHOLD): Fix typos + in descriptions. + * config/avr/avr.opt (maccumulate-args): Likewise. + * config/msp430/msp430.opt (mwarn-mcu): Likewise. + * common.opt (freport-bug): Likewise. + * cif-code.def (CIF_FINAL_ERROR): Likewise. + * doc/invoke.texi (ipa-cp-single-call-penalty): Likewise. + * config/s390/s390.c (s390_invalid_binary_op): Fix spelling in + translatable string. + * config/i386/i386.c (function_value_32): Likewise. + * config/nios2/nios2.c (nios2_valid_target_attribute_rec): Likewise. + * config/msp430/msp430.c (msp430_option_override, msp430_attr): + Likewise. + * config/msp430/driver-msp430.c (msp430_select_hwmult_lib): Likewise. + * common/config/msp430/msp430-common.c (msp430_handle_option): + Likewise. + * symtab.c (symtab_node::verify_base): Likewise. + * opts.c (set_debug_level): Likewise. + * tree.c (verify_type_variant): Likewise. Fix typo in comment. + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add + missing whitespace to translatable strings. + * config/avr/avr.md (bswapsi2): Fix typo in comment. + * config/sh/superh.h: Likewise. + * config/i386/xopintrin.h: Likewise. + * config/i386/znver1.md: Likewise. + * config/rs6000/rs6000.c (struct rs6000_opt_mask): Likewise. + * ipa-inline-analysis.c (compute_inline_parameters): Likewise. + * double-int.h (struct double_int): Likewise. + * double-int.c (div_and_round_double): Likewise. + * wide-int.cc: Likewise. + * tree-ssa.c (non_rewritable_mem_ref_base): Likewise. + * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise. + * cfgcleanup.c (crossjumps_occured): Renamed to ... + (crossjumps_occurred): ... this. + (try_crossjump_bb, try_head_merge_bb, try_optimize_cfg, cleanup_cfg): + Adjust all uses. + + PR tree-optimization/78899 + * tree-if-conv.c (version_loop_for_if_conversion): Instead of + returning bool return struct loop *, NULL for failure and the new + loop on success. + (versionable_outer_loop_p): Don't version outer loop if it has + dont_vectorized bit set. + (tree_if_conversion): When versioning outer loop, ensure + tree_if_conversion is performed also on the inner loop of the + non-vectorizable outer loop copy. + * tree-vectorizer.c (set_uid_loop_bbs): Formatting fix. Fold + LOOP_VECTORIZED in inner loop of the scalar outer loop and + prevent vectorization of it. + (vectorize_loops): For outer + inner LOOP_VECTORIZED, ensure + the outer loop vectorization of the non-scalar version is attempted + before vectorization of the inner loop in scalar version. If + outer LOOP_VECTORIZED guarded loop is not vectorized, prevent + vectorization of its inner loop. + * tree-vect-loop-manip.c (rename_variables_in_bb): If outer_loop + has 2 inner loops, rename also on edges from bb whose single pred + is outer_loop->header. Fix typo in function comment. + +2017-01-09 Martin Sebor + + PR bootstrap/79033 + * asan.c (asan_emit_stack_protection): Increase local buffer size + to avoid snprintf truncation warning. + +2017-01-09 Andrew Pinski + + * config/aarch64/aarch64-cores.def: Add thunderx2t99. Change vulcan + to reference thunderx2t99 for the tuning structure + * config/aarch64/aarch64-cost-tables.h (vulcan_extra_costs): + Rename to ... + (thunderx2t99_extra_costs): This. + * config/aarch64/aarch64-tune.md: Regenerate. + * config/aarch64/aarch64.c (vulcan_addrcost_table): Rename to ... + (vulcan_addrcost_table): This. + (vulcan_regmove_cost): Rename to ... + (thunderx2t99_regmove_cost): This. + (vulcan_vector_cost): Rename to ... + (thunderx2t99_vector_cost): this. + (vulcan_branch_cost): Rename to ... + (thunderx2t99_branch_cost): This. + (vulcan_tunings): Rename to ... + (thunderx2t99_tunings): This and s/vulcan/thunderx2t99 . + * doc/invoke.texi (AARCH64/mtune): Add thunderx2t99. + +2017-01-09 Martin Jambor + + PR ipa/78365 + PR ipa/78599 + * ipa-prop.h (ipa_jump_func): Swap positions of vr_known and m_vr. + * ipa-cp.c (ipa_vr_operation_and_type_effects): New function. + (propagate_vr_accross_jump_function): Use the above function for all + value range computations for pass-through jump functions and type + converasion from explicit value range values. + (ipcp_propagate_stage): Do not attempt to deduce types of formal + parameters from TYPE_ARG_TYPES. + * ipa-prop.c (ipa_write_jump_function): Remove trailing whitespace. + (ipa_write_node_info): Stream type of the actual argument. + (ipa_read_node_info): Likewise. Also remove trailing whitespace. + +2017-01-09 Martin Liska + + PR pch/78970 + * gcc.c (driver_handle_option): Handle OPT_E and set have_E. + (lookup_compiler): Do not show error message with have_E. + +2017-01-09 Jakub Jelinek + + PR tree-optimization/78938 + * tree-vect-stmts.c (vectorizable_condition): For non-masked COND_EXPR + where comp_vectype is VECTOR_BOOLEAN_TYPE_P, use + BIT_{NOT,XOR,AND,IOR}_EXPR on the comparison operands instead of + {EQ,NE,GE,GT,LE,LT}_EXPR directly inside of VEC_COND_EXPR. Formatting + fixes. + +2017-01-09 Kyrylo Tkachov + + * tree-ssa-address.c (gen_addr_rtx): Don't handle index if it + is const0_rtx. + +2017-01-09 Richard Biener + + PR tree-optimization/78997 + * tree-vect-slp.c (vect_mask_constant_operand_p): Handle SSA + name condition properly. + +2017-01-09 Richard Biener + + PR debug/79000 + * dwarf2out.c (is_cxx): New overload with context. + (is_naming_typedef_decl): Use it. + +2017-01-08 Sandra Loosemore + + * invoke.texi (Option Summary): Correct spacing in option lists + and add line breaks to fix over-long lines. + +2017-01-08 Sandra Loosemore + + PR middle-end/17660 + + * extend.texi (Common Variable Attributes): Add xref to GCC + Internals manual to explain mode attribute keywords. + +2017-01-08 Sandra Loosemore + + PR other/16519 + * doc/invoke.texi (Option Summary): Move -pthread to Linker Options + and Preprocessor Options. + (Options for Linking): Document -pthread here.... + (RS/6000 and PowerPC Options): ...not here. + (Solaris 2 Options): ...or here. + * doc/cppopts.texi: Document -pthread. + +2017-01-08 Martin Sebor + + PR middle-end/77708 + * doc/invoke.texi (Warning Options): Document -Wformat-truncation. + * gimple-ssa-sprintf.c (call_info::reval_used, call_info::warnopt): + New member functions. + (format_directive): Used them. + (add_bytes): Same. + (pass_sprintf_length::handle_gimple_call): Same. + * graphite-sese-to-poly.c (tree_int_to_gmp): Increase buffer size + to avoid truncation for any argument. + (extract_affine_mul): Same. + * tree.c (get_file_function_name): Same. + +2017-01-01 Jan Hubicka + + PR middle-end/77484 + * predict.def (PRED_INDIR_CALL): Set to 86. + +2017-01-07 Sandra Loosemore + + PR preprocessor/54124 + * doc/cppopts.texi: Reformat -d subtable to list the full name + of the options. Add cross-reference to the docs for the general + compiler -d options. + * doc/invoke.texi (Developer Options): Add cross-reference to the + preprocessor-specific -d option documentation. + +2017-01-07 Sandra Loosemore + + PR preprocessor/13498 + * doc/cpp.texi (Search Path): Rewrite to remove obsolete and + redudant material, and reflect new command-line options. + (System Headers): Likewise. + +2017-01-07 Sandra Loosemore + + * doc/cppdiropts.texi: Merge documentation of -I, -iquote, + -isystem, and -idirafter. Copy-edit. + * doc/cppopts.texi: Copy-edit. Remove contradiction about + default for -ftrack-macro-expansion. Delete obsolete and + badly-formatted implementation details about -fdebug-cpp output. + * doc/cppwarnopts.texi: Copy-edit. + +2017-01-07 David Malcolm + + PR c++/72803 + * input.c (selftest::test_accessing_ordinary_linemaps): Verify + that the transition from a max line width >= 1<<10 to narrower + lines works correctly. + +2017-01-07 Alexandre Oliva + + * doc/options.texi (PerFunction): New. + * opt-functions.awk (switch_flags): Map both Optimization and + PerFunction to CL_OPTIMIZATION. + * opth-gen.awk: Test for PerFunction flag along with + Optimization. + * optc-save-gen.awk: Likewise. Introduce var_opt_hash and set + it only when the latter is present. Skip those that don't in + the hash function generator. + * common.opt (fvar-tracking): Mark as PerFunction instead of + Optimization. + (fvar-tracking-assignments): Likewise. + (fvar-tracking-assignments-toggle): Likewise. + (fvar-tracking-uninit): Likewise. + +2017-01-07 Jakub Jelinek + + PR translation/79018 + * params.def (PARAM_MAX_STORES_TO_MERGE): Add missing space between + the and store. + +2017-01-06 Mikael Pettersson + + PR target/57583 + * config/m68k/m68k.opt (LONG_JUMP_TABLE_OFFSETS): New option. + * config/m68k/linux.h (ASM_RETURN_CASE_JUMP): Handle + TARGET_LONG_JUMP_TABLE_OFFSETS. + * config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise. + * config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise. + * config/m68k/m68k.h (CASE_VECTOR_MODE): Likewise. + (ASM_OUTPUT_ADDR_DIFF_ELF): Likewise. + * config/m68k/m68k.md (tablejump expander): Likewise. + (*tablejump_pcrel_hi): Renamed from unnamed insn, reject + TARGET_LONG_JUMP_TABLE_OFFSETS. + (*tablejump_pcrel_si): New insn, handle TARGET_LONG_JUMP_TABLE_OFFSETS. + * doc/invoke.texi (M68K options): Add -mlong-jump-table-offsets. + +2017-01-06 Edgar E. Iglesias + David Holsgrove + + * common/config/microblaze/microblaze-common.c + (TARGET_EXCEPT_UNWIND_INFO): Remove. + * config/microblaze/microblaze-protos.h (microblaze_eh_return): + New prototype. + * config/microblaze/microblaze.c (microblaze_must_save_register) + (microblaze_expand_epilogue, microblaze_return_addr): Handle + calls_eh_return. + (microblaze_eh_return): New function. + * config/microblaze/microblaze.h (RETURN_ADDR_OFFSET) + (EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM) + (EH_RETURN_STACKADJ_RTX, ASM_PREFERRED_EH_DATA_FORMAT): New macros. + * config/microblaze/microblaze.md (eh_return): New pattern. + +2017-01-06 Jakub Jelinek + + * system.h (GCC_DIAGNOSTIC_PUSH_IGNORED, GCC_DIAGNOSTIC_POP, + GCC_DIAGNOSTIC_STRINGIFY): Define. + + * read-rtl.c (rtx_reader::read_rtx_code): Avoid -Wsign-compare warning. + +2017-01-06 Andre Vieira + + * config/arm/arm.md (): New. + (): New. + * config/arm/arm.c (arm_arch5te): New. + (arm_option_override): Set arm_arch5te. + (arm_coproc_builtin_available): Add support for mcrr, mcrr2, mrrc + and mrrc2. + * config/arm/arm-builtins.c (MCRR_QUALIFIERS): Define to... + (arm_mcrr_qualifiers): ... this. New. + (MRRC_QUALIFIERS): Define to... + (arm_mrrc_qualifiers): ... this. New. + * config/arm/arm_acle.h (__arm_mcrr, __arm_mcrr2, __arm_mrrc, + __arm_mrrc2): New. + * config/arm/arm_acle_builtins.def (mcrr, mcrr2, mrrc, mrrc2): New. + * config/arm/iterators.md (MCRRI, mcrr, MCRR): New. + (MRRCI, mrrc, MRRC): New. + * config/arm/unspecs.md (VUNSPEC_MCRR, VUNSPEC_MCRR2, VUNSPEC_MRRC, + VUNSPEC_MRRC2): New. + +2017-01-06 Andre Vieira + + * config/arm/arm.md (): New. + (): New. + * config/arm/arm.c (arm_coproc_builtin_available): Add + support for mcr, mrc, mcr2 and mrc2. + * config/arm/arm-builtins.c (MCR_QUALIFIERS): Define to... + (arm_mcr_qualifiers): ... this. New. + (MRC_QUALIFIERS): Define to ... + (arm_mrc_qualifiers): ... this. New. + (MCR_QUALIFIERS): Define to ... + (arm_mcr_qualifiers): ... this. New. + * config/arm/arm_acle.h (__arm_mcr, __arm_mrc, __arm_mcr2, + __arm_mrc2): New. + * config/arm/arm_acle_builtins.def (mcr, mcr2, mrc, mrc2): New. + * config/arm/iterators.md (MCRI, mcr, MCR, MRCI, mrc, MRC): New. + * config/arm/unspecs.md (VUNSPEC_MCR, VUNSPEC_MCR2, VUNSPEC_MRC, + VUNSPEC_MRC2): New. + +2017-01-06 Andre Vieira + + * config/arm/arm.md (*ldc): New. + (*stc): New. + (): New. + (): New. + * config/arm/arm.c (arm_coproc_builtin_available): Add + support for ldc,ldcl,stc,stcl,ldc2,ldc2l,stc2 and stc2l. + (arm_coproc_ldc_stc_legitimate_address): New. + * config/arm/arm-builtins.c (arm_type_qualifiers): Add + 'qualifier_const_pointer'. + (LDC_QUALIFIERS): Define to... + (arm_ldc_qualifiers): ... this. New. + (STC_QUALIFIERS): Define to... + (arm_stc_qualifiers): ... this. New. + * config/arm/arm-protos.h + (arm_coproc_ldc_stc_legitimate_address): New. + * config/arm/arm_acle.h (__arm_ldc, __arm_ldcl, __arm_stc, + __arm_stcl, __arm_ldc2, __arm_ldc2l, __arm_stc2, __arm_stc2l): New. + * config/arm/arm_acle_builtins.def (ldc, ldc2, ldcl, ldc2l, stc, + stc2, stcl, stc2l): New. + * config/arm/constraints.md (Uz): New. + * config/arm/iterators.md (LDCI, STCI, ldc, stc, LDC STC): New. + * config/arm/unspecs.md (VUNSPEC_LDC, VUNSPEC_LDC2, VUNSPEC_LDCL, + VUNSPEC_LDC2L, VUNSPEC_STC, VUNSPEC_STC2, VUNSPEC_STCL, + VUNSPEC_STC2L): New. + +2017-01-06 Andre Vieira + + * config/arm/arm.md (): New. + * config/arm/arm.c (neon_const_bounds): Rename this ... + (arm_const_bounds): ... this. + (arm_coproc_builtin_available): New. + * config/arm/arm-builtins.c (SIMD_MAX_BUILTIN_ARGS): Increase. + (arm_type_qualifiers): Add 'qualifier_unsigned_immediate'. + (CDP_QUALIFIERS): Define to... + (arm_cdp_qualifiers): ... this. New. + (void_UP): Define. + (arm_expand_builtin_args): Add case for 6 arguments. + * config/arm/arm-protos.h (neon_const_bounds): Rename this ... + (arm_const_bounds): ... this. + (arm_coproc_builtin_available): New. + * config/arm/arm_acle.h (__arm_cdp): New. + (__arm_cdp2): New. + * config/arm/arm_acle_builtins.def (cdp): New. + (cdp2): New. + * config/arm/iterators.md (CDPI,CDP,cdp): New. + * config/arm/neon.md: Rename all 'neon_const_bounds' to + 'arm_const_bounds'. + * config/arm/types.md (coproc): New. + * config/arm/unspecs.md (VUNSPEC_CDP, VUNSPEC_CDP2): New. + * doc/extend.texi (ACLE): Add a mention of Coprocessor intrinsics. + * doc/sourcebuild.texi (arm_coproc1_ok, arm_coproc2_ok, + arm_coproc3_ok, arm_coproc4_ok): Document new effective targets. + +2017-01-06 Andre Vieira + + * config/arm/arm-builtins.c (arm_unsigned_binop_qualifiers): New. + (UBINOP_QUALIFIERS): New. + (si_UP): Define. + (acle_builtin_data): New. Change comment. + (arm_builtins): Remove ARM_BUILTIN_CRC32B, ARM_BUILTIN_CRC32H, + ARM_BUILTIN_CRC32W, ARM_BUILTIN_CRC32CB, ARM_BUILTIN_CRC32CH, + ARM_BUILTIN_CRC32CW. Add ARM_BUILTIN_ACLE_BASE and include + arm_acle_builtins.def. + (ARM_BUILTIN_ACLE_PATTERN_START): Define. + (arm_init_acle_builtins): New. + (CRC32_BUILTIN): Remove. + (bdesc_2arg): Remove entries for crc32b, crc32h, crc32w, + crc32cb, crc32ch and crc32cw. + (arm_init_crc32_builtins): Remove. + (arm_init_builtins): Use arm_init_acle_builtins rather + than arm_init_crc32_builtins. + (arm_expand_acle_builtin): New. + (arm_expand_builtin): Use 'arm_expand_acle_builtin'. + * config/arm/arm_acle_builtins.def: New. + +2017-01-06 Andre Vieira + + * config/arm/arm-builtins.c (neon_builtin_datum): Rename to .. + (arm_builtin_datum): ... this. + (arm_init_neon_builtin): Rename to ... + (arm_init_builtin): ... this. Add a new parameters PREFIX + and USE_SIG_IN_NAME. + (arm_init_neon_builtins): Replace 'arm_init_neon_builtin' with + 'arm_init_builtin'. Replace type 'neon_builtin_datum' with + 'arm_builtin_datum'. + (arm_init_vfp_builtins): Likewise. + (builtin_arg): Rename enum's replacing 'NEON_ARG' with + 'ARG_BUILTIN' and add a 'ARG_BUILTIN_NEON_MEMORY. + (arm_expand_neon_args): Rename to ... + (arm_expand_builtin_args): ... this. Rename builtin_arg + enum values and differentiate between ARG_BUILTIN_MEMORY + and ARG_BUILTIN_NEON_MEMORY. + (arm_expand_neon_builtin_1): Rename to ... + (arm_expand_builtin_1): ... this. Rename builtin_arg enum + values, arm_expand_builtin_args and add bool parameter NEON. + (arm_expand_neon_builtin): Use arm_expand_builtin_1. + (arm_expand_vfp_builtin): Likewise. + (NEON_MAX_BUILTIN_ARGS): Remove, it was unused. + +2017-01-01 Jan Hubicka + + PR middle-end/77484 + * predict.def (PRED_POLYMORPHIC_CALL): Set to 59. + * predict.c (tree_estimate_probability_bb): Reverse direction of + polymorphic call predictor. + +2017-01-06 David Malcolm + + * passes.c (execute_one_pass): Split out pass-skipping logic into... + (determine_pass_name_match): ...this new function and... + (should_skip_pass_p): ...this new function. + +2017-01-06 Nathan Sidwell + + * ipa-visibility.c (function_and_variable_visibility): Reformat + comments and long lines. Remove extrneous if. + * symtab.c (symtab_node::make_decl_local): Fix code format. + (symtab_node::set_section_for_node): Fix comment typo. + +2017-01-06 Martin Liska + + PR bootstrap/79003 + * lra-constraints.c: Rename invariant to lra_invariant. + * predict.c (set_even_probabilities): Initialize e to NULL. + +2017-01-05 Martin Sebor + + PR tree-optimization/78910 + * gimple-ssa-sprintf.c (tree_digits): Add an argument. + (format_integer): Correct off-by-one error in the handling + of precision with negative numbers in signed conversions.. + +2017-01-05 Eric Botcazou + + * doc/invoke.texi (C Dialect Options): Adjust -fsso-struct entry. + +2017-01-05 Jakub Jelinek + + PR tree-optimization/71016 + * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Pass cond_stmt to + factor_out_conditional_conversion. Formatting fix. + (factor_out_conditional_conversion): Add cond_stmt argument. + If arg1 is INTEGER_CST, punt if new_arg0 is not any operand of + cond_stmt and if arg0_def_stmt is not the only stmt in its bb. + Formatting fix. + +2017-01-05 David Malcolm + + * Makefile.in (OBJS): Add read-md.o, read-rtl.o, + read-rtl-function.o, and selftest-rtl.o. + * config/aarch64/aarch64.c: Include selftest.h and selftest-rtl.h. + (selftest::aarch64_test_loading_full_dump): New function. + (selftest::aarch64_run_selftests): New function. + (TARGET_RUN_TARGET_SELFTESTS): Wire it up to + selftest::aarch64_run_selftests. + * config/i386/i386.c + (selftest::ix86_test_loading_dump_fragment_1): New function. + (selftest::ix86_test_loading_call_insn): New function. + (selftest::ix86_test_loading_full_dump): New function. + (selftest::ix86_test_loading_unspec): New function. + (selftest::ix86_run_selftests): Call the new functions. + * emit-rtl.c (maybe_set_max_label_num): New function. + * emit-rtl.h (maybe_set_max_label_num): New decl. + * function.c (instantiate_decls): Guard call to + instantiate_decls_1 with if (DECL_INITIAL (fndecl)). + * function-tests.c (selftest::verify_three_block_rtl_cfg): Remove + "static". + * gensupport.c (gen_reader::gen_reader): Pass "false" + for new "compact" param of rtx_reader. + * print-rtl.c (rtx_writer::print_rtx_operand): Print "(nil)" + rather than an empty string for NULL strings. + * read-md.c: Potentially include config.h rather than bconfig.h. + Wrap include of errors.h with #ifdef GENERATOR_FILE. + (have_error): New global, copied from errors.c. + (md_reader::read_name): Rename to... + (md_reader::read_name_1): ...this, adding "out_loc" param, + and converting "missing name or number" to returning false, rather + than failing. + (md_reader::read_name): Reimplement in terms of read_name_1. + (md_reader::read_name_or_nil): New function. + (md_reader::read_string): Handle "(nil)" by returning NULL. + (md_reader::md_reader): Add new param "compact". + (md_reader::read_md_files): Wrap with #ifdef GENERATOR_FILE. + (md_reader::read_file): New method. + * read-md.h (md_reader::md_reader): Add new param "compact". + (md_reader::read_file): New method. + (md_reader::is_compact): New accessor. + (md_reader::read_name): Convert return type from void to file_location. + (md_reader::read_name_or_nil): New decl. + (md_reader::read_name_1): New decl. + (md_reader::m_compact): New field. + (noop_reader::noop_reader): Pass "false" for new "compact" param + of rtx_reader. + (rtx_reader::rtx_reader): Add new "compact" param. + (rtx_reader::read_rtx_operand): Make virtual and convert return + type from void to rtx. + (rtx_reader::read_until): New decl. + (rtx_reader::handle_any_trailing_information): New virtual function. + (rtx_reader::postprocess): New virtual function. + (rtx_reader::finalize_string): New virtual function. + (rtx_reader::m_in_call_function_usage): New field. + (rtx_reader::m_reuse_rtx_by_id): New field. + * read-rtl-function.c: New file. + * selftest-rtl.c (selftest::assert_rtx_ptr_eq_at): New function. + * selftest-rtl.h (ASSERT_RTX_PTR_EQ): New macro. + (selftest::verify_three_block_rtl_cfg): New decl. + * read-rtl-function.h: New file. + * read-rtl.c: Potentially include config.h rather than bconfig.h. + For host, include function.h, memmodel.h, and emit-rtl.h. + (one_time_initialization): New function. + (struct compact_insn_name): New struct. + (compact_insn_names): New array. + (find_code): Handle insn codes in compact dumps. + (apply_subst_iterator): Wrap with #ifdef GENERATOR_FILE. + (bind_subst_iter_and_attr): Likewise. + (add_condition_to_string): Likewise. + (add_condition_to_rtx): Likewise. + (apply_attribute_uses): Likewise. + (add_current_iterators): Likewise. + (apply_iterators): Likewise. + (initialize_iterators): Guard usage of apply_subst_iterator with + #ifdef GENERATOR_FILE. + (read_conditions): Wrap with #ifdef GENERATOR_FILE. + (md_reader::read_mapping): Likewise. + (add_define_attr_for_define_subst): Likewise. + (add_define_subst_attr): Likewise. + (read_subst_mapping): Likewise. + (check_code_iterator): Likewise. + (rtx_reader::read_rtx): Likewise. Move one-time initialization + logic to... + (one_time_initialization): New function. + (rtx_reader::read_until): New method. + (read_flags): New function. + (parse_reg_note_name): New function. + (rtx_reader::read_rtx_code): Initialize "iterator" to NULL. + Handle reuse_rtx ids. + Wrap iterator lookup within #ifdef GENERATOR_FILE. + Add parsing support for RTL dumps, mirroring the special-cases in + print_rtx, by calling read_flags, reading REG_NOTE names, INSN_UID + values, and calling handle_any_trailing_information. + (rtx_reader::read_rtx_operand): Convert return type from void + to rtx, returning return_rtx. Handle case 'e'. Call + finalize_string on XSTR and XTMPL fields. + (rtx_reader::read_nested_rtx): Handle dumps in which trailing + "(nil)" values were omitted. Call the postprocess vfunc on the + return_rtx. + (rtx_reader::rtx_reader): Add new "compact" param and pass to base + class ctor. Initialize m_in_call_function_usage. Call + one_time_initialization. + * rtl-tests.c (selftest::test_uncond_jump): Call + set_new_first_and_last_insn. + * rtl.h (read_rtx): Wrap decl with #ifdef GENERATOR_FILE. + * selftest-rtl.c: New file. + * selftest-rtl.h (class selftest::rtl_dump_test): New class. + (selftest::get_insn_by_uid): New decl. + * selftest-run-tests.c (selftest::run_tests): Call + read_rtl_function_c_tests. + * selftest.h (selftest::read_rtl_function_c_tests): New decl. + * tree-dfa.c (ssa_default_def): Return NULL_TREE for rtl function + dumps. + +2017-01-05 Uros Bizjak + + * config/i386/i386.md (*testqi_ext_3): No need to handle memory + operands in a special way. Assert that pos+len <= mode precision. + +2017-01-05 Jakub Jelinek + + * common.opt (fvect-cost-model): Remove RejectNegative flag, use + 3 argument Alias with unlimited for the negative form. + (fno-vect-cost-model): Removed. + +2017-01-05 Martin Liska + + * hsa-gen.c (gen_hsa_divmod): New function. + (gen_hsa_insn_for_internal_fn_call): Use the function for IFN_DIVMOD. + +2017-01-05 Martin Liska + + PR pch/78970 + * gcc.c (lookup_compiler): Reject '-' filename for a precompiled + header. + +2017-01-05 Andreas Krebbel + + * config/s390/s390.c (s390_expand_setmem): Unroll the loop for + small constant length operands. + +2017-01-05 Andreas Krebbel + + * config/s390/s390.c (s390_expand_setmem): Avoid overlapping bytes + between loop iterations. + +2017-01-05 Martin Liska + + PR sanitizer/78815 + * gimplify.c (gimplify_decl_expr): Compare to + asan_poisoned_variables instread of checking flags. + (gimplify_target_expr): Likewise. + (gimplify_expr): Likewise. + (gimplify_function_tree): Conditionally initialize + asan_poisoned_variables. + +2017-01-04 Jeff Law + + PR tree-optimizatin/78812 + * rtl.h (contains_mem_rtx_p): Prototype. + * ifcvt.c (containts_mem_rtx_p): Move from here to... + * rtlanal.c (contains_mem_rtx_p): Here and remove static linkage. + * gcse.c (prune_expressions): Use contains_mem_rtx_p to discover + and prune MEMs that are not at the toplevel of a SET_SRC rtx. Look + through ZERO_EXTEND and SIGN_EXTEND when trying to avoid pruning MEMs. + +2017-01-04 Alexandre Oliva + + * input.c (assert_char_at_range): Default-initialize actual_range. + +2017-01-04 Alexandre Oliva + + * df-scan.c (df_ref_create_structure): Make regno unsigned, + to match the caller. + +2017-01-04 Alexandre Oliva + + * cfgexpand.c (expand_gimple_basic_block): Disregard debug + insns after final jump in test to emit dummy move. + +2017-01-04 Alexandre Oliva + + * gimple-iterator.h (gsi_one_nondebug_before_end_p): New. + * tree-eh.c (cleanup_empty_eh): Skip more debug stmts. + +2017-01-04 Alexandre Oliva + + * multiple_target.c (create_dispatcher_calls): Init e_next. + * tree-ssa-loop-split.c (split_loop): Init border. + * tree-vect-loop.c (vect_determine_vectorization_factor): Init + scalar_type. + +2017-01-04 Michael Meissner + + PR target/71977 + PR target/70568 + PR target/78823 + * config/rs6000/predicates.md (sf_subreg_operand): New predicate. + (altivec_register_operand): Do not return true if the operand + contains a SUBREG mixing SImode and SFmode. + (vsx_register_operand): Likewise. + (vsx_reg_sfsubreg_ok): New predicate. + (vfloat_operand): Do not return true if the operand contains a + SUBREG mixing SImode and SFmode. + (vint_operand): Likewise. + (vlogical_operand): Likewise. + (gpc_reg_operand): Likewise. + (int_reg_operand): Likewise. + * config/rs6000/rs6000-protos.h (valid_sf_si_move): Add declaration. + * config/rs6000/rs6000.c (valid_sf_si_move): New function to + determine if a MOVSI or MOVSF operation contains SUBREGs that mix + SImode and SFmode. + (rs6000_emit_move_si_sf_subreg): New helper function. + (rs6000_emit_move): Call rs6000_emit_move_si_sf_subreg to possbily + fixup SUBREGs involving SImode and SFmode. + * config/rs6000/vsx.md (SFBOOL_*): New constants that are operand + numbers for the new peephole2 optimization. + (peephole2 for SFmode unions): New peephole2 to optimize cases in + the GLIBC math library that do AND/IOR/XOR operations on single + precision floating point. + * config/rs6000/rs6000.h (TARGET_NO_SF_SUBREG): New internal + target macros to say whether we need to avoid SUBREGs mixing + SImode and SFmode. + (TARGET_ALLOW_SF_SUBREG): Likewise. + * config/rs6000/rs6000.md (UNSPEC_SF_FROM_SI): New unspecs. + (UNSPEC_SI_FROM_SF): Likewise. + (iorxor): Change spacing. + (and_ior_xor): New iterator for AND, IOR, and XOR. + (movsi_from_sf): New insns for SImode/SFmode SUBREG support. + (movdi_from_sf_zero_ext): Likewise. + (mov_hardfloat, FMOVE32 iterator): Use register_operand + instead of gpc_reg_operand. Add SImode/SFmode SUBREG support. + (movsf_from_si): New insn for SImode/SFmode SUBREG support. + (fma4): Use gpc_reg_operand instead of register_operand. + (fms4): Likewise. + (fnma4): Likewise. + (fnms4): Likewise. + (nfma4): Likewise. + (nfms4): Likewise. + +2017-01-04 Marek Polacek + + PR c++/64767 + * doc/invoke.texi: Document -Wpointer-compare. + +2017-01-04 Jakub Jelinek + + * optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without + RejectNegative. + + * dwarf2out.c (output_loc_list): Don't throw away 64K+ location + descriptions for -gdwarf-5 and emit them as uleb128 instead of + 2-byte data. + +2017-01-04 Kelvin Nilsen + + PR target/78056 + * doc/sourcebuild.texi (PowerPC-specific attributes): Add + documentation of the powerpc_popcntb_ok attribute. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Add + code to issue warning messages if a requested CPU configuration is + not supported by the binary (assembler and loader) toolchain. + (spe_init_builtins): Add two assertions to prevent ICE if attempt is + made to define a built-in function that has been disabled. + (paired_init_builtins): Add assertion to prevent ICE if attempt is + made to define a built-in function that has been disabled. + (altivec_init_builtins): Add comment explaining why definition + of the DST built-in functions is not preceded by an assertion + check. Add assertions to prevent ICE if attempts are made to + define an altivec predicate or an abs* built-in function that has + been disabled. + (htm_init_builtins): Add comment explaining why definition of the + htm built-in functions is not preceded by an assertion check. + +2017-01-04 Jeff Law + + PR tree-optimizatin/67955 + * tree-ssa-alias.c (same_addr_size_stores_p): Check offsets first. + Allow any SSA_VAR_P as the base objects. Use integer_zerop. Verify + the points-to solution does not include pt_null. Use DECL_PT_UID + unconditionally. + +2017-01-04 Uros Bizjak + + * config/i386/i386.md (HI/SImode test with imm to QImode splitters): + Use gen_int_mode instead of gen_lopwart for const_int operands. + +2017-01-04 Jakub Jelinek + + PR tree-optimization/71563 + * match.pd: Simplify X << Y into X if Y is known to be 0 or + out of range value - has low bits known to be zero. + +2017-01-04 Alan Modra + + * Makefile.in (aclocal_deps): Update and order as per aclocal.m4. + * configure: Regenerate. + * config.in: Regenerate. + +2017-01-04 Jakub Jelinek + + PR bootstrap/77569 + * input.c (ebcdic_execution_charset::on_error): Don't use strstr for + a substring of the message, but strcmp with the whole message. Ifdef + ENABLE_NLS, translate the message first using dgettext. + +2017-01-03 Jeff Law + + PR tree-optimizatin/78856 + * tree-ssa-threadupdate.c: Include tree-vectorizer.h. + (mark_threaded_blocks): Remove code to truncate thread paths that + cross multiple loop headers. Instead invalidate the cached loop + iteration information and handle case of a thread path walking + into an irreducible region. + +2017-01-03 Michael Meissner + + PR target/78900 + * config/rs6000/rs6000.c (rs6000_split_signbit): Change some + assertions. Add support for doing the signbit if the IEEE 128-bit + floating point value is in a GPR. + * config/rs6000/rs6000.md (Fsignbit): Delete. + (signbit2_dm): Delete using and just use "wa". + Update the length attribute if the value is in a GPR. + (signbit2_dm_ext): Add combiner pattern to eliminate + the sign or zero extension instruction, since the value is always 0/1. + (signbit2_dm2): Delete using . + + PR target/78953 + * config/rs6000/vsx.md (vsx_extract__store_p9): If we are + extracting SImode to a GPR register so that we can generate a + store, limit the vector to be in a traditional Altivec register + for the vextuwrx instruction. + +2017-01-03 Ian Lance Taylor + + * godump.c (go_format_type): Treat ENUMERAL_TYPE like INTEGER_TYPE. + +2017-01-03 Martin Sebor + + PR tree-optimization/78696 + * gimple-ssa-sprintf.c (format_floating): Correct handling of + precision. Use MPFR for %f for greater fidelity. Correct handling + of %g. + (pass_sprintf_length::compute_format_length): Set width and precision + specified by asrerisk to void_node for vararg functions. + (try_substitute_return_value): Adjust dump output. + +2017-01-03 David Edelsohn + + * doc/invoke.texi (RS6000 options): LRA is enabled by default. + +2017-01-03 Eric Botcazou + + * doc/invoke.texi (SPARC options): Document -mlra as the default. + * config/sparc/sparc.c (sparc_option_override): Force LRA unless + -mlra/-mno-lra was passed to the compiler. + +2017-01-03 James Cowgill + + PR rtl-optimization/65618 + * emit-rtl.c (try_split): Move initialization of "before" and + "after" to just before the call to emit_insn_after_setloc. + +2017-01-03 Gerald Pfeifer + + * doc/md.texi (Standard Names): Remove reference to Java frontend. + +2017-01-03 Pierre-Marie de Rodat + + * dwarf2out.c (gen_enumeration_type_die): When + -gno-strict-dwarf, add a DW_AT_encoding attribute. + +2017-01-03 Jakub Jelinek + + PR tree-optimization/78965 + * gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length): + Change first argument from const call_info & to call_info &. For %n + set info.nowrite to false. + + PR middle-end/78901 + * gimple-ssa-sprintf.c (try_substitute_return_value): Don't change + possibly throwing calls. + + * genmatch.c (dt_node::gen_kids_1): If generic_exprs include SSA_NAME + and exprs_len || fns_len, emit the code for SSA_NAME next to the exprs + and fns handling, rather than in a separate case SSA_NAME. + +2017-01-02 Jeff Law + + * config/darwin-driver.c (darwin_driver_init): Const-correctness + fixes for first_period and second_period variables. + +2017-01-02 Uros Bizjak + + PR target/78967 + * config/i386/i386.md (UNSPEC_NOREX_MEM): New unspec. + (*insvqi_1): New insn pattern. + (*insvqi_1_mem_rex64): Ditto. + (*insvqi_2): Ditto. + (*insvqi_3): Rename from *insvqi. + + (*extzvqi_mem_rex64): Add UNSPEC_NOREX_MEM tag. + +2017-01-02 Gerald Pfeifer + + * doc/cfg.texi (Edges): Remove reference to Java. + (Maintaining the CFG): Ditto. + +2017-01-01 Jan Hubicka + + PR middle-end/77674 + * symtab.c (symtab_node::binds_to_current_def_p): Fix handling of + transparent aliases. + +2017-01-01 Jan Hubicka + + PR middle-end/77484 + * predict.def (PRED_CALL): Update hitrate. + (PRED_INDIR_CALL, PRED_POLYMORPHIC_CALL): New predictors. + * predict.c (tree_estimate_probability_bb): Split CALL predictor + into direct/indirect/polymorphic variants. + +2017-01-01 Jakub Jelinek + + Update copyright years. + + * gcc.c (process_command): Update copyright notice dates. + * gcov-dump.c (print_version): Ditto. + * gcov.c (print_version): Ditto. + * gcov-tool.c (print_version): Ditto. + * gengtype.c (create_file): Ditto. + * doc/cpp.texi: Bump @copying's copyright year. + * doc/cppinternals.texi: Ditto. + * doc/gcc.texi: Ditto. + * doc/gccint.texi: Ditto. + * doc/gcov.texi: Ditto. + * doc/install.texi: Ditto. + * doc/invoke.texi: Ditto. + +Copyright (C) 2017 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index e724844c73e..cc8c0c57a7b 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,12772 +1,9 @@ -2017-12-21 Eric Botcazou +2018-01-03 Jakub Jelinek - PR ada/83535 - * gcc-interface/decl.c (gnat_to_gnu_entity) : Always take - into account the Esize if it is known. - -2017-12-21 Richard Sandiford - Alan Hayward - David Sherwood - - * gcc-interface/trans.c (Attribute_to_gnu): Track polynomial - offsets and sizes. - * gcc-interface/utils2.c (build_unary_op): Likewise. - -2017-12-20 Eric Botcazou - - * gcc-interface/trans.c (Loop_Statement_to_gnu): Use IN_RANGE macro. - * gcc-interface/misc.c (gnat_get_array_descr_info): Likewise. - (default_pass_by_ref): Likewise. - * gcc-interface/decl.c (gnat_to_gnu_entity): Likewise. - -2017-12-19 Jakub Jelinek - - * gcc-interface/trans.c (Loop_Statement_to_gnu): Replace Yoda - conditions with typical order conditions. - * gcc-interface/misc.c (gnat_get_array_descr_info): Likewise. - (default_pass_by_ref): Likewise. - * gcc-interface/decl.c (gnat_to_gnu_entity): Likewise. - * adaint.c (__gnat_tmp_name): Likewise. - -2017-12-19 Arnaud Charlet - - PR ada/66205 - * bindgen.adb (Gen_AdaFinal): Revert previous change. - -2017-12-15 Jakub Jelinek - - * gcc-interface/utils.c (gnat_internal_attribute_table): Swap - affects_type_identity and handler fields, adjust comments. - -2017-12-15 Eric Botcazou - - * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use Component_Size of - the innermost array instead of Esize of its component type to exclude - inappropriate array types, including packed array types. - -2017-12-15 Hristian Kirtchev - - * sem_prag.adb (Analyze_Input_Item): Allow concurrent types to appear - within the input list of Initializes. Remove the uses of Input_OK. - -2017-12-15 Ed Schonberg - - * exp_ch4.adb (Expand_N_In): Do not replace a membership test on a - scalar type with a validity test when the membership appears in a - predicate expression, to prevent a spurious error when predicate is - specified static. - * sem_ch13.adb (Build_Predicate_Functions): Add warning if a static - predicate, after constant-folding, reduces to True and is this - redundant. - * par-ch4.adb: Typo fixes and minor reformattings. - -2017-12-15 Hristian Kirtchev - - * sem_elab.adb (Ensure_Prior_Elaboration_Static): Mark the generated - with clause as being implicit for an instantiation in order to - circumvent an issue with 'W' and 'Z' line encodings in ALI files. - -2017-12-15 Ed Schonberg - - * sem_util.adb (Is_Potentially_Unevaluated): Detect further cases of - misuse of 'Old that appear within an expression that is potentially - unevaluated, when the prefix of the attribute does not statically - designate an object (e.g. a function call). - -2017-12-15 Ed Schonberg - - * sem_ch6.adb (Conformking_Types): Two incomplete types are conforming - when one of them is used as a generic actual, but only within an - instantiation. - * einfo.ads: Clarify use of flag Used_As_Generic_Actual. - -2017-12-15 Justin Squirek - - * sem_attr.adb (Resolve_Attribute): Modify check for aliased view on - prefix to use the prefix's original node to avoid looking at expanded - conversions for certain array types. - -2017-12-15 Ed Schonberg - - * sem_res.adb (Resolve_Membership_Op): Add warning on a membership - operation on a scalar type for which there is a user-defined equality - operator. - -2017-12-15 Yannick Moy - - * doc/gnat_rm/implementation_defined_pragmas.rst: Add Ghost assertion - policy. - -2017-12-15 Hristian Kirtchev - - * sem_prag.adb (Analyze_Initialization_Item): Remove the specialized - processing for a null initialization item. Such an item is always - illegal. - -2017-12-15 Bob Duff - - * types.ads, types.h, libgnat/a-except.adb, exp_ch11.adb - (PE_Build_In_Place_Mismatch): New reason code for raising when the - BIPalloc formal parameter is incorrect. This can happen if a compiler - bug causes a mismatch of build-in-place between caller and callee. - * exp_ch6.adb (Expand_N_Extended_Return_Statement): Use - PE_Build_In_Place_Mismatch. - -2017-12-15 Ed Schonberg - - * exp_ch4.ads, exp_ch4.adb (Expand_N_Reduction_Expression): New - procedure. - * exp_util.adb (Insert_Actions): Handle N_Reduction_Expression. - * expander.adb (Expand): Call Expand_N_Reduction_Expression - * par-ch4.adb (P_Reduction_Expression): New procedure. - (P_Iterated_Component_Assoc_Or_Reduction): New precedure, extension of - P_Iterated_Component_Association. - (OK_Reduction_Expression_Parameter): New procedure. - (P_Aggregate_Or_Paren_Expr): Improve error message for malformed delta - aggregate. - * sem.adb (Analyze): Call Analyze_Reduction_Expression and - Analyze_Reduction_Expression_Parameter - * sinfo.ads, sinfo.adb: New node kinds N_Reduction_Expression and - N_Reduction_Expression_Parameter. - * sem_ch4.ads, sem_ch4.adb (Analyze_Reduction_Expression, - Analyze_Reduction_Expression_Parameter): New procedures. - * sem_res.adb (Resolve): Handle Reduction_Expression and - Reduction_Expression_Parameter - * sem_spark.adb: Dummy entries for Reduction_Expression and - Reduction_Expression_Parameter - * sprint.adb (Sprint_Node_Actual): Print Reduction_Expression, - Reduction_Expression_Parameter - -2017-12-15 Bob Duff - - * einfo.ads: Comment fix. - -2017-12-15 Piotr Trojanek - - * s-vercon.adb: Minor style fixes. - -2017-12-15 Ed Schonberg - - * sem_ch6.adb (Freeze_Expr_Types): Do not emit a freeze node for an - itype that is the type of a discriminant-dependent component. - -2017-12-15 Hristian Kirtchev - - * sem_prag.adb (Analyze_Part_Of): The context-specific portion of the - analysis is now directed to several specialized routines. - (Check_Part_Of_Abstract_State): New routine. - (Check_Part_Of_Concurrent_Type): New routine. Reimplement the checks - involving the item, the single concurrent type, and their respective - contexts. - * sem_res.adb (Resolve_Entity_Name): Potential constituents of a single - concurrent type are now recorded regardless of the SPARK mode. - * sem_util.adb (Check_Part_Of_Reference): Split some of the tests in - individual predicates. A Part_Of reference is legal when it appears - within the statement list of the object's immediately enclosing - package. - (Is_Enclosing_Package_Body): New routine. - (Is_Internal_Declaration_Or_Body): New routine. - (Is_Single_Declaration_Or_Body): New routine. - (Is_Single_Task_Pragma): New routine. - -2017-12-15 Patrick Bernardi - - * gnat_ugn.texi: Regenerate. - -2017-12-15 Bob Duff - - * gnatvsn.ads: Minor comment fixes. - -2017-12-15 Patrick Bernardi - - * doc/gnat_ugn/gnat_and_program_execution.rst: Update section "Dynamic - Stack Usage Analysis" to include more details about GNAT_STACK_LIMIT. - -2017-12-15 Hristian Kirtchev - - * exp_util.adb (Add_Own_DIC): Ensure that the expression of the pragma - is available (Is_Verifiable_DIC_Pragma): Moved from Sem_Util. - * sem_util.adb (Has_Full_Default_Initialization): - Has_Fully_Default_Initializing_DIC_Pragma is now used to determine - whether a type has full default initialization due to pragma - Default_Initial_Condition. - (Has_Fully_Default_Initializing_DIC_Pragma): New routine. - (Is_Verifiable_DIC_Pragma): Moved to Exp_Util. - * sem_util.ads (Has_Fully_Default_Initializing_DIC_Pragma): New - routine. - (Is_Verifiable_DIC_Pragma): Moved to Exp_Util. - * sem_warn.adb (Is_OK_Fully_Initialized): - Has_Fully_Default_Initializing_DIC_Pragma is now used to determine - whether a type has full default initialization due to pragma - Default_Initial_Condition. - -2017-12-15 Hristian Kirtchev - - * sem_prag.adb (Match_Constituent): Do not quietly accept constants as - suitable constituents. - * exp_util.adb: Minor reformatting. - -2017-12-15 Ed Schonberg - - * exp_aggr.adb (In_Place_Assign_OK): Extend the predicate to recognize - an array aggregate in an allocator, when the designated type is - unconstrained and the upper bound of the aggregate belongs to the base - type of the index. - -2017-12-15 Bob Duff - - * exp_ch6.adb (Expand_N_Extended_Return_Statement, - Expand_Simple_Function_Return): Assert that the b-i-p-ness of the - caller and callee match. Otherwise, we would need some substantial - changes to allow b-i-p calls non-b-i-p, and vice versa. - -2017-12-15 Ed Schonberg - - * exp_unst.adb (Unnest_Subprograms): Nothing to do if the main unit is - a generic package body. Unnesting is only an issue when generating - code, and if the main unit is generic then nested instance bodies have - not been created and analyzed, and unnesting will crash in the absence - of those bodies, - -2017-12-15 Hristian Kirtchev - - * inline.adb (Add_Inlined_Body): Do not add a function which is - completed by an expression function defined in the same context as the - initial declaration because the completing body is not in a package - body. - (Is_Non_Loading_Expression_Function): New routine. - -2017-12-15 Hristian Kirtchev - - * debug.adb: Move the functionality of -gnatdL to -gnatd_i. Restore - the behavior of -gnatdL from before revision 255412. - * sem_elab.adb: Update the section of compiler switches. - (Build_Call_Marker): Do not create a marker for a call which originates - from an expanded spec or body of an instantiated gener, does not invoke - a generic formal subprogram, the target is external to the instance, - and -gnatdL is in effect. - (In_External_Context): New routine. - (Process_Conditional_ABE_Activation_Impl): Update the uses of -gnatdL - and associated flag. - (Process_Conditional_ABE_Call): Update the uses of -gnatdL and - associated flag. - * switch-c.adb (Scan_Front_End_Switches): Switch -gnatJ now sets switch - -gnatd_i. - * exp_unst.adb: Minor typo fixes and edits. - -2017-12-15 Ed Schonberg - - * sem_ch6.adb (Possible_Freeze): Do not set Delayed_Freeze on an - subprogram instantiation, now that the enclosing wrapper package - carries an explicit freeze node. THis prevents freeze nodes for the - subprogram for appearing in the wrong scope. This is relevant when the - generic subprogram has a private or incomplete formal type and the - instance appears within a package that declares the actual type for the - instantiation, and that type has itself a delayed freeze. - -2017-12-15 Patrick Bernardi - - * doc/gnat_ugn/gnat_and_program_execution.rst: Removed references to - the environment variable GNAT_STACK_LIMIT from the Stack Overflow - Checking section as it is no longer used by any of our supported - targets. - -2017-12-15 Bob Duff - - * exp_ch6.adb (Expand_N_Extended_Return_Statement): If the - Init_Assignment is rewritten, we need to set Assignment_OK on the new - node. Otherwise, we will get spurious errors when initializing via - assignment statement. - -2017-12-15 Arnaud Charlet - - * exp_unst.adb (Visit_Node): Refine handling of 'Access to ignore non - relevant nodes. - (Has_Non_Null_Statements): Moved to sem_util for later reuse. - -2017-12-15 Eric Botcazou - - * exp_attr.adb (Is_Inline_Floating_Point_Attribute): Fix comment. - * libgnat/s-fatgen.adb (Model): Use Machine attribute. - (Truncation): Likewise. - -2017-12-15 Bob Duff - - * exp_ch7.adb (Expand_Cleanup_Actions): Make sure the block and handled - statement sequence generated for certain extended return statements - have a Sloc that is not No_Location. Otherwise, the back end doesn't - set any location and ends up reading uninitialized variables. - -2017-12-15 Bob Duff - - * types.ads, exp_ch6.adb, libgnat/s-regexp.ads, opt.ads: Partly revert - r255414, committed by mistake. - -2017-12-14 Eric Botcazou - - * gcc-interface/Makefile.in: Generalize support for symbolic traces. - -2017-12-14 Eric Botcazou - - * gcc-interface/misc.c (default_pass_by_ref): Minor tweak. - -2017-12-14 Eric Botcazou - - * gcc-interface/trans.c (Call_to_gnu): Set DECL_DISREGARD_INLINE_LIMITS - to 0 on the callee if the call is recursive. - -2017-12-14 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_field): Do not set the alignment - of the enclosing record type if it is not already set. - -2017-12-14 Eric Botcazou - - * gcc-interface/gigi.h (pad_type_has_rm_size): Declare. - * gcc-interface/decl.c (gnat_to_gnu_entity) : Do not build - a padding type for the alignment before validating the size. - Flip conditional construct and add a comment. - * gcc-interface/trans.c (Attribute_to_gnu) : Make sure to - apply the exception for padded objects to the type of the object. - * gcc-interface/utils.c (hash_pad_type): New static function. - (lookup_and_insert_pad_type): Rename into... - (canonicalize_pad_type): ...this. Call hash_pad_type, do only one - lookup with insertion and always return the canonical type. - (maybe_pad_type): Adjust to above changes. Set debug type later. - (pad_type_has_rm_size): New predicate. - (set_reverse_storage_order_on_pad_type): Adjust to above changes. - -2017-12-13 Eric Botcazou - - * gcc-interface/trans.c (Subprogram_Body_to_gnu): Initialize locus. - -2017-12-13 Eric Botcazou - - * gcc-interface/trans.c (process_freeze_entity): Be prepared for a - package without body. - -2017-12-13 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity): Robustify test for types - descendant of System.Address. - (gnat_to_gnu_subprog_type): Likewise. - -2017-12-08 Jakub Jelinek - - * gcc-interface/utils.c (gnat_internal_attribute_table): Add - exclusions to the comment. - -2017-12-07 Martin Sebor - - PR c/81544 - * gcc-interface/utils.c (gnat_internal_attribute_table): Initialize - new member of struct attribute_spec. - -2017-12-06 Simon Wright - - PR ada/66205 - * bindgen.adb (Gen_AdaFinal): If the restriction No_Task_Termination is - set, generate a null body. - -2017-12-05 Piotr Trojanek - - * sem_util.adb (Contains_Refined_State): Remove. - -2017-12-05 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspect_Specifications, case Predicate): A - predicate cannot apply to a formal type. - -2017-12-05 Arnaud Charlet - - * exp_unst.ads: Fix typos. - -2017-12-05 Jerome Lambourg - - * libgnarl/s-taprop__qnx.adb: Better detect priority ceiling bug in - QNX. At startup, the first mutex created has a non-zero ceiling - priority whatever its actual policy. This makes some tests fail - (c940013 for example). - -2017-12-05 Bob Duff - - * exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Call - Expand_Cleanup_Actions for N_Extended_Return_Statement. - * exp_ch7.adb (Expand_Cleanup_Actions): Handle - N_Extended_Return_Statement by transforming the statements into a - block, and (indirectly) calling Expand_Cleanup_Actions on the block. - It's too hard for Expand_Cleanup_Actions to operate directly on the - N_Extended_Return_Statement, because it has a different structure than - the other node kinds that Expand_Cleanup_Actions. - * exp_util.adb (Requires_Cleanup_Actions): Add support for - N_Extended_Return_Statement. Change "when others => return False;" to - "when others => raise ...;" so it's clear what nodes this function - handles. Use named notation where appropriate. - * exp_util.ads: Mark incorrect comment with ???. - -2017-12-05 Javier Miranda - - * exp_ch9.adb (Install_Private_Data_Declarations): Add missing - Debug_Info_Needed decoration of internally generated discriminal - renaming declaration. - -2017-12-05 Arnaud Charlet - - * exp_unst.adb (Unnest_Subprogram): Add handling of 'Access on - nested subprograms. - -2017-12-05 Sergey Rybin - - * doc/gnat_ugn/gnat_utility_programs.rst: Add description of '--ignore' - option for gnatmetric, gnatpp, gnat2xml, and gnattest. - -2017-12-05 Piotr Trojanek - - * sem_util.adb (Contains_Refined_State): Remove. - -2017-12-05 Piotr Trojanek - - * rtsfind.ads: Add new enumeration literals: RE_Clock_Time (for - Ada.Real_Time.Clock_Time) and RO_CA_Clock_Time (for - Ada.Calendar.Clock_Time). - -2017-12-05 Ed Schonberg - - * sem_ch4.adb (Is_Private_Overriding): If the candidate private - subprogram is overloaded, scan the list of homonyms in the same - scope, to find the inherited operation that may be overridden - by the candidate. - * exp_ch11.adb, exp_ch7.adb: Minor reformatting. - -2017-12-05 Bob Duff - - * exp_ch6.adb (Expand_N_Extended_Return_Statement): If the - Init_Assignment is rewritten, we need to set Assignment_OK on the new - node. Otherwise, we will get spurious errors when initializing via - assignment statement. - -2017-12-05 Hristian Kirtchev - - * sem_elab.adb: Update the terminology and switch sections. - (Check_SPARK_Model_In_Effect): New routine. - (Check_SPARK_Scenario): Verify the model in effect for SPARK. - (Process_Conditional_ABE_Call_SPARK): Verify the model in effect for - SPARK. - (Process_Conditional_ABE_Instantiation_SPARK): Verify the model in - effect for SPARK. - (Process_Conditional_ABE_Variable_Assignment_SPARK): Verify the model - in effect for SPARK. - -2017-12-05 Nicolas Setton - - * terminals.c (__gnat_setup_child_communication): As documented, - __gnat_setup_child_communication should not terminate - it is intended - to be used as the child process of a call to fork(). However, execvp - might actually return in some cases, for instance when attempting to - run a 32-bit binary on a 64-bit Linux distribution when the - compatibility packages are not installed. In these cases, exit the - program to conform to the documentation. - -2017-12-05 Olivier Hainque - - * libgnat/s-tsmona.adb: Fix for oversight in the tsmona interface - update. - -2017-12-05 Gary Dismukes - - * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Minor typo fix - and reformatting. - * gnat_ugn.texi: Regenerate. - -2017-12-05 Olivier Hainque - - * sem_util.adb (Set_Convention): Always clear Can_Use_Internal_Rep - on access to subprogram types with foreign convention. - -2017-12-05 Yannick Moy - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix User's - Guide description of default settings of warnings. - -2017-12-05 Olivier Hainque - - * s-dwalin.adb (Read_And_Execute_Isn): Adjust test checking for the end - of section. Add comments explaining the rationale of the computation. - -2017-12-05 Bob Duff - - * exp_ch11.adb: Minor refactoring. - -2017-12-05 Hristian Kirtchev - - * debug.adb: Add debug switches d_a, d_e, and d_p, along with - documentation. - (Set_Underscored_Debug_Flag): New routine. - * debug.ads: Add the flags for all underscore switches. - (Set_Underscored_Debug_Flag): New routine. - * einfo.adb: Flag303 is now Suppress_Elaboration_Warnings. - (Suppress_Elaboration_Warnings): New routine. - (Set_Suppress_Elaboration_Warnings): New routine. - (Write_Entity_Flags): Add output for Suppress_Elaboration_Warnings. - * einfo.ads: Add new flag Suppress_Elaboration_Warnings. - (Suppress_Elaboration_Warnings): New routine along with pragma Inline. - (Set_Suppress_Elaboration_Warnings): New routine along with pragma - Inline. - * exp_ch3.adb (Build_Init_Procedure): Restore the behavior of the - legacy elaboration model. - (Default_Initialize_Object): Restore the behavior of the legacy - elaboration model. - * exp_ch9.adb: Add with and use clause for Sem_Elab. - (Build_Task_Activation_Call): Restore the behavior of the legacy - elaboration model. - * frontend.adb (Frontend): Restore the behavior of the legacy - elaboration model. - * opt.ads: Add new flags Legacy_Elaboration_Checks and - Relaxed_Elaboration_Checks, along with documentation. - * sem_attr.adb (Analyze_Access_Attribute): Restore the behavior of the - legacy elaboration model. - * sem_ch5.adb (Analyze_Assignment): Restore the behavior of the legacy - elaboration model. - * sem_ch7.adb (Analyze_Package_Declaration): Restore the behavior of - the legacy elaboration model. - * sem_ch8.adb (Attribute_Renaming): Restore the behavior of the legacy - elaboration model. - * sem_ch12.adb (Analyze_Instance_And_Renamings): Restore the behavior - of the legacy elaboration model. - (Analyze_Package_Instantiation): Restore the behavior of the legacy - elaboration model. - (Analyze_Subprogram_Instantiation): Restore the behavior of the legacy - elaboration model. - * sem_elab.adb: Update the documentation of the Processing phase. - Update the documentation on elaboration-related compilation - switches. Update the documentation on adding a new target. Add - Processing_Attributes which represent the state of the Processing - phase. Resurrect the previous elaboration model as "legacy elaboration - model". - (Build_Call_Marker): This routine does not function when the legacy - elaboration model is in effect. Do not consider entry calls and requeue - statements when debug flag d_e is in effect. Do not consider calls to - subprograms which verify the runtime semantics of certain assertion - pragmas when debug flag d_p is in effect. - (Build_Variable_Reference_Marker): This routine does not function when - the legacy elaboration model is in effect. - (Check_Elaboration_Scenarios): This routine does not function when the - legacy elaboration model is in effect. - (Ensure_Prior_Elaboration): The various flags have now been replaced - with a state. Do not generate implicit Elaborate[_All] pragmas when - their creation has been suppressed. - (Ensure_Prior_Elaboration_Static): The with clause is marked based on - the requested pragma, not on the nature of the scenario. - (In_External_Context): Removed. - (Is_Assertion_Pragma_Target): New routine. - (Is_Potential_Scenario): Stop the traversal of a task body when - reaching an accept or select statement, and debug switch d_a is in - effect. - (Kill_Elaboration_Scenario): This routine does not function when the - legacy elaboration model is in effect. - (Process_Activation_Generic): The various flags have now been replaced - with a state. - (Process_Conditional_ABE): The various flags have now been replaced - with a state. - (Process_Conditional_ABE_Access): The various flags have now been - replaced with a state. - (Process_Conditional_ABE_Activation_Impl): The various flags have now - been replaced with a state. Do not process an activation call which - activates a task whose type is defined in an external instance, and - debug switch dL is in effect. Suppress the generation of implicit - Elaborate[_All] pragmas once a conditional ABE check has been - installed. - (Process_Conditional_ABE_Call): The various flags have now been - replaced with a state. Do not process a call which invokes a subprogram - defined in an external instance, and debug switch dL is in effect. - (Process_Conditional_ABE_Call_Ada): The various flags have now been - replaced with a state. Suppress the generation of implicit - Elaborate[_All] pragmas once a conditional ABE check has been - installed. - (Process_Conditional_ABE_Call_SPARK): The various flags have now been - replaced with a state. - (Process_Conditional_ABE_Instantiation): The various flags have now - been replaced with a state. - (Process_Conditional_ABE_Instantiation_Ada): The various flags have now - been replaced with a state. Suppress the generation of implicit - Elaborate[_All] pragmas once a conditional ABE check has been - installed. - (Process_Conditional_ABE_Instantiation_SPARK): The various flags have - now been replaced with a state. - (Process_Guaranteed_ABE_Activation_Impl): The various flags have now - been replaced with a state. - (Process_Single_Activation): The various flags have now been replaced - with a state. - (Record_Elaboration_Scenario): This routine does not function when the - legacy elaboration model is in effect. - (Traverse_Body): The various flags have now been replaced with a state. - * sem_elab.ads: Resurrect the pre-18.x elaboration model as "legacy - elaboration model". - * sem_prag.adb (Analyze_Pragma): Restore the behavior of the legacy - elaboration model. - * sem_res.adb (Resolve_Call): Restore the behavior of the legacy - elaboration model. - (Resolve_Entity_Name): Restore the behavior of the legacy elaboration - model. - * sem_util.adb (Mark_Elaboration_Attributes): This routine does not - function when the legacy elaboration model is in effect. - * sinfo.adb (Is_Known_Guaranteed_ABE): Update the assertion check. - (No_Elaboration_Check): New routine. - (Set_Is_Known_Guaranteed_ABE): Update the assertion check. - (Set_No_Elaboration_Check): New routine. - * sinfo.ads: Update the documentation of flag Is_Known_Guaranteed_ABE - along with occurrences in nodes. Add new flag No_Elaboration_Check - along with occurrences in nodes. - * switch-c.adb (Scan_Front_End_Switches): Add processing for debug - switches with underscores. Add processing for switches -gnatH and - -gnatJ. - * usage.adb (Usage): Add output for switches -gnatH and -gnatJ. - * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the - documentation to include the legacy and relaxed elaboration models. - * gnat_ugn.texi: Regenerate. - -2017-12-05 Arnaud Charlet - - * doc/gnat_ugn/platform_specific_information.rst: Minor edit. - Improve doc on required packages for linux 32bits. - -2017-12-05 Doug Rupp - - * tracebak.c (ppc64-vx7): USE_GCC_UNWINDER for 64bit. - -2017-12-05 Javier Miranda - - * checks.adb (Generate_Range_Check): Force evaluation of the node in - more cases. This patch was written to improve the code generated by - the CCG compiler but it is enabled for all targets since double - evaluation is always a potential source of inefficiency. - -2017-12-05 Gary Dismukes - - * doc/gnat_ugn/gnat_utility_programs.rst: Remove reference to obsolete - -fdump-xref switch. - -2017-12-05 Eric Botcazou - - * exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Use the SLOC of the - iteration scheme throughout, except for the new loop statement(s). - -2017-12-05 Ed Schonberg - - * exp_aggr.adb (Gen_Assign): Do not analyze the expressionn of the - assignment if it is part of an Iterated_Component_Association: the - analysis needs to take place once the loop structure is analyzed and - the loop parameter made visible, because references to it typically - appear in the corresponding expression. This is necessary if the - expression is an aggregate, because previous pre-analysis of the - expression does not handle nested aggregates properly. - -2017-12-05 Bob Duff - - * sem_res.adb (Resolve_Allocator): Avoid coextension processing for an - allocator that is the expansion of a build-in-place function call. - -2017-12-05 Olivier Hainque - -libgnat/ - * s-trasym__dwarf.adb (spec of Module_Name.Get): Instead of - possibly adjusting the lookup address by a load address, expect - a extra argument through which the load address can be conveyed - separately. - (Multi_Module_Symbolic_Traceback): Adjust accordingly. Pass the - retrieved load address to Init_Module. - * s-tsmona__linux.adb (Get): Honor the new interface. - * s-tsmona__mingw.adb (Get): Likewise. - * s-dwalin.ads: Adjust comments to be explicit about which - addresses are from module info and which are run-time addresses, - offsetted by the module load address. - * s-dwalin.adb (Set_Load_Address): Simply set C.Load_Slide. - Do not alter the module Low and High (relative) addresses. - (Is_Inside): Improve documentation regarding the kinds of addresses - at hand and correct the test. - (Symbolic_Traceback): Use separate variables with explicit names - for the address in traceback (run-time value) and the address to - lookup within the shared object (module-relative). Adjust the - computation of address passed to Symbolic_Address for symbolization. - -2017-12-05 Arnaud Charlet - - * opt.ads (Expand_Nonbinary_Modular_Ops): New flag. - * exp_ch4.adb (Expand_Nonbinary_Modular_Op): Use - Expand_Nonbinary_Modular_Ops instead of Modify_Tree_For_C, so that - other back-ends can also benefit from the front-end expansion. Remove - test for Modify_Tree_For_C in all callers to better share code. - * gnat1drv.adb (Adjust_Global_Switches): Set - Expand_Nonbinary_Modular_Ops when generating C code. - -2017-12-05 Ed Schonberg - - * exp_ch5.adb (Expand_Formal_Container_Loop): Ensure that the loop - parameter becomes invisible after analyzing the loop, which has been - rewritten as a while-loop. - -2017-12-05 Doug Rupp - - * vxaddr2line.adb: Revise and enhance for new ports, remove dead ports, - and update for 64bit ports. - -2017-12-05 Bob Duff - - * exp_ch6.adb (Build_In_Place_Formal): Search for the formal by suffix - instead of the full name. - * sem_ch6.adb (Create_Extra_Formals): Make sure there are extra formals - in the case of an instance of a generic. - -2017-12-05 Arnaud Charlet - - (Adjust_Global_Switches): Create an alias GNAT_Annotate to map to - pragma Annotate. - -2017-12-05 Sebastian Huber - - * gcc-interface/Makefile.in (RTEMS): Define EH_MECHANISM. - -2017-12-04 Sebastian Huber - - * gcc-interface/Makefile.in (RTEMS): Use s-osprim__rtems.adb. - * libgnat/s-osprim__rtems.adb: New file. - * libgnarl/s-osinte__rtems.adb (pthread_cond_t): Fix alignment. - (pthread_mutexattr_t): Likewise. - (pthread_rwlockattr_t): Likewise. - (pthread_rwlock_t): Likewise. - (time_t): Use 64-bit integer. - -2017-12-01 Sebastian Huber - - * libgnarl/s-osinte__rtems.ads (pthread_cond_t): Use correct size and - alignment. - (pthread_mutex_t): Likewise. - (pthread_rwlock_t): Likewise. - -2017-11-28 Jakub Jelinek - - * gcc-interface/trans.c (Case_Statement_to_gnu): Build SWITCH_EXPR - using build2 instead of build3. - -2017-11-23 Eric Botcazou - - 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. - -2017-11-23 Mike Stump - Eric Botcazou - - * gcc-interface/trans.c (gnat_gimplify_stmt) : Pass 3rd - operand to ANNOTATE_EXPR and also pass unrolling hints. - -2017-11-20 Eric Botcazou - - PR ada/83016 - * gnatlink.adb (Process_Args): Accept multiple switches for --LINK. - (Usage): Adjust. - * gcc-interface/Makefile.in (GCC_LINK): Remove $(ADA_INCLUDES). - (common-tools): Pass $(CC) as --GCC= and $(GCC_LINK) as --LINK= in - the invocations of $(GNATLINK). - (../../gnatdll$(exeext)): Likewise. - (../../vxaddr2line$(exeext)): Likewise. - (gnatmake-re): Likewise. - (gnatlink-re): Likewise. - -2017-11-16 Doug Rupp - - * gcc-interface/Makefile.in: Merge Aarch64 and ARM "ifeq" blocks. - -2017-11-16 Steve Baird - - * debug.adb: Update another comment to indicate gnat2scil's use of the - -gnatd.7 switch. - -2017-11-16 Bob Duff - - * exp_ch6.adb (Expand_Call_Helper): Avoid creating a transient scope in - the case of nested build-in-place calls. - -2017-11-16 Joel Brobecker - - * doc/gnat_ugn/gnat_utility_programs.rst: Document the switches - available in gnatsymbolize. - -2017-11-16 Steve Baird - - * debug.adb: Update comment to indicate gnat2scil's use of the -gnatd.7 - switch. - -2017-11-16 Gary Dismukes - - * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, sem_ch6.adb, - sem_elab.adb: Minor editorial corrections. - * gnat_ugn.texi: Regenerate. - -2017-11-16 Joel Brobecker - - * doc/gnat_ugn/gnat_utility_programs.rst (GNAT UGN): Add - gnatsymbolize documentation. - * gnat_ugn.texi: Regenerate. - -2017-11-16 Steve Baird - - * sem_ch3.adb (Build_Derived_Record_Type): Replace all uses of - "Scope (Parent_Type)" with "Scope (Parent_Base)". - -2017-11-16 Hristian Kirtchev - - * opt.ads: Elaboration warnings are now on by default. Add a comment - explaining why this is needed. - * sem_ch9.adb (Analyze_Requeue): Preserve the status of elaboration - warnings. - * sem_ch12.adb (Analyze_Package_Instantiation): Preserve the status of - elaboration warnings. - (Analyze_Subprogram_Instantiation): Preserve the status of elaboration - warnings. - * sem_elab.adb: Update the structure of Call_Attributes and - Instantiation_Attributes. - (Build_Call_Marker): Propagate the status of elaboration warnings from - the call to the marker. - (Extract_Call_Attributes): Extract the status of elaboration warnings. - (Extract_Instantiation_Attributes): Extract the status of elaboration - warnings. - (Process_Conditional_ABE_Activation_Impl): Elaboration diagnostics are - now dependent on the status of elaboration warnings. - (Process_Conditional_ABE_Call_Ada): Elaboration diagnostics are now - dependent on the status of elaboration warnings. - (Process_Conditional_ABE_Instantiation_Ada): Elaboration diagnostics - are now dependent on the status of elaboration warnings. - (Process_Guaranteed_ABE_Activation_Impl): Remove pragma Unreferenced - for formal Call_Attrs. Elaboration diagnostics are now dependent on the - status of elaboration warnings. - (Process_Guaranteed_ABE_Call): Elaboration diagnostics are now - dependent on the status of elaboration warnings. - (Process_Guaranteed_ABE_Instantiation): Elaboration diagnostics are now - dependent on the status of elaboration warnings. - * sem_prag.adb (Analyze_Pragma): Remove the unjustified warning - concerning pragma Elaborate. - * sem_res.adb (Resolve_Call): Preserve the status of elaboration - warnings. - (Resolve_Entry_Call): Propagate flag Is_Elaboration_Warnings_OK_Node - from the procedure call to the entry call. - * sem_util.adb (Mark_Elaboration_Attributes): Add formal parameter - Warnings. - (Mark_Elaboration_Attributes_Node): Preserve the status of elaboration - warnings - * sem_util.ads (Mark_Elaboration_Attributes): Add formal parameter - Warnings. Update the comment on usage. - * sinfo.adb (Is_Dispatching_Call): Update to use Flag6. - (Is_Elaboration_Warnings_OK_Node): New routine. - (Set_Is_Dispatching_Call): Update to use Flag6. - (Set_Is_Elaboration_Warnings_OK_Node): New routine. - * sinfo.ads: Attribute Is_Dispatching_Call now uses Flag6. Add new - attribute Is_Elaboration_Warnings_OK_Node along with occurrences - in nodes. - (Is_Elaboration_Warnings_OK_Node): New routine along with pragma - Inline. - (Set_Is_Elaboration_Warnings_OK_Node): New routine along with pragma - Inline. - * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update various - sections to indicate how to suppress elaboration warnings. Document - switches -gnatwl and -gnatwL. - * gnat_ugn.texi: Regenerate. - -2017-11-16 Sylvain Dailler - - * sem_util.adb (Get_Enum_Lit_From_Pos): Add a condition for Pos - lower than 0. - -2017-11-16 Bob Duff - - * sem_ch13.adb (Check_Expr_Constants): Avoid error message in case of - System'To_Address. - -2017-11-16 Yannick Moy - - * sem_elab.adb (Include): Fix mode of parameter Curr to out. - -2017-11-16 Piotr Trojanek - - * sem_util.ads, sem_util.adb (Is_CCT_Instance): Allow calls where - Context_Id denotes a record type. - -2017-11-16 Hristian Kirtchev - - * sem_ch8.adb (Check_SPARK_Primitive_Operation): Enable the check in - instantiations. - -2017-11-16 Doug Rupp - - Initial gnat port to aarch64-wrs-vxworks7 - * libgnarl/s-vxwork__aarch64.ads, - libgnat/system-vxworks7-aarch64-rtp-smp.ads, - libgnat/system-vxworks7-aarch64.ads: New files - * sigtramp-vxworks-target.inc (aarch64): New section. - * tracebak.c (USE_ARM_UNWINDING): Disable for ARMARCH8A. - -2017-11-16 Hristian Kirtchev - - * sem_elab.adb (Include): Including a node which is also a compilation - unit terminates the search because there are no more lists to examine. - -2017-11-16 Hristian Kirtchev - - * sem_ch8.adb (Analyze_Subprogram_Renaming): Ensure that a renaming - declaration does not define a primitive operation of a tagged type for - SPARK. - (Check_SPARK_Primitive_Operation): New routine. - -2017-11-16 Arnaud Charlet - - * libgnat/a-elchha.adb (Last_Chance_Handler): Display Argv (0) in - message when using -E binder switch. - -2017-11-16 Piotr Trojanek - - * errout.ads: Fix minor typo in comment. - -2017-11-16 Ed Schonberg - - * sem_ch3.adb (Process_Subtype): If the subtype indication does not - syntactically denote a type, return Any_Type to prevent subsequent - compiler crashes or infinite loops. - -2017-11-16 Steve Baird - - * lib-writ.adb: Fix bug which causes Program_Error to be raised in some - cases when writing out a .ali file when a Rename_Pragma pragma is in - effect. - * lib-writ.adb (Write_Unit_Information): Replace call to - Pragma_Name_Unmapped with call to Pragma_Name. - -2017-11-16 Gary Dismukes - - * sem_elab.adb: Minor typo fixes. - -2017-11-16 Justin Squirek - - * sem_res.adb (Resolve_Allocator): Correct warning messages and make - them more explicit. - -2017-11-16 Hristian Kirtchev - - * atree.ads (Nkind_In): Add 10 and 11 parameter versions. - * checks.adb (Install_Primitive_Elaboration_Check): Mark the setting of - the elaboration flag as elaboration code. - * einfo.adb (Contract): Update the comments. - (Ignore_SPARK_Mode_Pragmas): Update the comments. - (SPARK_Aux_Pragma): Update the comments. - (SPARK_Aux_Pragma_Inherited): Update the comments. - (SPARK_Pragma): Update the comments. The attribute now applies - to all types and abstract states. - (SPARK_Pragma_Inherited): Update the comments. The attribute now - applies to all types and abstract states. - (Set_Contract): Update the comments. - (Set_Ignore_SPARK_Mode_Pragmas): Update the comments. - (Set_SPARK_Aux_Pragma): Update the comments. - (Set_SPARK_Aux_Pragma_Inherited): Update the comments. - (Set_SPARK_Pragma): Update the comments. The attribute now applies to - all types and abstract states. - (Set_SPARK_Pragma_Inherited): Update the comments. The attribute now - applies to all types and abstract states. - (Write_Field40_Name): Add output for SPARK_Pragma when it appears on a - type and abstract states. - * einfo.ads: Update the documentation of attributes SPARK_Pragma and - SPARK_Pragma_Inherited. Both of them now apply to all types and - abstract states. - * exp_util.adb (Set_Elaboration_Flag): Mark the setting of the - elaboration flag as elaboration code. - * sem_ch3.adb: Add with and use clauses for Sem_Elab. - (Analyze_Full_Type_Declaration): Set the SPARK_Mode of the type. Record - a derived type for later processing by the ABE mechanism. - (Analyze_Incomplete_Type_Decl): Set the SPARK_Mode of the type. - (Analyze_Private_Extension_Declaration): Set the SPARK_Mode of the - type. - * sem_ch7.adb (Analyze_Private_Type_Declaration): Set the SPARK_Mode of - the type. - * sem_elab.adb: Define the term "early call region". Update the - terminology for "scenario" and "target". Update the architecture of - the ABE mechanism. Update the steps which must be taken when adding a - new scenario. Update the section on debugging ABE issues. Add new - hash tables Early_Call_Regions and Recorded_SPARK_Scenarios. Add new - table SPARK_Scenarios. Hash table Elaboration_Context is now - Elaboration_Statuses. The majority of Process_xxx routines have been - updated to better reflect their role. - (Add_Unit): Reimplemented. - (Check_Elaboration_Constituent): New routine. - (Check_Elaboration_Scenarios): Verify previously recorded scenarios for - conditional ABE issues. Verify previously recorded SPARK scenarios. - (Check_SPARK_Derived_Type): New routine. - (Check_SPARK_Instantiation): New routine. - (Check_SPARK_Scenario): New routine. - (Check_SPARK_Refined_State_Pragma): New routine. - (Early_Call_Region): New routine. - (Elaboration_Status): New routine. - (Ensure_Prior_Elaboration): Add new formal parameter Prag_Nam. The - implicit Elabotate[_All] pragma is now specified via Prag_Nam. - (Find_Early_Call_Region): New routine. - (Info_Scenario): Add output for refinement constituents. - (Is_Recorded_SPARK_Scenario): New routine. - (Is_Suitable_SPARK_Derived_Type): New routine. - (Is_Suitable_SPARK_Instantiation): New routine. - (Is_Suitable_SPARK_Refined_State_Pragma): New routine. - (Is_Visited_Body): New routine. - (Kill_Elaboration_Scenario): Reimplemented. - (Output_Active_Scenarios): Add output for pragma Refined_State. - (Output_SPARK_Refined_State_Pragma): New routine. - (Process_Conditional_ABE_Call): Remove the use of -gnatd.v. The effect - is now achieved by different means. - (Process_Conditional_ABE_Call_SPARK): Verify that a call which precedes - the subprogram body appears within the early call region of the body. - Either ensure the prior elaboration of external subprograms or verify - that the context meets the suitable elaboration requirement. - (Process_Conditional_ABE_Instantiation_SPARK): New routine. - (Record_Elaboration_Scenario): Reimplement the portion which enforces - the level restrictions of the static model. Add support for SPARK - scenarios. - (Record_SPARK_Elaboration_Scenario): New routine. - (Reset_Visited_Bodies): New routine. - (Set_Early_Call_Region): New routine. - (Set_Elaboration_Status): New routine. - (Set_Is_Recorded_SPARK_Scenario): New routine. - (Update_Elaboration_Scenario): Reimplemented. - * sem_elab.ads: Add new subtype Library_Or_Instantiation_Level. - * sem_prag.adb (Analyze_Refined_State_In_Decl_Part): Save the pragma - for examination by the ABE Processing phase. - (Create_Abstract_State): Save the SPARK_Mode from the context. - * sem_util.adb (Is_Non_Preelaborable_Construct): New routine. - * sem_util.ads (Is_Non_Preelaborable_Construct): New routine. - * sinfo.adb (Is_Elaboration_Code): New routine. - (Set_Is_Elaboration_Code): New routine. - (Nkind_In): Add 10 and 11 parameter versions. - * sinfo.ads: Add new attribute Is_Elaboration_Code along with - occurrences in nodes. - (Is_Elaboration_Code): New routine along with pragma Inline. - (Set_Is_Elaboration_Code): New routine along with pragma Inline. - (Nkind_In): Add 10 and 11 parameter versions. - -2017-11-16 Justin Squirek - - * sem.adb (Analyze): Remove requirement that the original node of N be - an operator in the case that analysis on the node yields the relevant - operator - so prefer it instead. - -2017-11-16 Bob Duff - - * sem_ch6.adb (Create_Extra_Formals): The type of the BIP_Object_Access - formal must not have a designated type that is the full view coming - from a limited-with'ed package. - * sem_util.adb,sem_util.ads (Incomplete_View_From_Limited_With): New - function called from sem_ch6. - * sem_ch5.adb (Analyze_Assignment): Treat user-defined concatenation - specially for b-i-p cases. - -2017-11-10 Martin Sebor - - PR c/81117 - * adadecode.c (__gnat_decode): Use memcpy instead of strncpy. - * argv.c (__gnat_fill_arg, __gnat_fill_env): Likewise. - -2017-11-10 Eric Botcazou - - * gcc-interface/utils.c (convert) : Add comment and do - not fall through to the next case. - : Deal specially with a dereference from another array - type with the same element type. - -2017-11-09 Gary Dismukes - - * exp_util.adb, freeze.adb: Minor reformatting. - -2017-11-09 Jerome Lambourg - - * gcc-interface/Makefile.in: Add rules to build aarch64-qnx runtimes. - -2017-11-09 Hristian Kirtchev - - * gcc-interface/trans.c (gnat_to_gnu): Add processing for - N_Variable_Reference_Marker nodes. - -2017-11-09 Ed Schonberg - - * sem_ch12.adb (Analyze_Generic_Package_Declaration): Handle properly - the pragma Compile_Time_Error when it appears in a generic package - declaration and uses an expanded name to denote the current unit. - -2017-11-09 Jerome Lambourg - - * libgnarl/s-taprop__qnx.adb: Fix incorrect casing for pthread_self. - * tracebak.c: Add support for tracebacks in QNX. - -2017-11-09 Eric Botcazou - - * exp_aggr.adb (Aggr_Size_OK): Bump base limit from 50000 to 500000. - -2017-11-09 Yannick Moy - - * erroutc.adb, set_targ.adb: Remove pragma Annotate for CodePeer - justification. - -2017-11-09 Joel Brobecker - - * doc/gnat_ugn/platform_specific_information.rst: Document packages - needed on GNU/Linux by GNAT. - * gnat_ugn.texi: Regenerate. - -2017-11-09 Hristian Kirtchev - - * contracts.adb (Analyze_Contracts): Remove the three parameter - version. This routine now only analyzes contracts and does not perform - any freezing actions. - (Analyze_Previous_Contracts): Removed. - (Freeze_Previous_Contracts): New routine. - * contracts.ads (Analyze_Previous_Contracts): Removed. - (Freeze_Previous_Contracts): New routine. - * sem_ch3.adb (Analyze_Declarations): Analyze the contract of an - enclosing package spec regardless of whether the list denotes the - visible or private declarations. Fix the removal of partial state - refinements when the context is a package spec. - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Freeze previous - contracts. - * sem_ch7.adb (Analyze_Package_Body_Helper): Freeze previous contracts. - * sem_ch9.adb (Analyze_Entry_Body): Freeze previous contracts. - (Analyze_Protected_Body): Freeze previous contracts. - (Analyze_Task_Body): Freeze previous contracts. - * sem_prag.adb: Comment reformatting. - -2017-11-09 Bob Duff - - * libgnarl/g-thread.ads, libgnarl/g-thread.adb: (Make_Independent): - Export this so users can use it without importing - System.Tasking.Utilities. - * libgnarl/s-tassta.adb (Vulnerable_Complete_Task): Relax assertion - that fails when Make_Independent is called on a user task. - * libgnarl/s-taskin.ads (Master_Of_Task): Avoid unusual - capitalization style ((style) bad casing of "Master_of_Task"). - -2017-11-09 Ed Schonberg - - * sem_ch12.adb (Analyze_Subprogram_Instantiation): Correct use of - uninitialized variable uncovered by Codepeer. - -2017-11-09 Arnaud Charlet - - * namet.adb: Replace pragma Assume by pragma Assert to fix bootstrap. - -2017-11-09 Javier Miranda - - * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: - (Static_Dispatch_Tables): Minor rewording. - * gnat_rm.texi: Regenerate. - -2017-11-09 Justin Squirek - - * sem_ch8.adb (Analyze_Use_Package): Remove forced installation of - use_clauses within instances. - (Use_One_Package): Add condition to check for "hidden" open scopes to - avoid skipping over packages that have not been properly installed even - though they are visible. - -2017-11-09 Ed Schonberg - - * sem_ch4.adb (Analyze_Selected_Component): Reject properly a call to a - private operation of a protected type, when the type has no visible - operations. - -2017-11-09 Javier Miranda - - * rtsfind.ads (RE_Id, RE_Unit_Table): Add RE_HT_Link. - * exp_disp.adb (Make_DT): Initialize the HT_Link field of the TSD only - if available. - -2017-11-09 Bob Duff - - * exp_ch4.adb, exp_ch9.adb, exp_prag.adb, par-ch3.adb, sem_aggr.adb, - sem_ch12.adb, sem_ch13.adb, sem_ch4.adb, sem_disp.adb, sem_prag.adb, - sem_res.adb, sem_util.adb: Get rid of warnings about uninitialized - variables. - -2017-11-09 Yannick Moy - - * exp_disp.adb (Make_DT): Default initialize Ifaces_List and - Ifaces_Comp_List. - -2017-11-09 Pascal Obry - - * libgnarl/s-taprop__mingw.adb: On Windows, initialize the thead handle - only for foreign threads. We initialize the thread handle only if not - yet initialized. This happens in Enter_Task for foreign threads only. - But for native threads (Ada tasking) we do want to keep the real - handle (from Create_Task) to be able to free the corresponding - resources in Finalize_TCB (CloseHandle). - -2017-11-09 Yannick Moy - - * sem_attr.adb (Analyze_Attribute): Default initialize P_Type, - P_Base_Type. - (Error_Attr_P): Fix name in pragma No_Return. - (Unexpected_Argument): Add pragma No_Return. - (Placement_Error): Add pragma No_Return. - -2017-11-09 Javier Miranda - - * exp_disp.adb (Elab_Flag_Needed): Elaboration flag not needed when the - dispatch table is statically built. - (Make_DT): Declare constant the Interface_Table object associated with - an statically built dispatch table. For this purpose the Offset_To_Top - value of each interface is computed using the dummy object. - * exp_ch3.adb (Build_Init_Procedure): Do not generate code initializing - the Offset_To_Top field of secondary dispatch tables when the dispatch - table is statically built. - (Initialize_Tag): Do not generate calls to Register_Interface_Offset - when the dispatch table is statically built. - * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: - Document the new GNAT restriction Static_Dispatch_Tables. - * gnat_rm.texi: Regenerate. - -2017-11-09 Hristian Kirtchev - - * sem_aggr.adb (Resolve_Delta_Record_Aggregate): Reorder declarations - to avoid a dormant bug. - -2017-11-09 Jerome Lambourg - - * init.c: Define missing __gnat_alternate_stack for QNX. Set it to 0, - as such capability is not available on the OS. - * link.c: Make sure linker options for QNX are correct. - * libgnarl/s-osinte__qnx.ads: Add some missing bindings to pthread. - * libgnarl/s-taprop__qnx.adb: New, derived from s-taprop__posix.adb. This brings - in particular a workaround with locks priority ceiling where a higher - priority task is allowed to lock a lower ceiling priority lock. This - also fixes the scheduling of FIFO tasks when the priority of a task is - lowered. - * libgnat/system-qnx-aarch64.ads: Fix priority ranges. - -2017-11-09 Yannick Moy - - * erroutc.adb (Output_Error_Msgs): Justify CodePeer false positive - message. - * gnatbind.adb (Scan_Bind_Arg): Simplify test to remove always true - condition. - * namet.adb (Copy_One_Character): Add assumption for static analysis, - as knowledge that Hex(2) is in the range 0..255 is too complex for - CodePeer. - (Finalize): Add assumption for static analysis, as the fact that there - are symbols in the table depends on a global invariant at this point in - the program. - * set_targ.adb (Check_Spaces): Justify CodePeer false positive message. - * stylesw.adb (Save_Style_Check_Options): Rewrite to avoid test always - true. - -2017-11-09 Javier Miranda - - * libgnat/s-rident.ads (Static_Dispatch_Tables): New restriction name. - * exp_disp.adb (Building_Static_DT): Check restriction. - (Building_Static_Secondary_DT): Check restriction. - (Make_DT): Initialize the HT_Link to No_Tag. - * opt.ads (Static_Dispatch_Tables): Rename flag... - (Building_Static_Dispatch_Tables): ... into this. This will avoid - conflict with the restriction name. - * gnat1drv.adb: Update. - * exp_aggr.adb (Is_Static_Dispatch_Table_Aggregate): Update. - * exp_ch3.adb (Expand_N_Object_Declaration): Update. - -2017-11-09 Pascal Obry - - * libgnarl/s-taprop__mingw.adb: Minor code clean-up. Better using a - named number. - -2017-11-09 Yannick Moy - - * binde.adb (Diagnose_Elaboration_Problem): Mark procedure No_Return. - * checks.adb (Apply_Scalar_Range_Check): Rescope variable OK closer to - use. Default initialize Hi, Lo. - (Selected_Range_Checks): Retype Num_Checks more precisely. - (Determine_Range, Determine_Range_R): Default initialize Hi_Right, - Lo_Right. - * contracts.adb (Process_Contract_Cases): Mark parameter Stmts as - Unmodified. - (Process_Postconditions): Mark parameter Stmts as Unmodified. - * exp_attr.adb (Expand_Loop_Entry_Attribute): Default initialize Blk. - * exp_ch4.adb (Expand_N_Allocator): Default initialize Typ. - (Expand_Concatenate): Default initialize High_Bound. - (Optimize_Length_Comparison): Default initialize Ent, Index. - * exp_ch5.adb (Expand_Predicated_Loop): Default initialize L_Hi and - L_Lo. - * exp_ch6.adb (Expand_N_Extended_Return_Statement): Default initialize - Return_Stmt. - * exp_ch9.adb (Expand_Entry_Barrier): Default initialize Func_Body and - remove pragma Warnings(Off). - * exp_imgv.adb (Expand_Image_Attribute): Default initialize Tent. - * exp_util.adb (Find_Interface_Tag): Default initialize AI_Tag. - * freeze.adb (Check_Component_Storage_Order): Default initialize - Comp_Byte_Aligned rather than silencing messages with pragma - Warnings(Off), which does not work for CodePeer initialization - messages, and given that here the possible read of an unitialized value - depends on a proper use of parameters by the caller. - * inline.adb (Expand_Inlined_Call): Default initialize Lab_Decl, Targ. - * sem_ch12.adb (Build_Operator_Wrapper): Default initialize Expr. - * sem_ch3.adb (Build_Derived_Array_Type): Default initialize - Implicit_Base. - * sem_ch4.adb (List_Operand_Interps): Default initialize Nam and remove - pragma Warnings(Off). - (Analyze_Case_Expression): Rescope checking block within branch where - Others_Present is set by the call to Check_Choices. - * sem_ch5.adb (Analyze_Assignment): Default initialize - Save_Full_Analysis. - * sem_ch6.adb (Analyze_Function_Return): Default initialize Obj_Decl, - and restructure code to defend against previous errors, so that, in - that case, control does not flow to the elsif condition which read an - uninitialized Obj_Decl. - * sem_ch9.adb (Analyze_Requeue): Default initialize Synch_Type. - (Check_Interfaces): Default initialize Full_T_Ifaces and Priv_T_Ifaces, - which seem to be left uninitialized and possibly read in some cases. - * sem_dim.adb (Analyze_Aspect_Dimension_System): Retype Position more - precisely. This requires to exchange the test for exiting in case of - too many positions and the increment to Position, inside the loop. - * sem_eval.adb (Eval_Concatenation): Default initialize Folded_Val, - which cannot be read uninitialized, but the reasons for that are quite - subtle. - * sem_intr.adb (Check_Intrinsic_Call): Default initialize Rtyp. - * sem_prag.adb (Collect_Subprogram_Inputs_Outputs): Default initialize - Spec_Id. - * sem_res.adb (Make_Call_Into_Operator): Default initialize Opnd_Type, - and test for presence of non-null Opnd_Type before testing its scope, - in a test which would read its value uninitialized, and is very rarely - exercized (it depends on the presence of an extension of System). - * sem_spark.ads: Update comment to fix name of main analysis procedure. - * sem_warn.adb (Warn_On_Known_Condition): Default initialize - Test_Result. - * set_targ.adb (FailN): Mark procedure with No_Return. - * stylesw.adb (Save_Style_Check_Options): Delete useless code to - initialize all array Options to white space, as there is already code - doing the same for the remaining positions in Options at the end of the - procedure. - -2017-11-09 Eric Botcazou - - * exp_ch11.adb (Possible_Local_Raise): Do not issue the warning for - generic instantiations either. - -2017-11-09 Piotr Trojanek - - * sem_prag.adb (Analyze_Part_Of): Reword error message. - (Get_SPARK_Mode_Type): Do not raise Program_Error in case pragma - SPARK_Mode appears with an illegal mode, treat this as a non-existent - mode. - -2017-11-09 Ed Schonberg - - * sem_ch4.adb (Analyze_Call): Reject a call to a function that returns - a limited view of a type T declared in unit U1, when the function is - declared in another unit U2 and the call appears in a procedure within - another unit. - -2017-11-09 Justin Squirek - - * sem_ch8.adb (Analyze_Use_Package): Force installation of use_clauses - when processing generic instances. - -2017-11-09 Bob Duff - - * namet.ads, namet.adb (Valid_Name_Id): New subtype that excludes - Error_Name and No_Name. Use this (versus Name_Id) to indicate which - objects can have those special values. Valid_Name_Id could usefully be - used all over the compiler front end, but that's too much trouble for - now. If we did that, we might want to rename: - Name_Id --> Optional_Name_Id, Valid_Name_Id --> Name_Id. - For parameters of type Valid_Name_Id, remove some redundant tests, - including the ones found by CodePeer. Use Is_Valid_Name instead of - membership test when appropriate. - (Error_Name_Or_No_Name): Delete this; it's no longer needed. - * sem_ch2.adb (Analyze_Identifier): Use "not Is_Valid_Name" instead of - "in Error_Name_Or_No_Name". - (Check_Parameterless_Call): Use "not Is_Valid_Name" instead of "in - Error_Name_Or_No_Name". - -2017-11-09 Arnaud Charlet - - * gnat1drv.adb (Adjust_Global_Switches): Suppress warnings in codepeer - mode here unless -gnateC is specified. - * switch-c.adb (Scan_Front_End_Switches): Do not suppress warnings with - -gnatC here. - -2017-11-09 Piotr Trojanek - - * lib-writ.adb (Write_ALI): Remove processing of the frontend xrefs as - part of the ALI writing; they are now processed directly from memory - when requested by the backend. - * lib-xref.ads (Collect_SPARK_Xrefs): Remove. - (Iterate_SPARK_Xrefs): New routine for iterating over frontend xrefs. - * lib-xref-spark_specific.adb (Traverse_Compilation_Unit): Remove. - (Add_SPARK_File): Remove. - (Add_SPARK_Xref): Refactored from removed code; filters xref entries - that are trivially uninteresting to the SPARK backend. - * spark_xrefs.ads: Remove code that is no longer needed. - * spark_xrefs.adb (dspark): Adapt to use Iterate_SPARK_Xrefs. - -2017-11-09 Hristian Kirtchev - - * sem_elab.adb: Update the documentation on adding a new elaboration - schenario. Add new hash table Recorded_Top_Level_Scenarios. - (Is_Check_Emitting_Scenario): Removed. - (Is_Recorded_Top_Level_Scenario): New routine. - (Kill_Elaboration_Scenario): Reimplemented. - (Record_Elaboration_Scenario): Mark the scenario as recorded. - (Set_Is_Recorded_Top_Level_Scenario): New routine. - (Update_Elaboration_Scenario): Reimplemented. - * sinfo.adb (Is_Recorded_Scenario): Removed. - (Set_Is_Recorded_Scenario): Removed. - * sinfo.ads: Remove attribute Is_Recorded_Scenario along with - occurrences in nodes. - (Is_Recorded_Scenario): Removed along with pragma Inline. - (Set_Is_Recorded_Scenario): Removed along with pragma Inline. - -2017-11-09 Piotr Trojanek - - * sem_prag.adb (Analyze_Part_Of): Change "designate" to "denote" in - error message. - -2017-11-09 Justin Squirek - - * sem_res.adb (Resolve_Allocator): Add warning messages corresponding - to the allocation of an anonymous access-to-controlled object. - -2017-11-09 Jerome Lambourg - - * sigtramp-qnx.c: Fix obvious typo. - -2017-11-09 Doug Rupp - - * libgnarl/s-taprop__linux.adb (Monotonic_Clock): Minor reformatting. - -2017-11-09 Ed Schonberg - - * sem_res.adb (Resolve): If expression is an entity whose type has - implicit dereference, generate reference to it, because no reference is - generated for an overloaded entity during analysis, given that its - identity may not be known. - -2017-11-09 Javier Miranda - - * exp_disp.adb (Expand_Interface_Thunk): Replace substraction of - offset-to-top field by addition. - (Make_Secondary_DT): Initialize the offset-to-top field with a negative - offset. - * exp_ch3.adb (Build_Offset_To_Top_Function): Build functions that - return a negative offset-to-top value. - (Initialize_Tag): Invoke runtime services Set_Dynamic_Offset_To_Top and - Set_Static_Offset_To_Top passing a negative offet-to-top value; - initialize also the offset-to-top field with a negative offset. - * libgnat/a-tags.adb (Base_Address): Displace the pointer by means of - an addition since the offset-to-top field is now a negative value. - (Displace): Displace the pointer to the object means of a substraction - since it is now a negative value. - (Set_Dynamic_Offset_to_top): Displace the pointer to the object by - means of a substraction since it is now a negative value. - -2017-11-09 Eric Botcazou - - * gnat1drv.adb (Gnat1drv): Call Errout.Finalize (Last_Call => True) - before Errout.Output_Messages also in the case of compilation errors. - -2017-11-09 Javier Miranda - - * doc/gnat_ugn/the_gnat_compilation_model.rst (Interfacing with C++ at - the Class Level): Fix error interfacing with C strings. - * gnat_ugn.texi: Regenerate. - -2017-11-09 Jerome Lambourg - - * system-qnx-aarch64.ads: Fix the priority constants. - * s-osinte__qnx.ads: Fix constants for handling the locking protocols - and scheduling. - * s-osinte__qnx.adb: New file , prevents the use of priority 0 that - corresponds to an idle priority on QNX. - -2017-11-09 Piotr Trojanek - - * sem_prag.adb, sem_util.adb, sem_elab.adb: Fix minor typos in - comments. - -2017-11-09 Piotr Trojanek - - * lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Ignore loop parameters - in expression funtions that are expanded into variables. - -2017-11-09 Piotr Trojanek - - * sem_util.adb: Minor whitespace cleanup. - -2017-11-09 Jerome Lambourg - - * libgnarl/s-taprop__qnx.adb: Refine aarch64-qnx. Use the POSIX - s-taprop version rather than a custom one. - * sigtramp-qnx.c (aarch64-qnx): Implement the signal trampoline. - -2017-11-08 Piotr Trojanek - - * lib-xref.ads, lib-xref-spark_specific.adb - (Traverse_Compilation_Unit): Move declaration to package body. - -2017-11-08 Hristian Kirtchev - - * exp_spark.adb (Expand_SPARK_N_Object_Renaming_Declaration): Obtain - the type of the renaming from its defining entity, rather then the - subtype mark as there may not be a subtype mark. - -2017-11-08 Jerome Lambourg - - * adaint.c, s-oscons-tmplt.c, init.c, libgnat/system-qnx-aarch64.ads, - libgnarl/a-intnam__qnx.ads, libgnarl/s-intman__qnx.adb, - libgnarl/s-osinte__qnx.ads, libgnarl/s-qnx.ads, - libgnarl/s-taprop__qnx.adb, s-oscons-tmplt.c, sigtramp-qnx.c, - terminals.c: Initial port of GNAT for aarch64-qnx - -2017-11-08 Elisa Barboni - - * exp_util.adb (Find_DIC_Type): Move... - * sem_util.ads, sem_util.adb (Find_DIC_Type): ... here. - -2017-11-08 Justin Squirek - - * sem_res.adb (Resolve_Allocator): Add info messages corresponding to - the owner and corresponding coextension. - -2017-11-08 Ed Schonberg - - * sem_aggr.adb (Resolve_Delta_Aggregate): Divide into the - following separate procedures. - (Resolve_Delta_Array_Aggregate): Previous code form - Resolve_Delta_Aggregate. - (Resolve_Delta_Record_Aggregate): Extend previous code to cover latest - ARG decisions on the legality rules for delta aggregates for records: - in the case of a variant record, components from different variants - cannot be specified in the delta aggregate, and this must be checked - statically. - -2017-11-08 Piotr Trojanek - - * spark_xrefs.ads (SPARK_Scope_Record): Remove File_Num component. - * lib-xref-spark_specific.adb (Add_SPARK_Scope): Skip initialization of - removed component. - -2017-11-08 Gary Dismukes - - * sem_ch4.adb: Minor typo fix. - -2017-11-08 Piotr Trojanek - - * spark_xrefs.ads (SPARK_Scope_Record): Remove Spec_File_Num and - Spec_Scope_Num components. - * spark_xrefs.adb (dspark): Skip pretty-printing to removed components. - * lib-xref-spark_specific.adb (Add_SPARK_Scope): Skip initialization of - removed components. - (Collect_SPARK_Xrefs): Skip setting proper values of removed - components. - -2017-11-08 Gary Dismukes - - * exp_ch4.adb (Expand_N_Type_Conversion): Add test that the selector - name is a discriminant in check for unconditional accessibility - violation within instances. - -2017-11-08 Piotr Trojanek - - * lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove special-case - for constants (with variable input). - (Is_Constant_Object_Without_Variable_Input): Remove. - -2017-11-08 Hristian Kirtchev - - * exp_ch9.adb, sem_disp.adb, sem_util.adb: Minor reformatting. - -2017-11-08 Piotr Trojanek - - * spark_xrefs.ads (Rtype): Remove special-casing of constants for SPARK - cross-references. - (dspark): Remove hardcoded table bound. - -2017-11-08 Ed Schonberg - - * sem_ch4.adb (Analyze_Aggregate): For Ada2020 delta aggregates, use - the type of the base of the construct to determine the type (or - candidate interpretations) of the delta aggregate. This allows the - construct to appear in a context that expects a private extension. - * sem_res.adb (Resolve): Handle properly a delta aggregate with an - overloaded base. - -2017-11-08 Piotr Trojanek - - * spark_xrefs.ads (SPARK_Xref_Record): Replace file and scope indices - with Entity_Id of the reference. - * spark_xrefs.adb (dspark): Adapt pretty-printing routine. - * lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Store Entity_Id of the - reference, not the file and scope indices. - -2017-11-08 Arnaud Charlet - - * errout.ads (Current_Node): New. - * errout.adb (Error_Msg): Use Current_Node. - * par-ch6.adb, par-ch7.adb, par-ch9.adb, par-util.adb: Set Current_Node - when relevant. - * style.adb: Call Error_Msg_N when possible. - -2017-11-08 Piotr Trojanek - - * spark_xrefs.ads (SPARK_Scope_Record): Rename Scope_Id component to - Entity. - * lib-xref-spark_specific.adb, spark_xrefs.adb: Propagate renaming of - the Scope_Id record component. - -2017-11-08 Piotr Trojanek - - * spark_xrefs.ads (SPARK_File_Record): Remove string components. - * spark_xrefs.adb (dspark): Remove pretty-printing of removed - SPARK_File_Record components. - * lib-xref-spark_specific.adb (Add_SPARK_File): Do not store string - representation of files/units. - -2017-11-08 Piotr Trojanek - - * lib-xref.ads, lib-xref-spark_specific.adb (Traverse_Declarations): - Remove Inside_Stubs parameter. - -2017-11-08 Piotr Trojanek - - * spark_xrefs.ads (SPARK_Xref_Record): Referenced object is now - represented by Entity_Id. - (SPARK_Scope_Record): Referenced scope (e.g. subprogram) is now - represented by Entity_Id; this information is not repeated as - Scope_Entity. - (Heap): Moved from lib-xref-spark_specific.adb, to reside next to - Name_Of_Heap_Variable. - * spark_xrefs.adb (dspark): Adapt debug routine to above changes in - data types. - * lib-xref-spark_specific.adb: Adapt routines for populating SPARK - scope and xrefs tables to above changes in data types. - -2017-11-08 Justin Squirek - - * sem_ch8.adb (Mark_Use_Clauses): Add condition to always mark the - primitives of generic actuals. - (Mark_Use_Type): Add recursive call to properly mark class-wide type's - base type clauses as per ARM 8.4 (8.2/3). - -2017-11-08 Ed Schonberg - - * sem_ch6.adb (Analyze_Generic_Subprobram_Body): Validate - categorization dependency of the body, as is done for non-generic - units. - (New_Overloaded_Entity, Visible_Part_Type): Remove linear search - through declarations (Simple optimization, no behavior change). - -2017-11-08 Piotr Trojanek - - * spark_xrefs.ads (SPARK_Xref_Record): Remove inessential components. - (SPARK_Scope_Record): Remove inessential components. - * spark_xrefs.adb (dspark): Remove pretty-printing of removed record - components. - * lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove setting of - removed record components. - (Add_SPARK_Xrefs): Remove setting of removed record components. - -2017-11-08 Piotr Trojanek - - * lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove dead check for - empty entities. - -2017-11-08 Javier Miranda - - * sem_disp.adb (Is_Inherited_Public_Operation): Extend the - functionality of this routine to handle multiple levels of derivations. - -2017-11-08 Hristian Kirtchev - - * einfo.adb: Elist36 is now used as Nested_Scenarios. - (Nested_Scenarios): New routine. - (Set_Nested_Scenarios): New routine. - (Write_Field36_Name): New routine. - * einfo.ads: Add new attribute Nested_Scenarios along with occurrences - in entities. - (Nested_Scenarios): New routine along with pragma Inline. - (Set_Nested_Scenarios): New routine along with pragma Inline. - * sem_elab.adb (Find_And_Process_Nested_Scenarios): New routine. - (Process_Nested_Scenarios): New routine. - (Traverse_Body): When a subprogram body is traversed for the first - time, find, save, and process all suitable scenarios found within. - Subsequent traversals of the same subprogram body utilize the saved - scenarios. - -2017-11-08 Piotr Trojanek - - * lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove detection of - protected operations. - (Add_SPARK_Xrefs): Simplify detection of empty entities. - * get_spark_xrefs.ads, get_spark_xrefs.adb, put_spark_xrefs.ads, - put_spark_xrefs.adb, spark_xrefs_test.adb: Remove code for writing, - reading and testing SPARK cross-references stored in the ALI files. - * lib-xref.ads (Output_SPARK_Xrefs): Remove. - * lib-writ.adb (Write_ALI): Do not write SPARK cross-references to the - ALI file. - * spark_xrefs.ads, spark_xrefs.adb (pspark): Remove, together - with description of the SPARK xrefs ALI format. - * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Remove get_spark_refs.o - and put_spark_refs.o. - -2017-11-08 Hristian Kirtchev - - * exp_ch4.adb (Apply_Accessibility_Check): Do not finalize the object - when the associated access type is subject to pragma - No_Heap_Finalization. - * exp_intr.adb (Expand_Unc_Deallocation): Use the available view of the - designated type in case it comes from a limited withed unit. - -2017-11-08 Hristian Kirtchev - - * exp_ch3.adb (Expand_N_Object_Declaration): Save and restore relevant - SPARK-related flags. Add ??? comment. - * exp_util.adb (Insert_Actions): Add an entry for node - N_Variable_Reference_Marker. - * sem.adb (Analyze): Add an entry for node N_Variable_Reference_Marker. - * sem_ch8.adb (Find_Direct_Name): Add constant Is_Assignment_LHS. Build - and record a variable reference marker for the current name. - (Find_Expanded_Name): Add constant Is_Assignment_LHS. Build and record - a variable reference marker for the current name. - * sem_elab.adb (Build_Variable_Reference_Marker): New routine. - (Extract_Variable_Reference_Attributes): Reimplemented. - (Info_Scenario): Add output for variable references and remove output - for variable reads. - (Info_Variable_Read): Removed. - (Info_Variable_Reference): New routine. - (Is_Suitable_Scenario): Variable references are now suitable scenarios - while variable reads are not. - (Output_Active_Scenarios): Add output for variable references and - remove output for variable reads. - (Output_Variable_Read): Removed. - (Output_Variable_Reference): New routine. - (Process_Variable_Read): Removed. - (Process_Variable_Reference): New routine. - (Process_Variable_Reference_Read): New routine. - * sem_elab.ads (Build_Variable_Reference_Marker): New routine. - * sem_res.adb (Resolve_Actuals): Build and record a variable reference - marker for the current actual. - * sem_spark.adb (Check_Node): Add an entry for node - N_Variable_Reference_Marker. - * sem_util.adb (Within_Subprogram_Call): Moved to the library level. - * sem_util.ads (Within_Subprogram_Call): Moved to the library level. - * sinfo.adb (Is_Read): New routine. - (Is_Write): New routine. - (Target): Updated to handle variable reference markers. - (Set_Is_Read): New routine. - (Set_Is_Write): New routine. - (Set_Target): Updated to handle variable reference markers. - * sinfo.ads: Add new attributes Is_Read and Is_Write along with - occurrences in nodes. Update attribute Target. Add new node - kind N_Variable_Reference_Marker. - (Is_Read): New routine along with pragma Inline. - (Is_Write): New routine along with pragma Inline. - (Set_Is_Read): New routine along with pragma Inline. - (Set_Is_Write): New routine along with pragma Inline. - * sprint.adb (Sprint_Node_Actual): Add an entry for node - N_Variable_Reference_Marker. - -2017-11-08 Arnaud Charlet - - * sem_util.adb (Subprogram_Name): Append suffix for overloaded - subprograms. - -2017-11-08 Yannick Moy - - * sem_ch8.adb (Use_One_Type, Update_Use_Clause_Chain): Do not report - about unused use-type or use-package clauses inside inlined bodies. - -2017-11-08 Hristian Kirtchev - - * sem_elab.adb (Ensure_Prior_Elaboration): Add new parameter - In_Partial_Fin along with a comment on its usage. Do not guarantee the - prior elaboration of a unit when the need came from a partial - finalization context. - (In_Initialization_Context): Relocated to Process_Call. - (Is_Partial_Finalization_Proc): New routine. - (Process_Access): Add new parameter In_Partial_Fin along with a comment - on its usage. - (Process_Activation_Call): Add new parameter In_Partial_Fin along with - a comment on its usage. - (Process_Activation_Conditional_ABE_Impl): Add new parameter - In_Partial_Fin along with a comment on its usage. Do not emit any ABE - diagnostics when the activation occurs in a partial finalization - context. - (Process_Activation_Guaranteed_ABE_Impl): Add new parameter - In_Partial_Fin along with a comment on its usage. - (Process_Call): Add new parameter In_Partial_Fin along with a comment - on its usage. A call is within a partial finalization context when it - targets a finalizer or primitive [Deep_]Finalize, and the call appears - in initialization actions. Pass this information down to the recursive - steps of the Processing phase. - (Process_Call_Ada): Add new parameter In_Partial_Fin along with a - comment on its usage. Remove the guard which suppresses the generation - of implicit Elaborate[_All] pragmas. This is now done in - Ensure_Prior_Elaboration. - (Process_Call_Conditional_ABE): Add new parameter In_Partial_Fin along - with a comment on its usage. Do not emit any ABE diagnostics when the - call occurs in a partial finalization context. - (Process_Call_SPARK): Add new parameter In_Partial_Fin along with a - comment on its usage. - (Process_Instantiation): Add new parameter In_Partial_Fin along with a - comment on its usage. - (Process_Instantiation_Ada): Add new parameter In_Partial_Fin along - with a comment on its usage. - (Process_Instantiation_Conditional_ABE): Add new parameter - In_Partial_Fin along with a comment on its usage. Do not emit any ABE - diagnostics when the instantiation occurs in a partial finalization - context. - (Process_Instantiation_SPARK): Add new parameter In_Partial_Fin along - with a comment on its usage. - (Process_Scenario): Add new parameter In_Partial_Fin along with a - comment on its usage. - (Process_Single_Activation): Add new parameter In_Partial_Fin along - with a comment on its usage. - (Traverse_Body): Add new parameter In_Partial_Fin along with a comment - on its usage. - -2017-11-08 Arnaud Charlet - - * sem_ch13.adb: Add optional parameter to Error_Msg. - -2017-11-08 Jerome Lambourg - - * fname.adb (Is_Internal_File_Name): Do not check the 8+3 naming schema - for the Interfaces.* hierarchy as longer unit names are now allowed. - -2017-11-08 Arnaud Charlet - - * sem_util.adb (Subprogram_Name): Emit sloc for the enclosing - subprogram as well. Support more cases of entities. - (Append_Entity_Name): Add some defensive code. - -2017-11-06 Eric Botcazou - - * gcc-interface/misc.c (gnat_post_options): Clear warn_return_type. - -2017-10-31 Eric Botcazou - - PR ada/82785 - * gcc-interface/Makefile.in (m68k/Linux): Fix typo. - -2017-10-21 Eric Botcazou - - * gcc-interface/Makefile.in: Remove bogus settings for VxWorks. - -2017-10-21 Eric Botcazou - - * gcc-interface/utils.c (pad_type_hash): Use hashval_t for hash value. - (convert): Do not use an unchecked conversion for converting from a - type to another type padding it. - -2017-10-20 Doug Rupp - - * libgnarl/s-osinte__linux.ads (Relative_Timed_Wait): Add variable - needed for using monotonic clock. - * libgnarl/s-taprop__linux.adb: Revert previous monotonic clock - changes. - * libgnarl/s-taprop__linux.adb, s-taprop__posix.adb: Unify and factor - out monotonic clock related functions body. - (Timed_Sleep, Timed_Delay, Montonic_Clock, RT_Resolution, - Compute_Deadline): Move to... - * libgnarl/s-tpopmo.adb: ... here. New separate package body. - -2017-10-20 Ed Schonberg - - * sem_util.adb (Is_Controlling_Limited_Procedure): Handle properly the - case where the controlling formal is an anonymous access to interface - type. - * exp_ch9.adb (Extract_Dispatching_Call): If controlling actual is an - access type, handle properly the the constructed dereference that - designates the object used in the rewritten synchronized call. - (Parameter_Block_Pack): If the type of the actual is by-copy, its - generated declaration in the parameter block does not need an - initialization even if the type is a null-excluding access type, - because it will be initialized with the value of the actual later on. - (Parameter_Block_Pack): Do not add controlling actual to parameter - block when its type is by-copy. - -2017-10-20 Justin Squirek - - * sem_ch8.adb (Update_Use_Clause_Chain): Add sanity check to verify - scope stack traversal into the context clause. - -2017-10-20 Bob Duff - - * sinfo.ads: Fix a comment typo. - -2017-10-20 Eric Botcazou - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst (-flto): Add - warning against usage in conjunction with -gnatn. - (-fdump-xref): Delete entry. - * doc/gnat_ugn/gnat_utility_programs.rst (--ext): Remove mention of - -fdump-xref switch. - * gnat_ugn.texi: Regenerate. - -2017-10-20 Hristian Kirtchev - - * sem_type.adb, exp_util.adb, sem_util.adb, sem_dim.adb, sem_elab.adb: - Minor reformatting. - -2017-10-20 Yannick Moy - - * sem_dim.adb (Analyze_Dimension_Binary_Op): Accept with a warning to - compare a dimensioned expression with a literal. - (Dim_Warning_For_Numeric_Literal): Do not issue a warning for the - special value zero. - * doc/gnat_ugn/gnat_and_program_execution.rst: Update description of - dimensionality system in GNAT. - * gnat_ugn.texi: Regenerate. - -2017-10-20 Yannick Moy - - * sem_ch6.adb (Analyze_Expression_Function.Freeze_Expr_Types): Remove - inadequate silencing of errors. - * sem_util.adb (Check_Part_Of_Reference): Do not issue an error when - checking the subprogram body generated from an expression function, - when this is done as part of the preanalysis done on expression - functions, as the subprogram body may not yet be attached in the AST. - The error if any will be issued later during the analysis of the body. - (Is_Aliased_View): Trivial rewrite with Is_Formal_Object. - -2017-10-20 Arnaud Charlet - - * sem_ch8.adb (Update_Chain_In_Scope): Add missing [-gnatwu] marker for - warning on ineffective use clause. - -2017-10-20 Eric Botcazou - - * exp_ch11.ads (Warn_If_No_Local_Raise): Declare. - * exp_ch11.adb (Expand_Exception_Handlers): Use Warn_If_No_Local_Raise - to issue the warning on the absence of local raise. - (Possible_Local_Raise): Do not issue the warning for Call_Markers. - (Warn_If_No_Local_Raise): New procedure to issue the warning on the - absence of local raise. - * sem_elab.adb: Add with and use clauses for Exp_Ch11. - (Record_Elaboration_Scenario): Call Possible_Local_Raise in the cases - where a scenario could give rise to raising Program_Error. - * sem_elab.adb: Typo fixes. - * fe.h (Warn_If_No_Local_Raise): Declare. - * gcc-interface/gigi.h (get_exception_label): Change return type. - * gcc-interface/trans.c (gnu_constraint_error_label_stack): Change to - simple vector of Entity_Id. - (gnu_storage_error_label_stack): Likewise. - (gnu_program_error_label_stack): Likewise. - (gigi): Adjust to above changes. - (Raise_Error_to_gnu): Likewise. - (gnat_to_gnu) : Set TREE_USED on the label. - (N_Push_Constraint_Error_Label): Push the label onto the stack. - (N_Push_Storage_Error_Label): Likewise. - (N_Push_Program_Error_Label): Likewise. - (N_Pop_Constraint_Error_Label): Pop the label from the stack and issue - a warning on the absence of local raise. - (N_Pop_Storage_Error_Label): Likewise. - (N_Pop_Program_Error_Label): Likewise. - (push_exception_label_stack): Delete. - (get_exception_label): Change return type to Entity_Id and adjust. - * gcc-interface/utils2.c (build_goto_raise): Change type of first - parameter to Entity_Id and adjust. Set TREE_USED on the label. - (build_call_raise): Adjust calls to get_exception_label and also - build_goto_raise. - (build_call_raise_column): Likewise. - (build_call_raise_range): Likewise. - * doc/gnat_ugn/building_executable_programs_with_gnat.rst (-gnatw.x): - Document actual default behavior. - -2017-10-20 Piotr Trojanek - - * einfo.ads: Minor consistent punctuation in comment. All numbered - items in the comment of Is_Internal are now terminated with a period. - -2017-10-20 Piotr Trojanek - - * exp_util.adb (Build_Temporary): Mark created temporary entity as - internal. - -2017-10-20 Piotr Trojanek - - * sem_type.adb (In_Generic_Actual): Simplified. - -2017-10-20 Justin Squirek - - * sem_ch12.adb (Check_Formal_Package_Instance): Add sanity check to - verify a renaming exists for a generic formal before comparing it to - the actual as defaulted formals will not have a renamed_object. - -2017-10-20 Javier Miranda - - * exp_ch6.adb (Replace_Returns): Fix wrong management of - N_Block_Statement nodes. - -2017-10-20 Bob Duff - - * exp_aggr.adb (Initialize_Array_Component): Avoid adjusting a - component of an array aggregate if it is initialized by a - build-in-place function call. - * exp_ch6.adb (Is_Build_In_Place_Result_Type): Use -gnatd.9 to disable - bip for nonlimited types. - * debug.adb: Document -gnatd.9. - -2017-10-20 Bob Duff - - * sem_ch12.adb: Remove redundant setting of Parent. - -2017-10-20 Eric Botcazou - - * sem_ch4.adb (Find_Concatenation_Types): Filter out operators if one - of the operands is a string literal. - -2017-10-20 Bob Duff - - * einfo.ads: Comment fix. - -2017-10-20 Clement Fumex - - * switch-c.adb: Remove -gnatwm from the switches triggered by -gnateC. - -2017-10-20 Ed Schonberg - - * sem_dim.adb (Extract_Power): Accept dimension values that are not - non-negative integers when the dimensioned base type is an Integer - type. - -2017-10-20 Bob Duff - - * sinfo.ads, sinfo.adb (Alloc_For_BIP_Return): New flag to indicate - that an allocator came from a b-i-p return statement. - * exp_ch4.adb (Expand_Allocator_Expression): Avoid adjusting the return - object of a nonlimited build-in-place function call. - * exp_ch6.adb (Expand_N_Extended_Return_Statement): Set the - Alloc_For_BIP_Return flag on generated allocators. - * sem_ch5.adb (Analyze_Assignment): Move Assert to where it can't fail. - If the N_Assignment_Statement has been transformed into something else, - then Should_Transform_BIP_Assignment won't work. - * exp_ch3.adb (Expand_N_Object_Declaration): A previous revision said, - "Remove Adjust if we're building the return object of an extended - return statement in place." Back out that part of the change, because - the Alloc_For_BIP_Return flag is now used for that. - -2017-10-19 Bob Duff - - * exp_ch6.adb (Is_Build_In_Place_Result_Type): Fix silly bug -- "Typ" - should be "T". Handle case of a subtype of a class-wide type. - -2017-10-19 Bob Duff - - * exp_util.adb: (Process_Statements_For_Controlled_Objects): Clarify - which node kinds can legitimately be ignored, and raise Program_Error - for others. - -2017-10-19 Hristian Kirtchev - - * sem_elab.adb (Compilation_Unit): Handle the case of a subprogram - instantiation that acts as a compilation unit. - (Find_Code_Unit): Reimplemented. - (Find_Top_Unit): Reimplemented. - (Find_Unit_Entity): New routine. - (Process_Instantiation_SPARK): Correct the elaboration requirement a - package instantiation imposes on a unit. - -2017-10-19 Bob Duff - - * exp_ch6.adb (Is_Build_In_Place_Result_Type): Enable build-in-place - for a narrow set of controlled types. - -2017-10-19 Eric Botcazou - - * sinput.ads (Line_Start): Add pragma Inline. - * widechar.ads (Is_Start_Of_Wide_Char): Likewise. - -2017-10-19 Bob Duff - - * exp_attr.adb (Expand_N_Attribute_Reference): Disable - Make_Build_In_Place_Call_... for F(...)'Old, where F(...) is a - build-in-place function call so that the temp is declared in the right - place. - -2017-10-18 Eric Botcazou - - * gcc-interface/misc.c (gnat_tree_size): Move around. - - * gcc-interface/utils.c (max_size): Deal with SSA names. - -2017-10-17 Jakub Jelinek - - * gcc-interface/misc.c (gnat_tree_size): New function. - (LANG_HOOKS_TREE_SIZE): Redefine. - -2017-10-14 Hristian Kirtchev - - * sem_elab.adb (In_Preelaborated_Context): A generic package subject to - Remote_Call_Interface is not a suitable preelaboratd context when the - call appears in the package body. - -2017-10-14 Eric Botcazou - - * layout.ads (Set_Elem_Alignment): Add Align parameter defaulted to 0. - * layout.adb (Set_Elem_Alignment): Likewise. Use M name as maximum - alignment for consistency. If Align is non-zero, use the minimum of - Align and M for the alignment. - * cstand.adb (Build_Float_Type): Use Set_Elem_Alignment instead of - setting the alignment directly. - -2017-10-14 Ed Schonberg - - * sem_prag.adb (Analyze_Pragma, case Check): Defer evaluation of the - optional string in an Assert pragma until the expansion of the pragma - has rewritten it as a conditional statement, so that the string - argument is only evaluaed if the assertion fails. This is mandated by - RM 11.4.2. - -2017-10-14 Hristian Kirtchev - - * debug.adb: Switch -gnatd.v and associated flag are now used to - enforce the SPARK rules for elaboration in SPARK code. - * sem_elab.adb: Describe switch -gnatd.v. - (Process_Call): Verify the SPARK rules only when -gnatd.v is in effect. - (Process_Instantiation): Verify the SPARK rules only when -gnatd.v is - in effect. - (Process_Variable_Assignment): Clarify why variable assignments are - processed reglardless of whether -gnatd.v is in effect. - * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the - sections on elaboration code and compilation switches. - * gnat_ugn.texi: Regenerate. - -2017-10-14 Gary Dismukes - - * exp_util.adb, freeze.adb, sem_aggr.adb, sem_util.ads, sem_util.adb, - sem_warn.adb: Minor reformattings. - -2017-10-14 Ed Schonberg - - * doc/gnat_rm/implementation_defined_aspects.rst: Add documentation - for reverse iteration over formal containers. - * gnat_rm.texi: Regenerate. - -2017-10-14 Hristian Kirtchev - - * sem_elab.adb (Ensure_Dynamic_Prior_Elaboration): Renamed to - Ensure_Prior_Elaboration_Dynamic for consistency reasons. - (Ensure_Static_Prior_Elaboration): Renamed to - Ensure_Prior_Elaboration_Static for consistency reasons. - (Info_Variable_Reference): Renamed to Info_Variable_Read in order to - reflect its new purpose. - (Is_Initialized): New routine. - (Is_Suitable_Variable_Reference): Renamed to Is_Suitable_Variable_Read - in order to reflect its new purpose. - (Is_Variable_Read): New routine. - (Output_Variable_Reference): Renamed to Output_Variable_Read in order - to reflect its new purpose. - (Process_Variable_Assignment): This routine now acts as a top level - dispatcher for variable assignments. - (Process_Variable_Assignment_Ada): New routine. - (Process_Variable_Assignment_SPARK): New routine. - (Process_Variable_Reference): Renamed to Process_Variable_Read in order - to reflects its new purpose. A reference to a variable is now suitable - for ABE processing only when it is a read. The logic in the routine now - reflects the latest SPARK elaboration rules. - -2017-10-14 Justin Squirek - - * sem_ch8.adb (Analyze_Subprogram_Renaming): Modify condition that - triggers marking on formal subprograms. - -2017-10-14 Javier Miranda - - * checks.adb (Ensure_Valid): Do not skip adding the validity check on - renamings of objects that come from the sources. - -2017-10-14 Eric Botcazou - - * cstand.adb (Build_Float_Type): Move down Siz parameter, add Align - parameter and set the alignment of the type to Align. - (Copy_Float_Type): Adjust call to Build_Float_Type. - (Register_Float_Type): Add pragma Unreferenced for Precision. Adjust - call to Build_Float_Type and do not set RM_Size and Alignment. - -2017-10-14 Patrick Bernardi - - * Makefile.rtl (GNATRTL_NONTASKING_OBJ): Add s-soliin to - GNATRTL_NONTASKING_OBJ. - -2017-10-14 Bob Duff - - * exp_ch6.adb (Is_Build_In_Place_Result_Type): Include code for - enabling b-i-p for nonlimited controlled types (but disabled). - -2017-10-14 Justin Squirek - - * sem_elab.adb (Is_Suitable_Variable_Assignment): Replace call to - Has_Warnings_Off with Warnings_Off. - -2017-10-14 Piotr Trojanek - - * sinfo.ads (Generic_Parent): Remove wrong (possibly obsolete) comment. - -2017-10-14 Hristian Kirtchev - - * sem_ch3.adb (Analyze_Declarations): Analyze the contract of an - enclosing package at the end of the visible declarations. - * sem_prag.adb (Analyze_Initialization_Item): Suppress the analysis of - an initialization item which is undefined due to some illegality. - -2017-10-14 Patrick Bernardi - - * ali.adb: Add new ALI line 'T' to read the number of tasks contain - within each unit that require a default-sized primary and secondary - stack to be generated by the binder. - (Scan_ALI): Scan new 'T' lines. - * ali.ads: Add Primary_Stack_Count and Sec_Stack_Count to Unit_Record. - * bindgen.adb (Gen_Output_File): Count the number of default-sized - stacks within the closure that are to be created by the binder. - (Gen_Adainit, Gen_Output_File_Ada): Generate default-sized secondary - stacks and record these in System.Secodnary_Stack. - (Resolve_Binder_Options): Check if System.Secondary_Stack is in the - closure of the program being bound. - * bindusg.adb (Display): Add "-Q" switch. Remove rouge "--RTS" comment. - * exp_ch3.adb (Count_Default_Sized_Task_Stacks): New routine. - (Expand_N_Object_Declaration): Count the number of default-sized stacks - used by task objects contained within the object whose declaration is - being expanded. Only performed when either the restrictions - No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations are in - effect. - * exp_ch9.adb (Create_Secondary_Stack_For_Task): New routine. - (Expand_N_Task_Type_Declaration): Create a secondary stack as part of - the expansion of a task type if the size of the stack is known at - run-time and the restrictions No_Implicit_Heap_Allocations or - No_Implicit_Task_Allocations are in effect. - (Make_Task_Create_Call): If using a restricted profile provide - secondary stack parameter: either the statically created stack or null. - * lib-load.adb (Create_Dummy_Package_Unit, Load_Unit, - Load_Main_Source): Include Primary_Stack_Count and Sec_Stack_Count in - Unit_Record initialization expressions. - * lib-writ.adb (Add_Preprocessing_Dependency, - Ensure_System_Dependency): Include Primary_Stack_Count and - Sec_Stack_Count in Unit_Record initialization expression. - (Write_ALI): Write T lines. - (Write_Unit_Information): Do not output 'T' lines if there are no - stacks for the binder to generate. - * lib-writ.ads: Updated library information documentation to include - new T line entry. - * lib.adb (Increment_Primary_Stack_Count): New routine. - (Increment_Sec_Stack_Count): New routine. - (Primary_Stack_Count): New routine. - (Sec_Stack_Count): New routine. - * lib.ads: Add Primary_Stack_Count and Sec_Stack_Count components to - Unit_Record and updated documentation. - (Increment_Primary_Stack_Count): New routine along with pragma Inline. - (Increment_Sec_Stack_Count): New routine along with pragma Inline. - (Primary_Stack_Count): New routine along with pragma Inline. - (Sec_Stack_Count): New routine along with pragma Inline. - * opt.ads: New constant No_Stack_Size. Flag Default_Stack_Size - redefined. New flag Default_Sec_Stack_Size and - Quantity_Of_Default_Size_Sec_Stacks. - * rtfinal.c Fixed erroneous comment. - * rtsfind.ads: Moved RE_Default_Secondary_Stack_Size from - System.Secondary_Stack to System.Parameters. Add RE_SS_Stack. - * sem_util.adb (Number_Of_Elements_In_Array): New routine. - * sem_util.ads (Number_Of_Elements_In_Array): New routine. - * switch-b.adb (Scan_Binder_Switches): Scan "-Q" switch. - * libgnarl/s-solita.adb (Get_Sec_Stack_Addr): Removed routine. - (Set_Sec_Stack_Addr): Removed routine. - (Get_Sec_Stack): New routine. - (Set_Sec_Stack): New routine. - (Init_Tasking_Soft_Links): Update System.Soft_Links reference to - reflect new procedure and global names. - * libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb, - libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__solaris.adb, - libgnarl/s-taprop__vxworks.adb (Register_Foreign_Thread): Update - parameter profile to allow the secondary stack size to be specified. - * libgnarl/s-tarest.adb (Create_Restricted_Task): Update the parameter - profile to include Sec_Stack_Address. Update Tasking.Initialize_ATCB - call to remove Secondary_Stack_Size reference. Add secondary stack - address and size to SSL.Create_TSD call. - (Task_Wrapper): Remove secondary stack creation. - * libgnarl/s-tarest.ads (Create_Restricted_Task, - Create_Restricted_Task_Sequential): Update parameter profile to include - Sec_Stack_Address and clarify the Size parameter. - * libgnarl/s-taskin.adb (Initialize_ATCB): Remove Secondary_Stack_Size - from profile and body. - (Initialize): Remove Secondary_Stack_Size from Initialize_ATCB call. - * libgnarl/s-taskin.ads: Removed component Secondary_Stack_Size from - Common_ATCB. - (Initialize_ATCB): Update the parameter profile to remove - Secondary_Stack_Size. - * libgnarl/s-tassta.adb (Create_Task): Updated parameter profile and - call to Initialize_ATCB. Add secondary stack address and size to - SSL.Create_TSD call, and catch any storage exception from the call. - (Finalize_Global_Tasks): Update System.Soft_Links references to reflect - new subprogram and component names. - (Task_Wrapper): Remove secondary stack creation. - (Vulnerable_Complete_Master): Update to reflect TSD changes. - * libgnarl/s-tassta.ads: Reformat comments. - (Create_Task): Update parameter profile. - * libgnarl/s-tporft.adb (Register_Foreign_Thread): Update parameter - profile to include secondary stack size. Remove secondary size - parameter from Initialize_ATCB call and add it to Create_TSD call. - * libgnat/s-parame.adb, libgnat/s-parame__rtems.adb, - libgnat/s-parame__vxworks.adb (Default_Sec_Stack_Size): New routine. - * libgnat/s-parame.ads, libgnat/s-parame__ae653.ads, - libgnat/s-parame__hpux.ads, libgnat/s-parame__vxworks.ads: Remove type - Percentage. Remove constants Dynamic, Sec_Stack_Percentage and - Sec_Stack_Dynamic. Add constant Runtime_Default_Sec_Stack_Size and - Sec_Stack_Dynamic. - (Default_Sec_Stack_Size): New routine. - * libgnat/s-secsta.adb, libgnat/s-secsta.ads: New implementation. Is - now Preelaborate. - * libgnat/s-soflin.adb: Removed unused with-clauses. With - System.Soft_Links.Initialize to initialize non-tasking TSD. - (Create_TSD): Update parameter profile. Initialize the TSD and - unconditionally call SS_Init. - (Destroy_TSD): Update SST.SS_Free call. - (Get_Sec_Stack_Addr_NT, Get_Sec_Stack_Addr_Soft, Set_Sec_Stack_Addr_NT, - Set_Sec_Stack_Addr_Soft): Remove routines. - (Get_Sec_Stack_NT, Get_Sec_Stack_Soft, Set_Sec_Stack_NT, - Set_Sec_Stack_Soft): Add routines. - (NT_TSD): Move to private part of package specification. - * libgnat/s-soflin.ads: New types Get_Stack_Call and Set_Stack_Call - with suppressed access checks. Renamed *_Sec_Stack_Addr_* routines and - objects to *_Sec_Stack_*. TSD: removed warning suppression and - component intialization. Changed Sec_Stack_Addr to Sec_Stack_Ptr. - (Create_TSD): Update parameter profile. - (NT_TSD): Move to private section from body. - * libgnat/s-soliin.adb, libgnat/s-soliin.ads: New files. - * libgnat/s-thread.ads (Thread_Body_Enter): Update parameter profile. - * libgnat/s-thread__ae653.adb (Get_Sec_Stack_Addr, Set_Sec_Stack_Addr): - Remove routine. - (Get_Sec_Stack, Set_Sec_Stack): Add routine. - (Thread_Body_Enter): Update parameter profile and body to adapt to new - System.Secondary_Stack. - (Init_RTS): Update body for new System.Soft_Links names. - * gcc-interface/Make-lang.in (GNAT_ADA_OBJS, GNATBIND_OBJS): Add - s-soliin.o. - -2017-10-10 Richard Sandiford - - * gcc-interface/decl.c (annotate_value): Use wi::to_wide when - operating on trees as wide_ints. - -2017-10-09 Hristian Kirtchev - - * sem_unit.adb (Find_Enclosing_Scope): Do not treat a block statement - as a scoping construct when it is byproduct of exception handling. - -2017-10-09 Hristian Kirtchev - - * sinfo.ads: Update table Is_Syntactic_Field to reflect the nature of - semantic field Target of node N_Call_Marker. - -2017-10-09 Ed Schonberg - - * sem_res.adb (Resolve_Allocator): Reject properly an allocator that - attempts to copy a limited value, when the allocator is the expression - in an expression function. - -2017-10-09 Joel Brobecker - - * doc/share/conf.py: Tell the style checker that this is a Python - fragment, and therefore that pyflakes should not be run to validate - this file. - -2017-10-09 Eric Botcazou - - * einfo.ads (Is_Boolean_Type): Add pragma Inline. - (Is_Entity_Name): Likewise. - (Is_String_Type): Likewise. - * sem_type.adb (Full_View_Covers): Do not test Is_Private_Type here - and remove useless comparisons on the base types. - (Covers): Use simple tests for Standard_Void_Type. Move up cheap tests - on T2. Always test Is_Private_Type before Full_View_Covers. - -2017-10-09 Bob Duff - - * exp_ch4.adb: Minor refactoring. - -2017-10-09 Javier Miranda - - * sem_ch3.adb (Replace_Components): Browse the list of discriminants, - not components. - -2017-10-09 Hristian Kirtchev - - * sem_elab.adb (Static_Elaboration_Checks): Elaboration requirements - are verified only in the static model. - -2017-10-09 Ed Schonberg - - * sem_ch5.adb (Analyze_Iterator_Specification, - Check_Reverse_Iteration): Check that the domain of iteration supports - reverse iteration when it is a formal container. This requires the - presence of a Previous primitive in the Iterable aspect. - * sem_ch13.adb (Resolve_Iterable_Operation): Verify legality of - primitives Last and Previous to support reverse iteration over formal - containers. - (Validate_Iterable_Aspect): Add check for reverse iteration operations. - * exp_ch5.adb (Build_Formal_Container_Iteration): Add proper expansion - for reverse iteration using primitives Last and Previous in generated - loop. - -2017-10-09 Ed Schonberg - - * sem_util.adb (Subprogram_Name): If this is a child unit, use the name - of the Defining_Program_Unit_Name, which is an identifier, in order to - construct the string for the fully qualified name. - -2017-10-09 Justin Squirek - - * sem_ch3.adb: Rename Uses_Unseen_Priv into - Contains_Lib_Incomplete_Type. - -2017-10-09 Hristian Kirtchev - - * sem_aggr.adb, sem_spark.adb, adabkend.adb, exp_ch5.adb, frontend.adb, - sem_ch12.adb, fmap.adb, exp_ch6.adb, exp_spark.adb, lib-load.adb, - exp_ch9.adb, osint.adb, exp_disp.adb, sem_ch8.adb, sem_ch8.ads, - prepcomp.adb, gnat1drv.adb, atree.adb, sinput-l.adb, targparm.adb, - sem_ch10.adb, par-ch8.adb: Minor reformatting. - -2017-10-09 Hristian Kirtchev - - * sem_elab.adb (Is_Suitable_Access): This scenario is now only relevant - in the static model. - (Is_Suitable_Variable_Assignment): This scenario is now only relevant - in the static model. - (Is_Suitable_Variable_Reference): This scenario is now only relevant in - the static model. - -2017-10-09 Ed Schonberg - - * sem_ch3.adb (Analyze_Declarations): In ASIS mode, resolve aspect - expressions when the enclosing scope is a subprogram body and the next - declaration is a body that freezes entities previously declared in the - scope. - -2017-10-09 Justin Squirek - - * sem_ch8.adb (Analyze_Use_Package): Remove checking of mixture between - ghost packages and living packages in use clauses. - (Use_One_Type, Note_Redundant_Use): Correct warning messages - -2017-10-09 Justin Squirek - - * osint.ads: Document new parameter FD for Read_Source_File. - -2017-10-09 Ed Schonberg - - * exp_util.adb (Make_Predicate_Call): If the type of the expression to - which the predicate check applies is tagged, convert the expression to - that type. This is in most cases a no-op, but is relevant if the - expression is clas-swide, because the predicate function being invoked - is not a primitive of the type and cannot take a class-wide actual. - -2017-10-09 Gary Dismukes - - * exp_disp.adb: Minor reformatting. - -2017-10-09 Arnaud Charlet - - * sem_warn.adb (Warn_On_Unreferenced_Entity): Fix typo. - -2017-10-09 Hristian Kirtchev - - * sem_elab.adb (Install_ABE_Check): Do not generate an ABE check for - GNATprove. - (Install_ABE_Failure): Do not generate an ABE failure for GNATprove. - -2017-10-09 Bob Duff - - * exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Return - immediately if the call has already been processed (by a previous call - to Make_Build_In_Place_Call_In_Anonymous_Context). - * sem_elab.adb: Minor typo fixes. - -2017-10-09 Ed Schonberg - - * sem_ch13.adb (Replace_Type_Ref): In the expression for a dynamic - predicate, do not replace an identifier that matches the type if the - identifier is a selector in a selected component, because this - indicates a reference to some homograph of the type itself, and not to - the current occurence in the predicate. - -2017-10-09 Eric Botcazou - - * repinfo.adb (List_Record_Layout): Tweak formatting. - (Write_Val): Remove superfluous spaces in back-end layout mode. - -2017-10-09 Piotr Trojanek - - * sem_res.adb (Property_Error): Remove. - (Resolve_Actuals): check for SPARK RM 7.1.3(10) rewritten to match the - current wording of the rule. - -2017-10-09 Justin Squirek - - * sem_ch3.adb (Analyze_Declarations): Add check for ghost packages - before analyzing a given scope due to an expression function. - (Uses_Unseen_Lib_Unit_Priv): Rename to Uses_Unseen_Priv. - -2017-10-09 Bob Duff - - * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Use - Defining_Identifier (Obj_Decl) in two places, because it might have - changed. - * exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Deal with cases - involving 'Input on (not visibly) derived types. - -2017-10-09 Hristian Kirtchev - - * atree.adb: Add new soft link Rewriting_Proc. - (Rewrite): Invoke the subprogram attached to the rewriting soft link. - (Set_Rewriting_Proc): New routine. - * attree.ads: Add new access-to-subprogram type Rewrite_Proc. - (Set_Rewriting_Proc): New routine. - * checks.adb (Install_Primitive_Elaboration_Check): Use 'E' character - for *E*laboration flag to maintain consistency with other elaboration - flag generating subprograms. - * debug.adb: Document the new usage of flag -gnatdL. - * einfo.adb: Node19 is now used as Receiving_Entry. Node39 is now used - as Protected_Subprogram. Flag148 is now used as - Is_Elaboration_Checks_OK_Id. Flag302 is now used as - Is_Initial_Condition_Procedure. - (Is_Elaboration_Checks_OK_Id): New routine. - (Is_Initial_Condition_Procedure): New routine. - (Protected_Subprogram): New routine. - (Receiving_Entry): New routine. - (SPARK_Pragma): Update assertion. - (SPARK_Pragma_Inherited): Update assertion. - (Suppress_Elaboration_Warnings): Removed. - (Set_Is_Elaboration_Checks_OK_Id): New routine. - (Set_Is_Initial_Condition_Procedure): New routine. - (Set_Protected_Subprogram): New routine. - (Set_Receiving_Entry): New routine. - (Set_SPARK_Pragma): Update assertion. - (Set_SPARK_Pragma_Inherited): Update assertion. - (Write_Entity_Flags): Update the output for Flag148 and Flag302. - (Write_Field19_Name): Add output for Receiving_Entry. - (Write_Field39_Name): Add output for Protected_Subprogram. - (Write_Field40_Name): Update the output for SPARK_Pragma. - * einfo.ads: New attributes Is_Elaboration_Checks_OK_Id, - Is_Initial_Condition_Procedure, Protected_Subprogram, Receiving_Entry. - Remove attribute Suppress_Elaboration_Warnings. Update the stricture - of various entities. - (Is_Elaboration_Checks_OK_Id): New routine along with pragma Inline. - (Is_Initial_Condition_Procedure): New routine along with pragma Inline. - (Protected_Subprogram): New routine along with pragma Inline. - (Receiving_Entry): New routine along with pragma Inline. - (Suppress_Elaboration_Warnings): Removed. - (Set_Is_Elaboration_Checks_OK_Id): New routine along with pragma - Inline. - (Set_Is_Initial_Condition_Procedure): New routine along with pragma - Inline. - (Set_Protected_Subprogram): New routine along with pragma Inline. - (Set_Receiving_Entry): New routine along with pragma Inline. - (Set_Suppress_Elaboration_Warnings): Removed. - * exp_ch3.adb (Build_Init_Procedure): Use name _Finalizer to maintain - consistency with other finalizer generating subprograms. - (Default_Initialize_Object): Mark the block which wraps the call to - finalize as being part of initialization. - * exp_ch7.adb (Expand_N_Package_Declaration): Directly expand pragma - Initial_Condition. - (Expand_N_Package_Body): Directly expand pragma Initial_Condition. - (Next_Suitable_Statement): Update the comment on usage. Skip over call - markers generated by the ABE mechanism. - * exp_ch9.adb (Activation_Call_Loc): New routine. - (Add_Accept): Link the accept procedure to the original entry. - (Build_Protected_Sub_Specification): Link the protected or unprotected - version to the original subprogram. - (Build_Task_Activation_Call): Code cleanup. Use a source location which - is very close to the "begin" or "end" keywords when generating the - activation call. - * exp_prag.adb (Expand_Pragma_Initial_Condition): Reimplemented. - * exp_spark.adb (Expand_SPARK): Use Expand_SPARK_N_Loop_Statement to - process loops. - (Expand_SPARK_N_Loop_Statement): New routine. - (Expand_SPARK_N_Object_Declaration): Code cleanup. Partially insert the - call to the Default_Initial_Condition procedure. - (Expand_SPARK_Op_Ne): Renamed to Expand_SPARK_N_Op_Ne. - * exp_util.adb (Build_DIC_Procedure_Body): Capture the SPARK_Mode in - effect. - (Build_DIC_Procedure_Declaration): Capture the SPARK_Mode in effect. - (Insert_Actions): Add processing for N_Call_Marker. - (Kill_Dead_Code): Explicitly kill an elaboration scenario. - * exp_util.ads (Make_Invariant_Call): Update the comment on usage. - * frontend.adb: Initialize Sem_Elab. Process all saved top level - elaboration scenarios for ABE issues. - * gcc-interface/trans.c (gnat_to_gnu): Add processing for N_Call_Marker - nodes. - * lib.adb (Earlier_In_Extended_Unit): New variant. - * sem.adb (Analyze): Ignore N_Call_Marker nodes. - (Preanalysis_Active): New routine. - * sem.ads (Preanalysis_Active): New routine. - * sem_attr.adb (Analyze_Access_Attribute): Save certain - elaboration-related attributes. Save the scenario for ABE processing. - * sem_ch3.adb (Analyze_Object_Declaration): Save the SPARK mode in - effect. Save certain elaboration-related attributes. - * sem_ch5.adb (Analyze_Assignment): Save certain elaboration-related - attributes. Save the scenario for ABE processing. - * sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Save the SPARK - mode in effect. Save certain elaboration-related attributes. - (Analyze_Subprogram_Body_Helper): Skip N_Call_Marker nodes when - locating the first real statement. - (Analyze_Subprogram_Declaration): Save the SPARK mode in effect. Save - certain elaboration-related attributes. - * sem_ch7.adb (Analyze_Package_Declaration): Do not suppress - elaboration warnings. - * sem_ch8.adb (Attribute_Renaming): Mark a subprogram body which was - generated for purposes of wrapping an attribute used as a generic - actual. - (Find_Direct_Name): Save certain elaboration-related attributes. Save - the scenario for ABE processing. - (Find_Expanded_Name): Save certain elaboration-related attributes. Save - the scenario for ABE processing. - * sem_ch9.adb (Analyze_Entry_Declaration): Save certain - elaboration-related attributes. - (Analyze_Requeue): Save certain elaboration-related attributes. Save - the scenario for ABE processing. - (Analyze_Single_Task_Declaration): Save certain elaboration-related - attributes. - (Analyze_Task_Type_Declaration): Save certain elaboration-related - attributes. - * sem_ch12.adb (Analyze_Generic_Package_Declaration): Save certain - elaboration-related attributes. - (Analyze_Generic_Subprogram_Declaration): Save the SPARK mode in - effect. Save certain elaboration-related attributes. - (Analyze_Package_Instantiation): Save certain elaboration-related - attributes. Save the scenario for ABE processing. Create completing - bodies in case the instantiation results in a guaranteed ABE. - (Analyze_Subprogram_Instantiation): Save certain elaboration-related - attributes Save the scenario for ABE processing. Create a completing - body in case the instantiation results in a guaranteed ABE. - (Provide_Completing_Bodies): New routine. - * sem_elab.ads: Brand new implementation. - * sem_prag.adb (Analyze_Pragma, cases Elaborate, Elaborate_All, - Elaborate_Body): Do not suppress elaboration warnings. - * sem_res.adb (Make_Call_Into_Operator): Set the parent field of the - operator. - (Resolve_Call): Save certain elaboration-related attributes. Save the - scenario for ABE processing. - (Resolve_Entity_Name): Do not perform any ABE processing here. - (Resolve_Entry_Call): Inherit certain attributes from the original call. - * sem_util.adb (Begin_Keyword_Location): New routine. - (Defining_Entity): Update the parameter profile. Add processing for - concurrent subunits that are rewritten as null statements. - (End_Keyword_Location): New routine. - (Find_Enclosing_Scope): New routine. - (In_Instance_Visible_Part): Code cleanup. - (In_Subtree): Update the parameter profile. Add new version. - (Is_Preelaborable_Aggregate): New routine. - (Is_Preelaborable_Construct): New routine. - (Mark_Elaboration_Attributes): New routine. - (Scope_Within): Update the parameter profile. - (Scope_Within_Or_Same): Update the parameter profile. - * sem_util.ads (Begin_Keyword_Location): New routine. - (Defining_Entity): Update the parameter profile and the comment on - usage. - (End_Keyword_Location): New routine. - (Find_Enclosing_Scope): New routine. - (In_Instance_Visible_Part): Update the parameter profile. - (In_Subtree): Update the parameter profile. Add new version. - (Is_Preelaborable_Aggregate): New routine. - (Is_Preelaborable_Construct): New routine. - (Mark_Elaboration_Attributes): New routine. - (Scope_Within): Update the parameter profile and the comment on usage. - (Scope_Within_Or_Same): Update the parameter profile and the comment on - usage. - * sem_warn.adb (Check_Infinite_Loop_Warning): Use Has_Condition_Actions - to determine whether a loop has meaningful condition actions. - (Has_Condition_Actions): New routine. - * sinfo.adb (ABE_Is_Certain): Removed. - (Is_Declaration_Level_Node): New routine. - (Is_Dispatching_Call): New routine. - (Is_Elaboration_Checks_OK_Node): New routine. - (Is_Initialization_Block): New routine. - (Is_Known_Guaranteed_ABE): New routine. - (Is_Recorded_Scenario): New routine. - (Is_Source_Call): New routine. - (Is_SPARK_Mode_On_Node): New routine. - (No_Elaboration_Check): Removed. - (Target): New routine. - (Was_Attribute_Reference): New routine. - (Set_ABE_Is_Certain): Removed. - (Set_Is_Declaration_Level_Node): New routine. - (Set_Is_Dispatching_Call): New routine. - (Set_Is_Elaboration_Checks_OK_Node): New routine. - (Set_Is_Initialization_Block): New routine. - (Set_Is_Known_Guaranteed_ABE): New routine. - (Set_Is_Recorded_Scenario): New routine. - (Set_Is_Source_Call): New routine. - (Set_Is_SPARK_Mode_On_Node): New routine. - (Set_No_Elaboration_Check): Removed. - (Set_Target): New routine. - (Set_Was_Attribute_Reference): New routine. - * sinfo.ads: Remove attribute ABE_Is_Certain. Attribute - Do_Discriminant_Check now utilizes Flag3. Attribute - No_Side_Effect_Removal now utilizes Flag17. Add new node - N_Call_Marker. Update the structure of various nodes. - (ABE_Is_Certain): Removed along with pragma Inline. - (Is_Declaration_Level_Node): New routine along with pragma Inline. - (Is_Dispatching_Call): New routine along with pragma Inline. - (Is_Elaboration_Checks_OK_Node): New routine along with pragma Inline. - (Is_Initialization_Block): New routine along with pragma Inline. - (Is_Known_Guaranteed_ABE): New routine along with pragma Inline. - (Is_Recorded_Scenario): New routine along with pragma Inline. - (Is_Source_Call): New routine along with pragma Inline. - (Is_SPARK_Mode_On_Node): New routine along with pragma Inline. - (No_Elaboration_Check): Removed along with pragma Inline. - (Target): New routine along with pragma Inline. - (Was_Attribute_Reference): New routine along with pragma Inline. - (Set_ABE_Is_Certain): Removed along with pragma Inline. - (Set_Is_Declaration_Level_Node): New routine along with pragma Inline. - (Set_Is_Dispatching_Call): New routine along with pragma Inline. - (Set_Is_Elaboration_Checks_OK_Node): New routine along with pragma - Inline. - (Set_Is_Initialization_Block): New routine along with pragma Inline. - (Set_Is_Known_Guaranteed_ABE): New routine along with pragma Inline. - (Set_Is_Recorded_Scenario): New routine along with pragma Inline. - (Set_Is_Source_Call): New routine along with pragma Inline. - (Set_Is_SPARK_Mode_On_Node): New routine along with pragma Inline. - (Set_No_Elaboration_Check): Removed along with pragma Inline. - (Set_Target): New routine along with pragma Inline. - (Set_Was_Attribute_Reference): New routine along with pragma Inline. - * sprint.adb (Sprint_Node_Actual): Add an entry for N_Call_Marker. - -2017-10-09 Bob Duff - - * exp_ch7.adb (Create_Finalizer): Suppress checks within the finalizer. - -2017-10-09 Bob Duff - - * freeze.ads: Minor comment fixed. - -2017-10-09 Bob Duff - - * exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Take - care of unchecked conversions in addition to regular conversions. This - takes care of a case where a type is derived from a private untagged - type that is completed by a tagged controlled type. - -2017-10-09 Ed Schonberg - - * exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When - rewriting a class-wide condition, handle properly the case where the - controlling argument of the operation to which the condition applies is - an access to a tagged type, and the condition includes a dispatching - call with an implicit dereference. - -2017-10-09 Bob Duff - - * exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Remove - the code at the end of this procedure that was setting the type of a - class-wide object to the specific type returned by a function call. - Treat this case as indefinite instead. - -2017-10-09 Ed Schonberg - - * sem_ch4.adb (Try_Class_Wide_Operation, Traverse_Homonyms): - Suppress spurious ambiguity error when two traversals of the homonym - chain (first directly, and then through an examination of relevant - interfaces) retrieve the same operation, when other irrelevant homonyms - of the operatioh are also present. - -2017-10-09 Ed Schonberg - - * sem_util.adb (Object_Access_Level): If the object is the return - statement of an expression function, return the level of the function. - This is relevant when the object involves an implicit conversion - between access types and the expression function is a completion, which - forces the analysis of the expression before rewriting it as a body, so - that freeze nodes can appear in the proper scope. - -2017-10-09 Bob Duff - - * atree.adb: Make nnd apply to everything "interesting", including - Rewrite. Remove rrd. - -2017-10-09 Javier Miranda - - * exp_ch3.adb (Expand_N_Object_Declaration): Avoid never-ending loop - processing the declaration of the dummy object internally created by - Make_DT to compute the offset to the top of components referencing - secondary dispatch tables. - (Initialize_Tag): Do not initialize the offset-to-top field if it has - been initialized initialized. - * exp_disp.ads (Building_Static_Secondary_DT): New subprogram. - * exp_disp.adb (Building_Static_Secondary_DT): New subprogram. - (Make_DT): Create a dummy constant object if we can statically build - secondary dispatch tables. - (Make_Secondary_DT): For statically allocated secondary dispatch tables - use the dummy object to compute the offset-to-top field value by means - of the attribute 'Position. - -2017-10-09 Bob Duff - - * exp_ch6.adb (Expand_N_Extended_Return_Statement): Add self-checking - code so if BIPAlloc is not passed in, it will likely raise - Program_Error instead of cause miscellaneous chaos. - (Is_Build_In_Place_Result_Type): Return False if not Expander_Active, - as for the other Is_B-I-P... functions. - * sem_aggr.adb (Resolve_Extension_Aggregate): For an extension - aggregate whose ancestor part is a build-in-place call returning a - nonlimited type, transform the assignment to the ancestor part to use a - temp. - * sem_ch3.adb (Build_Itype_Reference): Handle the case where we're - creating an Itype for a library unit entity. - (Check_Initialization): Avoid spurious error message on - internally-generated call. - * sem_ch5.adb (Analyze_Assignment): Handle the case where the - right-hand side is a build-in-place call. This didn't happen when b-i-p - was only for limited types. - * sem_ch6.adb (Create_Extra_Formals): Remove assumption that b-i-p - implies >= Ada 2005. - * sem_ch7.adb (Scan_Subprogram_Refs): Avoid traversing the same nodes - repeatedly. - * sem_util.adb (Next_Actual): Handle case of build-in-place call. - -2017-10-09 Arnaud Charlet - - * doc/gnat_ugn/gnat_and_program_execution.rst: Minor edit. - -2017-10-09 Piotr Trojanek - - * libgnarl/s-taprob.adb: Minor whitespace fix. - -2017-10-09 Bob Duff - - * namet.ads: Minor comment fix. - -2017-10-09 Piotr Trojanek - - * sem_aux.adb (Unit_Declaration_Node): Detect protected declarations, - just like other program units listed in Ada RM 10.1(1). - -2017-10-09 Justin Squirek - - * sem_ch8.adb (Update_Chain_In_Scope): Modify warning messages. - -2017-10-09 Ed Schonberg - - * sem_ch12.adb (Analyze_Associations, Check_Generic_Parent): If an - actual for a formal package is an instantiation of a child unit, create - a freeze node for the instance of the parent if it appears in the same - scope and is not frozen yet. - -2017-10-09 Pierre-Marie de Rodat - - * exp_atag.ads, libgnat/a-tags.adb, libgnat/a-tags.ads: Enhance - in-source documentation for tagged types's Offset_To_Top. - -2017-10-09 Bob Duff - - * exp_ch3.adb (Build_Assignment): Parameter name N was somewhat - confusing. Same for N_Loc. Remove assumption that b-i-p implies - limited. This is for the case of a function call that occurs as the - default for a record component. - (Expand_N_Object_Declaration): Deal with the case where expansion has - created an object declaration initialized with something like - F(...)'Reference. - * exp_ch3.adb: Minor reformatting. - -2017-10-09 Ed Schonberg - - * exp_attr.adb (Expand_Attribute_Reference, case 'Valid): The prefix of - the attribute is an object, but it may appear within a conversion. The - object itself must be retrieved when generating the range test that - implements the validity check on a scalar type. - -2017-10-05 Eric Botcazou - - PR ada/82393 - * mingw32.h (_O_U8TEXT, _O_U16TEXT, _O_WTEXT): Delete. - * sysdep.c (__gnat_set_mode ): Use DJGPP version for Cygwin. - -2017-10-02 Eric Botcazou - Pierre-Marie de Rodat - - PR ada/82384 - * libgnarl/s-linux__x32.ads (suseconds_t): New subtype. - (time_t): Change from derived type to subtype. - (timeval): Use suseconds_t for tv_usec. - * libgnarl/s-osinte__x32.adb (To_Timespec): Remove use type clause. - -2017-10-02 Richard Sandiford - - * gcc-interface/decl.c (annotate_value): Use wi::to_widest when - handling the form (plus/mult (convert @0) @1). - -2017-09-29 Bob Duff - - * exp_ch6.adb (Expand_Call_Helper): Replace with code more similar to - what we had before. - (Make_Build_In_Place_Call_In_Object_Declaration): Back out previous - change. Set the Etype in the class-wide case. This fixes a regression - in the libadalang test suite. - -2017-09-29 Joel Brobecker - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst, - doc/gnat_ugn/the_gnat_compilation_model.rst: Avoid use of single colon - in comment markup. - * gnat_ugn.texi: Regenerate. - -2017-09-29 Justin Squirek - - * ali-util.adb, comperr.adb, cprint.adb, errout.adb, fmap.adb, - fname-sf.adb, frontend.adb, lib-xref-spark_specific.adb, gnat1drv.adb, - gnatls.adb, lib.adb, lib-load.adb, lib-writ.adb, prepcomp.adb, - sinput-d.adb, sinput-l.adb, sprint.adb, targparm.adb: Update comparison - for checking source file status and error message and/or call to - Read_Source_File. - * libgnat/s-os_lib.ads: Add new potential value constant for - uninitialized file descriptors. - * osint.adb, osint.ads (Read_Source_File): Add extra parameter to - return result of IO to encompass a read access failure in addition to a - file-not-found error. - -2017-09-29 Bob Duff - - * exp_ch6.adb (Expand_Call_Helper): Handle case of build-in-place - functions returning nonlimited types. Allow for qualified expressions - and type conversions. - (Expand_N_Extended_Return_Statement): Correct the computation of - Func_Bod to allow for child units. - (Expand_Simple_Function_Return): Remove assumption that b-i-p implies - limited (initialization of In_Place_Expansion), and implies >= Ada - 2005. - (Is_Build_In_Place_Result_Type): New function to accompany - Is_Build_In_Place_Function and Is_Build_In_Place_Function_Call, because - sometimes we just have the type on our hands, not the function. For - now, does the same thing as the old version, so build-in-place is - disabled for nonlimited types, except that you can use -gnatd.9 to - enable it. - * exp_ch6.ads (Is_Build_In_Place_Result_Type): New function to - accompany Is_Build_In_Place_Function and - Is_Build_In_Place_Function_Call, because sometimes we just have the - type on our hands, not the function. - (Make_Build_In_Place_Call_In_...): Handle nonlimited build-in-place - cases. - (Make_Build_In_Place_Call_In_Object_Declaration): Remove the - questionable code at the end that was setting the Etype. - * exp_aggr.adb (Is_Build_In_Place_Aggregate_Return): New function to - determine whether "return (...agg...);" is returning from a - build-in-place function. - (Initialize_Ctrl_Array_Component, Initialize_Ctrl_Record_Component): - Remove assumption that b-i-p implies limited (initialization of - In_Place_Expansion). - (Build_Record_Aggr_Code): AI-287: fix comment; it can't be wrapped in - an unchecked conversion. Add assertions. - (Convert_Aggr_In_Object_Decl): Establish_Transient_Scope -- no need for - secondary stack here, just because the type needs finalization. That - code is obsolete. - (Convert_To_Assignments): Only set Unc_Decl if Nkind (N) = N_Aggregate. - For "return (...agg...);" don't assume b-i-p implies limited. - Needs_Finalization does not imply secondary stack. - (Expand_Array_Aggregate): Named notation. Reverse the sense of - Component_OK_For_Backend -- more readability with fewer double - negatives. - * exp_attr.adb (Expand_N_Attribute_Reference): Remove assumptions that - b-i-p implies >= Ada 2005. - * exp_ch3.adb (Expand_N_Object_Declaration): Remove assumptions that - b-i-p implies >= Ada 2005. Remove Adjust if we're building the return - object of an extended return statement in place. - * exp_ch4.adb (Expand_Allocator_Expression, Expand_N_Indexed_Component, - Expand_N_Selected_Component, Expand_N_Slice): Remove assumptions that - b-i-p implies >= Ada 2005. - * exp_ch5.adb (Expand_N_Assignment_Statement): Remove assumption that - b-i-p implies >= Ada 2005. - * exp_ch7.adb: Comment fix. - * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Remove - assumptions that b-i-p implies >= Ada 2005. - * exp_disp.adb (Expand_Interface_Actuals): Remove assumptions that - b-i-p implies >= Ada 2005. - * exp_util.adb (Build_Allocate_Deallocate_Proc): Look at Storage_Pool - (Expr), in case Pool_Id is not set. - (Initialized_By_Aliased_BIP_Func_Call): Handle case where the call is - qualified or converted. - (Is_Secondary_Stack_BIP_Func_Call): Don't check if Nkind (Selector_Name - (Param)) = N_Identifier; that's all it could be. - * sinfo.ads: Comment fixes. - * snames.ads-tmpl: Comment fixes. - * debug.adb: Add flag gnatd.9, to enable the build-in-place machinery. - -2017-09-29 Justin Squirek - - * sem_ch8.adb (Mark_Use_Clauses): Add recursive call to properly handle - all cases related to marking entity identifiers. - -2017-09-29 Vasiliy Fofanov - - * adaint.c (win32_wait): Properly handle error and take into account - the WIN32 limitation on the number of simultaneous wait objects. - -2017-09-29 Vasiliy Fofanov - - * cal.c: Minor proofreading. - -2017-09-29 Vasiliy Fofanov - - * doc/gnat_ugn/gnat_utility_programs.rst: Minor formatting fix. - * gnat_ugn.texi: Regenerate. - -2017-09-29 Bob Duff - - * lib-xref.ads: Comment fix. - -2017-09-29 Bob Duff - - * exp_aggr.adb: Remove calls to Set_No_Ctrl_Actions for discriminants. - Discriminants can't need finalization. - -2017-09-29 Ed Schonberg - - * sem_ch6.adb (Analyze_Expression_Function): Do not emit freeze nodes - for types in expression if the function is within a generic unit. - * sem_res.adb (Resolve): In a generic context do not freeze an - expression, unless it is an entity. This exception is solely for the - purpose of detecting illegal uses of deferred constants in generic - units. - * sem_res.adb: Minor reformatting. - -2017-09-29 Justin Squirek - - * sem_ch8.adb (Note_Redundant_Use): Add guard to protect against false - redundant warnings. - -2017-09-29 Yannick Moy - - * sinput-c.adb: Remove unused with-clause on Ada.Unchecked_Conversion. - -2017-09-29 Eric Botcazou - - * doc/gnat_rm/representation_clauses_and_pragmas.rst: Minor rewording. - * doc/gnat_rm/implementation_defined_pragmas.rst (Optimize_Alignment): - Document the effect of pragma Optimize_Alignment (Space) on non-packed - record types. - * gnat_rm.texi: Regenerate. - -2017-09-25 Justin Squirek - - * aspects.adb, bindgen.adb, clean.adb, erroutc.adb, exp_ch13.adb, - exp_dbug.adb, exp_unst.adb, exp_util.adb, frontend.adb, gnat1drv.adb, - gnatdll.adb, gnatlink.adb, gnatls.adb, gnatname.adb, gnatxref.adb, - gnatfind.adb, libgnat/a-cfhama.ads, libgnat/a-exetim__mingw.adb, - libgnat/a-strmap.adb, libgnat/a-teioed.adb, libgnat/g-alvety.ads, - libgnat/g-expect.adb, libgnat/g-regist.adb, libgnat/g-socket.adb, - libgnat/g-socthi__mingw.ads, libgnat/s-stausa.adb, - libgnat/s-tsmona__linux.adb, libgnat/s-tsmona__mingw.adb, - libgnarl/s-taenca.adb, libgnarl/s-tassta.adb, libgnarl/s-tarest.adb, - libgnarl/s-tpobop.adb, make.adb, makeusg.adb, namet.adb, output.ads, - put_scos.adb, repinfo.adb, rtsfind.adb, scn.ads, sem_attr.adb, - sem_aux.ads, sem_warn.ads, targparm.adb, xr_tabls.adb, xref_lib.adb: - Removal of ineffective use-clauses. - * exp_ch9.adb (Is_Simple_Barrier_Name): Check for false positives with - constant folded barriers. - * ghost.adb, sprint.adb, sem_ch10.adb, sem_warn.adb: Change access to - Subtype_Marks and Names list in use-clause nodes to their new singular - counterparts (e.g. Subtype_Mark, Name). - * par.adb, par-ch8.adb (Append_Use_Clause): Created to set - Prev_Ids and More_Ids in use-clause nodes. - (P_Use_Clause): Modify to take a list as a parameter. - (P_Use_Package_Clause, P_Use_Type_Clause): Divide names and - subtype_marks within an aggregate use-clauses into individual clauses. - * par-ch3.adb, par-ch10.adb, par-ch12.adb: Trivally modify call to - P_Use_Clause to match its new behavior. - * sem.adb (Analyze): Mark use clauses for non-overloaded entities. - * sem_ch4.adb (Try_One_Interp): Add sanity check to handle previous - errors. - * sem_ch6.adb (Analyze_Generic_Subprogram_Body, - Analyze_Subprogram_Body_Helper): Update use clause chain at the end of - the declarative region. - * sem_ch7.adb (Analyze_Package_Body_Helper): Update use clause chain - after analysis (Analyze_Package_Specification): Update use clause chain - when there is no body. - * sem_ch8.ads, sem_ch8.adb (Analyze_Use_Package, Analyze_Use_Type): Add - parameter to determine weither the installation of scopes should also - propagate on the use-clause "chain". - (Mark_Use_Clauses): Created to traverse use-clause chains and determine - what constitutes a valid "use" of a clause. - (Update_Use_Clause_Chain): Created to aggregate common machinary used - to clean up use-clause chains (and warn on ineffectiveness) at the end - of declaritive regions. - * sem_ch8.adb (Analyze_Package_Name): Created to perform analysis on a - package name from a use-package clause. - (Analyze_Package_Name_List): Created to perform analysis on a list of - package names (similar to Analyze_Package_Name). - (Find_Most_Prev): Created to traverse to the beginning of a given - use-clause chain. - (Most_Decendant_Use_Clause): Create to identify which clause from a - given set is highest in scope (not always the most prev). - (Use_One_Package, Use_One_Type): Major cleanup and reorganization to - handle the new chaining algorithm, also many changes related to - redundant clauses. A new parameter has also been added to force - installation to handle certain cases. - * sem_ch9.adb (Analyze_Entry_Body, Analyze_Protected_Body, - Analyze_Task_Body): Mark use clauses on relevant entities. - * sem_ch10.adb, sem_ch10.ads (Install_Context_Clauses, - Install_Parents): Add parameter to determine weither the installation - of scopes should also propagate on the use-clause "chain". - * sem_ch12.adb (Inline_Instance_Body): Add flag in call to - Install_Context to avoid redundant chaining of use-clauses. - * sem_ch13.adb: Minor reformatting. - * sem_res.adb (Resolve): Mark use clauses on operators. - (Resolve_Call, Resolve_Entity_Name): Mark use clauses on relevant - entities. - * sinfo.adb, sinfo.ads (Is_Effective_Use_Clause, - Set_Is_Effective_Use_Clause): Add new flag to N_Use_Clause nodes to - represent any given clause's usage/reference/necessity. - (Prev_Use_Clause, Set_Prev_Use_Clause): Add new field to N_Use_Clause - nodes to allow loose chaining of redundant clauses. - (Set_Used_Operations, Set_Subtype_Mark, Set_Prev_Ids, Set_Names, - Set_More_Ids, Set_Name): Modify set procedure calls to reflect - reorganization in node fields. - * types.ads (Source_File_Index): Adjust index bounds. - (No_Access_To_Source_File): New constant. - -2017-09-25 Ed Schonberg - - * sem_ch13.adb (Analyze_One_Aspect): In ASIS mode make a full copy of - the expression to be used in the generated attribute specification - (rather than relocating it) to avoid resolving a potentially malformed - tree when the expression is resolved through an ASIS-specific call to - Resolve_Aspect_Expressions. This manifests itself as a crash on a - function with parameter associations. - -2017-09-25 Yannick Moy - - * exp_spark.adb (Expand_SPARK_Indexed_Component, - Expand_SPARK_Selected_Component): New procedures to insert explicit - dereference if required. - (Expand_SPARK): Call the new procedures. - -2017-09-25 Patrick Bernardi - - * libgnat/a-stwiun.adb, libgnat/s-stchop__vxworks.adb, - libgnat/g-socthi__vxworks.ads, libgnat/a-stzunb.adb, - libgnat/a-strunb.adb, libgnarl/s-osinte__lynxos178.adb, - libgnarl/s-intman__vxworks.adb, libgnarl/s-osinte__darwin.adb, - libgnarl/a-exetim__darwin.adb: Removed ineffective use-clauses. - -2017-09-25 Vasiliy Fofanov - - * adaint.c (win32_wait): Properly handle error and take into account - the WIN32 limitation on the number of simultaneous wait objects. - -2017-09-25 Yannick Moy - - * sem_ch3.adb (Constant_Redeclaration): Do not insert a call to the - invariant procedure in GNATprove mode. - * sem_ch5.adb (Analyze_Assignment): Likewise. - -2017-09-25 Piotr Trojanek - - * adabkend.adb (Call_Back_End): Fix wording of "front-end" and - "back-end" in comments. - -2017-09-25 Ed Schonberg - - * exp_ch6.adb (Expand_Call_Helper): The extra accessibility check in a - call that appears in a classwide precondition and that mentions an - access formal of the subprogram, must use the accessibility level of - the actual in the call. This is one case in which a reference to a - formal parameter appears outside of the body of the subprogram. - -2017-09-25 Hristian Kirtchev - - * sem_res.adb (Replace_Actual_Discriminants): Replace a discriminant - for GNATprove. - (Resolve_Entry): Clean up predicate - -2017-09-25 Hristian Kirtchev - - * sem_prag.adb (Analyze_Constituent): Raise Unrecoverable_Error rather - than Program_Error because U_E is more in line with respect to the - intended behavior. - -2017-09-25 Ed Schonberg - - * sem_ch13.adb (Resolve_Aspect_Expressions): The expression for aspect - Storage_Size does not freeze, and thus can include references to - deferred constants. - -2017-09-25 Hristian Kirtchev - - * exp_spark.adb (Expand_SPARK_Potential_Renaming): Do not process a - reference when it appears within a pragma of no significance to SPARK. - (In_Insignificant_Pragma): New routine. - * sem_prag.ads: Add new table Pragma_Significant_In_SPARK. - -2017-09-25 Ed Schonberg - - * sem_ch12.adb (Analyze_Associations, case N_Formal_Package): If the - actual is a renaming, indicate that it is the renamed package that must - be frozen before the instantiation. - -2017-09-25 Yannick Moy - - * doc/gnat_ugn/gnat_and_program_execution.rst: Fix typo in description - of dimensionality system in GNAT UG. - * gnat_ugn.texi: Regenerate. - -2017-09-25 Yannick Moy - - * gnat1drv.adb: Call Check_Safe_Pointers from the frontend in - GNATprove_Mode when switch -gnatdF used. - -2017-09-25 Piotr Trojanek - - * adabkend.adb (Call_Back_End): Reset Current_Error_Node when starting - the backend. - -2017-09-25 Javier Miranda - - * exp_imgv.adb (Expand_Image_Attribute): Disable the optimized - expansion of user-defined enumeration types when the generation of - names for enumeration literals is suppressed. - -2017-09-25 Gary Dismukes - - * libgnarl/s-taprop__linux.adb: Minor reformatting. - -2017-09-25 Ed Schonberg - - * sem_ch13.adb (Resolve_Aspect_Expressions): Do not resolve identifiers - that appear as selector names of parameter associations, as these are - never resolved by visibility. - -2017-09-25 Justin Squirek - - * sem_res.adb (Resolve_Entry): Generate reference for index entities. - -2017-09-25 Doug Rupp - - * libgnarl/s-taprop__linux.adb (Compute_Base_Monotonic_Clock): Refine. - -2017-09-25 Javier Miranda - - * exp_imgv.adb (Is_User_Defined_Enumeration_Type): New subprogram. - (Expand_User_Defined_Enumeration_Image): New subprogram. - (Expand_Image_Attribute): Enable speed-optimized expansion of - user-defined enumeration types when we are compiling with optimizations - enabled. - -2017-09-25 Piotr Trojanek - - * sem_util.adb (Has_Null_Abstract_State): Remove, as an exactly same - routine is already provided by Einfo. - * einfo.adb (Has_Null_Abstract_State): Replace with the body from - Sem_Util, which had better comments and avoided double calls to - Abstract_State. - -2017-09-25 Bob Duff - - * exp_ch3.adb: Rename Comp_Type_Simple to be Comp_Simple_Init. - -2017-09-25 Doug Rupp - - * libgnarl/s-taprop__linux.adb (Base_Monotonic_Clock): New variable. - (Compute_Base_Monotonic_Clock): New function. - (Timed_Sleep): Adjust to use Base_Monotonic_Clock. - (Timed_Delay): Likewise. - (Monotonic_Clock): Likewise. - * s-oscons-tmplt.c (CLOCK_MONOTONIC): Use on Linux. - -2017-09-25 Ed Schonberg - - * sem_ch12.adb (Save_References_In_Aggregate): Small correction to - previous change. - -2017-09-25 Hristian Kirtchev - - * exp_ch5.adb, sem_ch4.adb, sem_ch13.adb, sem_attr.adb, exp_ch3.adb: - Minor reformatting. - -2017-09-20 Alexandre Oliva - - * gcc-interface/lang.opt (gant, gnatO, gnat): Add RejectNegative. - -2017-09-18 Bob Duff - - * sem_ch4.adb (Complete_Object_Operation): Do not insert 'Access for - reference types in the access-to-access case. - -2017-09-18 Eric Botcazou - - * sem_attr.adb (Analyze_Access_Attribute): Move check for the presence - of the "aliased" keyword on the prefix from here to... - (Resolve_Attribute) : ...here. Remove useless call - to Check_No_Implicit_Aliasing. - * sinfo.ads (Non_Aliased_Prefix): Delete. - (Set_Non_Aliased_Prefix): Likewise. - * sinfo.adb (Non_Aliased_Prefix): Delete. - (Set_Non_Aliased_Prefix): Likewise. - -2017-09-18 Bob Duff - - * exp_ch5.adb (Build_Formal_Container_Iteration, - Expand_Formal_Container_Element_Loop): Convert the container to the - root type before passing it to the iteration operations, so it will be - of the right type. - -2017-09-18 Bob Duff - - * einfo.ads, validsw.ads, treepr.ads, sem_util.ads: Comment fixes. - -2017-09-18 Bob Duff - - * exp_ch3.adb (Build_Array_Init_Proc): If validity checking is enabled, - and it's a bit-packed array, pass False to the Consider_IS parameter of - Needs_Simple_Initialization. - -2017-09-18 Hristian Kirtchev - - * sem_ch6.adb (Check_Inline_Pragma): Link the newly generated spec to - the preexisting body. - * sem_prag.adb (Check_Inline_Always_Placement): New routine. - (Process_Inline): Verify the placement of pragma Inline_Always. The - pragma must now appear on the initial declaration of the related - subprogram. - -2017-09-18 Ed Schonberg - - * sem_ch3.adb (Analyze_Declarations): In ASIS mode, At the end of the - declarative list in a subprogram body, analyze aspext specifications to - provide basic semantic information, because otherwise the aspect - specifications might only be snalyzed during expansion, when related - subprograms are generated. - -2017-09-18 Bob Duff - - * exp_ch9.adb (Is_Simple_Barrier_Name): Follow Original_Node, in case - validity checks have rewritten the tree. - -2017-09-18 Bob Duff - - * sem_util.adb: Comment fixes, and remove redundant Is_Itype check. - -2017-09-18 Ed Schonberg - - * sem_ch12.adb (Save_References_In_Aggregate): When constructing a - qualified exxpression for an aggregate in a generic unit, verify that - the scope of the type is itself visible and not hidden, so that the - qualified expression is correctly resolved in any instance. - -2017-09-18 Bob Duff - - * sem_ch4.adb (Analyze_Qualified_Expression): Give an error if the type - mark refers to the current instance. Set the type to Any_Type in that - case, to avoid later crashes. - -2017-09-18 Ed Schonberg - - * exp_ch3.adb (Replace_Discriminant_References): New procedure, - subsidiary of Build_Assignment, used to handle the initialization code - for a mutable record component whose default value is an aggregate that - sets the values of the discriminants of the components. - -2017-09-18 Eric Botcazou - - * sem_ch13.adb (Analyze_Attribute_Definition_Clause)
: Mark - the entity as being volatile for an overlay that toggles the scalar - storage order. - -2017-09-18 Fedor Rybin - - * doc/gnat_ugn/gnat_utility_programs.rst: Document that gnattest - options -U main and --harness-only are not compatible. - -2017-09-18 Hristian Kirtchev - - * freeze.adb, sem_ch6.adb, sem_res.adb: Minor reformatting. - -2017-09-18 Piotr Trojanek - - * einfo.ads (Is_Imported): Update comment, as this - routine also applies to constants. - -2017-09-18 Yannick Moy - - * sem_util.adb (Find_Placement_In_State_Space): Allow generic package - holding state. - -2017-09-18 Justin Squirek - - * sem_prag.adb (Is_Non_Significant_Pragma_Reference): Change the - constant indication for Pragma_Linker_Section. - -2017-09-18 Bob Duff - - Alternate fix for PR ada/71358 - * libgnat/g-comlin.adb (Getopt): Remove manual null access checks. - Instead, make a local copy of Config, and if it's null, allocate an - empty Command_Line_Configuration_Record, so we won't crash on null - pointer dereference. - -2017-09-16 Eric Botcazou - - * libgnarl/a-intnam__rtems.ads: Update copyright date. - * libgnarl/s-interr__hwint.adb: Likewise. - * libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise. - * libgnarl/s-osinte__rtems.adb: Likewise. - * libgnarl/s-osinte__rtems.ads: Likewise. - -2017-09-13 Nicolas Roche - - * Make-lang.in: In the fallback mechanim, parse the associated .ali - file and try to guess the locations of dependencies. - -2017-09-13 Eric Botcazou - - * sem_ch13.adb (Register_Address_Clause_Check): New procedure to save - the suppression status of Alignment_Check on the current scope. - (Alignment_Checks_Suppressed): New function to use the saved instead of - the current suppression status of Alignment_Check. - (Address_Clause_Check_Record): Add Alignment_Checks_Suppressed field. - (Analyze_Attribute_Definition_Clause): Instead of manually appending to - the table, call Register_Address_Clause_Check. - (Validate_Address_Clauses): Call Alignment_Checks_Suppressed on the - recorded address clause instead of its entity. - -2017-09-13 Jerome Guitton - - * libgnarl/s-tpopsp__vxworks-tls.adb, - libgnarl/s-tpopsp__vxworks-rtp.adb, libgnarl/s-tpopsp__vxworks.adb - (Self): Register thread if task id is null. - -2017-09-13 Arnaud Charlet - - * libgnat/s-htable.adb, libgnat/s-htable.ads: Minor style tuning. - -2017-09-13 Arnaud Charlet - - * lib-xref-spark_specific.adb (Scopes): simplify hash map; now it maps - from an entity to only scope index, as a mapping from an entity to the - same entity was useless. - (Get_Scope_Num): refactor as a simple renaming; rename parameter from N - to E. - (Set_Scope_Num): refactor as a simple renaming; rename parameter from N - to E. - (Is_Constant_Object_Without_Variable_Input): remove local "Result" - variable, just use return statements. - -2017-09-13 Arnaud Charlet - - * libgnarl/s-vxwext__kernel-smp.adb, - libgnarl/s-tpopsp__vxworks-rtp.adb, libgnarl/s-vxwext__noints.adb: - New file. - -2017-09-13 Hristian Kirtchev - - * einfo.adb: Flag42 is now Is_Controlled_Active. - (Is_Controlled): This attribute is now synthesized. - (Is_Controlled_Active): This attribute is now an explicit flag rather - than a synthesized attribute. (Set_Is_Controlled): Removed. - (Set_Is_Controlled_Active): New routine. - (Write_Entity_Flags): Update the output for Flag42. - * einfo.ads: Update the documentation of the following attributes: - Disable_Controlled, Is_Controlled, Is_Controlled_Active, Is_Controlled - and Is_Controlled_Active have swapped their functionality. - (Is_Controlled): Renamed to Is_Controlled_Active. - (Is_Controlled_Active): Renamed to Is_Controlled. - (Set_Is_Controlled): Renamed to Set_Is_Controlled_Active. - * exp_ch3.adb (Expand_Freeze_Record_Type): Restore the original use of - Is_Controlled. - * exp_util.adb (Has_Some_Controlled_Component): Code clean up. - (Needs_Finalization): Code clean up. Remove the tests for - Disable_Controlled because a) they were incorrect as they would reject - a type which is sublect to the aspect, but may contain controlled - components, and b) they are no longer necessary. - * exp_util.ads (Needs_Finalization): Update comment on documentation. - * freeze.adb (Freeze_Array_Type): Restore the original use of - Is_Controlled. - (Freeze_Record_Type): Restore the original use of Is_Controlled. - * sem_ch3.adb (Analyze_Object_Declaration): Restore the original use of - Is_Controlled. - (Array_Type_Declaration): Restore the original use of Is_Controlled. - (Build_Derived_Private_Type): Restore the original use of - Is_Controlled. - (Build_Derived_Record_Type): Set the Is_Controlled_Active flag of a - type derived from Ada.Finalization.[Limited_]Controlled. - (Build_Derived_Type): Restore the original use of Is_Controlled. - (Record_Type_Definition): Restore the original use of Is_Controlled. - * sem_ch7.adb (Preserve_Full_Attributes): Restore the original use of - Is_Controlled. - * sem_ch13.adb (Analyze_Aspect_Disable_Controlled): New routine. - (Analyze_Aspect_Specifications): Use routine - Analyze_Aspect_Disable_Controlled to process aspect Disable_Controlled. - -2017-09-13 Vincent Celier - - * clean.adb (Gnatclean): Fix error when looking for target - of -gnatclean - -2017-09-13 Javier Miranda - Ed Schonberg - - * sem_ch8.adb (Find_Expanded_Name): Complete code that identifies an - expanded name that designates the current instance of a child unit in - its own body and appears as the prefix of a reference to an entity - local to the child unit. - -2017-09-12 Bob Duff - - * sem_warn.adb: Minor comment. - -2017-09-12 Bob Duff - - * libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb, - libgnat/a-cbmutr.adb, libgnat/a-cborma.adb: Rename New_Item to - be Default_Initialized_Item, and apply pragma Unmodified to it, - to suppress the warning. - -2017-09-12 Eric Botcazou - - * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Add early return - for access types. - -2017-09-12 Yannick Moy - - * gnat1drv.adb (Adjust_Global_Switches): Consider Refined_Global - together with Global when ignoring one in CodePeer mode. - -2017-09-12 Javier Miranda - - * sem_ch3.adb (Analyze_Declarations): In nested - package declarations that have a private part enable missing check - of the RM rule 13.1.1(11/3): usage names in aspect definitions are - resolved at the end of the immediately enclosing declaration list. - -2017-09-12 Bob Duff - - * sem_ch6.adb (Analyze_Expression_Function): Initialize Def_Id to - Empty. - -2017-09-12 Georges-Axel Jaloyan - - * debug.adb: Reserving flag -gnatdF for safe pointer checking. - * gnat1drv.adb (gnat1drv): Adding the call to the analysis on - dF flag. - * sem_spark.adb, sem_spark.ads: Implementation of the analysis, - in preparation for the evolution of the SPARK language that - includes a pointer analysis for checking non-aliasing of access - types. The Check_Safe_Pointers function is the entry point, and - will traverse the AST and raise compile-time errors everytime - it detects non-begign aliasing. Detailed comments are present - in the sem_spark.ads file. - * sem_util.adb, sem_util.ads (First_Global, Next_Global): New - functions to iterate over the list of globals of a subprogram. - * libgnat/system.ads: Add restriction No_Finalization. - * gcc-interface/Make-lang.in: Add new file sem_spark.adb and - dependency on g-dynhta.adb. - -2017-09-12 Bob Duff - - * sem_ch6.adb (Analyze_Expression_Function): Call - Check_Dynamically_Tagged_Expression. - * sem_util.adb (Check_Dynamically_Tagged_Expression): Remove - "and then Is_Tagged_Type (Typ)" because there is an earlier - "Assert (Is_Tagged_Type (Typ))". - -2017-09-12 Eric Botcazou - - * gcc-interface/Makefile.in (SPARC/Solaris): Remove obsolete stuff. - -2017-09-11 Arnaud Charlet - - * doc/gnat_ugn/the_gnat_compilation_model.rst: Fix sphinx warning. - * doc/gnat_ugn/platform_specific_information.rst: Remove doc - for no longer supported platforms. - * doc/gnat_ugn/gnat_and_program_execution.rst: Added detailed - description of the semantics for dimensionality analysis. - * gnat_ugn.texi: Regenerated. - -2017-09-11 Eric Botcazou - - * freeze.adb (Has_Incomplete_Compoent): Delete. - (Freeze_Profile): - Do not inhibit the freezing of the profile of an expression - function here. - (Freeze_Subprogram): Do not re-create extra formals. - * sem_ch6.adb (Analyze_Expression_Function): Always - pre-analyze the expression if the function is not a completion. - (Analyze_Subprogram_Body_Helper): For the body generated - from an expression function that is not a completion, do - not freeze the profile and temporary mask the types declared - outside the expression that are not yet frozen. - * sem_res.adb (Rewrite_Renamed_Operator): Also bail out if invoked - during the pre-analysis of an expression function. - -2017-09-11 Eric Botcazou - - * gcc-interface/gigi.h (enum standard_datatypes): Minor tweak. - (gigi): Likewise. - -2017-09-11 Yannick Moy - - * lib-xref-spark_specific.adb: Minor rewrite. - -2017-09-11 Jerome Lambourg - - * libgnat: Rename ?-[a-z]*-* into ?-[a-z]*__* - * gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Take this - renaming into account. - -2017-09-11 Jerome Lambourg - - * libgnarl: Rename ?-[a-z]*-* into ?-[a-z]*__* - * gcc-interface/Makefile.in: Take this renaming into account. - -2017-09-11 Arnaud Charlet - - * s-auxdec-empty.ads, s-auxdec-empty.adb, 9drpc.adb: Removed, no - longer used. - -2017-09-11 Yannick Moy - - * sem_util.adb (Check_Result_And_Post_State): - Do not issue a warning about missing reference to an outcome if - the subprogram is ghost and has no outputs. - * lib-xref-spark_specific.adb, sem_aggr.adb, sem_aux.ads: Minor - reformatting. - -2017-09-11 Yannick Moy - - * gnat1drv.adb (Adjust_Global_Switches): Set - Check_Validity_Of_Parameters to False in GNATprove mode. - * opt.ads (Check_Validity_Of_Parameters): Document switch to - set option. - -2017-09-09 Pierre-Marie de Rodat - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Don't - generate debug info for inner record types if -fgnat-encodings=minimal. - (gnat_to_gnu_entity) : Use the ultimate base record - type as the debug type. - -2017-09-09 Eric Botcazou - - * gcc-interface/decl.c (components_to_record): Do not reorder in non- - packed record types if pragma Optimize_Alignment (Space) is enabled. - -2017-09-09 Eric Botcazou - - * gcc-interface/trans.c (Subprogram_Body_to_gnu): Disregard inlining - limits for expression functions. - (gnat_to_gnu) : Fix formatting. - -2017-09-09 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Copy the - layout of the record from the parent type only if both are or are not - unchecked unions. - (is_stored_discriminant): Return false for an unchecked union. - -2017-09-09 Eric Botcazou - - * gcc-interface/utils2.c (build_allocator): In type_annotate_only mode - return NULL_EXPR. - -2017-09-09 Eric Botcazou - - * gcc-interface/decl.c (promote_object_alignment): New function taken - from... - (gnat_to_gnu_entity) : ...here. Invoke it. - (gnat_to_gnu_field): If the field is Atomic or VFA, invoke it and - create a padding type on success before doing the atomic check. - -2017-09-09 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Apply the - promotion to static memory earlier in the processing. - -2017-09-09 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity): Only set the TYPE_ALIGN_OK - and TYPE_BY_REFERENCE_P flags on types after various promotions. - * gcc-interface/trans.c (node_has_volatile_full_access) : - Consider all kinds of entities. - -2017-09-09 Eric Botcazou - - * gcc-interface/utils.c (convert): When converting to a padding type, - reuse an existing CONSTRUCTOR if it has got the right size. - -2017-09-08 Nicolas Roche - - * gcc-interface/Make-lang.in, gcc-interface/Makefile.in: Find runtime - source in libgnat/ - * a-lfztio.ads, g-timsta.ads, g-sercom-linux.adb, s-osprim-solaris.adb, - a-inteio.ads, s-stchop-rtems.adb, s-casuti.adb, s-pack39.adb, - i-vxwork-x86.ads, a-strbou.adb, a-stzmap.adb, s-assert.adb, - a-sfecin.ads, a-cohama.adb, s-casuti.ads, a-suenco.adb, s-pack39.ads, - a-stzmap.ads, a-strbou.ads, s-stalib.adb, s-trasym.adb, g-comver.adb, - s-assert.ads, s-vector.ads, g-cgi.adb, a-cohama.ads, s-wchcnv.adb, - a-titest.adb, s-pack48.adb, a-suenco.ads, a-strunb.adb, s-stalib.ads, - s-trasym.ads, a-nudira.adb, g-comver.ads, a-nuflra.adb, g-cgi.ads, - a-chacon.adb, s-wchcnv.ads, a-excach.adb, s-pack48.ads, a-titest.ads, - a-strunb.ads, s-dwalin.adb, a-nudira.ads, a-chtgbo.adb, s-resfil.adb, - a-scteio.ads, a-nuflra.ads, g-soliop-mingw.ads, s-pack57.adb, - a-chacon.ads, s-bytswa.ads, s-pooloc.adb, g-os_lib.adb, s-dwalin.ads, - a-szuzha.adb, s-resfil.ads, a-chtgbo.ads, s-spsufi.adb, s-pack57.ads, - s-pooloc.ads, g-os_lib.ads, a-stfiha.ads, a-lcteio.ads, a-wtcoau.adb, - a-szuzha.ads, s-mmosin-unix.adb, a-stmaco.ads, s-spsufi.ads, - s-stchop-limit.ads, a-wtcoau.ads, a-exctra.adb, s-mmosin-unix.ads, - s-sequio.adb, s-conca2.adb, g-table.adb, s-imglli.adb, - a-numaux-x86.adb, a-strsea.adb, s-wchstw.adb, a-clrefi.adb, - a-wwboio.adb, a-exctra.ads, s-sequio.ads, s-conca2.ads, a-wwunio.ads, - system-linux-hppa.ads, g-table.ads, s-dimkio.ads, s-imglli.ads, - a-cofove.adb, a-numaux-x86.ads, s-wchstw.ads, a-strsea.ads, - a-clrefi.ads, a-wwboio.ads, s-stratt-xdr.adb, s-crc32.adb, - s-excmac-arm.adb, g-busora.adb, a-cofove.ads, s-osprim-unix.adb, - g-io.adb, s-pack49.adb, s-crc32.ads, s-excmac-arm.ads, a-fzteio.ads, - g-busora.ads, s-stausa.adb, system-linux-mips.ads, sequenio.ads, - g-exctra.adb, g-rewdat.adb, a-cgaaso.adb, g-io.ads, s-pack49.ads, - a-wtflau.adb, a-undesu.adb, s-stausa.ads, a-ztenau.adb, g-enutst.ads, - calendar.ads, s-pack58.adb, g-rewdat.ads, g-exctra.ads, s-ststop.adb, - a-cgaaso.ads, a-strfix.adb, a-comlin.adb, a-strunb-shared.adb, - a-wtflau.ads, a-undesu.ads, a-cbhase.adb, a-ztenau.ads, s-os_lib.adb, - a-coorse.adb, a-chlat1.ads, s-pack58.ads, s-ststop.ads, a-strfix.ads, - a-comlin.ads, a-strunb-shared.ads, a-nscefu.ads, s-valboo.adb, - directio.ads, a-chtgke.adb, a-cbhase.ads, a-wtinau.adb, - system-linux-alpha.ads, s-os_lib.ads, a-coorse.ads, - system-linux-s390.ads, s-imgwiu.adb, a-chtgop.adb, s-valboo.ads, - a-chtgke.ads, a-tienio.adb, s-conca3.adb, a-wtinau.ads, - system-darwin-ppc.ads, i-c.adb, s-expllu.adb, g-expect.adb, - g-sha256.ads, s-vallld.adb, s-imgwiu.ads, a-chtgop.ads, a-strmap.adb, - a-tienio.ads, s-conca3.ads, s-imgint.adb, i-c.ads, s-expllu.ads, - s-osprim-darwin.adb, a-cogeso.adb, g-expect.ads, a-iwteio.ads, - s-vallld.ads, a-coinho-shared.adb, g-shsh64.adb, a-strmap.ads, - g-comlin.adb, a-excpol.adb, s-imgint.ads, a-ztdeau.adb, a-cogeso.ads, - a-coinho-shared.ads, g-shsh64.ads, g-comlin.ads, a-stzsup.adb, - a-rbtgbk.adb, a-wtmoau.adb, a-ztdeau.ads, s-exnlli.adb, g-tty.adb, - g-heasor.adb, g-socthi-dummy.adb, s-llflex.ads, a-zchara.ads, - a-stzsup.ads, a-ztcstr.adb, a-rbtgbk.ads, a-sfwtio.ads, a-wtmoau.ads, - a-sulcin.adb, s-exnlli.ads, system-freebsd.ads, a-stunha.adb, - a-charac.ads, g-tty.ads, g-heasor.ads, s-exctra.adb, - g-socthi-dummy.ads, a-coboho.adb, a-ztcstr.ads, a-tideio.adb, - a-sulcin.ads, a-wrstfi.adb, g-alleve.adb, s-pack59.adb, a-ngrear.adb, - a-stboha.adb, a-stunau-shared.adb, a-stunha.ads, a-lfwtio.ads, - s-fileio.adb, s-exctra.ads, a-coboho.ads, a-ioexce.ads, a-tideio.ads, - a-ngrear.ads, a-wrstfi.ads, s-pack59.ads, g-alleve.ads, a-stboha.ads, - s-poosiz.adb, g-traceb.adb, g-rannum.adb, machcode.ads, s-purexc.ads, - s-fileio.ads, a-cfinve.adb, a-crbtgk.adb, system-solaris-x86.ads, - s-poosiz.ads, g-rannum.ads, g-traceb.ads, a-except.adb, s-conca4.adb, - a-stream.adb, a-cfinve.ads, a-crbtgk.ads, s-wchwts.adb, - system-mingw.ads, a-except.ads, s-conca4.ads, a-chzla9.ads, - s-valenu.adb, s-soflin.adb, a-stream.ads, a-cgarso.adb, s-valllu.adb, - g-crc32.adb, s-wchwts.ads, s-fatflt.ads, s-imguns.adb, s-strcom.adb, - g-decstr.adb, s-valenu.ads, s-soflin.ads, a-cgarso.ads, a-cwila1.ads, - s-valllu.ads, g-crc32.ads, s-imguns.ads, g-spipat.adb, s-valwch.adb, - s-strcom.ads, g-decstr.ads, text_io.ads, g-debuti.adb, s-stchop.adb, - g-spipat.ads, s-valwch.ads, a-string.ads, s-exnint.adb, g-awk.adb, - g-tasloc.adb, s-wwdenu.adb, s-boustr.adb, a-zchuni.adb, s-stchop.ads, - g-debuti.ads, s-stopoo.adb, system-dragonfly-x86_64.ads, - system-linux-x86.ads, s-exnint.ads, g-awk.ads, a-stzhas.adb, - g-tasloc.ads, s-wwdenu.ads, g-debpoo.adb, g-except.ads, - g-sse.ads, s-boustr.ads, a-zchuni.ads, s-bitops.adb, s-wwdwch.adb, - s-stopoo.ads, a-catizo.adb, a-stzhas.ads, a-nlcefu.ads, g-debpoo.ads, - i-vxwoio.adb, s-bitops.ads, g-io-put-vxworks.adb, s-wwdwch.ads, - g-sehamd.adb, a-ssicst.adb, a-catizo.ads, s-mmap.adb, g-string.adb, - s-traceb.adb, a-swunau.adb, s-rannum.adb, a-ticoau.adb, i-vxwoio.ads, - g-sehamd.ads, a-stwiun.adb, a-ssicst.ads, s-conca5.adb, a-ssitio.ads, - s-mmap.ads, a-zttest.adb, g-string.ads, g-sercom.adb, a-cdlili.adb, - a-swunau.ads, s-traceb.ads, s-rannum.ads, a-ticoau.ads, system-aix.ads, - a-cforma.adb, a-stwiun.ads, s-conca5.ads, s-carsi8.adb, a-zttest.ads, - g-sercom.ads, a-cdlili.ads, a-cihama.adb, g-sptain.ads, a-cforma.ads, - s-maccod.ads, s-carsi8.ads, a-strsup.adb, g-sha1.adb, a-cihama.ads, - g-stseme.adb, s-traent.adb, s-valcha.adb, g-curexc.ads, a-strsup.ads, - g-sha1.ads, a-sflcin.ads, s-traent.ads, s-pack10.adb, s-valcha.ads, - a-coteio.ads, s-tasloc.adb, g-utf_32.adb, a-suteio.adb, s-except.adb, - a-direct.adb, g-stsifd-sockets.adb, a-numaux-vxworks.ads, s-winext.ads, - s-pack10.ads, a-ztexio.adb, a-tiflau.adb, system-vxworks-arm.ads, - s-tasloc.ads, a-suteio.ads, g-utf_32.ads, s-except.ads, - a-direct.ads, a-swbwha.adb, g-hesorg.adb, s-wwdcha.adb, a-wtedit.adb, - a-ztexio.ads, a-wtcoio.adb, a-tiflau.ads, a-ssizti.ads, s-casi32.adb, - a-swbwha.ads, s-veboop.adb, g-hesorg.ads, s-parame-rtems.adb, - s-wwdcha.ads, a-wtedit.ads, a-stuten.adb, a-coinve.adb, a-wtcoio.ads, - s-casi32.ads, s-string.adb, a-tiinau.adb, a-cusyqu.adb, s-conca6.adb, - s-veboop.ads, a-cgcaso.adb, a-numaux-darwin.adb, a-envvar.adb, - a-stuten.ads, s-secsta.adb, a-coinve.ads, s-string.ads, a-cusyqu.ads, - a-tiinau.ads, s-osprim-vxworks.adb, s-conca6.ads, g-spchge.adb, - s-parint.adb, a-cuprqu.adb, a-cgcaso.ads, a-numaux-darwin.ads, - a-envvar.ads, s-secsta.ads, g-spchge.ads, s-parint.ads, a-cuprqu.ads, - a-swuwti.adb, a-flteio.ads, a-sbhcin.adb, a-coprnu.adb, g-u3spch.adb, - s-atocou.adb, g-ctrl_c.adb, a-swuwti.ads, a-calend.adb, a-sbhcin.ads, - a-coprnu.ads, g-dirope.adb, g-sha512.ads, g-u3spch.ads, s-atocou.ads, - g-ctrl_c.ads, a-timoau.adb, a-witeio.adb, s-pack11.adb, a-strhas.adb, - a-wtflio.adb, g-spitbo.adb, a-calend.ads, a-ztenio.adb, g-dirope.ads, - a-slcain.adb, g-sechas.adb, a-timoau.ads, a-witeio.ads, s-pack11.ads, - s-shasto.adb, s-traceb-mastop.adb, a-ciorse.adb, s-utf_32.adb, - a-strhas.ads, a-wtflio.ads, g-spitbo.ads, a-ztenio.ads, a-slcain.ads, - g-sechas.ads, s-gearop.adb, a-siztio.ads, s-pack20.adb, s-shasto.ads, - a-ciorse.ads, s-utf_32.ads, s-crtl.ads, a-wtinio.adb, s-elaall.adb, - s-explli.adb, s-chepoo.ads, s-gearop.ads, a-einuoc.adb, s-pack20.ads, - system-linux-ia64.ads, a-swunau-shared.adb, a-wtinio.ads, g-alvety.ads, - a-liztio.ads, g-calend.adb, s-conca7.adb, s-elaall.ads, s-explli.ads, - a-einuoc.ads, s-widboo.adb, s-imgdec.adb, a-cbhama.adb, g-calend.ads, - s-conca7.ads, a-llitio.ads, i-cexten.ads, a-coorma.adb, s-widboo.ads, - s-diflio.adb, g-souinf.ads, s-imgdec.ads, g-strhas.ads, a-cbhama.ads, - g-shshco.adb, a-ztdeio.adb, s-gloloc.adb, a-coorma.ads, g-wispch.adb, - s-pack03.adb, g-eacodu.adb, s-casi16.adb, s-diflio.ads, a-colien.adb, - g-shshco.ads, a-wtmoio.adb, a-rbtgbo.adb, a-ztdeio.ads, - system-rtems.ads, s-gloloc.ads, a-csquin.ads, a-cofuse.adb, - g-wispch.ads, s-pack03.ads, s-casi16.ads, s-io.adb, a-colien.ads, - g-alveop.adb, gnat.ads, s-diinio.adb, a-cfdlli.adb, g-pehage.adb, - a-wtmoio.ads, a-stwiha.adb, a-locale.adb, a-tirsfi.adb, a-nscoty.ads, - a-rbtgbo.ads, s-pack12.adb, a-cofuse.ads, a-sfteio.ads, s-io.ads, - g-alveop.ads, a-cfdlli.ads, s-diinio.ads, a-stwiha.ads, g-pehage.ads, - a-locale.ads, a-tirsfi.ads, s-pack12.ads, s-valuti.adb, g-cppexc.adb, - system-vxworks-ppc.ads, g-memdum.adb, a-lfteio.ads, s-pack21.adb, - s-unstyp.ads, s-valuti.ads, g-cppexc.ads, system-hpux-ia64.ads, - g-memdum.ads, g-soccon.ads, g-altive.ads, a-crbtgo.adb, s-pack21.ads, - a-llizti.ads, a-numaux-libc-x86.ads, s-expint.adb, s-conca8.adb, - a-crbtgo.ads, s-pack30.adb, s-vallli.adb, s-geveop.adb, s-expint.ads, - a-direio.adb, s-conca8.ads, a-widcha.ads, s-pack30.ads, s-vallli.ads, - s-strhas.adb, s-geveop.ads, g-md5.adb, a-direio.ads, a-numaux.ads, - s-ransee.adb, a-szbzha.adb, i-cobol.adb, g-busorg.adb, s-strhas.ads, - g-md5.ads, s-widenu.adb, s-ransee.ads, s-widllu.adb, a-szbzha.ads, - a-ststio.adb, i-cobol.ads, g-busorg.ads, g-regpat.adb, s-widenu.ads, - a-secain.adb, s-widllu.ads, s-pack13.adb, g-encstr.adb, a-ztcoau.adb, - a-ststio.ads, s-widwch.adb, g-regpat.ads, s-atacco.adb, a-cborse.adb, - a-secain.ads, s-pack13.ads, g-encstr.ads, a-ztcoau.ads, s-widwch.ads, - g-io_aux.adb, s-atacco.ads, a-ncelfu.ads, interfac.ads, a-cborse.ads, - g-regexp.adb, s-pack22.adb, a-szuzti.adb, g-io_aux.ads, s-caun32.adb, - a-nselfu.ads, g-regexp.ads, s-pack22.ads, a-ticoio.adb, a-szuzti.ads, - g-diopit.adb, s-caun32.ads, s-conca9.adb, a-tags.adb, a-swmwco.ads, - a-sbecin.adb, s-pack31.adb, s-expuns.adb, a-ticoio.ads, s-valint.adb, - s-conca9.ads, g-diopit.ads, a-tags.ads, a-nllcef.ads, a-izteio.ads, - a-sbecin.ads, s-expuns.ads, s-pack31.ads, g-dyntab.adb, s-powtab.ads, - s-flocon-none.adb, s-valint.ads, a-ssiwti.ads, s-mmosin-mingw.adb, - s-pack40.adb, s-pack05.adb, a-ztflau.adb, g-dyntab.ads, - a-szuzti-shared.adb, g-alvevi.ads, a-stwise.adb, s-mmosin-mingw.ads, - s-pack40.ads, a-diocst.adb, a-ztflau.ads, s-pack05.ads, a-nlcoty.ads, - a-contai.ads, a-stwisu.adb, g-byorma.adb, a-siwtio.ads, a-stwise.ads, - s-regpat.adb, g-mbdira.adb, s-pack14.adb, a-diocst.ads, g-flocon.ads, - g-mbflra.adb, a-ztinau.adb, s-dim.ads, s-mantis.adb, a-stwisu.ads, - g-byorma.ads, s-atopri.adb, g-wistsp.ads, a-uncdea.ads, s-widcha.adb, - a-caldel.adb, s-regpat.ads, g-mbdira.ads, a-tiflio.adb, s-pack14.ads, - s-parame.adb, a-liwtio.ads, s-memory.adb, g-mbflra.ads, a-ztinau.ads, - a-wtgeau.adb, s-direio.adb, s-mantis.ads, s-atopri.ads, s-widcha.ads, - a-caldel.ads, s-pack23.adb, a-unccon.ads, a-tiflio.ads, s-parame.ads, - a-llftio.ads, s-memory.ads, s-regexp.adb, a-wtgeau.ads, a-exexda.adb, - s-direio.ads, s-pack23.ads, g-stheme.adb, a-tiinio.adb, g-sestin.ads, - s-regexp.ads, a-wtfiio.adb, a-comutr.adb, a-exexpr.adb, a-tiinio.ads, - a-ztmoau.adb, a-cohata.ads, a-wtfiio.ads, s-imgrea.adb, ada.ads, - a-szunau-shared.adb, a-comutr.ads, s-valuns.adb, a-ztmoau.ads, - system-linux-arm.ads, s-osprim-x32.adb, s-pack41.adb, s-pack06.adb, - s-imgrea.ads, s-valuns.ads, s-finroo.adb, s-caun16.adb, s-pooglo.adb, - a-zrstfi.adb, a-suenst.adb, s-pack41.ads, g-binenv.adb, s-pack06.ads, - a-calari.adb, a-nlcoar.ads, s-finroo.ads, a-timoio.adb, s-caun16.ads, - s-flocon.adb, a-suenst.ads, a-zrstfi.ads, s-pooglo.ads, s-wchcon.adb, - s-traceb-hpux.adb, s-pack50.adb, i-fortra.adb, s-pack15.adb, - a-ngcefu.adb, g-sptavs.ads, g-binenv.ads, s-wchjis.adb, a-calari.ads, - a-timoio.ads, a-decima.adb, s-flocon.ads, s-wchcon.ads, a-llfzti.ads, - i-fortra.ads, s-pack50.ads, s-pack15.ads, a-ngcefu.ads, a-cfhase.adb, - s-wchjis.ads, g-soliop.ads, a-decima.ads, a-chlat9.ads, s-pack24.adb, - a-nlelfu.ads, a-cfhase.ads, g-locfil.adb, s-atocou-builtin.adb, - s-memcop.ads, a-szunau.adb, s-pack24.ads, s-imgllb.adb, s-auxdec.adb, - g-locfil.ads, s-pack33.adb, a-szunau.ads, s-parame-vxworks.adb, - s-imgllb.ads, a-ciorma.adb, s-auxdec.ads, a-cobove.adb, s-dsaser.ads, - a-elchha.adb, s-pack33.ads, a-cofuve.adb, s-parame-vxworks.ads, - a-ciorma.ads, system-darwin-x86.ads, s-multip.adb, a-stwiun-shared.adb, - a-wichun.adb, a-cobove.ads, s-imgbiu.adb, s-tsmona-mingw.adb, - a-coormu.adb, a-siocst.adb, s-win32.ads, a-elchha.ads, s-pack42.adb, - s-pack07.adb, a-cofuve.ads, system-hpux.ads, a-teioed.adb, - a-convec.adb, g-speche.adb, s-multip.ads, a-stwiun-shared.ads, - a-wichun.ads, s-imgbiu.ads, a-numeri.ads, a-siocst.ads, a-coormu.ads, - a-lliwti.ads, s-pack42.ads, s-pack07.ads, a-teioed.ads, a-convec.ads, - g-speche.ads, g-socthi.adb, a-nucoty.ads, a-szmzco.ads, s-pack51.adb, - s-osprim-mingw.adb, s-casi64.adb, g-strspl.ads, g-socthi.ads, - g-socket-dummy.adb, s-pack51.ads, s-dimmks.ads, s-casi64.ads, - a-wtenau.adb, s-stchop-vxworks.adb, s-pack60.adb, - system-solaris-sparc.ads, s-pack25.adb, g-socket-dummy.ads, - a-exstat.adb, a-cofuma.adb, s-tsmona-linux.adb, a-wtenau.ads, - s-pack60.ads, s-pack25.ads, i-cstrea.adb, a-cofuma.ads, g-exptty.adb, - a-chzla1.ads, s-pack34.adb, i-cstrea.ads, s-excdeb.adb, a-iteint.ads, - g-exptty.ads, i-pacdec.adb, s-pack34.ads, s-rident.ads, s-sopco3.adb, - i-vxwork.ads, s-excdeb.ads, system-linux-ppc.ads, a-swuwti-shared.adb, - s-widlli.adb, s-pack43.adb, i-pacdec.ads, a-cwila9.ads, s-sopco3.ads, - a-fwteio.ads, s-widlli.ads, s-pack43.ads, a-suhcin.adb, a-wtdeau.adb, - g-allein.ads, a-suezst.adb, a-dirval-mingw.adb, g-zspche.adb, - s-bignum.adb, a-ztedit.adb, g-regist.adb, a-nllefu.ads, a-ztcoio.adb, - s-pack52.adb, a-llctio.ads, a-nucoar.ads, s-pack17.adb, a-suhcin.ads, - a-wtdeau.ads, a-suezst.ads, a-dirval.adb, g-zspche.ads, g-regist.ads, - a-ztedit.ads, s-bignum.ads, a-wtcstr.adb, system.ads, s-pack52.ads, - a-ztcoio.ads, s-pack17.ads, s-imgboo.adb, a-rbtgso.adb, a-dirval.ads, - a-cohase.adb, s-pack61.adb, a-wtcstr.ads, s-pack26.adb, s-osprim.ads, - a-tigeau.adb, s-imgboo.ads, a-nuelfu.ads, a-swfwha.ads, s-commun.adb, - g-socthi-vxworks.adb, a-rbtgso.ads, a-cohase.ads, g-zstspl.ads, - s-pack61.ads, s-pack26.ads, a-intnam-dragonfly.ads, s-imglld.adb, - a-tigeau.ads, s-commun.ads, g-socthi-vxworks.ads, a-cborma.adb, - a-stwifi.adb, g-moreex.adb, s-pack35.adb, s-imglld.ads, s-valdec.adb, - a-tifiio.adb, a-cborma.ads, g-moreex.ads, a-stwifi.ads, s-pack35.ads, - s-sopco4.adb, g-sha224.ads, g-socket.adb, a-intnam-rtems.ads, - s-finmas.adb, s-valdec.ads, s-addima.adb, a-finali.adb, a-tifiio.ads, - s-rpc.adb, a-ztflio.adb, s-pack44.adb, s-pack09.adb, a-sblcin.adb, - s-sopco4.ads, a-textio.adb, g-socket.ads, g-sptabo.ads, s-finmas.ads, - g-shsh32.adb, s-addima.ads, a-finali.ads, s-mmauni-long.ads, s-rpc.ads, - a-ztflio.ads, system-djgpp.ads, s-stache.adb, s-pack44.ads, - s-pack09.ads, a-sblcin.ads, a-textio.ads, a-cidlli.adb, g-shsh32.ads, - a-chtgbk.adb, a-tiocst.adb, s-pack53.adb, s-pack18.adb, s-stache.ads, - a-zchhan.adb, s-fatlfl.ads, a-ztinio.adb, s-strops.adb, a-siteio.ads, - a-cidlli.ads, a-chtgbk.ads, g-ssvety.ads, a-tiocst.ads, s-pack53.ads, - s-parame-hpux.ads, s-pack18.ads, a-zchhan.ads, s-strops.ads, - a-ztinio.ads, a-wichha.adb, a-stwima.adb, a-nlrear.ads, a-liteio.ads, - s-pack62.adb, s-pack27.adb, s-fore.adb, s-vercon.adb, a-wichha.ads, - a-stwima.ads, s-pack62.ads, system-linux-sparc.ads, s-pack27.ads, - g-dynhta.adb, s-fore.ads, s-vercon.ads, a-cofuba.adb, a-cimutr.adb, - i-cpoint.adb, s-imgenu.adb, a-stwibo.adb, s-pack36.adb, i-cstrin.adb, - s-imgllu.adb, a-suteio-shared.adb, g-excact.adb, s-stoele.adb, - s-addope.adb, g-dynhta.ads, a-cofuba.ads, a-ztmoio.adb, a-llfwti.ads, - a-cimutr.ads, i-cpoint.ads, s-imgenu.ads, a-stwibo.ads, a-wttest.adb, - s-pack36.ads, a-tgdico.ads, s-sopco5.adb, s-scaval.adb, i-cstrin.ads, - s-imgllu.ads, g-excact.ads, s-stoele.ads, g-deutst.ads, s-addope.ads, - s-imgwch.adb, g-sha384.ads, a-ztmoio.ads, s-pack45.adb, a-wttest.ads, - s-sopco5.ads, s-excmac-gcc.adb, s-scaval.ads, a-storio.adb, - a-coinho.adb, a-btgbso.adb, s-imgwch.ads, s-carun8.adb, memtrack.adb, - s-pack45.ads, a-sfhcin.ads, s-excmac-gcc.ads, a-storio.ads, - a-coinho.ads, a-btgbso.ads, s-stratt.adb, s-carun8.ads, a-shcain.adb, - s-pack54.adb, s-pack19.adb, a-colire.adb, a-tigeli.adb, s-caun64.adb, - s-stratt.ads, s-fatgen.adb, a-shcain.ads, a-stzunb-shared.adb, - s-pack54.ads, s-pack19.ads, a-colire.ads, a-calcon.adb, s-caun64.ads, - s-fatgen.ads, s-pack63.adb, g-arrspl.adb, a-stzunb-shared.ads, - s-pack28.adb, a-nllrar.ads, a-zzboio.adb, a-zzunio.ads, a-stunau.adb, - a-calcon.ads, g-cgideb.adb, s-objrea.adb, s-mastop.adb, a-tienau.adb, - g-altcon.adb, g-arrspl.ads, s-pack63.ads, s-restri.adb, s-pack28.ads, - a-zzboio.ads, a-stunau.ads, g-cgideb.ads, g-htable.adb, g-sothco.adb, - s-objrea.ads, g-soliop-solaris.ads, s-mastop.ads, a-tienau.ads, - system-linux-m68k.ads, g-altcon.ads, s-dmotpr.ads, s-memory-mingw.adb, - g-cgicoo.adb, s-pack37.adb, s-restri.ads, s-fatllf.ads, s-expmod.adb, - a-swuwha.adb, a-exextr.adb, a-cfhama.adb, s-gloloc-mingw.adb, - a-tiboio.adb, g-forstr.adb, g-sothco.ads, a-stzbou.adb, a-nllcty.ads, - a-suecin.adb, g-htable.ads, s-exctab.adb, a-tiunio.ads, g-cgicoo.ads, - s-osprim-posix.adb, s-pack37.ads, a-ciormu.adb, s-atocou-x86.adb, - a-swuwha.ads, s-expmod.ads, a-cfhama.ads, s-ficobl.ads, a-ngcoty.adb, - g-forstr.ads, a-tiboio.ads, a-calfor.adb, a-stzbou.ads, a-suecin.ads, - a-conhel.adb, a-crbltr.ads, s-exctab.ads, a-dhfina.ads, s-imgcha.adb, - s-pack46.adb, a-ciormu.ads, system-linux-sh4.ads, a-chahan.adb, - a-ngcoty.ads, a-stzunb.adb, a-szfzha.ads, a-calfor.ads, a-cbdlli.adb, - a-conhel.ads, s-imgcha.ads, s-pack46.ads, a-assert.adb, a-chahan.ads, - a-stzunb.ads, a-crdlli.adb, s-pack55.adb, a-cbdlli.ads, a-tideau.adb, - a-assert.ads, ioexcept.ads, s-boarop.ads, g-hesora.adb, a-crdlli.ads, - s-pack55.ads, a-tideau.ads, g-bubsor.adb, a-wtenio.adb, a-cbsyqu.adb, - g-hesora.ads, s-pack29.adb, a-nurear.ads, g-catiio.adb, s-stposu.adb, - g-bubsor.ads, a-wtenio.ads, a-cbsyqu.ads, a-suewst.adb, - system-vxworks-x86.ads, s-pack29.ads, a-cbmutr.adb, a-cbprqu.adb, - s-imenne.adb, g-sothco-dummy.adb, g-casuti.adb, g-catiio.ads, - s-stposu.ads, a-stzsea.adb, s-pack38.adb, a-suewst.ads, s-imgllw.adb, - a-cbprqu.ads, a-cbmutr.ads, s-imenne.ads, g-sothco-dummy.ads, - g-casuti.ads, s-htable.adb, s-fatsfl.ads, g-trasym.adb, unchconv.ads, - a-stzsea.ads, s-arit64.adb, s-pack38.ads, a-nllcar.ads, s-valrea.adb, - s-imgllw.ads, s-htable.ads, a-sequio.adb, g-trasym.ads, a-ngcoar.adb, - s-exnllf.adb, s-pack47.adb, s-arit64.ads, g-sercom-mingw.adb, - s-valrea.ads, g-socthi-mingw.adb, g-bytswa.adb, g-sehash.adb, - unchdeal.ads, a-sequio.ads, a-ngcoar.ads, s-exnllf.ads, a-wtdeio.adb, - s-pack47.ads, g-socthi-mingw.ads, a-excpol-abort.adb, a-ztgeau.adb, - g-bytswa.ads, g-sehash.ads, s-pack56.adb, a-wtdeio.ads, a-ngelfu.adb, - a-ztgeau.ads, a-cforse.adb, s-filatt.ads, a-stzfix.adb, a-cihase.adb, - s-pack56.ads, a-sfztio.ads, a-ngelfu.ads, s-trasym-dwarf.adb, - a-cforse.ads, a-ztfiio.adb, g-timsta.adb, a-stzfix.ads, a-cihase.ads, - a-ztfiio.ads, system-darwin-arm.ads: Move non-tasking runtime sources - to libgnat subdirectory. - -2017-09-08 Yannick Moy - - * sem_aux.adb, sem_aux.ads (Get_Called_Entity): New function to - return the entity associated with the call. - * sem_util.adb, sem_util.ads (Check_Function_Writable_Actuals): - Replace the internal Get_Function_Id with the new - Sem_Aux.Get_Called_Entity. - (Iterate_Call_Parameters): New - procedure to iterate on formals and actuals at the same time. - * sem_ch12.adb (Analyze_Subprogram_Instantiation): - Set SPARK_Mode from spec when set, for analysis - of instance. Restore after analysis of instance. - (Instantiate_Subprogram_Body): Set SPARK_Mode from body when - set, for analysis of body instance. Restored automatically at - the end of the subprogram. - * gnat1drv.adb (Adjust_Global_Switches): Set - Check_Validity_Of_Parameters to False in GNATprove mode. - * opt.ads (Check_Validity_Of_Parameters): Document switch to - set option. - -2017-09-08 Eric Botcazou - - * sem_util.adb (NCT_Tables_In_Use): Move to library level from... - (New_Copy_Tree): ...there. Reset the hash tables only if they - were used in the previous invocation. - * s-htable.adb: Fix typo. - -2017-09-08 Bob Duff - - * a-ssicst.adb (Open): Set File.Last_Op to the appropriate value. - -2017-09-08 Arnaud Charlet - - * sem_aggr.adb: minor style fix. - -2017-09-08 Bob Duff - - * sprint.adb (Write_Corresponding_Source): Ignore if there is - no current source file. - (Write_Name_With_Col_Check, Write_Name_With_Col_Check_Sloc): - Print something helpful in case N is invalid. - * sprint.ads: Minor comment fix. - -2017-09-08 Eric Botcazou - - * exp_aggr.adb: (Aggr_Assignment_OK_For_Backend): Add early return for - access types. - -2017-09-08 Bob Duff - - * par-prag.adb, sem_prag.adb, snames.ads-tmpl: Implement pragma - Ada_2020, along the same lines as the other Ada version pragmas. - -2017-09-08 Gary Dismukes - - * sem_ch12.adb: Minor typo fixes and reformatting. - -2017-09-08 Yannick Moy - - * sem_aggr.adb (Resolve_Record_Aggregate): - Rewrite bounds of aggregate subexpressions which may depend on - discriminants of the enclosing aggregate. - -2017-09-08 Yannick Moy - - * sem_ch5.adb: Prevent assertion failure on illegal code. - -2017-09-08 Yannick Moy - - * lib-xref-spark_specific.adb (Add_SPARK_Xrefs.Is_SPARK_Scope): Avoid - calling Renamed_Entity on an entity which cannot be a renaming. - -2017-09-08 Eric Botcazou - - * exp_aggr.adb: Add with & use clause for Urealp. - (Aggr_Assignment_OK_For_Backend): Accept (almost all) - elementary types instead of just discrete types. - * sem_eval.adb (Expr_Value): Deal with N_Null for access types. - * gcc-interface/trans.c (gnat_to_gnu) : - Be prepared for the FP zero value in the memset case. Add small - guard. - -2017-09-08 Eric Botcazou - - * s-htable.adb (Static_HTable.Reset): Use aggregate instead - of loop. - -2017-09-08 Hristian Kirtchev - - * exp_aggr.adb (Expand_Array_Aggregate): Use New_Copy_Tree instead - of New_Copy because the latter leaves the syntactic structure of - the tree inconsistent (a child is accessible through two parents) - and prevents proper replication of itypes by subsequent calls - to New_Copy_Tree. - * exp_ch4.adb (Expand_Concatenate): Use New_Copy_Tree instead of - New_Copy because the latter leaves the syntactic structure of the - tree inconsistent (a child is accessible through two parents) - and prevents proper replication of itypes by subsequent calls - to New_Copy_Tree. - * sem_util.adb (In_Subtree): New routine. - (New_Copy_Tree): Reimplemented. - * sem_util.ads (In_Subtree): New routine. - (New_Copy_Tree): Reimplemented. - -2017-09-08 Ed Schonberg - - * sem_ch13.adb (Resolve_Aspect_Expressions): The expression - for aspect Default_Value is a static scalar value, but it does - not freeze the type. Yhis allows for subsequent representation - clauses for the type. - -2017-09-08 Javier Miranda - - * sem_ch8.adb (Find_Direct_Name.Undefined): Do - not add entries into the undefined reference table when we are - compiling with errors ignored. - -2017-09-08 Ed Schonberg - - * sem_ch12.adb (Check_Formal_Packages): Do not apply conformance - check if the instance is within an enclosing instance body. The - formal package was legal in the enclosing generic, and is - legal in the enclosing instantiation. This optimisation may be - applicable elsewhere, and it also removes spurious errors that - may arise with on-the-fly processing of instantiations that - contain Inline_Always subprograms. - -2017-09-08 Vincent Celier - - * gnatcmd.adb: Disregard empty argument of GNAT driver. - -2017-09-08 Justin Squirek - - * checks.adb (Insert_Valid_Check): Manually decorate - the generated temporary for range valdity checks. - -2017-09-08 Eric Botcazou - - * usage.adb (Usage): Document new -gnatw.q/-gnatw.Q switches. - -2017-09-08 Justin Squirek - - * switch-c.adb (Scan_Front_End_Switches): Add new warning switch - case to handle underscore flags. - * warnsw.adb, warnsw.ads (Set_Underscore_Warning_Switch): Create - new procedure to handle underscores. - -2017-09-08 Javier Miranda - - * exp_ch4.adb (Expand_N_Op_Divide): Reordering code that handles - divisions with fixed point results to avoid generating twice - the runtime check on divide by zero. - * checks.adb (Apply_Divide_Checks): Ensure that operands are - not evaluated twice (once for their runtime checks and once for - their regular computation). - -2017-09-08 Yannick Moy - - * sem_prag.adb (Analyze_Part_Of): Add missing - return statements after issuing errors. Add detection of - out-of-order item and single concurrent type. - -2017-09-08 Nicolas Roche - - * gcc-interface/Makefile.in, a-extiti.ads, s-taprop-linux.adb, - s-osinte-solaris.adb, a-intnam.ads, s-osinte-solaris.ads, - s-tpobop.adb, s-intman-android.adb, s-tasinf.adb, s-tpobop.ads, - s-tasinf.ads, i-vxinco.adb, a-exetim-posix.adb, i-vxinco.ads, - a-astaco.adb, a-astaco.ads, s-tporft.adb, s-tpoaal.adb, a-taside.adb, - a-taside.ads, s-tpopsp-posix.adb, s-tasdeb.adb, s-tasdeb.ads, - s-tpoben.adb, a-dinopr.ads, s-inmaop-vxworks.adb, s-tpoben.ads, - s-interr-vxworks.adb, s-interr-dummy.adb, s-tassta.adb, - a-intnam-mingw.ads, s-tassta.ads, s-taasde.adb, a-stcoed.ads, - s-taasde.ads, s-osinte-darwin.adb, s-proinf.adb, s-taprop-dummy.adb, - s-osinte-darwin.ads, s-proinf.ads, s-linux.ads, a-intnam-linux.ads, - s-tasren.adb, s-tasren.ads, s-mudido.adb, g-semaph.adb, s-mudido.ads, - s-taprop-posix.adb, g-semaph.ads, s-osinte-mingw.ads, s-vxwork-x86.ads, - s-tposen.adb, s-linux-sparc.ads, s-taprop-vxworks.adb, s-tasini.adb, - s-tposen.ads, s-tasini.ads, a-etgrbu.ads, s-interr-hwint.adb, - s-osinte-linux.ads, s-taprop.ads, s-tasque.adb, s-tasque.ads, - s-taenca.adb, s-taspri-vxworks.ads, s-taenca.ads, a-dynpri.adb, - s-tpopsp-solaris.adb, a-dynpri.ads, s-taprop-hpux-dce.adb, - a-interr.adb, a-intnam-freebsd.ads, s-tarest.adb, a-interr.ads, - s-intman-susv3.adb, a-synbar.adb, a-intnam-dummy.ads, s-tadeca.adb, - s-osinte-vxworks.adb, s-tarest.ads, s-taskin.adb, a-synbar.ads, - s-taspri-hpux-dce.ads, s-tadeca.ads, s-osinte-vxworks.ads, - s-taskin.ads, s-intman-solaris.adb, a-sytaco.adb, s-vxwext-kernel.adb, - s-mudido-affinity.adb, a-sytaco.ads, s-vxwext-kernel.ads, s-taprob.adb, - s-intman-mingw.adb, s-taprob.ads, s-osinte-kfreebsd-gnu.ads, - s-osinte-dummy.ads, s-osinte-gnu.adb, s-osinte-rtems.adb, s-interr.adb, - s-inmaop.ads, s-vxwext-rtp.adb, s-osinte-gnu.ads, s-osinte-rtems.ads, - a-synbar-posix.adb, s-interr.ads, s-taspri-posix-noaltstack.ads, - s-vxwext-rtp.ads, a-synbar-posix.ads, a-extiin.ads, s-osinte-posix.adb, - s-tpinop.adb, s-tasres.ads, s-tpinop.ads, a-disedf.ads, a-diroro.ads, - s-linux-alpha.ads, a-tasatt.adb, s-solita.adb, a-intnam-solaris.ads, - a-tasatt.ads, s-solita.ads, s-tasinf-solaris.adb, s-tasinf-solaris.ads, - s-vxwork-arm.ads, s-tpopsp-posix-foreign.adb, s-intman-dummy.adb, - s-intman.ads, s-stusta.adb, s-stusta.ads, s-intman-posix.adb, - s-tpopsp-vxworks.adb, s-inmaop-dummy.adb, s-taspri-mingw.ads, - a-intnam-darwin.ads, s-osinte-aix.adb, s-osinte-dragonfly.adb, - s-osinte-aix.ads, s-tasinf-mingw.adb, s-osinte-dragonfly.ads, - s-linux-hppa.ads, s-osinte-x32.adb, s-inmaop-posix.adb, - s-tasinf-mingw.ads, s-intman-vxworks.adb, s-linux-mips.ads, - s-intman-vxworks.ads, s-osinte-android.adb, s-tasinf-linux.adb, - s-osinte-android.ads, s-vxwork-ppc.ads, s-tasinf-linux.ads, - a-dispat.adb, a-dispat.ads, s-tadert.adb, g-thread.adb, s-tadert.ads, - g-thread.ads, a-intnam-hpux.ads, s-linux-android.ads, s-tataat.adb, - a-exetim.ads, s-tataat.ads, a-reatim.adb, a-reatim.ads, thread.c, - g-boubuf.adb, s-osinte-freebsd.adb, g-boubuf.ads, s-osinte-freebsd.ads, - s-tasuti.adb, s-taspri-dummy.ads, a-exetim-mingw.adb, s-linux-x32.ads, - s-tasuti.ads, g-signal.adb, a-exetim-mingw.ads, s-interr-sigaction.adb, - g-signal.ads, s-osinte-hpux.ads, a-intnam-vxworks.ads, - s-osinte-hpux-dce.adb, s-taspri-posix.ads, s-osinte-hpux-dce.ads, - s-tasinf-vxworks.ads, g-tastus.ads, s-tpopsp-tls.adb, - s-taprop-solaris.adb, a-retide.adb, a-exetim-darwin.adb, a-retide.ads, - s-vxwext.adb, s-vxwext.ads, a-rttiev.adb, a-rttiev.ads, g-boumai.ads, - a-exetim-default.ads, s-taprop-mingw.adb, s-taspri-solaris.ads, - a-intnam-aix.ads: Move libgnarl sources to libgnarl subdir. - -2017-09-08 Arnaud Charlet - - * doc/share/conf.py, doc/share/latex_elements.py, - doc/share/ada_pygments.py, doc/Makefile: Improve support for Ada - highlighting. - -2017-09-08 Arnaud Charlet - - * gnat_rm.texi, gnat_ugn.texi, - doc/gnat_ugn/the_gnat_compilation_model.rst, - doc/gnat_ugn/getting_started_with_gnat.rst, - doc/gnat_ugn/inline_assembler.rst, - doc/gnat_ugn/building_executable_programs_with_gnat.rst, - doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, - doc/gnat_ugn/about_this_guide.rst, - doc/gnat_ugn/platform_specific_information.rst, - doc/gnat_ugn/example_of_binder_output.rst, - doc/gnat_ugn/gnat_and_program_execution.rst, - doc/gnat_ugn/gnat_utility_programs.rst, - doc/gnat_rm/implementation_of_specific_ada_features.rst, - doc/gnat_rm/interfacing_to_other_languages.rst, - doc/gnat_rm/implementation_defined_aspects.rst, - doc/gnat_rm/intrinsic_subprograms.rst, - doc/gnat_rm/implementation_defined_characteristics.rst, - doc/gnat_rm/implementation_advice.rst, - doc/gnat_rm/implementation_defined_attributes.rst, - doc/gnat_rm/compatibility_and_porting_guide.rst, - doc/gnat_rm/standard_library_routines.rst, - doc/gnat_rm/the_gnat_library.rst, - doc/gnat_rm/implementation_defined_pragmas.rst, - doc/gnat_rm/representation_clauses_and_pragmas.rst, - doc/gnat_rm/standard_and_implementation_defined_restrictions.rst, - doc/gnat_rm/obsolescent_features.rst, - doc/gnat_rm/about_this_guide.rst, - doc/gnat_rm/the_implementation_of_standard_i_o.rst, - doc/gnat_rm/implementation_of_ada_2012_features.rst, - doc/gnat_ugn.rst, - doc/gnat_rm.rst: Update documentation. - -2017-09-08 Arnaud Charlet - - * s-dwalin.ads, s-dwalin.adb, s-trasym-dwarf.adb, s-objrea.ads, - s-objrea.adb, s-tsmona-linux.adb, s-tsmona-mingw.adb: New. - * gcc-interface/Makefile.in: Enable s-trasym-dwarf.adb on x86*linux. - -2017-09-08 Bob Duff - - * s-ststop.ads, s-ststop.adb, rtsfind.ads (String_Input_Tag): - New routine to read the Tag robustly. - * exp_attr.adb (Input): Change the expansion of 'Input, - in the class-wide case, to call String_Input_Tag instead of - String_Input_Blk_IO. - -2017-09-08 Arnaud Charlet - - * s-rident.ads (Restriction_Id): reorder enum - literals, so that Pure_Barriers is no longer in range of the - Cunit_Boolean_Restrictions subtype. - -2017-09-08 Nicolas Roche - - * a-taster.ads, a-taster.adb: Move to libgnarl - * gcc-interface/Makefile.in: Remove obsolete targets. Code cleanups. - Add support for files in libgnarl. - -2017-09-08 Ed Schonberg - - * exp_ch4.adb (Expand_N_Type_Conversion): Do not apply - accessibility check to an interface conversion, whose purpose - is to perform a pointer adjustment in a dispatching call. - * exp_ch6.adb (Expand_Call_JHelper): Add accessibility checks - when the actual is a construct that involves a dereference of an - expression that includes a formal of the enclosing subprogram, - In such cases, the accessibility level of the actual is that of - the corresponding formal, which is passed in as an additional - actual in the outer call. - -2017-09-08 Bob Duff - - * exp_intr.adb (Add_Source_Info): Do not decode - file names; they were not encoded in the first place. - -2017-09-08 Bob Duff - - * a-tags.adb (Internal_Tag): Unsuppress checks, so we get - exceptions instead of crashes. Check for absurdly long strings - and empty strings. Empty strings cause trouble because they can - have super-null ranges (e.g. 100..10), which causes Ext_Copy to - be empty, which causes an array index out of bounds. - * s-ststop.adb (Input): Unsuppress checks, so we get exceptions - instead of crashes. - -2017-09-08 Arnaud Charlet - - * sem_util.adb (Is_CCT_Instance): allow use in - the context of protected types. - -2017-09-08 Arnaud Charlet - - * a-tigeli.adb: minor remove extra whitespace. - -2017-09-08 Gary Dismukes - - * par-ch4.adb: Reformatting of an error message. - -2017-09-08 Javier Miranda - - * sem_ch3.adb (Resolve_Name): Under ASIS mode analyze overloaded - identifiers to ensure their correct decoration of names on - aspect expressions. - -2017-09-08 Yannick Moy - - * exp_attr.adb (Expand_Loop_Entry_Attribute): Do - not skip a loop coming from source which is rewritten into a loop. - -2017-09-08 Ed Schonberg - - * freeze.adb (Wrap_Imported_Subprogram): Indicate that the - wrapper has convention Ada, to prevent spurious warnings on - unconstrained array parameters. - -2017-09-08 Eric Botcazou - - * sem_prag.adb (Check_Variant): Use First_Non_Pragma/Next_Non_Pragma. - (Analyze_Pragma) : Likewise. - -2017-09-08 Eric Botcazou - - * sem_ch6.adb (Freeze_Expr_Types): Rename Spec_Id into Def_Id. - -2017-09-08 Arnaud Charlet - - * exp_intr.adb (Append_Entity_Name): Move to ... - * sem_util.ads, sem_util.adb: ... here to share it. - (Subprogram_Name): New subprogram, to compute the name of the enclosing - subprogram/entity. - * errutil.adb (Error_Msg): Fill new field Node. - * erroutc.ads (Subprogram_Name_Ptr): New. - (Error_Msg_Object): New field Node. - * erroutc.adb (dmsg, Output_Msg_Text): Take new field Node into account. - * errout.adb (Error_Msg): New variant with node id parameter. - Fill new parameter Node when emitting messages. Revert previous - changes for Include_Subprogram_In_Messages. - * sem_ch5.adb (Check_Unreachable_Code): Supply Node parameter when - generating warning message. - -2017-09-08 Ed Schonberg - - * par-ch4.adb (P_Iterated_Component_Association): Place construct - under -gnat2020 flag, given that it is a future feature of - the language. - * sem_aggr.adb (Resolve_Iterated_Component_Association): Mark - defining identifier as referenced to prevent spurious warnings: - corresponding loop is expanded into one or more loops whose - variable has the same name, and the expression uses those names - and not the original one. - -2017-09-08 Hristian Kirtchev - - * sem_elab.adb (Check_A_Call): Do not consider - references to internal variables for SPARK semantics. - -2017-09-08 Arnaud Charlet - - * inline.adb (In_Package_Spec): refine type of - the parameter from Node_Id to Entity_Id. - -2017-09-08 Justin Squirek - - * exp_ch5.adb (Expand_Formal_Container_Loop): - Reset the scope of the loop parameter after it is reanalyzed. - -2017-09-08 Eric Botcazou - - * sem_util.ads (Set_Rep_Info): New inline procedure. - * sem_util.adb (Set_Rep_Info): Implement it. - * sem_ch3.adb (Process_Subtype): If the case of a constraint present, - always copy the representation aspects onto the subtype. - -2017-09-08 Georges-Alex Jaloyan - - * g-dynhta.adb, g-dynhta.ads (Get_First_Key, Get_Next_key): - Correction of the return type from access type to option type. - (Simple_HTable): Moving the Instance_Data to ads file. - -2017-09-08 Yannick Moy - - * sem_prag.adb: Use System.Case_Util.To_Lower to simplify code. - -2017-09-08 Arnaud Charlet - - * opt.ads (Include_Subprogram_In_Messages): New variable. - * errout.ads (Current_Subprogram_Ptr): New variable. - * errout.adb (Error_Msg): Prepend current subprogram info - in messages if Include_Subprogram_In_Messages is set. - * sem_util.adb (elab code): Initialize Current_Subprogram_Ptr to - Current_Subprogram. - * gnat1drv.adb (Adjust_Global_Switches): Set - Include_Subprogram_In_Messages when -gnatdJ is set. - * debug.adb: Document and reserve -gnatdJ. - -2017-09-08 Georges-Axel Jaloyan - - * g-dynhta.adb, g-dynhta.ads (Get_First_Key, Get_Next_Key): New - functions to iterate over simple hastables. - (Load_Factor_HTable): Remove obsolete and inefficient implementation. - -2017-09-08 Javier Miranda - - * exp_ch6.adb (Unqual_BIP_Function_Call): Adding - missing checks on the presence of Entity() before checking the - entity attributes. - -2017-09-08 Eric Botcazou - - * sem_ch6.adb (Analyze_Expression_Function): Reorder some - statements, use local variable and remove unnecessary processing. - -2017-09-08 Javier Miranda - - * exp_ch6.ads (Make_Build_In_Place_Iface_Call_In_Allocator): New - subprogram. - (Make_Build_In_Place_Iface_Call_In_Anonymous_Context): New subprogram. - (Make_Build_In_Place_Iface_Call_In_Object_Declaration): New - subprogram. - (Unqual_BIP_Iface_Function_Call): New subprogram. - * exp_ch6.adb (Replace_Renaming_Declaration_Id): New - subprogram containing code that was previously inside - Make_Build_In_Place_Call_In_Object_Declaration since it is also - required for one of the new subprograms. - (Expand_Actuals): - Invoke Make_Build_In_Place_Iface_Call_In_Anonymous_Context - (Expand_N_Extended_Return_Statement): Extend the - cases covered by an assertion on expected BIP object - declarations. - (Make_Build_In_Place_Call_In_Assignment): - Removing unused code; found working on this ticket. - (Make_Build_In_Place_Call_In_Object_Declaration): Move the code - that replaces the internal name of the renaming declaration - into the new subprogram Replace_Renaming_Declaration_Id. - (Make_Build_In_Place_Iface_Call_In_Allocator): New subprogram. - (Make_Build_In_Place_Iface_Call_In_Anonymous_Context): - New subprogram. - (Make_Build_In_Place_Iface_Call_In_Object_Declaration): New - subprogram. - (Unqual_BIP_Iface_Function_Call): New subprogram. - * exp_ch3.adb (Expand_N_Object_Declaration): Invoke the new - subprogram Make_Build_In_Place_Iface_Call_In_Object_Declaration. - * exp_attr.adb (Expand_N_Attribute_Reference): Invoke the new - subprogram Make_Build_In_Place_Iface_Call_In_Anonymous_Context. - * exp_ch4.adb (Expand_Allocator_Expression): Invoke the new - subprogram Make_Build_In_Place_Iface_Call_In_Allocator. - (Expand_N_Indexed_Component): Invoke the new subprogram - Make_Build_In_Place_Iface_Call_In_Anonymous_Context. - (Expand_N_Selected_Component): Invoke the new subprogram - Make_Build_In_Place_Iface_Call_In_Anonymous_Context. - (Expand_N_Slice): Invoke the new subprogram - Make_Build_In_Place_Iface_Call_In_Anonymous_Context. - * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): - Invoke the new subprogram - Make_Build_In_Place_Iface_Call_In_Anonymous_Context. - -2017-09-08 Javier Miranda - - * exp_disp.adb (Expand_Interface_Conversion): Fix handling of - access to interface types. Remove also the accessibility check. - -2017-09-08 Eric Botcazou - - * sem_ch6.adb (Freeze_Expr_Types): Really freeze - all the types that are referenced by the expression. - (Analyze_Expression_Function): Call Freeze_Expr_Types for - a completion instead of manually freezing the type of the - expression. - (Analyze_Subprogram_Body_Helper): Do not call Freeze_Expr_Types here. - -2017-09-08 Ed Schonberg - - * exp_prag.adb (Replace_Discriminals_Of_Protected_Op): - New procedure, auxiliary to Expand_Pragma_Check, to handle - references to the discriminants of a protected type within a - precondition of a protected operation. This is needed because - the original precondition has been analyzed in the context of - the protected declaration, but in the body of the operation - references to the discriminants have been replaved by references - to the discriminants of the target object, and these references - are only created when expanding the protected body. - -2017-09-08 Yannick Moy - - * sem_prag.adb (Analyze_Pragma): Issue more precise error messages on - Loop_Variant. - -2017-09-08 Ed Schonberg - - * exp_attr.adb (Build_Record_VS_Func): If the record is an - unchecked union, do not emit checks for its (non-existent) - discriminants, or for variant parts that depend on them. - -2017-09-08 Justin Squirek - - * sem_ch4.adb (Find_Equality_Types.Try_One_Interp, - Find_Comparison_Type.Try_One_Interp): Add check for generic - instances. - -2017-09-08 Arnaud Charlet - - * sem_ch3.adb, layout.adb, layout.ads, exp_attr.adb, debug.adb, - exp_pakd.adb, sem_prag.adb, gnat1drv.adb, targparm.adb, targparm.ads, - repinfo.adb, exp_ch6.adb, exp_aggr.adb, sem_eval.adb, sem_ch13.adb, - exp_ch3.adb: Remove references to Frontend_Layout_On_Target and - remaining references to AAMP_On_Target. - -2017-09-08 Ed Schonberg - - * style.adb: Fix typo. - -2017-09-08 Javier Miranda - - * einfo.adb (Underlying_Type): Add missing support for class-wide - types that come from the limited view. - * exp_attr.adb (Attribute_Address): Check class-wide type - interfaces using the underlying type to handle limited-withed - types. - (Attribute_Tag): Check class-wide type interfaces using - the underlying type to handle limited-withed types. - -2017-09-08 Ed Schonberg - - * exp_ch5.adb (Expand_Predicated_Loop): Handle properly a loop - over a subtype of a type with a static predicate, taking into - account the predicate function of the parent type and the bounds - given in the loop specification. - * sem_ch3.adb (Inherit_Predicate_Flags): For qn Itype created for - a loop specification that is a subtype indication whose type mark - is a type with a static predicate, inherit predicate function, - used to build case statement for rewritten loop. - -2017-09-08 Justin Squirek - - * lib-load.adb: Modify printing of error message to exclude file - line number. - -2017-09-08 Arnaud Charlet - - * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): - don't inline subprograms declared in both visible and private - parts of a package. - (In_Package_Spec): previously In_Package_Visible_Spec; now - detects subprograms declared both in visible and private parts - of a package spec. - -2017-09-08 Ed Schonberg - - * exp_util.adb (Build_Invariant_Procedure_Declaration): If - the type is an anonymous array in an object declaration, whose - component type has an invariant, use the object declaration - as the insertion point for the invariant procedure, given that - there is no explicit type declaration for an anonymous array type. - -2017-09-08 Bob Duff - - * a-cbprqu.ads, a-cbdlli.adb: Suppress warnings. - -2017-09-08 Bob Duff - - * a-strfix.adb (Trim): Compute Low and High only if needed. - -2017-09-08 Justin Squirek - - * lib-load.adb (Load_Main_Source): Add error output in the case a - source file is missing. - -2017-09-08 Bob Duff - -PR ada/80888 - * a-textio.adb, a-witeio.adb, a-ztexio.adb (Set_WCEM): Use - Default_WCEM by default (i.e. if the encoding is not specified - by the Form string). - -2017-09-08 Bob Duff - - * s-trasym.ads (Hexa_Traceback): If - Suppress_Hex is True, print "..." instead of a hexadecimal - address. - * s-trasym.adb: Ignore No_Hex in this version. - Misc cleanup. - -2017-09-08 Bob Duff - - * debug.adb: Minor reformatting. - -2017-09-08 Bob Duff - - * a-cbdlli.adb, a-cohama.adb, a-cohase.adb (Copy): Rewrite the - code so it doesn't trigger an "uninit var" warning. - -2017-09-08 Nicolas Roche - - * s-hibaen.ads: Remove obsolete file. - -2017-09-08 Arnaud Charlet - - * a-locale.ads: Add comment explaining the state of this package. - -2017-09-08 Arnaud Charlet - - * sem_util.adb (Is_CCT_Instance): Allow calls in the context - of packages. - * sem_prag.ads, sem_prag.adb (Find_Related_Declaration_Or_Body): - allow calls in the context of package spec (for pragma - Initializes) and bodies (for pragma Refined_State). - -2017-09-08 Bob Duff - - * checks.adb (Insert_Valid_Check): Copy the Do_Range_Check flag to the - new Exp. - -2017-09-08 Eric Botcazou - - * debug.adb (dA): Adjust comment. - * gnat1drv.adb (Gnat1drv): Likewise. - * opt.ads (List_Representation_Info_Extended): New variable. - * repinfo.adb (List_Record_Info): Split implementation into... - (Compute_Max_Length): ...this. Recurse on records if requested. - (List_Record_Layout): Likewise. - * switch-c.adb (Scan_Front_End_Switches) <'R'>: Use case - statement, accept '0' and set List_Representation_Info_Extended - on 'e'. - * usage.adb (Usage): Document new -gnatRe variant. - -2017-09-08 Ed Schonberg - - * sem_prag.adb (Analyze_Pragma, case Default_Storage_Pool): - Do not save the given entity in the global variable Default_Pool - if the pragma appears within a generic unit. - -2017-09-08 Bob Duff - - * errout.adb (Delete_Warning): Do not - decrement Warnings_Treated_As_Errors. This is called before - Warnings_Treated_As_Errors has been incremented to account for - this warning. Decrementing it here can lead to negative values - of Warnings_Treated_As_Errors, raising Constraint_Error in - checks-on builds, and causing the compiler to return an error - code in checks-off builds. - -2017-09-08 Arnaud Charlet - - * sem_util.ads, sem_util.adb (Is_CCT_Instance): Only expect - entities of named concurrent types as Ref_Id and not of anonymous - concurrent objects (because callers already know when a conversion - is necessary and can easily do it); also, do not expect protected - types or protected objects as Context_Id (because no flow-related - SPARK pragmas are attached there); reflect these changes in a - more precise comment. - -2017-09-08 Olivier Hainque - - * g-altive.ads: Add documentation. - -2017-09-08 Bob Duff - - * sem_util.ads, debug.adb: Minor comment fix. - * erroutc.ads: Comment fix. - -2017-09-08 Ed Schonberg - - * sem_ch12.adb (Validate_Array_Type_Instance): Suppress check - for compatibility of component types of formal and actual in an - instantiation of a child unit, when the component type of the - formal is itself a formal of an enclosing generic. - -2017-09-08 Arnaud Charlet - - * sem_util.ads, sem_util.adb (Is_CCT_Instance): moved from - sem_prag.adb to make it available for GNATprove; for concurrent - types replace custom scope climbing with Scope_Same_Or_Within; for - single concurrent objects add scope climbing (with Scope_Within), - which was not there (that's the primary semantic change of this - commit); also, when comparing a single concurrent object with - its corresponding concurrent type rely on equality of types, - not of objects (because that's simpler to code). - * sem_prag.adb (Is_CCT_Instance): lifted to sem_util.ads. - (Analyze_Global_Item): adjust special-casing of references to the - current instance of a concurrent unit in the Global contracts - of task types and single tasks objects; similar for references - in the protected operations and entries of protected types and - single protected objects (in all these cases the current instance - behaves as an implicit parameter and must not be mentioned in - the Global contract). - -2017-09-08 Arnaud Charlet - - * exp_ch6.adb (Expand_Call_Helper): Introduce temporary for - function calls returning a record within a subprogram call, - for C generation. - -2017-09-08 Ed Schonberg - - * sem_ch8.adb (Find_Expanded_Name): Handle properly an expanded - name that designates the current instance of a child unit in its - own body and appears as the prefix of a reference to an entity - local to the child unit. - * exp_ch6.adb, freeze.adb, sem_ch3.adb, sem_prag.adb, sem_util.adb: - Minor reformatting. - -2017-09-08 Yannick Moy - - * sem_res.adb (Resolve_Equality_Op): Do not warn on comparisons that - may be intentional. - -2017-09-08 Tristan Gingold - - * sem_warn.adb (Check_Unused_Withs): Remove test that disabled - warnings on internal units in configurable run time mode. - -2017-09-08 Bob Duff - - * sem_ch3.adb (Build_Derived_Private_Type): Inherit - representation items from interfaces that the derived type - implements, not just from the parent type. - * sem_util.ads, sem_util.adb (Abstract_Interface_List): Change - this to return an empty list when there are no interfaces. - * einfo.ads, sem_ch13.adb: Minor comment fixes. - * sem_attr.adb: Minor comment fix. - -2017-09-08 Doug Rupp - - * sigtramp-vxworks.c [i386]: Adjust the kernel context for - x86-vx7. - -2017-09-08 Hristian Kirtchev - - * exp_ch4.adb (Expand_N_Allocator): Generate a - call to Allocate_Any_Controlled when the allocation does not - require any initialization. - -2017-09-08 Hristian Kirtchev - - * sem_util.adb (Copy_Node_With_Replacement): - Update the Renamed_Object field of a replicated object renaming - declaration. - -2017-09-08 Patrick Bernardi - - * exp_ch9.adb (Is_Pure_Barrier): Allow type - conversions and components of objects. Simplified the detection - of the Count attribute by identifying the corresponding run-time - calls. - -2017-09-08 Yannick Moy - - * exp_ch9.adb, exp_disp.adb, repinfo.adb, sem_ch12.adb, sem_dim.adb, - sem_type.adb, sinfo.ads: Minor reformatting. - -2017-09-08 Ed Schonberg - - * freeze.adb (Has_Incomplete_Compoent): New predicate, subsidiary - of Freeze_Profile, used to inhibit the freezing of the profile - of an expression function declared within a nested package, when - some type in the profile depends on a private type declared in - an enclosing package. - -2017-09-08 Bob Duff - - * gnat1drv.adb (Gnat1drv): Do not set the Force_ALI_Tree_File flag in - the subunit case. It's still OK to set it in the "missing subunits" - case, because that won't cause the obsolete .ali files that cause - confusion. - -2017-09-08 Bob Duff - - * sinput-l.adb: Remove unused "with Unchecked_Conversion;". It's - unclear why this didn't cause a warning. - * a-uncdea.ads, a-unccon.ads: Add "Ada." to names in the - pragmas. It's unclear why this didn't cause an error. - -2017-09-08 Hristian Kirtchev - - * exp_spark.adb (Expand_SPARK_N_Object_Renaming_Declaration): - Reimplemented. - (Expand_SPARK_Potential_Renaming): Code clean up. - * sem_prag.adb (Analyze_Initialization_Item): Add a guard in case - the item does not have a proper entity. - (Analyze_Input_Item): Add a guard in case the item does not have a - proper entity. - (Collect_States_And_Objects): Include object renamings in the - items being collected. - (Resolve_State): Update the documentation of this routine. - * sem_util.adb (Entity_Of): Add circuitry to handle - renamings of function results. - (Remove_Entity): New routine. - (Remove_Overloaded_Entity): Take advantage of factorization. - * sem_util.ads (Entity_Of): Update the documentation - of this routine. - (Remove_Entity): New routine. - (Remove_Overloaded_Entity): Update the documentation of this - routine. - -2017-09-08 Eric Botcazou - - * repinfo.adb (List_Record_Info): During first loop, - do not override the normalized position and first bit - if they have already been set. Move fallback code - for the packed case to the case where it belongs. - * sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): - Also adjust the normalized position of components. - (Adjust_Record_For_Reverse_Bit_Order_Ada_95): Likewise. - -2017-09-08 Ed Schonberg - - * exp_disp.adb (Make_DT, Set_All_DT_Position): Handle properly - the placement of a primitive operation O that renames an operation - R declared in an inner package, and which is thus not a primitive - of the dispatching type of O. In this case O is a new primitive - and does not inherit its dispatch table position from R (which - has none). - -2017-09-08 Ed Schonberg - - * sem_dim.adb (Analyze_Dimension_If_Expression, - Analyze_Dimension_Case_Expression): new subprograms to verify - the dimensional correctness of Ada2012 conditional expressions, - and set properly the dimensions of the construct. - * sem_res.adb (Resolve_If_Expression, Resolve_Case_Expression)): - call Analyze_Dimension. - -2017-09-08 Ed Schonberg - - * sem_type.adb (Expand_Interface_Conversion): Prevent an infinite - loop on an interface declared as a private extension of another - synchronized interface. - -2017-09-08 Ed Schonberg - - * sem_ch12.adb (Check_Generic_Parent): New procedure within - Analyze_Associations, to handle actual packages that depend on - previous instances. If a package IAP that is an instantiation is - used as an actual in a subsequent instantiation SI in the same - scope, and IAP has a body, IAP must be frozen before SI. If - the generic parent of IAP is itself declared in a previous - instantiation in the same scope, that instantiation must also - be frozen before SI. - (Install_Body): Prevent double insertion of freeze node for - instance. - -2017-09-08 Hristian Kirtchev - - * sem_prag.adb (Resolve_State): Update the - comment on documentation. Generate a reference to the state once - resolution takes place. - -2017-09-08 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspect_Specifications, case - Linker_Section): If the aspect applies to an object declaration - with explicit initialization, do not delay the freezing of the - object, to prevent access-before-elaboration in the generated - initialization code. - -2017-09-08 Ed Schonberg - - * a-wtdeio.adb (Put, all versions): Use Long_Long_Integer - (Integer_Value (Item)) when the size of the fixed decimal type - is larger than Integer. - -2017-09-07 Eric Botcazou - - PR ada/82127 - * gcc-interface/decl.c (copy_and_substitute_in_layout): Put the fields - in order of increasing position in more cases. - -2017-09-07 Yannick Moy - - * a-exetim-mingw.ads: Add contract Global=>null - on all operations that are modeled as having no read or write - of global variables in SPARK. - -2017-09-07 Raphael Amiard - - * a-chtgop.adb, a-chtgop.ads (Generic_Iteration_With_Position): Added - to Hmaps.Generic_Ops. - * a-cohama.adb (Ada.Containers.Hmaps.Iterate): Pass proper position in - cursors. - * a-cihama.adb (Ada.Containers.Indefinite_Hmaps.Iterate): Pass pos in - cursors. - * a-cohase.adb (Ada.Containers.Hashed_Sets.Iterate): Pass proper - position in cursors. - -2017-09-07 Javier Miranda - - * sem_elab.adb (Check_Task_Activation): Adding switch -gnatd.y to - allow disabling the generation of implicit pragma Elaborate_All - on task bodies. - -2017-09-07 Javier Miranda - - * exp_disp.adb (Make_Tags): Avoid suffix counter - in the external name of the elaboration flag. Required to fix - the regressions introduced by the initial version of this patch. - -2017-09-07 Bob Duff - - * sem_ch6.adb (Analyze_Function_Return): Do not - insert an explicit conversion to force the displacement of the - "this" pointer to reference the secondary dispatch table in the - case where the return statement is returning a raise expression, - as in "return raise ...". - -2017-09-07 Arnaud Charlet - - * sem_disp.adb (Is_User_Defined_Equality): Removed procedure. - * sem_util.ads, sem_util.adb (Is_User_Defined_Equality): Copied - procedure from sem_disp.adb. - * sem_ch12.ads (Get_Unit_Instantiation_Node): rename Package - with Unit. - * sem_ch12.adb (Get_Unit_Instantiation_Node): function extended to - return the instantiation node for subprograms. Update references - to Get_Unit_Instantiation_Node. - * sem_ch7.adb (Install_Parent_Private_Declarations): update - reference to Get_Unit_Instantiation_Node. - * exp_dist.adb (Build_Package_Stubs): update reference to - Get_Unit_Instantiation_Node. - * sem_ch9.adb: minor typo in comment. - * lib-xref-spark_specific.adb - (Traverse_Declaration_Or_Statement): traverse into task type - definition. - -2017-09-07 Ed Schonberg - - * sem_dim.adb (Analyze_Dimension_Type_Conversion): New procedure - to handle properly various cases of type conversions where the - target type and/or the expression carry dimension information. - (Dimension_System_Root); If a subtype carries dimension - information, obtain the source parent type that carries the - Dimension aspect. - -2017-09-07 Dmitriy Anisimkov - - * g-socket.adb, g-socket.ads (GNAT.Sockets.To_Ada): New routine. - -2017-09-07 Ed Schonberg - - * exp_attr.adb (Expand_N_Attribute_Reference, case 'Constrained): - If the prefix is a reference to an object, rewrite it as an - explicit dereference, as required by 3.7.2 (2) and as is done - with most other attributes whose prefix is an access value. - -2017-09-07 Bob Duff - - * par-ch13.adb: Set the Inside_Depends flag if we are inside a - Refined_Depends aspect. - * par-ch2.adb: Set the Inside_Depends flag if we are inside a - Refined_Depends pragma. - * scans.ads: Fix documentation of Inside_Depends flag. - * styleg.adb, styleg.ads: Minor reformatting and comment fixes. - -2017-09-07 Hristian Kirtchev - - * exp_ch7.adb (Insert_Actions_In_Scope_Around): - Account for the case where the are no lists to insert, but the - secondary stack still requires management. - * a-chtgop.adb, a-cihama.adb, a-cohama.adb, a-cohase.adb, a-tags.adb, - comperr.adb, einfo.adb, exp_aggr.adb, exp_ch3.adb, exp_disp.adb, - lib-xref.adb, lib-xref-spark_specific.adb, sem_ch12.adb, sem_ch13.adb, - sem_ch6.adb, sem_dim.adb, sem_dim.ads, sem_elab.adb, sem_prag.adb: - Minor reformatting. - -2017-09-07 Vincent Celier - - * clean.adb: Do not get the target parameters before calling - gprclean. - -2017-09-07 Nicolas Roche - - * s-osinte-solaris-posix.ads: Removed. - -2017-09-07 Arnaud Charlet - - * sem_prag.adb (Collect_States_And_Objects): Detect also instances of - single concurrent objects. - -2017-09-07 Javier Miranda - - * s-regexp.ads: Fix documentation of the globbing grammar. - -2017-09-07 Gary Dismukes - - * a-tags.ads, einfo.ads, exp_disp.ads: Minor reformatting. - -2017-09-07 Arnaud Charlet - - * gnat1drv.adb (Gnat1drv): Enable pragma Ignore_Pragma (Global) - in CodePeer mode, to support more legacy code automatically. - -2017-09-07 Ed Schonberg - - * exp_disp.adb (Replace_Formals): If thr formal is classwide, - and thus not a controlling argument, preserve its type after - rewriting because it may appear in an nested call with a classwide - parameter. - -2017-09-07 Arnaud Charlet - - * comperr.adb (Delete_SCIL_Files): Handle case of - N_Package_Instantiation. - -2017-09-07 Ed Schonberg - - * sem_ch10.adb (Remove_Private_With_Clause): If a private with - clause for a unit U appears in a context that includes a regular - with_clause on U, rewrite the redundant private clause into a null - statement, rather than removing it altogether from the context, - so that ASIS tools can reconstruct the original source. - -2017-09-07 Ed Schonberg - - * sem_ch13.adb (Check_Aspect_At_Freeze_Point): The expression - for aspect Small can be of any real type (not only a universal - real literal) as long as it is a static constant. - -2017-09-07 Thomas Quinot - - * par_sco.adb: Minor reformatting. - -2017-09-07 Arnaud Charlet - - * s-parame-ae653.ads: Removed. - -2017-09-07 Nicolas Roche - - * s-traces-default.adb, s-trafor-default.adb, s-trafor-default.ads, - s-traces.adb, s-traces.ads, s-tratas-default.adb, s-tfsetr-default.adb, - s-tfsetr-vxworks.adb, s-tratas.adb, s-tratas.ads, s-tasuti.adb, - s-parame-hpux.ads, s-tassta.adb, s-taasde.adb, s-tasren.adb, - s-taprob.adb, a-caldel.adb, s-parame.ads, Makefile.rtl, s-tpobop.adb, - s-taenca.adb, s-parame-vxworks.ads: Remove support for System.Traces. - -2017-09-07 Yannick Moy - - * a-ngelfu.ads Add preconditions to all functions - listed in Ada RM A.5.1(19-33) as having constraints on inputs. - -2017-09-07 Arnaud Charlet - - * lib-xref.adb (Generate_Reference): ignore - references to entities which are Part_Of single concurrent - objects. - -2017-09-07 Eric Botcazou - - * sem_ch7.adb (Hide_Public_Entities): Add paragraph to main - comment. - -2017-09-07 Arnaud Charlet - - * a-taside.adb (Activation_Is_Complete): Raise Program_Error if - Null_Task_Id is passed. - -2017-09-07 Javier Miranda - - * einfo.ads, einfo.adb (Access_Disp_Table_Elab_Flag): New - attribute. Defined for record types and subtypes. - * exp_ch3.ads (Init_Secondary_Tags): Adding new formal - (Init_Tags_List) to facilitate generating separate code in the - IP routine to initialize the object components and for completing - the elaboration of dispatch tables. - * exp_ch3.adb (Build_Init_Procedure): Improve the code - generated in the IP routines by means of keeping separate - the initialization of the object components from the - initialization of its dispatch tables. (Init_Secondary_Tags): - Adding new formal (Init_Tags_List) and adjusting calls to - Ada.Tags.Set_Dynamic_Offset_To_Top since it has a new formal; - adjusting also calls to Ada.Tags.Register_Interface_Offset - because the type of one of its formals has been changed. - * a-tags.ads, a-tags.adb (Register_Interface_Offset): Profile - modified. Instead of receiving a pointer to an object this - routine receives now a primary tag. - (Set_Dyanic_Offset_To_Top): Profile modified. This routine receives an - additional formal: the tag of the primary dispatch table. - * exp_disp.ads (Elab_Flag_Needed): New subprogram. - * exp_disp.adb (Elab_Flag_Needed): New subprogram. - (Make_Tags): Adding the declaration of the elaboration flag (if needed). - * exp_aggr.adb (Build_Record_Aggr_Code): Adding actual of new - formal in calls to Init_Secondary_Tags. - -2017-09-07 Javier Miranda - - * ghost.adb (Mark_And_Set_Ghost_Instantiation.Check_Ghost_Actuals): New - subprogram. - * sem_prag.adb (Pragma_Ghost): Add missing support for ghost - applied to generic subprograms. - -2017-09-07 Arnaud Charlet - - * sem_util.adb (Check_Part_Of_Reference): rename Conc_Typ to Conc_Obj - (because it refers to the anonymous concurrent object, not its type); - fix condition for emitting error message about task/protected type, - -2017-09-07 Bob Duff - - * binde.adb (Debug_Flag_Old): If both -do and -dp - are specified, behave as if just -do was specified, rather than - using a mixture. - -2017-09-07 Nicolas Roche - - * system-vxworks-sparcv9.ads, s-vxwork-m68k.ads, s-vxwork-mips.ads, - system-vxworks-m68k.ads, system-vxworks-mips.ads: Removed. - -2017-09-07 Arnaud Charlet - - * sem_prag.adb (Find_Role): The Global_Seen flag - is now consulted not only for abstract states and variables, - but for all kinds of items. - (Collect_Subprogram_Inputs_Outputs): Do not process formal - generic parameters, because unlike ordinary formal parameters, - generic formals only act as input/ outputs if they are explicitly - mentioned in a Global contract. - -2017-09-07 Yannick Moy - - * ghost.adb (Check_Ghost_Context): Do not err on ghost code inside - predicate procedure. Check predicate pragma/aspect with Ghost entity. - * exp_ch6.adb, par-ch6.adb, sem_ch13.adb, sem_prag.adb; Minor - reformatting. - -2017-09-07 Ed Schonberg - - * sem_aggr.adb: Move New_Copy_Tree_And_Dimensions to sem_dim - (code cleanup); - * sem_ch3.adb (Build_Derived_Record_Type):i Call - Copy_Dimensions_Of_Components after creating the copy of the - record declaration. - * sem_dim.ads, sem_dim.adb (Copy_Dimensions_Of_Components): For a - derived recor type, copy the dikensions if any of each component - of the parent record to the corresponding component declarations - of the derived record. These expressions are used among other - things as default values in aggregates with box associations. - * a-dirval-mingw.adb, g-cgi.adb, gnatcmd.adb, lib-xref.adb, - repinfo.adb, sem_attr.adb, sem_ch10.adb, sem_ch6.adb, sem_prag.adb: - Minor reformatting. - -2017-09-07 Arnaud Charlet - - * sem_util.adb: Remove extra space after THEN. - -2017-09-07 Eric Botcazou - - * sem_ch7.adb (Has_Referencer): For a subprogram renaming, - also mark the renamed subprogram as referenced. - -2017-09-07 Ed Schonberg - - * par-ch6.adb (P_Subprogram): Improve error message on null - procedure with misplaced aspect specification, which the parser - first attempts to interpret as a malformed expression function. - -2017-09-07 Gary Dismukes - - * sem_attr.adb (Analyze_Attribute_Old_Result): - Allow attributes Result and Old in the case of an expression - function. - -2017-09-07 Justin Squirek - - * sem_prag.adb (Process_Atomic_Independent_Shared_Volatile): Propagate - Volatile to subcomponents. - -2017-09-07 Bob Duff - - * exp_ch7.adb (Find_Last_Init): Check for the - case where a build-in-place function call has been replaced by a - 'Reference attribute reference. - -2017-09-07 Eric Botcazou - - * sem_ch7.adb (Has_Referencer): Recurse on Actions of freeze - nodes. - -2017-09-07 Bob Duff - - * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration, - Make_Build_In_Place_Call_In_Anonymous_Context): Do not use the - secondary stack for all functions that return limited tagged - types -- just do it for dispatching calls. Misc cleanup. - * sem_util.ads, sem_util.adb (Unqual_Conv): New function to - remove qualifications and type conversions. Fix various bugs - where only a single level of qualification or conversion was - removed, so e.g. "T1'(T2'(X))" would incorrectly return "T2'(X)" - instead of "X". - * checks.adb, exp_util.ads, exp_util.adb, sem_res.adb: Misc related - cleanup. - -2017-09-07 Ed Schonberg - - * sem_ch6.adb (setr_Actual_Subtypes): Within a predicate function - do not create actual subtypes that may generate further predicate - functions. - * sem_ch13.adb (Build_Predicate_Functions): Indicate that entity - of body is a predicate function as well. - (Resolve_Aspect_Expressions, Resolve_Name): For a component - association, only the expression needs resolution, not the name. - (Resolve_Aspect_Expressions, case Predicates): Construct and - analyze the predicate function declaration in the scope of the - type, before making the type and its discriminants visible. - -2017-09-06 Eric Botcazou - - * gcc-interface/decl.c (warn_on_field_placement): Issue the warning - only if the record type itself comes from source. - -2017-09-06 Gary Dismukes - - * sem_ch5.adb: Minor reformatting and a typo fix - -2017-09-06 Arnaud Charlet - - * sinput-l.ads: minor remove extra period at the end of comment - -2017-09-06 Arnaud Charlet - - * sem_prag.adb (Add_Item_To_Name_Buffer): remove support for - E_Discriminant. - (Find_Role): remove support for E_Discriminant. - -2017-09-06 Javier Miranda - - * exp_ch6.adb (Expand_Simple_Function_Return): - Add missing implicit type conversion to force displacement of the - "this" pointer. - -2017-09-06 Hristian Kirtchev - - * sem_ch3.adb, sem_aux.adb, sem_res.adb: Minor reformatting. - -2017-09-06 Yannick Moy - - * sem_ch12.adb (Analyze_Instance_And_Renamings): Refactor to set - global variable Ignore_SPARK_Mode_Pragmas_In_Instance only once. - -2017-09-06 Bob Duff - - * sem_ch8.adb: Change Assert to be consistent with - other similar ones. - -2017-09-06 Bob Duff - - * binde.adb (Find_Elab_Order): Do not run Elab_Old unless - requested. Previously, the -do switch meant "run Elab_New and - Elab_Old and use the order chosen by Elab_Old, possibly with - debugging printouts comparing the two orders." Now it means - "do not run Elab_New." This is of use if there are bugs that - cause Elab_New to crash. - (Elab_Position, Num_Chosen): Change type to Nat, to avoid various - type conversions. - * ali.ads (Elab_Position): Change type to Nat, to avoid various - type conversions. - -2017-09-06 Arnaud Charlet - - * sem_prag.adb (Check_Mode_Restriction_In_Enclosing_Context): Fix - reference to SPARK RM. - -2017-09-06 Eric Botcazou - - * layout.adb: Use SSU short hand consistently throughout the file. - -2017-09-06 Eric Botcazou - - * freeze.adb (Freeze_Record_Type) - : New local variable to - accumulate the rounded RM_Size of components. Update it for - every component whose RM_Size is statically known. Add missing - guard to check that bit packing is really required before issuing - the error about packing. Swap condition for clarity's sake. - * sem_prag.adb (Usage_Error): Fix reference to SPARK RM in comment. - -2017-09-06 Fedor Rybin - - * makeutl.adb, makeutl.ads, mlib.adb, mlib.ads, mlib-fil.adb, - mlib-fil.ads, mlib-prj.adb, mlib-prj.ads, mlib-tgt.adb, mlib-tgt.ads, - mlib-tgt-specific.adb, mlib-tgt-specific.ads, - mlib-tgt-specific-aix.adb, mlib-tgt-specific-darwin.adb, - mlib-tgt-specific-hpux.adb, mlib-tgt-specific-linux.adb, - mlib-tgt-specific-mingw.adb, mlib-tgt-specific-solaris.adb, - mlib-tgt-specific-vxworks.adb, mlib-tgt-specific-xi.adb, mlib-utl.adb, - mlib-utl.ads, prj.adb, prj.ads, prj-attr.adb, prj-attr.ads, - prj-attr-pm.adb, prj-attr-pm.ads, prj-com.ads, prj-conf.adb, - prj-conf.ads, prj-dect.adb, prj-dect.ads, prj-env.adb, prj-env.ads, - prj-err.adb, prj-err.ads, prj-ext.adb, prj-ext.ads, prj-makr.adb, - prj-makr.ads, prj-nmsc.adb, prj-nmsc.ads, prj-pars.adb, prj-pars.ads, - prj-part.adb, prj-part.ads, prj-pp.adb, prj-pp.ads, prj-proc.adb, - prj-proc.ads, prj-strt.adb, prj-strt.ads, prj-tree.adb, prj-tree.ads, - prj-util.adb, prj-util.ads, sinput-p.adb, sinput-p.ads: Remove obsolete - project manager sources. - -2017-09-06 Ed Schonberg - - * sem_ch5.adb (Analyze_Assigment): If the left-hand side is an - entity of a mutable type and the right-hand side is a conditional - expression, resolve the alternatives of the conditional using - the base type of the target entity, because the alternatives - may have distinct subtypes. This is particularly relevant if - the alternatives are aggregates. - -2017-09-06 Ed Schonberg - - * checks.adb (Apply_Predicate_Check): If the expression is an - aggregate that is the RHS of an assignment, apply the check to - the LHS after the assignment, rather than to the aggregate. This - is more efficient than creating a temporary for the aggregate, - and prevents back-end crashes when the aggregate includes a - dynamic "others' association. - -2017-09-06 Yannick Moy - - * sem_ch12.adb (Analyze_Instance_And_Renamings): - Set variable to ignore SPARK_Mode in instance before the analysis - of the generated package declaration. - -2017-09-06 Yannick Moy - - * sem_res.adb (Resolve_Call): Do not issue a - message for calls inside expression function, unless body was - seen and is candidate for inlining. - -2017-09-06 Ed Schonberg - - * sem_aux.adb (Is_Generic_Formal): Handle properly formal packages. - * sem_ch3.adb (Analyze_Declarations): In a generic subprogram - body. do not freeze the formals of the generic unit. - -2017-09-06 Gary Dismukes - - * errout.adb (Error_Msg): Separate the - treatment for warning vs. style messages in inlinings and - instantiations. Prevents blowups on calls to Warn_Insertion for - style messages, which should not be called in that case because - Warning_Msg_Char is not set. - -2017-09-06 Justin Squirek - - * sem_prag.adb (Check_VFA_Conflicts): Created - to group all Volatile_Full_Access checks relating to other - representation pragmas (Mark_Component_Or_Object): Created - to centeralize the flagging of attributes for the record type - component case, a pragma applied individually to a component, and - the object case. - (Process_Atomic_Independent_Shared_Volatile): - Add propagation of certain pragmas to record components and move - evaluation of VFA checks - -2017-09-06 Ed Schonberg - - * sem_prag.adb (Check_Postcondition_Use_In_Inlined_Subprogram): - Do not warn on conditions that are not obeyed for Inline_Always - subprograms, when assertions are not enabled. - -2017-09-06 Arnaud Charlet - - * sem_util.adb (Unique_Entity): For abstract states return their - non-limited view. - -2017-09-06 Bob Duff - - * sem_ch12.adb (Copy_Generic_Node): When we copy a node - that is a proper body corresponding to a stub, we defer the - adjustment of the sloc until after the correct adjustment has - been computed. Otherwise, Adjust_Instantiation_Sloc will ignore - the adjustment, because it will be outside the range in (the old, - incorrect) S_Adjustment. - * inline.adb: Use named notation for readability and uniformity. - * sinput-l.adb: Minor improvements to debugging output printed - for Debug_Flag_L. - * sinput-l.ads (Create_Instantiation_Source): Minor comment - correction. - -2017-09-06 Vincent Celier - - * make.adb: Do not invoke gprbuild for -bargs -P. - -2017-09-06 Sylvain Dailler - - * sem_eval.adb (Compile_Time_Known_Value_Or_Aggr): Adding a - case when Op is of kind N_Qualified_Expression. In this case, - the function is called recursively on the subexpression like in - other cases. - * make.adb: Minor reformatting - -2017-09-06 Justin Squirek - - * einfo.adb (Set_Linker_Section_Pragma): Modify - Set_Linker_Section_Pragma to be consistant with the "getter" - Linker_Section_Pragma. - * exp_ch5.adb (Expand_Formal_Container_Loop): Add proper error - checking for container loops so that the index cursor is not - directly changable by the user with the use of E_Loop_Parameter. - * sem_ch5.adb (Analyze_Block_Statement): Revert previous change. - * sem_warn.adb (Check_References): Revert previous change. - -2017-09-06 Bob Duff - - * exp_util.adb (Is_Displace_Call): Make sure it works for indirect - calls and the like. - -2017-09-06 Yannick Moy - - * sem_prag.adb (Analyze_Depends_Global): Reinforce test on object - declarations to only consider valid uses of Global/Depends those on - single concurrent objects. - -2017-09-06 Eric Botcazou - - * sem_ch13.adb (Check_Record_Representation_Clause): Give an - error as soon as one of the specified components overlaps the - parent field. - -2017-09-06 Arnaud Charlet - - * sem_prag.ads: minor fix typo in comment. - -2017-09-06 Justin Squirek - - * sem_ch5.adb (Analyze_Block_Statement): Verify a block comes - from source before checking source references. - * sem_warn.adb (Check_References): Add check for internal block - before recursing. - -2017-09-06 Vincent Celier - - * make.adb, makeusg.adb, switch-m.adb, switch-m.ads, make_util.adb, - make_util.ads, sinput.adb, sinput.ads, clean.adb, gnatls.adb, - gnatname.adb: Remove the Project Manager from the GNAT tools. - * gcc-interface/Makefile.in: ditto. - -2017-09-06 Bob Duff - - * sem_util.ads: Minor comment fix. - -2017-09-06 Ed Schonberg - - * sem_ch12.adb (Analyze_Associations, case of Formal_Package): - Generate a freeze node for the actual of a formal package, if - the actual is declared in the same unit and has a corresponding - body, to prevent the current instance from being frozen before - the actual is. - -2017-09-06 Eric Botcazou - - * sem_ch7.adb (Entity_Table_Size): Change to nearest prime number. - -2017-09-06 Yannick Moy - - * sem_warn.adb: Minor refactoring. - -2017-09-06 Ed Schonberg - - * einfo.ads, einfo.adb (Get_Classwwide_Pragma): New utility, - to retrieve the inherited classwide precondition/postcondition - of a subprogram. - * freeze.adb (Freeze_Entity): Use Get_Classwide_Pragma when - freezing a subprogram, to complete the generation of the - corresponding checking code. - -2017-09-06 Hristian Kirtchev - - * exp_util.adb (Is_Controlled_Indexing): New routine. - (Is_Displace_Call): Use routine Strip to remove indirections. - (Is_Displacement_Of_Object_Or_Function_Result): Code clean up. Add a - missing case of controlled generalized indexing. - (Is_Source_Object): Use routine Strip to remove indirections. - (Strip): New routine. - -2017-09-06 Bob Duff - - * sysdep.c (__gnat_has_cap_sys_nice): If HAVE_CAPABILITY is defined, - we include the proper header. Otherwise, we just declare the necessary - things from the capabilities library. This is so we can build on - machines without that library, while still enabling that library. - At run time, we're using weak symbols, so __gnat_has_cap_sys_nice will - simply return 0 if the library is not present, or not included - in the link. - -2017-09-06 Pierre-Marie de Rodat - - * exp_dbug.adb (Debug_Renaming_Declaration): Do not create an encoding - for renamings that involve function calls in prefix form. - -2017-09-06 Bob Duff - - * sem_ch3.adb (Analyze_Subtype_Declaration): - Set Has_Delayed_Freeze on a subtype of an incomplete type. - -2017-09-06 Pierre-Marie de Rodat - - * par_sco.adb (Extend_Statement_Sequence): When the accept statement - has no parameter specification and no entry index, use the entry name - as the end of the generated SCO statement. - -2017-09-06 Steve Baird - - * exp_util.adb (Side_Effect_Free): For CodePeer (only) treat - uses of 'Image and related attributes as having side effects in - order to avoid replicating such uses. - * pprint.ads (Expression_Image) Add new generic formal flag - Hide_Temp_Derefs. The flag defaults to False; CodePeer will - (eventually) override the default. - * pprint.adb (Expression_Image) If the new flag is set, then - suppress the ".all" suffix when displaying a dereference whose - prefix is a use of a value-capturing compiler temp of the sort - generated by Expr_Util.Remove_Side_Effects . - * exp_attr.adb, g-catiio.adb, inline.adb, sem_attr.adb, sem_ch13.adb, - sem_ch7.adb, sem_dim.adb, sem_util.adb, sem_util.ads, sem_warn.adb: - Minor reformatting. - * inline.adb: Minor wording change. - -2017-09-06 Eric Botcazou - - * sem_ch7.adb: Update comment. - -2017-09-06 Yannick Moy - - * einfo.adb, einfo.ads (Is_Subprogram_Or_Entry): New predicate. - * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Use new function. - * sem_util.adb, sem_util.ads (Within_Protected_Type): Renaming - with slight modification from Is_Subp_Or_Entry_Inside_Protected, - so that applies to any entity. - -2017-09-06 Yannick Moy - - * sem_ch3.adb (Derived_Type_Declaration): Use - Incomplete_Or_Partial_View rather than local Find_Partial_View. - -2017-09-06 Javier Miranda - - * g-catiio.ads, g-catiio.adb (Value): Extended to parse an UTC time - following ISO-8861. - -2017-09-06 Ed Schonberg - - * sem_dim.adb (Analyze_Dimension): In an instance, a type - conversion takes its dimensions from the expression, not from - the context type. - (Dimensions_Of_Operand): Ditto. - -2017-09-06 Ed Schonberg - - * exp_ch6.adb (Expand_Call_Helper): Do not optimize calls to - null procedures when GNAT coverage is used, so that their (empty) - bodies are properly covered. - -2017-09-06 Bob Duff - - * sem_ch13.adb (Resolve_Aspect_Expressions): If - the entity is a type with discriminants, make the discriminants - directly visible in aspect clauses. - -2017-09-06 Ed Schonberg - - * sem_res.adb (Resolve_Arithmentic_Op): If both operands are - Universal_Real and the context is a floating-point type, resolve - both operands to the target type. - -2017-09-06 Hristian Kirtchev - - * a-comlin.adb, exp_aggr.adb, exp_ch6.adb, frontend.adb, gnatbind.adb, - sem_ch3.adb, sem_util.adb: Minor reformatting. - -2017-09-06 Yannick Moy - - * freeze.adb (Check_Inherited_Conditions): Rewriting - of inherited preconditions and postconditions should only occur - in GNATprove mode, that is, when GNATprove_Mode is True, not to - be confused with SPARK_Mode being On. - -2017-09-06 Yannick Moy - - * sem_warn.adb (Check_References): Take into - account possibility of attribute reference as original node. - -2017-09-06 Yannick Moy - - * exp_attr.adb (Expand_N_Attribute_Reference): Protect against invalid - use of attribute. - -2017-09-06 Eric Botcazou - - * inline.adb (Split_Unconstrained_Function): Also set Is_Inlined - on the procedure created to encapsulate the body. - * sem_ch7.adb: Add with clause for GNAT.HTable. - (Entity_Table_Size): New constant. - (Entity_Hash): New function. - (Subprogram_Table): New instantiation of GNAT.Htable.Simple_HTable. - (Is_Subprogram_Ref): Rename into... - (Scan_Subprogram_Ref): ...this. Record references to subprograms in - the table instead of bailing out on them. Scan the value of constants - if it is not known at compile time. - (Contains_Subprograms_Refs): Rename into... - (Scan_Subprogram_Refs): ...this. - (Has_Referencer): Scan the body of all inlined subprograms. Reset the - Is_Public flag on subprograms if they are not actually referenced. - (Hide_Public_Entities): Beef up comment on the algorithm. - Reset the table of subprograms on entry. - -2017-09-06 Yannick Moy - - * inline.adb: Add comments to Can_Be_Inlined_In_GNATprove_Mode. - -2017-09-06 Javier Miranda - - * exp_aggr.adb (Component_Not_OK_For_Backend): The C backend - cannot handle a type conversion of an array as an aggregate - component. - -2017-09-06 Bob Duff - - * g-comlin.adb (Try_Help): Remove ".exe" so we - get the same results on windows and unix. - -2017-09-06 Justin Squirek - - * exp_imgv.adb (Expand_Image_Attribute), - (Expand_Wide_Image_Attribute), (Expand_Wide_Wide_Image_Attribute): - Added case to handle new-style 'Image expansion - (Rewrite_Object_Image): Moved from exp_attr.adb - * exp_attr.adb (Expand_N_Attribute_Reference): Modified Image - attribute cases so that the relevant subprograms in exp_imgv.adb - handle all expansion. - (Rewrite_Object_Reference_Image): Moved to exp_imgv.adb - * sem_attr.adb (Analyze_Attribute): Modified Image attribute - cases to call common function Analyze_Image_Attribute. - (Analyze_Image_Attribute): Created as a common path for all - image attributes (Check_Object_Reference_Image): Removed - * sem_util.ads, sem_util.adb (Is_Image_Applied_To_Object): - Removed and refactored into Is_Object_Image (Is_Object_Image): - Created as a replacement for Is_Image_Applied_To_Object - -2017-09-06 Yannick Moy - - * sem_prag.adb (Analyze_Depends_In_Decl_Part): Add continuation - message for missing input. - -2017-09-06 Yannick Moy - - * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Prevent inlining - of protected subprograms and entries. - * sem_util.adb, sem_util.ads (Is_Subp_Or_Entry_Inside_Protected): - New function to detect when a subprogram of entry is defined - inside a protected object. - -2017-09-06 Bob Duff - - * sysdep.c (__gnat_has_cap_sys_nice): New function to determine - whether the current process has the CAP_SYS_NICE capability. - * s-taprop-linux.adb (Get_Ceiling_Support): Update this to allow - ceiling priorities if the current process has the CAP_SYS_NICE - capability. - -2017-09-06 Bob Duff - - * a-comlin.ads, a-comlin.adb (Argument): Move the constraint - check back to the body, because SPARK is not yet ready for - "or else raise Constraint_Error". - -2017-09-06 Ed Schonberg - - * exp_ch6.adb (Expand_Call_Helper): Replace call to null - procedure by a single null statement, after evaluating the - actuals that require it. - -2017-09-06 Javier Miranda - - * exp_aggr.adb (Backend_Processing_Possible.Component_Check): - Generating C code improve the code that checks the use of nested - aggregates to initialize object declarations. - -2017-09-06 Yannick Moy - - * sem_ch3.adb (Derived_Type_Declaration): Detect - violations of new rule SPARK RM 3.4(1). Also refactor existing - check to use the new function Find_Partial_View. - -2017-09-06 Vincent Celier - - * gnatcmd.adb: gnat ls -V -P... invokes gprls -V -P... The code - from the Prj hierarchy has been removed from the GNAT driver. - -2017-09-06 Ed Schonberg - - * sem_type.adb (Interface_Present_In_Ancestor): Within an - expression function, or within a spec expression (default value, - etc) a reference to an incomplete type is legal: legality of - the operation will be checked when some related entity (type, - object or subprogram) is frozen. - -2017-09-06 Gary Dismukes - - * exp_ch5.adb, s-diinio.ads, sem_ch4.adb, s-diflio.ads: Minor spelling - adjustments and a typo fix. - -2017-09-06 Yannick Moy - - * sem_res.adb (Resolve_Call): Do not issue info - message about inlining of calls to functions in assertions, - for functions whose body has not been seen yet. - -2017-09-06 Bob Duff - - * a-comlin.ads, a-comlin.adb (Argument): Simplify the code, now that - we can use modern Ada in this package. - * s-resfil.ads, s-resfil.adb, a-clrefi.ads, a-clrefi.adb: - Move Ada.Command_Line.Response_File to System.Response_File, - and make Ada.Command_Line.Response_File into a rename of - System.Response_File. This is to avoid having gnatbind depend - Ada.Command_Line, which would damage the bootstrap process now - that Ada.Command_Line contains modern Ada (the raise expression). - * gnatbind.adb: Avoid dependence on - Ada.Command_Line. Depend on System.Response_File instead - of Ada.Command_Line.Response_File. Change one call to - Ada.Command_Line.Command_Name to use Fill_Arg. Change one call - to Ada.Command_Line.Argument_Count to use Arg_Count. - * gcc-interface/Make-lang.in, Makefile.rtl: Take note of the new files. - -2017-09-06 Bob Duff - - * frontend.adb (Frontend): Skip -gnatec=gnat.adc - switch, because we've already read gnat.adc by default. - -2017-09-06 Bob Duff - - * exp_ch5.adb (Get_Default_Iterator): Replace - "Assert(False)" with "return Iter", because if an iterable - type is derived from a noniterable one, then we won't find an - overriding or inherited default iterator. - -2017-09-06 Yannick Moy - - * sem_warn.adb (Warn_On_Suspicious_Index): Improve warning when the - literal index used to access a string is null or negative. - -2017-09-06 Hristian Kirtchev - - * einfo.adb (Status_Flag_Or_Transient_Decl): The attribute is now - allowed on loop parameters. - (Set_Status_Flag_Or_Transient_Decl): The attribute is now allowed - on loop parameters. - (Write_Field15_Name): Update the output for - Status_Flag_Or_Transient_Decl. - * einfo.ads: Attribute Status_Flag_Or_Transient_Decl now applies - to loop parameters. Update the documentation of the attribute - and the E_Loop_Parameter entity. - * exp_ch7.adb (Process_Declarations): Remove the bogus guard - which assumes that cursors can never be controlled. - * exp_util.adb (Requires_Cleanup_Actions): Remove the bogus - guard which assumes that cursors can never be controlled. - -2017-09-06 Hristian Kirtchev - - * exp_attr.adb, sem_util.adb, sem_attr.adb, sem_ch6.adb, sem_ch8.adb, - sem_warn.adb: Minor reformatting. - -2017-09-06 Ed Schonberg - - * sem_warn.adb (Warn_On_Overlapping_Actuals): Refine previous - fix and preserve older GNAT warning on overlapping actuals that - are not elementary types. - -2017-09-06 Justin Squirek - - * sem_attr.adb: Comment correction. - -2017-09-06 Gary Dismukes - - * sem_util.adb: Minor reformatting. - -2017-09-06 Yannick Moy - - * a-comlin.ads (Argument): Add precondition for analysis. - -2017-09-06 Yannick Moy - - * sem_res.adb (Resolve): Update message for function call as statement. - -2017-09-06 Ed Schonberg - - * sem_ch6.adb (Check_Returns): Clean up warnings coming from - generated bodies for renamings that are completions, when renamed - procedure is No_Return. - * sem_ch8.adb (Analyze_Subprogram_Renaming): Implement legality - rule in 6.5.1 (7/2): if a renaming is a completion of a subprogram - with No_Return, the renamed entity must be No_Return as well. - -2017-09-06 Hristian Kirtchev - - * exp_ch5.adb, freeze.adb, exp_ch4.adb, exp_ch6.adb, lib-xref.adb: - Minor reformatting. - -2017-09-06 Justin Squirek - - * exp_attr.adb (Expand_N_Attribute_Reference): Modified Image - attribute cases (Rewrite_Object_Reference_Image): Created to - aid the rewriting of new-style 'Image attributes. - * sem_attr.adb (Analyze_Attribute): Modified Image attribute cases - (Check_Object_Reference_Image): Created to handle verification of - 'Image with object-references as prefixes. - * sem_util.ads, sem_util.adb (Is_Image_Applied_To_Object): - Create predicate to identify cases where an 'Image attribute's - prefix applies to an object reference. - -2017-09-06 Ed Schonberg - - * freeze.adb (Freeze_Entity): Do not generate a freeze - node for a generic unit, even if it includes delayed aspect - specifications. Freeze nodes for generic entities must never - appear in the tree that reaches the back-end of the compiler. - -2017-09-06 Yannick Moy - - * treepr.adb (Print_Entity_Info): Do not print empty Elist. - -2017-09-06 Yannick Moy - - * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Do not consider calls - to subprograms in other units as possibly inlined. - -2017-09-06 Ed Schonberg - - * freeze.adb (Freeze_Entity): For a derived type that has no - explicit delayed aspects but may inherit delayed aspects from its - parent type, analyze aspect at freeze point for proper capture - of an inherited aspect. - -2017-09-06 Arnaud Charlet - - * lib-xref.adb (Get_Through_Renamings): Get through subprogram - renamings; also, avoid repeated calls to Renamed_Object when getting - through object renamings. - -2017-09-06 Ed Schonberg - - * sem_ch3.adb (Array_Type_Declaration): Handle properly an - array type declaration in a private part, when an index is a - subtype indication of a discrete type with a private partial view. - -2017-09-06 Javier Miranda - - * exp_ch4.adb (Expand_Modular_Op): Force generating - temporary to improve the generated code. - -2017-09-06 Tristan Gingold - - * s-fatgen.adb: Minor typo fix in comment. - -2017-09-06 Ed Schonberg - - * exp_ch5.adb (Make_Field_Assign): If the type - of the right-hand side has stored constraint, use its values - (except for those that are renamings of parent discriminants) - to produce additional assignments for the discriminants of the - left-hand side, which are invisible in the righ-hand side and - not retrievable as selected components. - -2017-09-06 Ed Schonberg - - * sem_util.adb (Needs_One_Formal): The first formal of such a - function must be a controlling formal, so that Obj.F (X, Y) - can have the interpretation F(Obj)(X, Y). - * sem_util.ads: Clarify documentation. - -2017-09-06 Eric Botcazou - - * table.ads, table.adb: Restore original implementation. - * namet.h (Names_Ptr): Adjust back. - (Name_Chars_Ptr): Likewise. - * uintp.h (Uints_Ptr): Likewise. - (Udigits_Ptr): Likewise. - * g-table.ads: Remove pragma Compiler_Unit_Warning. - * par_sco.adb: Do not with GNAT.Table and use Table consistently. - * scos.ads: Replace GNAT.Table with Table and adjust instantiations. - * spark_xrefs.ads: Likewise. - * scos.h: Undo latest changes. - -2017-09-06 Ed Schonberg - - * sem_ch12.adb (Analyze_Subprogram_Instantiation): Propagate - No_Return flag to instance if pragma applies to generic unit. This - must be done explicitly because the pragma does not appear - directly in the generic declaration (unlike the corresponding - aspect specification). - -2017-09-06 Eric Botcazou - - * sem_ch7.adb (Has_Referencer): Move up and expand comment - explaining the test used to detect inlining. Use same test - in second occurrence. - (Analyze_Package_Body_Helper): Minor formatting fixes. - -2017-09-06 Ed Schonberg - - * exp_ch4.adb (Handle_Changed_Representation): For an untagged - derived type with a mixture of renamed and constrained parent - discriminants, the constraint for the target must obtain the - discriminant values from both the operand and from the stored - constraint for it, given that the constrained discriminants are - not visible in the object. - * exp_ch5.adb (Make_Field_Assign): The type of the right-hand - side may be derived from that of the left-hand side (as in the - case of an assignment with a change of representation) so the - discriminant to be used in the retrieval of the value of the - component must be the entity in the type of the right-hand side. - -2017-09-06 Hristian Kirtchev - - * sem_ch3.adb, sem_ch7.adb, sem_util.adb, g-debpoo.adb, sem_ch4.adb, - sem_ch6.adb, sem_ch8.adb: Minor reformatting. - * exp_util.adb (Is_Source_Object): Account for - the cases where the source object may appear as a dereference - or within a type conversion. - * exp_ch6.adb: Fix missing space in error message. - -2017-09-06 Ed Schonberg - - * sem_prag.adb: Update description of Eliminate. - -2017-09-06 Ed Schonberg - - * sem_attr.adb (Analyze_Attribute, case 'Loop_Entry): Handle - properly an attribute reference 'Loop_Entry that appears in the - list of indices of an indexed expression, to prevent an infinite - loop in the compiler. - -2017-09-06 Bob Duff - - * s-fileio.adb (Name): Do not raise Use_Error for temp files. - -2017-09-06 Ed Schonberg - - * sem_ch4.adb (Analyze_Set_Membership): If an alternative - in a set membership is an overloaded enumeration literal, and - the type of the alternative is resolved from a previous one, - replace the entity of the alternative as well as the type, - to prevent inconsistencies between the entity and the type. - -2017-09-06 Eric Botcazou - - * ali.ads (ALIs_Record): Add No_Component_Reordering component. - (No_Component_Reordering_Specified): New switch. - * ali.adb (Initialize_ALI): Set No_Component_Reordering_Specified. - (Scan_ALI): Set No_Component_Reordering and deal with NC marker. - * bcheck.adb (Check_Consistent_No_Component_Reordering): - New check. - (Check_Configuration_Consistency): Invoke it. - * debug.adb (d.r): Toggle the effect of the switch. - (d.v): Change to no-op. - * einfo.ads (Has_Complex_Representation): - Restrict to record types. - (No_Reordering): New alias for Flag239. - (OK_To_Reorder_Components): Delete. - (No_Reordering): Declare. - (Set_No_Reordering): Likewise. - (OK_To_Reorder_Components): Delete. - (Set_OK_To_Reorder_Components): Likewise. - * einfo.adb (Has_Complex_Representation): Expect record types. - (No_Reordering): New function. - (OK_To_Reorder_Components): Delete. - (Set_Has_Complex_Representation): Expect base record types. - (Set_No_Reordering): New procedure. - (Set_OK_To_Reorder_Components): Delete. - (Write_Entity_Flags): Adjust to above change. - * fe.h (Debug_Flag_Dot_R): New macro and declaration. - * freeze.adb (Freeze_Record_Type): Remove conditional code setting - OK_To_Reorder_Components on record types with convention Ada. - * lib-writ.adb (Write_ALI): Deal with NC marker. - * opt.ads (No_Component_Reordering): New flag. - (No_Component_Reordering_Config): Likewise. - (Config_Switches_Type): Add No_Component_Reordering component. - * opt.adb (Register_Opt_Config_Switches): Copy - No_Component_Reordering onto No_Component_Reordering_Config. - (Restore_Opt_Config_Switches): Restore No_Component_Reordering. - (Save_Opt_Config_Switches): Save No_Component_Reordering. - (Set_Opt_Config_Switches): Set No_Component_Reordering. - * par-prag.adb (Prag): Deal with Pragma_No_Component_Reordering. - * sem_ch3.adb (Analyze_Private_Extension_Declaration): Also set the - No_Reordering flag from the default. - (Build_Derived_Private_Type): Likewise. - (Build_Derived_Record_Type): Likewise. Then inherit it - for untagged types and clean up handling of similar flags. - (Record_Type_Declaration): Likewise. - * sem_ch13.adb (Same_Representation): Deal with No_Reordering and - remove redundant test on Is_Tagged_Type. - * sem_prag.adb (Analyze_Pragma): Handle No_Component_Reordering. - (Sig_Flags): Likewise. - * snames.ads-tmpl (Name_No_Component_Reordering): New name. - (Pragma_Id): Add Pragma_No_Component_Reordering value. - * warnsw.adb (Set_GNAT_Mode_Warnings): Enable -gnatw.q as well. - * gcc-interface/decl.c (gnat_to_gnu_entity) : - Copy the layout of the parent type only if the No_Reordering - settings match. - (components_to_record): Reorder record types with - convention Ada by default unless No_Reordering is set or -gnatd.r - is specified and do not warn if No_Reordering is set in GNAT mode. - -2017-09-06 Ed Schonberg - - * sem_util.ads, sem_util.adb (Check_Previous_Null_Procedure): - new predicate to reject declarations that can be completions, - when there is a visible prior homograph that is a null procedure. - * sem_ch6.adb (Analyze_Null_Procedure): use it. - * sem_ch8.adb (Analyze_Subprogram_Renaming): ditto. - -2017-09-06 Thomas Quinot - - * s-regpat.adb (Compile.Parse_Literal): Fix handling of literal - run of 253 characters or more. - -2017-09-06 Ed Schonberg - - * einfo.adb (Designated_Type): Use Is_Incomplete_Type to handle - properly incomplete subtypes that may be created by explicit or - implicit declarations. - (Is_Base_Type): Take E_Incomplete_Subtype into account. - (Subtype_Kind): Ditto. - * sem_ch3.adb (Build_Discriminated_Subtype): Set properly the - Ekind of a subtype of a discriminated incomplete type. - (Fixup_Bad_Constraint): Use Subtype_Kind in all cases, including - incomplete types, to preserve error reporting. - (Process_Incomplete_Dependents): Do not create a subtype - declaration for an incomplete subtype that is created internally. - * sem_ch7.adb (Analyze_Package_Specification): Handle properly - incomplete subtypes that do not require a completion, either - because they are limited views, of they are generic actuals. - -2017-09-06 Hristian Kirtchev - - * checks.adb (Insert_Valid_Check): Remove the - suspicious manipulation of the Do_Range_Check flag as ths is - no linger needed. Suppress validity check when analysing the - validation variable. - -2017-09-06 Philippe Gil - - * g-debpoo.adb: adapt GNAT.Debug_Pools to allow safe thread - GNATCOLL.Memory - -2017-09-06 Bob Duff - - * sem_elim.adb: Minor comment fix. - -2017-09-06 Ed Schonberg - - * sem_util.adb (Is_Object_Reference): A function call is an - object reference, and thus attribute references for attributes - that are functions (such as Pred and Succ) as well as predefined - operators are legal in contexts that require an object, such as - the prefix of attribute Img and the Ada2020 version of 'Image. - -2017-09-06 Hristian Kirtchev - - * exp_util.adb, einfo.adb, sem_attr.adb, exp_ch4.adb, gnatls.adb, - exp_ch3.adb, xoscons.adb: Minor reformatting. - -2017-09-06 Raphael Amiard - - * a-chtgop.ads, a-chtgop.adb: Add versions of First and Next with - Position parameter. If supplied, use it to provide efficient iteration. - * a-cohase.ads, a-cohase.adb, a-cihama.ads, a-cihama.adb, - a-cohama.ads, a-cohama.adb: Add/Use Position to provide efficient - iteration. - -2017-09-06 Ed Schonberg - - * exp_util.adb (Build_Allocate_Deallocate_Proc): If the - designated type is class-wide and the expression is an unchecked - conversion, preserve the conversion when checking the tag of the - designated object, to prevent spurious semantic errors when the - expression in the conversion has an untagged type (for example - an address attribute). - -2017-09-06 Ed Schonberg - - * sem_res.adb (Resolve_Entry_Call): Check whether a protected - operation is subject to a pragma Eliminate. - -2017-09-06 Ed Schonberg - - * sem_elim.ads, exp_ch4.adb: Minor reformatting. - -2017-09-06 Eric Botcazou - - * fe.h (Eliminate_Error_Msg): Remove. - -2017-09-05 Richard Sandiford - - * gcc-interface/utils.c (make_packable_type): Update call to - mode_for_size_tree. - -2017-09-05 Richard Sandiford - - * gcc-interface/utils2.c (build_load_modify_store): - Use int_mode_for_size. - -2017-09-05 Eric Botcazou - - PR ada/62235 - * gcc-interface/decl.c (gnat_to_gnu_entity): Skip regular processing - for Itypes that are E_Record_Subtype with a cloned subtype. - : Use the DECL of the cloned type directly, if any. - -2017-09-05 Eric Botcazou - - * gcc-interface/trans.c (convert_with_check): Use a custom base type - if the base type of the expression has a different machine mode. - Rename a couple of parameters and local variable. - -2017-09-05 Eric Botcazou - - * gcc-interface/trans.c (Attribute_to_gnu) : Do not strip - conversions around prefixes that are not references. - -2017-09-05 Eric Botcazou - - * gcc-interface/utils.c (unchecked_convert): When the result type is a - non-biased integral type with size 0, set the result to 0 directly. - -2017-09-05 Eric Botcazou - - * gcc-interface/gigi.h (renaming_from_generic_instantiation_p): Turn to - (renaming_from_instantiation_p): ...this. - * gcc-interface/decl.c (gnat_to_gnu_entity): Use inline predicate - instead of explicit tests on kind of entities. Adjust for renaming. - (gnat_to_gnu_profile_type): Likewise. - (gnat_to_gnu_subprog_type): Likewise. - * gcc-interface/trans.c (Identifier_to_gnu): Likewise. - (Case_Statement_to_gnu): Likewise. - (gnat_to_gnu): Likewise. - (process_freeze_entity): Likewise. - (process_type): Likewise. - (add_stmt_with_node): Adjust for renaming. - * gcc-interface/utils.c (gnat_pushdecl): Adjust for renaming. - (renaming_from_generic_instantiation_p): Rename to... - (renaming_from_instantiation_p): ...this. Use inline predicate. - (pad_type_hasher::keep_cache_entry): Fold. - -2017-09-05 Eric Botcazou - - * gcc-interface/trans.c (adjust_for_implicit_deref): New function. - (gnat_to_gnu) : Translate result type first. - (N_Indexed_Component): Invoke adjust_for_implicit_deref on the prefix. - (N_Slice): Likewise. - (N_Selected_Component): Likewise. Do not try again to translate it. - (N_Free_Statement): Invoke adjust_for_implicit_deref on the expression. - -2017-09-05 Eric Botcazou - - * repinfo.ads: Document new treatment of dynamic values. - (TCode): Bump upper bound to 29. - (Dynamic_Val): New constant set to 29. - * repinfo.adb (Print_Expr) : New case. - (Rep_Value) : Likewise. - * repinfo.h (Dynamic_Val): New macro. - * gcc-interface/decl.c (annotate_value): Tidy up and cache result for - DECL_P nodes too. - : Set TCODE instead of recursing. - : Set TCODE instead of calling Create_Node manually. - : New case. - : Fold conversions into inner operations. - : Adjust. - : Do not fall through. - -2017-09-05 Eric Botcazou - - * gcc-interface/trans.c (Call_to_gnu): If this is a function call and - there is no target, do not create a temporary for the return value for - an allocator either. - -2017-09-05 Eric Botcazou - - * gcc-interface/trans.c (pos_to_constructor): Skip conversions to an - unconstrained array type. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * gcc-interface/decl.c (validate_size): Use NARROWEST_INT_MODE - instead of GET_CLASS_NARROWEST_MODE (MODE_INT). - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * gcc-interface/decl.c (check_ok_for_atomic_type): Use - is_a . - * gcc-interface/trans.c (Pragma_to_gnu): Likewise. - * gcc-interface/utils.c (gnat_type_for_mode): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * gcc-interface/decl.c (gnat_to_gnu_entity): Use int_mode_for_size - instead of mode_for_size. - (gnat_to_gnu_subprog_type): Likewise. - * gcc-interface/utils.c (make_type_from_size): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * gcc-interface/misc.c (fp_prec_to_size): Use opt_scalar_float_mode. - (fp_size_to_prec): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * gcc-interface/utils.c (gnat_type_for_mode): Use is_a - instead of SCALAR_FLOAT_MODE_P. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * gcc-interface/decl.c (validate_size): Update use of - GET_MODE_WIDER_MODE, forcing a wider mode to exist. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * gcc-interface/misc.c (fp_prec_to_size): Use new mode iterators. - (fp_size_to_prec): Likewise. - -2017-08-29 Martin Liska - - PR other/39851 - * gcc-interface/trans.c (Pragma_to_gnu): Set argument to NULL. - -2017-08-08 Martin Liska - - * gcc-interface/trans.c: Include header files. - -2017-07-29 Jakub Jelinek - - * gcc-interface/utils.c (gnat_write_global_declarations): Pass false - as new argument to the imported_module_or_decl debug hook. - -2017-07-25 Javier Miranda - - * checks.adb (Apply_Divide_Checks): Ensure that operands are not - evaluated twice. - -2017-07-19 Jakub Jelinek - - * gcc-interface/ada-tree.h (TYPE_OBJECT_RECORD_TYPE, - TYPE_GCC_MIN_VALUE): Use TYPE_MIN_VALUE_RAW instead of TYPE_MINVAL. - (TYPE_GCC_MAX_VALUE): Use TYPE_MAX_VALUE_RAW instead of TYPE_MAXVAL. - -2017-07-18 Mike Frysinger - - * gcc-interface/Makefile.in (../../gnatmake$(exeext)): Delete $(P). - (../../gnatlink$(exeext)): Likewise. - -2017-07-15 John Paul Adrian Glaubitz - - PR ada/81446 - * system-linux-m68k.ads: Add pragma No_Elaboration_Code_All. - (Backend_Overflow_Checks): Set to True. - -2017-06-23 Jakub Jelinek - - * gcc-interface/trans.c (gnat_to_gnu): Initialize sync to false. - -2017-06-21 Pierre-Marie de Rodat - - * gcc-interface/ada-tree.h (DECL_FUNCTION_IS_DEF): Update copyright - notice. New macro. - * gcc-interface/trans.c (Subprogram_Body_to_gnu): Tag the subprogram - as a definition. - (Compilation_Unit_to_gnu): Tag the elaboration procedure as a - definition. - * gcc-interface/decl.c (gnat_to_gnu_entity): Tag declarations of - imported subprograms for the current compilation unit as - definitions. Disable debug info for references to variables. - * gcc-interface/gigi.h (create_subprog_decl): Update declaration. - * gcc-interface/utils.c (gnat_pushdecl): Add external DECLs that are - not built-in functions to their binding scope. - (create_subprog_decl): Add a DEFINITION parameter. If it is true, tag - the function as a definition. Update all callers. - (gnat_write_global_declarations): Emit debug info for imported - functions. Filter out external variables for which debug info - is disabled. - -2017-06-15 Nicolas Boulenguez - - PR ada/81105 - * gcc-interface/Makefile.in (x86 kfreebsd): Adjust system.ads setting. - (i[3456]86-pc-gnu): Likewise. - (x86_64 kfreebsd): Likewise. - -2017-06-12 Eric Botcazou - - PR bootstrap/80897 - * exp_ch3.adb (Make_Predefined_Primitive_Specs): Use Positive index. - -2017-06-12 Eric Botcazou - - PR ada/81070 - * s-interr-hwint.adb: Reinstate. - * gcc-interface/Makefile.in (RTEMS): Use it again. - -2017-06-08 Olivier Hainque - - * vx_crtbegin_auto.c: Update year in copyright notice. - * vx_crtbegin.c: Likewise. - * vx_crtbegin.inc: Likewise. - * vx_crtend.c: Likewise. - -2017-06-07 Sebastian Huber - - * Makefile.in (rtems): Use TLS implementation for s-tpopsp.adb. - * s-tpopsp-rtems.adb: Delete. - -2017-06-02 Olivier Hainque - - * vx_crtbegin_auto.c: New file. - * vx_crtbegin.c: New file. - * vx_crtbegin.inc: New file. - * vx_crtend.c: New file. - -2017-05-25 Jonathan Wakely - - * gcc-interface/utils2.c (compare_elmt_bitpos): Remove redundant - const qualifiers that cause -Wignored-qualifiers warnings. - -2017-05-22 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity): Skip regular processing - for Itypes that are E_Access_Subtype. - : Use the DECL of the base type directly. - -2017-05-22 Ed Schonberg - Eric Botcazou - - * sem_ch4.adb (Analyze_Call): In Ada2012 an incomplete type from a - limited view may appear in the profile of a function, and a call to - that function in another unit in which the full view is available must - use this full view to spurious type errors at the point of call. - * inline.adb (Analyze_Inlined_Bodies): Remove restriction on loading - of parent body with a with clause for the main unit. - * gcc-interface/decl.c (defer_limited_with_list): Document new usage. - (gnat_to_gnu_entity) : Handle completed Taft Amendment - types declared in external units like types from limited with clauses. - Adjust final processing of defer_limited_with_list accordingly. - * gcc-interface/trans.c (gnat_to_gnu) < N_Selected_Component>: Try - again to translate the prefix after the field if it is incomplete. - -2017-05-22 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_field): Do not enforce strict - alignment for simple volatile fields and remove associated errors. - -2017-05-15 Eric Botcazou - - * gcc-interface/gigi.h (get_elaboration_procedure): Delete. - * gcc-interface/trans.c (get_elaboration_procedure): Make static. - -2017-05-15 Pierre-Marie de Rodat - - * gcc-interface/utils.c (can_materialize_object_renaming_p): - Synchronize with GNAT's Exp_Dbug.Debug_Renaming_Declaration: - process Original_Node instead of expanded names. - -2017-05-15 Eric Botcazou - - * gcc-interface/trans.c (return_value_ok_for_nrv_p): Only apply the - addressability check in the constrained case. - -2017-05-15 Eric Botcazou - - * gcc-interface/trans.c (Identifier_to_gnu): Also accept incomplete - types not coming from a limited context. - -2017-05-15 Eric Botcazou - - * gcc-interface/trans.c (Compilation_Unit_to_gnu): Skip subprograms on - the inlined list that are not public. - * gcc-interface/utils.c (create_subprog_decl): Clear TREE_PUBLIC if - there is a pragma Inline_Always on the subprogram. - -2017-05-15 Eric Botcazou - - * gcc-interface/trans.c (gnat_to_gnu) : Fix formatting. - : Use properly typed constants. - (extract_values): Move around. - (pos_to_constructor): Minor tweaks. - (Sloc_to_locus): Fix formatting. - * gcc-interface/utils.c (process_deferred_decl_context): Minor tweaks. - * gcc-interface/gigi.h (MARK_VISITED): Remove blank line. - (Gigi_Equivalent_Type): Adjust head comment. - * gcc-interface/decl.c (Gigi_Equivalent_Type): Likewise. - -2017-05-15 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : When there - is a representation clause on an extension, propagate the alignment of - the parent type only if the platform requires strict alignment. - -2017-05-12 Eric Botcazou - - * system-linux-arm.ads (Memory_Size): Use Long_Integer'Size - instead of Word_Size. - - Revert - 2017-03-28 Andreas Schwab - - PR ada/80117 - * system-linux-aarch64-ilp32.ads: New file. - * gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS_COMMON): Rename - from LIBGNAT_TARGET_PAIRS. - (LIBGNAT_TARGET_PAIRS_32, LIBGNAT_TARGET_PAIRS_64): Define. - (LIBGNAT_TARGET_PAIRS): Use LIBGNAT_TARGET_PAIRS_COMMON, and - LIBGNAT_TARGET_PAIRS_64 or LIBGNAT_TARGET_PAIRS_32 for -mabi=lp64 - or -mabi=ilp32, resp. - -2017-05-10 H.J. Lu - - PR ada/80626 - * system-linux-x86.ads (Memory_Size): Use Long_Integer'Size - instead of Word_Size. - -2017-05-10 Bernd Edlinger - - * raise-gcc.c (exception_class_eq): Make ec parameter const. - -2017-05-02 Richard Biener - - * gcc-interface/misc.c (gnat_post_options): Do not set - -fstrict-overflow. - -2017-05-02 Eric Botcazou - - * gcc-interface/trans.c (assoc_to_constructor): Make sure - Corresponding_Discriminant is only called on discriminants. - Skip the saving of the result only for them. - (gnat_to_gnu) : Likewise. - : Translate the result type first. - (gigi): Set TREE_NOTHROW on Begin_Handler. - (stmt_list_cannot_raise_p): New predicate. - (Exception_Handler_to_gnu_gcc): Emit a simple final call instead of - a cleanup if the statements of the handler cannot raise. - (process_freeze_entity): Use Is_Record_Type. - (process_type): Likewise. - -2017-05-02 Eric Botcazou - - * einfo.ads (Corresponding_Record_Component): New alias - for Node21 used for E_Component and E_Discriminant. - * einfo.adb (Corresponding_Record_Component): New function. - (Set_Corresponding_Record_Component): New procedure. - (Write_Field21_Name): Handle Corresponding_Record_Component. - * sem_ch3.adb (Inherit_Component): Set - Corresponding_Record_Component for every component in - the untagged case. Clear it afterwards for non-girder - discriminants. - * gcc-interface/decl.c (gnat_to_gnu_entity) - : For a derived untagged type with discriminants - and constraints, apply the constraints to the layout of the - parent type to deduce the layout. - (field_is_aliased): Delete. - (components_to_record): Test DECL_ALIASED_P directly. - (annotate_rep): Check that fields are present except for - an extension. - (create_field_decl_from): Add DEBUG_INFO_P - parameter and pass it in recursive and other calls. Add guard - for the manual CSE on the size. - (is_stored_discriminant): New predicate. - (copy_and_substitute_in_layout): Consider only - stored discriminants and check that original fields are present - in the old type. Deal with derived types. Adjust call to - create_variant_part_from. - -2017-05-02 Ed Schonberg - - * exp_ch6.adb (Expand_Call_Helper): When locating the - accessibility entity created for an access parameter, handle - properly a reference to a formal of an enclosing subprogram. if - the reference appears in an inherited class-wide condition, it - is the rewriting of the reference in the ancestor expression, - but the accessibility entity must be that of the current formal. - -2017-05-02 Javier Miranda - - * exp_ch4.adb (Expand_Non_Binary_Modular_Op): New subprogram. - (Expand_N_Op_Add, Expand_N_Op_Divide, Expand_N_Op_Minus, - Expand_N_Op_Multiply, Expand_N_Op_Or, Expand_N_Op_Subtract): - Call Expand_Non_Binary_Modular_Op. - -2017-05-02 Eric Botcazou - - * sem_ch3.adb (Build_Derived_Private_Type): If the parent type - has discriminants, do not override the Stored_Constraint list of - the full view of the derived type with that of the derived type. - -2017-05-02 Bob Duff - - * sem_attr.adb (Attribute_Enum_Rep): Disallow T'Enum_Rep. - -2017-05-02 Vasiliy Fofanov - - * s-os_lib.ads: Minor typo fix. - -2017-05-02 Vasiliy Fofanov - - * gnatls.adb: Merge and refactor code from Prj.Env and remove - this deprecated dependency. - -2017-05-02 Ed Schonberg - - * exp_util.ads: minor comment addition. - -2017-05-02 Eric Botcazou - - * sem_ch3.adb (Build_Derived_Record_Type): Fix a few typos and - pastos in part #3 of the head comment. - -2017-05-02 Ed Schonberg - - * exp_ch3.adb (Freeze_Type): Do not generate an invariant - procedure body for a local (sub)type declaration within a - predicate function. Invariant checks do not apply to these, and - the expansion of the procedure will happen in the wrong scope, - leading to misplaced freeze nodes. - -2017-05-02 Ed Schonberg - - * exp_util.adb (Insert_Library_Level_Action): Use proper scope - to analyze generated actions. If the main unit is a body, - the required scope is that of the corresponding unit declaration. - -2017-05-02 Arnaud Charlet - - * einfo.adb (Declaration_Node): flip branches of - an IF statement to avoid repeated negations in its condition; - no change in semantics, only to improve readability. - -2017-05-02 Arnaud Charlet - - * sem_case.adb: Remove extra spaces in parameter declarations. - -2017-05-02 Justin Squirek - - * usage.adb: Replace space with hyphen ("run time" -> "run-time") - in usage line for new -gnatwE switch. - -2017-05-02 Claire Dross - - * a-cofuve.ads (Remove): Remove unnecessary - conditions in precondition. - -2017-05-02 Vasiliy Fofanov - - * a-stream.ads, exp_imgv.adb, sem_ch10.adb, - sem_attr.adb, s-finmas.ads, osint.adb: Minor typo fix. - -2017-05-02 Justin Squirek - - * sem_ch4.adb (Analyze_Case_Expression): Add check for valid - alternative expression. - * sem_res.adb (Resolve_Case_Expression): Ditto. - -2017-05-02 Ed Schonberg - - * exp_disp.adb (Set_All_DT_Position, In_Predef_Prim_DT): - Refine predicate for the case where the primitive operation - is a renaming of equality. An overriding operation that is - a user-defined renaming of predefined equality inherits its - slot from the overridden operation. Otherwise it is treated - as a predefined op and occupies the same predefined slot as - equality. A call to it is transformed into a call to its alias, - which is the predefined equality. A dispatching call thus uses - the proper slot if operation is further inherited and called - with class-wide arguments. - -2017-05-02 Justin Squirek - - * errout.adb (Set_Msg_Text): Add a case to switch the message - type when the character '[' is detected signifying a warning - about a run-time exception. - * opt.ads Add a new Warning_Mode value for new switch - * switch-b.adb (Scan_Binder_Switches): Add case for the binder - to handle new warning mode - * usage.adb (Usage): Add usage entry for -gnatwE - * warnsw.adb (Set_Warning_Switch): Add case for the new switch - -2017-05-02 Ed Schonberg - - * sem_prag.adb (Process_Conversion): Reject an intrinsic operator - declaration that operates on some fixed point type. - -2017-05-02 Justin Squirek - - * a-crbtgo.adb, s-taasde.adb: Remove unused use-type clauses. - -2017-05-02 Hristian Kirtchev - - * sem_ch6.adb (Analyze_Null_Procedure): Revert previous change. - -2017-05-02 Justin Squirek - - * sem_ch4.adb (Analyze_Case_Expression): Add check for valid - expression (Analyze_If_Expression): Add check for valid condition - * sem_eval.adb (Eval_Case_Expression): Add check for error posted - on case-expression - * sem_res.adb (Resolve_If_Expression): Add check for valid - condition and then-expression. - -2017-05-02 Ed Schonberg - - * exp_ch3.adb (Build_Initialization_Call): Generate a null - statement if the initialization call is a null procedure, as - can happen with a controlled type with no explicit Initialize - procedure, or an array of such. - * exp_ch7.adb (Process_Object_Declaration): For a type with - controlled components that has a trivial Initialize procedure, - insert declaration for finalization counter after object - declaration itself. - (Make_Deep_Array_Body, Build_Initialize_statements): Do not create - finalization block and attendant declarations if component has - a trivial Initialize procedure. - (Make_Init_Call): Do not generate a call if controlled type has - a trivial Initialize procedure. - -2017-05-02 Eric Botcazou - - * g-forstr.ads (Data): Move Format component last. - * g-forstr.adb ("+"): Adjust for above change. - * g-rewdat.ads (Buffer): Move Buffer, Current, Pattern and Value last. - * g-sechas.ads (Context): Move Key last. - * g-socket.ads (Service_Entry_Type): Move Aliases last. - * s-fileio.adb (Temp_File_Record): Move Name last. - * s-regexp.adb (Regexp_Value): Move Case_Sensitive last. - * xr_tabls.ads (Project_File): Move Src_Dir and Obj_Dir last. - -2017-05-02 Jerome Lambourg - - * bindusg.adb, bindgen.adb, gnatbind.adb, opt.ads: Remove the -nognarl - switch introduced recently. finally not needed. - -2017-05-02 Hristian Kirtchev - - * sem_ch6.adb (Analyze_Null_Procedure): Set the - Corresponding_Body link for a null procedure declaration. - -2017-05-02 Eric Botcazou - - * atree.h (Flag290): Add missing terminating parenthesis. - * einfo.adb (Is_Class_Wide_Clone): Use Flag290. - (Set_Is_Class_Wide_Clone): Likewise. - * einfo.ads (Is_Class_Wide_Clone): Likewise. - -2017-05-02 Gary Dismukes - - * checks.ads (Null_Exclusion_Static_Checks): Add Boolean - parameter Array_Comp to indicate the case of an array object - with null-excluding components. - * checks.adb (Null_Exclusion_Static_Checks): - Call Compile_Time_Constraint_Error instead of - Apply_Compile_Time_Constraint_Error in the component case. Also - call that when Array_Comp is True, with an appropriate warning for - the array component case. Only create an explicit initialization - by null in the case of an object of a null-excluding access type - (and no longer do that in the component case). - * sem_ch3.adb (Check_Component): Add a Boolean parameter - Array_Comp defaulted to False. Pass Empty for the Comp - actual when calling Null_Exclusion_Static_Checks in the case - where Comp_Decl matches Object_Decl, because we don't have a - component in that case. In the case of an object or component - of an array type, pass True for Array_Comp on the recursive call - to Check_Component. - -2017-05-02 Bob Duff - - * s-taprop-linux.adb (Prio_To_Linux_Prio): New function to correctly - compute the linux priority from the Ada priority. Call this everywhere - required. In particular, the previous version was not doing this - computation when setting the ceiling priority in various places. It - was just converting to C.int, which results in a ceiling that is off - by 1. - -2017-05-02 Ed Schonberg - - * sem_ch3.adb: Comment predicate inheritance. - -2017-05-02 Tristan Gingold - - * s-trasym.ads: Add comment. - -2017-05-02 Bob Duff - - * sem_elab.adb, sem_elab.ads: Minor comment fixes. - * sem_ch4.adb: Minor reformatting. - * s-taprop-linux.adb, s-taspri-posix.ads: Code refactoring. - * s-taspri-posix-noaltstack.ads: Minor refactoring. - * sinput.ads: Minor typo fix. - -2017-05-02 Ed Schonberg - - * exp_ch9.adb (Discriminated_Size): Moved to sem_util. - * sem_util.ads, sem_util.adb (Discriminated_Size): Predicate moved - here from exp_ch9, to recognize objects whose creation requires - dynamic allocation, so that the proper warning can be emitted - when restriction No_Implicit_Heap_Allocation is in effect. - * sem_ch3.adb (Analyze_Object_Declaration): Use Discriminated_Size - to emit proper warning when an object that requires dynamic - allocation is declared. - -2017-05-02 Tristan Gingold - - * s-trasym.ads, s-trasym.adb (Enable_Cache): New. - -2017-05-02 Ed Schonberg - - * sem_ch4.adb (Find_Equality_Types, Try_One_Interp): The same relaxed - visibility rules for equality operators that apply within an - instantiation apply within an inlined body. - * sem_type.adb (Add_One_Interp): ditto. - -2017-05-02 Hristian Kirtchev - - * sem_prag.adb (Analyze_Pragma): Forbid pragma Contract_Cases on null - procedures. - -2017-05-02 Eric Botcazou - - * snames.ads-tmpl - (Name_Assume, Name_Attribute_Definition, Name_Loop_Optimize, - Name_No_Tagged_Streams): Move to regular pragmas. Add - placeholders for Default_Scalar_Storage_Order, Dispatching_Domain, - and Secondary_Stack_Size. - (Pragma_Id): Move Pragma_Assume, - Pragma_Attribute_Definition, Pragma_Loop_Optimize and - Pragma_No_Tagged_Streams to second part. - -2017-05-02 Hristian Kirtchev - - * exp_attr.adb: Minor reformatting. - -2017-05-02 Ed Schonberg - - * sem_ch4.adb (Analyze_Selected_Component): Improve error - detection for illegal references to private components or - operations of a protected type in the body of the type. - -2017-05-02 Eric Botcazou - - * opt.ads: Add missing GNAT markers in comments. - * opt.adb (Set_Opt_Config_Switches): Do not override earlier - settings of Optimize_Alignment at the end. - -2017-05-02 Hristian Kirtchev - - * checks.adb (Apply_Constraint_Check): Do not apply - a discriminant check when the associated type is a constrained - subtype created for an unconstrained nominal type. - * exp_attr.adb: Minor reformatting. - -2017-05-02 Bob Duff - - * sem_ch3.adb (OK_For_Limited_Init_In_05): Handle correctly - the N_Raise_Expression case. - * sem_ch6.adb (Check_Limited_Return): Minor: clarify comment, - and add assertions. - -2017-05-02 Yannick Moy - - * exp_ch4.adb (Expand_N_Op_Ne): Do not bump parenthese level and - optimize length comparison in GNATprove mode. - * exp_spark.adb (Expand_SPARK_Op_Ne): New function to rewrite - operator /= into negation of operator = when needed. - (Expand_SPARK): Call new - function to expand operator /=. - -2017-05-02 Ed Schonberg - - * exp_fixd.adb (Expand_Divide_Fixed_By_Fixed_Giving_Fixed): - Simplify the expression for a fixed-fixed division to remove - divisions by constants whenever possible, as an optimization - for restricted targets. - -2017-05-02 Hristian Kirtchev - - * checks.adb, sem_ch3.adb, sem_ch6.adb: Minor reformatting. - -2017-05-02 Bob Duff - - * exp_attr.adb (Callable, Identity, Terminated): Use Find_Prim_Op - to find primitive ops, instead of using an Identifier that will - later be looked up. This is necessary because these ops are not - necessarily visible at all places where we need to call them. - * exp_util.ads: Minor comment fix. - -2017-05-02 Ed Schonberg - - * sem_ch6.adb (Fully_Conformant_Expressions): Two entity - references are fully conformant if they are both expansions - of the discriminant of a protected type, within one of the - protected operations. One occurrence may be expanded into a - constant declaration while the other is an input parameter to - the corresponding generated subprogram. - -2017-05-02 Justin Squirek - - * sem_ch3.adb (Check_For_Null_Excluding_Components): Created for - recursivly searching composite-types for null-excluding access - types and verifying them. - (Analyze_Object_Declaration): Add a - call to Check_Null_Excluding_Components for static verification - of non-initialized objects. - * checks.adb, checks.ads (Null_Exclusion_Static_Checks): Added - a parameter for a composite-type's component and an extra case - for printing component information. - -2017-05-02 Yannick Moy - - * sem_ch10.adb (Analyze_Subunit): Take - configuration pragma into account when restoring appropriate - pragma for analysis of subunit. - -2017-05-02 Justin Squirek - - * s-tasren.adb, s-tasini.adb, s-taprop-linux.adb, - s-mudido-affinity.adb,, a-exetim-posix.adb, a-direio.adb, - g-socket.adb, s-taenca.adb, s-fileio.adb: Remove unused use-type - clauses from the runtime. - -2017-05-02 Eric Botcazou - - * freeze.adb (Check_Component_Storage_Order): Do not treat bit-packed - array components specially. - -2017-05-02 Ed Schonberg - - * sem_ch8.adb (Premature_Usage): If the premature usage of - an entity is as the expression in its own object decaration, - rewrite the reference as Any_Id to prevent cascaded errors or - compiler loops when such an entity is used in an address clause. - -2017-05-01 Eric Botcazou - - * gcc-interface/decl.c (components_to_record): Add missing guard. - -2017-05-01 Eric Botcazou - - * gcc-interface/decl.c (components_to_record): Add more comments. - Put back pending fields onto the regular list if the misalignment - happens to cancel itself. - -2017-04-28 Ed Schonberg - - * sem_ch4.adb (Complete_Object_Operation): When rewriting the - controlling actual in a prefixed call, preserve the original node - information if the prefix itself has been rewritten, for ASIS use. - -2017-04-28 Hristian Kirtchev - - * exp_ch6.adb (Insert_Post_Call_Actions): - Code clean up. Insert the post-call actions after an enclosing - procedure call when N denotes a function call and appears as an - actual parameter in the procedure call. - -2017-04-28 Eric Botcazou - - * freeze.adb (Check_Component_Storage_Order): If there is a clause - for the component, also reject the attribute if the component - doesn't end on a byte boundary and its scalar storage order is - different from that of the enclosing record type. - -2017-04-28 Javier Miranda - - * atree.ads (Info_Messages): Removed. - (Warning_Info_Messages): New counter. - (Report_Info_Messages): New counter. - * err_vars.ads Update documentation. - * errout.adb (Delete_Warning_And_Continuations): Update - Info_Message occurrences. - (Error_Msg_Internal): Update Info_Message occurrences. - (Delete_Warning): Update Info_Message occurrences. - (Write_Error_Summary): Update Info_Message occurrences. - (Output_Messages): Update Info_Message occurrences. - (To_Be_Removed): Update Info_Message occurrences. - (Reset_Warnings): Update Info_Message occurrences. - * errutil.adb (Error_Msg): Update Info_Message occurrences. - (Finalize): Update Info_Message occurrences. - (Initialize): Update Info_Message occurrences. - * erroutc.adb (Delete_Msg): Update Info_Message occurrences. - (Compilation_Errors): Update Info_Message_Occurences. - -2017-04-28 Eric Botcazou - - * exp_ch3.adb (Build_Init_Statements): Likewise on Nam. - * freeze.adb (Check_Component_Storage_Order): And on Comp_Byte_Aligned. - * sem_aggr.adb (Resolve_Record_Aggregate): Initialize Box_Node. - * sem_attr.adb (Loop_Entry): Initialize Encl_Loop. - * sem_ch12.adb (Build_Operator_Wrapper): Add pragma Warnings on Expr. - * sem_ch13.adb (Validate_Address_Clauses): Initialize Y_Alignment and - Y_Size. - * sem_eval.adb (Why_Not_Static): Initialize Typ. - * sem_prag.adb (Analyze_Pragma): Add pragma Warnings on Str. - -2017-04-28 Bob Duff - - * sem_util.ads, sem_util.adb (Might_Raise): New function - that replaces Is_Exception_Safe, but has the opposite - sense. Is_Exception_Safe was missing various cases -- calls inside - a pragma Debug, calls inside an 'if' or assignment statement, - etc. Might_Raise now walks the entire subtree looking for things - that can raise. - * exp_ch9.adb (Is_Exception_Safe): Remove. - (Build_Protected_Subprogram_Body): Replace call to - Is_Exception_Safe with "not Might_Raise". Misc cleanup (use - constants where possible). - * exp_ch7.adb: Rename Is_Protected_Body --> - Is_Protected_Subp_Body. A protected_body is something different - in the grammar. - -2017-04-28 Eric Botcazou - - * inline.adb (Expand_Inlined_Call): Initialize Targ1 variable. - * par-ch3.adb (P_Component_Items): Initialize Decl_Node variable. - (P_Discrete_Choice_List): Initialize Expr_Node variable. - * par-ch9.adb (P_Task): Initialize Aspect_Sloc variable. - (P_Protected): Likewise. - * sem_case.adb (Check_Duplicates): - Add pragma Warnings on variable. - * sem_ch12.adb (Preanalyze_Actuals): Initialize Vis variable. - * sem_ch4.adb (List_Operand_Interps): Add pragma Warnings on variable. - * sem_ch5.adb (Analyze_Assignment): Initialize Save_Full_Analysis. - (Analyze_Exit_Statement): Initialize Scope_Id variable. - (Analyze_Iterator_Specification): Initialize Bas variable. - * sem_ch9.adb (Allows_Lock_Free_Implementation): Initialize - Error_Count (Satisfies_Lock_Free_Requirements): Likewise. - (Analyze_Accept_Statement): Initialize Task_Nam. - -2017-04-28 Hristian Kirtchev - - * checks.adb (Install_Primitive_Elaboration_Check): - Do not generate an elaboration check if all checks have been - suppressed. - -2017-04-28 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspect_Specifications, case - Interrupt_Handler and Attach_Handler): Generate reference - to protected operation to prevent spurious warnings about - unreferenced entities. Previous scheme failed with style checks - enabled. - -2017-04-28 Ed Schonberg - - * sem_prag.adb (Relocate_Pragmas_To_Body): A pragma Warnings - that follows an expression function must not be relocated to - the generated body, because it applies to the code that follows. - -2017-04-28 Gary Dismukes - - * sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Test - Relaxed_RM_Semantics to avoid having CodePeer issue errors on - code that might violate the more stringent checking for 'Access - introduced in Ada 2005. - -2017-04-28 Arnaud Charlet - - * a-cforse.adb: minor style fix in comment. - -2017-04-28 Eric Botcazou - - * exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body): Also - initialize Block_Decls variable. - (Expand_Entry_Barrier): Add pragma Warnings on Func_Body variable. - (Build_Dispatching_Requeue): Add pragma Warnings on Op variable. - * exp_disp.adb (Expand_Interface_Actuals): Initialize - Formal_DDT and Actual_DDT variables. - (Expand_Interface_Thunk): Initialize Iface_Formal. - (Make_DT): Initialize Size_Comp. - (Make_Select_Specific_Data_Table): Initialize Decls. - * exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies): - Also initialize more RPC_Receiver_* variables. - (Build_To_Any_Function): Initialize Cstr_Formal. - * exp_prag.adb (Expand_Pragma_Contract_Cases): Initialize Msg_Str. - -2017-04-28 Ed Schonberg - - * sem_ch6.adb (Freeze_Type_Refs): For an interface conversion - node between access types, freeze the designated type as well, - so that dispatch table pointers are created in the proper scope, - and not in the constructed body of the expression function. - -2017-04-28 Bob Duff - - * alloc.ads (Nodes_Initial): Go back to previous value. The large - value makes large compilations faster, but small compilations slower. - -2017-04-28 Arnaud Charlet - - * sem_util.adb: minor typos in Is_Child_Or_Sibling. - -2017-04-28 Hristian Kirtchev - - * erroutc.adb (Compilation_Errors): Do not consider info messages - as suitable warnings when warnings must be treated as errors. - * sem_ch7.adb (Analyze_Package_Specification): Do not consider - internally-generated packages when outputting completion - information. - * errout.adb (Output_Messages): Do not consider info messages as - suitable warnings when warnings must be treated as errors. - * errutil.adb (Finalize): Do not consider info messages as - suitable warnings when warnings must be treated as errors. - -2017-04-28 Eric Botcazou - - * warnsw.ads: Minor fix for incorrect wording in comment. - -2017-04-28 Ed Schonberg - - * sem_res.adb (In_Instance_Code): New predicate in - Valid_Conversion, to determine whether a type conversion appears - as (or within) an actual for a formal object. Type conversions - in instances are not rechecked in Valid_Conversion because - visibility changes between generic location andi instance may - lead to spurious errors, but conversions within an actual must be - fully checked, and they are not fully resolved when pre-analyzing - the actuals. - -2017-04-28 Hristian Kirtchev - - * exp_ch6.adb (Expand_N_Extended_Return_Statement): Use - New_Copy_Tree instead of Relocate_Node as any subsequent copies - of the relocated node will have mangled Parent pointers. - * sem_util.adb (Build_NCT_Hash_Tables): Reset both hash - tables used in conjunction with entity and itype replication. - (Visit_Entity): Rewrite the restriction on which entities - require duplication. The restriction now includes all types. - -2017-04-28 Hristian Kirtchev - - * a-cofuse.ads, a-cfdlli.ads, a-cfhase.adb, a-cfhase.ads, a-cfinve.adb, - a-cfinve.ads, a-cforma.adb, a-cforma.ads, a-cofuma.adb, a-cofuma.ads, - a-cfhama.adb, a-cfhama.ads, a-cforse.adb: Minor reformatting and code - cleanups. - -2017-04-28 Hristian Kirtchev - - * exp_util.adb, g-dyntab.adb, par-ch4.adb, sem_util.adb, sem_attr.adb, - gnat1drv.adb, exp_disp.adb, namet.adb, alloc.ads: Minor reformatting. - -2017-04-28 Gary Dismukes - - * exp_util.adb: Minor reformatting. - -2017-04-28 Ed Schonberg - - * sem_ch4.adb: Fix copy/pasto. - -2017-04-27 Tristan Gingold - - * gcc-interface/Make-lang.in: Define EH_MECHANISM while building - raise-gcc.c. Fix include search path for raise-gcc.c - -2017-04-27 Eric Botcazou - - * fe.h (Warn_On_Questionable_Layout): Declare. - * warnsw.ads (Warn_On_Record_Holes): Move down. - (Warn_On_Questionable_Layout): New boolean variable. - (Warning_Record): Add Warn_On_Questionable_Layout field. - * warnsw.adb (All_Warnings): Set Warn_On_Questionable_Layout. - (Restore_Warnings): Likewise. - (Save_Warnings): Likewise. - (Set_Dot_Warning_Switch): Handle 'q' and 'Q' letters. - * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust call to - components_to_record. - (gnu_field_to_gnat): New function. - (warn_on_field_placement): Likewise. - (components_to_record): Add GNAT_RECORD_TYPE and remove REORDER - parameters. Rename local variables and adjust recursive call. - Rework final scan of the field list and implement warnings on the - problematic placement of specific sorts of fields. - -2017-04-27 Bob Duff - - * errout.adb, exp_aggr.adb, exp_attr.adb, exp_code.adb, fname.adb, - * fname.ads, freeze.adb, inline.adb, lib.adb, lib.ads, lib-list.adb, - * lib-load.adb, lib-writ.adb, par.adb, restrict.adb, rtsfind.adb, - * sem.adb, sem_cat.adb, sem_ch10.adb, sem_ch12.adb, sem_ch3.adb, - * sem_ch4.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb, sem_elab.adb, - * sem_intr.adb, sem_res.adb, sem_util.adb, sem_warn.adb, sprint.adb: - For efficiency, cache results of Is_Internal_File_Name and - Is_Predefined_File_Name in the Units table. This avoids a lot - of repeated text processing. - -2017-04-27 Emmanuel Briot - - * g-comlin.adb (Sort_Sections): remove useless test. - -2017-04-27 Claire Dross - - * a-cfhase.adb, a-cfhase.ads (=): Generic parameter removed to - allow the use of regular equality over elements in contracts. - (Formal_Model): Ghost package containing model functions that are - used in subprogram contracts. - (Current_To_Last): Removed, model functions should be used instead. - (First_To_Previous): Removed, model functions should be used instead. - (Strict_Equal): Removed, model functions should be used instead. - (No_Overlap): Removed, model functions should be used instead. - (Equivalent_Keys): Functions over cursors are removed. They were - awkward with explicit container parameters. - * a-cforse.adb, a-cforse.ads (=): Generic parameter removed to - allow the use of regular equality over elements in contracts. - (Formal_Model): Ghost package containing model functions that - are used in subprogram contracts. - (Current_To_Last): Removed, model functions should be used instead. - (First_To_Previous): Removed, model functions should be used instead. - (Strict_Equal): Removed, model functions should be used instead. - (No_Overlap): Removed, model functions should be used instead. - -2017-04-27 Yannick Moy - - * gnat1drv.adb: Code cleanup. - -2017-04-27 Ed Schonberg - - * exp_util.adb (Replace_Entity): The prefix of a 'Result - attribute reference in a post- condition is the subprogram to - which the condition applies. If the condition is inherited - by a type extension, the prefix becomes a reference to the - inherited operation, but there is no need to create a wrapper - for this operation, because 'Result is expanded independently - when elaborating the postconditions. - -2017-04-27 Bob Duff - - * sinput.adb: Minor code cleanup. - * namet.adb (Append): Create faster versions of - Append(String) and Append(Name_Id) by using slice assignment - instead of loops. - * sem_util.adb (In_Instance): Speed this up by removing - unnecessary tests; Is_Generic_Instance is defined for all - entities. - * sem_util.ads, sem_util.adb (In_Parameter_Specification): - Remove unused function. - * alloc.ads (Nodes_Initial): Use a much larger value, because - the compiler was spending a lot of time copying the nodes table - when it grows. This number was chosen in 1996, so is rather out - of date with current memory sizes. Anyway, it's virtual memory. - Get rid of Orig_Nodes_...; use Node_... instead. - * atree.adb (Lock): Do not release the Nodes tables; it's a - waste of time. - Orig_Nodes_ ==> Nodes_ - * nlists.adb: Orig_Nodes_ ==> Nodes_ - * g-table.adb: Remove unused "with" clause. - * g-table.ads, table.ads: Remove Big_Table_Type, which should - not be used by clients. - * g-dyntab.adb (Last_Allocated): New function - to encapsulate T.P.Last_Allocated, which I'm thinking of changing. - -2017-04-27 Hristian Kirtchev - - * sem_eval.adb (Subtypes_Statically_Compatible): Remove duplicated - check. - (Subtypes_Statically_Match): Remove duplicate check. - * sem_prag.adb (Check_Arg_Is_External_Name): Remove duplicate check. - -2017-04-27 Hristian Kirtchev - - * exp_aggr.adb (Replace_Type): Remove the special processing - for selected components. - * exp_attr.adb (Expand_N_Attribute_Reference): Merge the - processing for attributes Fixed_Value and Integer_Value. - * exp_util.adb (Side_Effect_Free): Merge the processing for - qualified expressions, type conversions, and unchecked type - conversions. - * g-comlin.adb (Is_In_Config): Merge the processing for No_Space - and Optional. - * par-ch3.adb (P_Declarative_Items): Merge the processing for - tokens function, not, overriding, and procedure. - * sem_ch6.adb (Fully_Conformant_Expressions): Merge the processing - for qualified expressions, type conversions, and unchecked - type conversions. - * sem_util.adb (Compile_Time_Constraint_Error): Merge the - processing for Ada 83 and instances. - (Object_Access_Level): Merge the processing for indexed components - and selected components. - * uname.adb (Add_Node_Name): Merge the processing for stubs. - -2017-04-27 Hristian Kirtchev - - * checks.adb (Install_Primitive_Elaboration_Check): - Do not generate the check when restriction No_Elaboration_Code - is in effect. - -2017-04-27 Ed Schonberg - - * exp_disp.adb (Build_Class_Wide_Check): New subsidiary - of Expand_Dispatching_Call. If the denoted subprogram has a - class-wide precondition, this is the only precondition that - applies to the call, rather that the class-wide preconditions - that may apply to the body that is executed. (This is specified - in AI12-0195). - -2017-04-27 Yannick Moy - - * gnat1drv.adb (Adjust_Global_Switches): Issue - a warning in GNATprove mode if the runtime library does not - support IEEE-754 floats. - -2017-04-27 Ed Schonberg - - * sem_prag.adb (Inherit_Class_Wide_Pre): If the parent operation - is itself inherited it does not carry any contract information, - so examine its parent operation which is its Alias. - -2017-04-27 Ed Schonberg - - * sem_attr.adb (Analyze_Attribute, case 'Image): In Ada2012 the - prefix can be an object reference in which case Obj'Image (X) - can only be interpreted as an indexing of the parameterless - version of the attribute. - * par-ch4.adb (P_Name): An attribute reference can be the prefix of - an indexing or a slice operation if the attribute does not require - parameters. In Ada2012 'Image also belongs in this category, - and A'Image (lo .. hi) is legal and must be parsed as a slice. - -2017-04-27 Yannick Moy - - * exp_ch4.adb: Minor reformatting. - * gnat1drv.adb (Adjust_Global_Switches): When in GNATprove mode, - disable the CodePeer and C generation modes. Similar to the - opposite actions done in CodePeer mode. - -2017-04-27 Yannick Moy - - * sem_res.adb: Remove duplicate code. - * sem_attr.adb: Delete duplicate code. - -2017-04-27 Bob Duff - - * g-dyntab.adb: Reduce the amount of copying in - Release. No need to copy items past Last. - -2017-04-27 Hristian Kirtchev - - * checks.adb Add with and use clauses for Sem_Disp. - (Install_Primitive_Elaboration_Check): New routine. - * checks.ads (Install_Primitive_Elaboration_Check): New routine. - * exp_attr.adb (Expand_N_Attribute_Reference): Clean up the - processing of 'Elaborated. - * exp_ch6.adb (Expand_N_Subprogram_Body): Install a primitive - elaboration check. - -2017-04-27 Bob Duff - - * g-dyntab.ads, g-dyntab.adb, g-table.ads: Remove incorrect assertion. - If the table grows and then shrinks back to empty, we won't necessarily - point back to the empty array. Code cleanups. - * sinput.ads: Add 'Base to Size clause to match the declared - component subtypes. - -2017-04-27 Claire Dross - - * a-cforma.adb, a-cforma.ads (=): Generic parameter removed to - allow the use of regular equality over elements in contracts. - (Formal_Model): Ghost package containing model functions that - are used in subprogram contracts. - (Current_To_Last): Removed, model functions should be used instead. - (First_To_Previous): Removed, model functions should be used instead. - (Strict_Equal): Removed, model functions should be used instead. - (No_Overlap): Removed, model functions should be used instead. - * a-cofuma.adb, a-cofuma.ads (Enable_Handling_Of_Equivalence) - Boolean generic parameter to disable contracts for equivalence - between keys. - (Witness): Create a witness of a key that is used for handling of - equivalence between keys. - (Has_Witness): Check whether a witness is contained in a map. - (W_Get): Get the element associated to a witness. - (Lift_Equivalent_Keys): Removed, equivalence between keys is handled - directly. - * a-cofuse.adb, a-cofuse.ads (Enable_Handling_Of_Equivalence) - Boolean generic parameter to disable contracts for equivalence - between keys. - * a-cfhama.adb, a-cfhama.ads (Formal_Model.P) Disable handling - of equivalence on functional maps. - * a-cfdlli.adb, a-cfdlli.ads (Formal_Model.P) Disable handling - of equivalence on functional maps. - -2017-04-27 Hristian Kirtchev - - * exp_ch9.adb (Expand_Entry_Barrier): Code - cleanup. Do not perform the optimization which removes the - declarations of the discriminant and component renamings when - validity checks on operands and attributes are in effect. - -2017-04-27 Hristian Kirtchev - - * exp_spark.adb, exp_util.adb, sem_ch7.adb, g-dyntab.adb, g-dyntab.ads, - freeze.adb, a-cfinve.ads, a-cofuma.adb, a-cofuma.ads, a-cfhama.adb, - a-cfhama.ads, a-cofove.ads: Minor reformatting. - -2017-04-27 Hristian Kirtchev - - * g-debpoo.adb (Dump_Gnatmem): Protect against a possible null - pointer dereference. - * g-spipat.adb (Dump): Code clean up. Protect against a possible - null pointer dereference. - -2017-04-27 Bob Duff - - * g-dyntab.ads, g-dyntab.adb: Default for Table_Low_Bound. - Rename Empty --> Empty_Table_Ptr, and don't duplicate code for it. - Free renames Init, since they do the same thing. - * g-table.ads: Default for Table_Low_Bound. - * table.ads: Default for Table_Low_Bound, Table_Initial, and - Table_Increment. - -2017-04-27 Bob Duff - - * g-dyntab.ads, g-dyntab.adb: Add assertions to subprograms that - can reallocate. - * atree.adb, elists.adb, fname-uf.adb, ghost.adb, inline.adb, - * lib.adb, namet.adb, nlists.adb, sem.adb, sinput.adb, stringt.adb: - Reorder code so that above assertions do not fail. - * table.ads: Remove obsolete comment on Locked. - -2017-04-27 Claire Dross - - * a-cfdlli.ads: Code cleanup. - -2017-04-27 Yannick Moy - - * exp_spark.adb (Expand_SPARK_Freeze_Type): Build a DIC procedure - when needed for proof. (Expand_SPARK): Call the new procedure. - * exp_util.ads Fix typo. - -2017-04-27 Gary Dismukes - - * a-cofuma.ads, a-cfhama.ads: Minor reformatting, grammar, and typo - fixes. - -2017-04-27 Hristian Kirtchev - - * sem_elab.adb Add new type Visited_Element - and update the contents of table Elab_Visited. Various code clean up. - (Check_Elab_Call): Determine whether a prior call to - the same subprogram was already examined within the same context. - (Check_Internal_Call_Continue): Register the subprogram being - called as examined within a particular context. Do not suppress - elaboration warnings. - -2017-04-27 Gary Dismukes - - * xoscons.adb, osint.ads: Minor reformatting. - -2017-04-27 Bob Duff - - * g-dyntab.ads, g-dyntab.adb: Misc cleanup. Rename - Table_Count_Type --> Table_Last_Type, because the name - was confusing (a "count" usually starts at zero). Add - functionality supported or needed by other tables packages - (Move, Release_Threshold). - * g-table.ads, g-table.adb: This is now just a thin wrapper - around g-dyntab.ads/g-dyntab.adb. Add functionality supported - or needed by other tables packages (Save, Restore). - * table.ads, table.adb: This is now just a thin wrapper around - * g-table.ads/g-table.adb. - * namet.h, scos.h, uintp.h: These files are reaching into the - private data of some instances of g-table, whose names changed, - so the above change requires some adjustment here. It now uses - public interfaces. - -2017-04-27 Bob Duff - - * namet.adb, namet.ads: Minor: remove unused procedures. - -2017-04-27 Eric Botcazou - - * checks.adb (Apply_Scalar_Range_Check): Initialize Ok variable too. - (Minimize_Eliminate_Overflows): Initialize Llo and Lhi. - Add pragma Warnings on Rtype variable in nested block. * - * exp_ch3.adb (Build_Init_Statements): Initialize VAR_LOC. - * exp_ch4.adb (Expand_Concatenate): Initialize 3 variables. - (Size_In_Storage_Elements): Add pragma Warnings on Res variable. - * exp_ch7.adb (Build_Adjust_Statements): Initialize Bod_Stmts. - (Process_Component_List_For_Finalize): Initialize Counter_Id. - (Build_Finalize_Statements): Initialize Bod_Stmts. - * exp_disp.adb (Expand_Dispatching_Call): Initialize SCIL_Node. - -2017-04-27 Claire Dross - - * a-cfhama.adb, a-cfhamai.ads (=): Generic parameter removed to - allow the use of regular equality over elements in contracts. - (Formal_Model): Ghost package containing model functions that are - used in subprogram contracts. - (Current_To_Last): Removed, model - functions should be used instead. - (First_To_Previous): Removed, model functions should be used instead. - (Strict_Equal): Removed, model functions should be used instead. - (No_Overlap): Removed, model functions should be used instead. - (Equivalent_Keys): Functions over cursors are removed. They were - awkward with explicit container parameters. - * a-cofuma.adb, a-cofuma.ads (Lift_Equivalent_Keys): New lemma - (proof only) procedure to help GNATprove when equivalence over - keys is not equality. - -2017-04-27 Hristian Kirtchev - - * exp_util.adb, a-cfdlli.adb, a-cfdlli.ads, exp_ch9.adb, g-dyntab.adb, - sem_dim.adb, a-cfinve.adb, a-cfinve.ads, a-cofove.adb, a-cofove.ads: - Minor reformatting and code cleanups. - -2017-04-27 Ed Schonberg - - * freeze.adb (Build_Inherited_Condition_Pragmas): New procedure, - subsidiary of Check_Inherited_Conditions, to build pragmas for an - operation whose ancestor has classwide pre/postconditions. This - is used both to check the legality of the inheritance in Ada - and in SPARK, and to determine whether a wrapper is needed for - an inherited operation. - * exp_util.adb (Build_Class_Wide_Expression, Replace_Entity): - Improve placement of error message for inherited classwide - conditions that become illegal on type derivation. - -2017-04-27 Yannick Moy - - * sem_ch12.adb (Analyze_Generic_Package_Declaration): Set - SPARK_Mode from context on generic package. - * sem_ch7.adb (Analyze_Package_Declaration): Simplify code to remove - useless test. - -2017-04-27 Claire Dross - - * a-cofuve.ads (Range_Shifted): Rewrite precondition to avoid - overflows in computations. - * a-cofove.ads (Capacity_Range): Rewrite last bound to avoid - overflows in computations. - (Insert): Rewrite precondition to avoid overflows in computations. - * a-cfinve.ads (Capacity_Range): Rewrite last bound to avoid - overflows in computations. - (Insert): Rewrite precondition to avoid overflows in computations. - -2017-04-27 Steve Baird - - * exp_ch9.adb (Expand_N_Asynchronous_Select): Initialize the Cancel - flag when it is declared in order to avoid confusing CodePeer about - the possibility of an uninitialized variable read. - -2017-04-27 Ed Schonberg - - * sem_dim.adb (Analyze_Dimension_Object_Declaration): There is - no dimensionality error if the subtype of the expression is - identical to the nominal subtype in the declaration, even though - the expression itself may have been constant-folded and lack a - dimension vector. - * sem_dim.ads: Add comments on setting of dimension vectors and - its interaction with node rewritings and side-effect removal. - -2017-04-27 Bob Duff - - * debug.adb: Minor comment correction. - * sem_dim.ads: Minor reformatting and typo fixes. - -2017-04-27 Bob Duff - - * g-table.adb, g-table.adsa, scos.h: From the C side, access First and - Last of the tables via function calls, rather than relying on layout - of data structures. - -2017-04-27 Ed Schonberg - - * exp_util.adb: No wrapper in GNATprove mode. - -2017-04-27 Yannick Moy - - * sem_res.adb (Resolve_Comparison_Op): Always - evaluate comparisons between values of universal types. - -2017-04-27 Hristian Kirtchev - - * sem_elab.adb (Check_Internal_Call_Continue): Do not generate - an elaboration counter nor a check when in GNATprove mode. - * sem_util.adb (Build_Elaboration_Entity): Do not create an - elaboration counter when in GNATprove mode. - -2017-04-27 Ed Schonberg - - * freeze.adb: copy-paste typo. - -2017-04-27 Yannick Moy - - * sem_prag.adb (Analyze_Pre_Post_In_Decl_Part): - Use correct test to detect call in GNATprove mode instead of - compilation. - -2017-04-27 Claire Dross - - * a-cfdlli.adb, a-cfdlli.ads (Formal_Model.M_Elements_In_Union): - New property function expressing that the element of a - sequence are contained in the union of two sequences. - (Formal_Model.M_Elements_Included): New property function - expressing that the element of a sequence are another sequence. - (Generic_Sorting): Use new property functions to state that - elements are preserved by Sort and Merge. - * a-cofove.adb, a-cofove.ads (=): Generic parameter removed to - allow the use of regular equality over elements in contracts. - (Formal_Model): Ghost package containing model functions - that are used in subprogram contracts. (Capacity): - On unbounded containers, return the maximal capacity. - (Current_To_Last): Removed, model functions should be used instead. - (First_To_Previous): Removed, model functions should be used instead. - (Append): Default parameter value replaced - by new wrapper to allow more precise contracts. - (Insert): Subprogram restored, it seems it was useful to users even if - it is inefficient. - (Delete): Subprogram restored, it seems it was useful to users even if - it is inefficient. - (Prepend): Subprogram restored, it seems it was useful to users even - if it is inefficient. - (Delete_First): Subprogram restored, it seems it - was useful to users even if it is inefficient. (Delete_Last): - Default parameter value replaced by new wrapper to allow more - precise contracts. - (Generic_Sorting.Merge): Subprogram restored. - * a-cfinve.adb, a-cfinve.ads (=): Generic parameter removed to - allow the use of regular equality over elements in contracts. - (Formal_Model): Ghost package containing model functions - that are used in subprogram contracts. (Capacity): - On unbounded containers, return the maximal capacity. - (Current_To_Last): Removed, model functions should be used - instead. - (First_To_Previous): Removed, model functions should be used instead. - (Append): Default parameter value replaced - by new wrapper to allow more precise contracts. - (Insert): Subprogram restored, it seems it was useful to users even if - it is inefficient. - (Delete): Subprogram restored, it seems it was useful to users even if - it is inefficient. - (Prepend): Subprogram restored, it seems it was useful to users even - if it is inefficient. - (Delete_First): Subprogram restored, it seems it - was useful to users even if it is inefficient. (Delete_Last): - Default parameter value replaced by new wrapper to allow more - precise contracts. - (Generic_Sorting.Merge): Subprogram restored. - (Vector): Do not reuse formal vectors, as it is no longer possible - to supply them with an equality function over elements. - -2017-04-27 Bob Duff - - * g-dyntab.adb (Release): When allocating the new - table, use the correct slice of the old table to initialize it. - -2017-04-27 Eric Botcazou - - * einfo.ads: Minor fixes in comments. - -2017-04-27 Ed Schonberg - - * sem_prag.adb: disable clones in SPARK_Mode. - -2017-04-27 Gary Dismukes - - * sem_util.ads, contracts.adb: Minor reformatting. - -2017-04-27 Ed Schonberg - - * sem_util.adb, sem_util.ads (Build_Class_Wide_Clone_Body): - Build body of subprogram that has a class-wide condition that - contains calls to other primitives. - (Build_Class_Wide_Clone_Call); Build a call to the common - class-wide clone of a subprogram with classwide conditions. The - body of the subprogram becomes a wrapper for a call to the - clone. The inherited operation becomes a similar wrapper to which - modified conditions apply, and the call to the clone includes - the proper conversion in a call the parent operation. - (Build_Class_Wide_Clone_Decl (Spec_Id : Entity_Id): For a - subprogram that has a classwide condition that contains calls to - other primitives, build an internal subprogram that is invoked - through a type-specific wrapper for all inherited subprograms - that may have a modified condition. - * sem_prag.adb (Check_References): If subprogram has a classwide - condition, create entity for corresponding clone, to be invoked - through wrapper subprograns. - (Analyze_Pre_Post_Condition_In_Decl_Part): Do not emit error - message about placement if pragma isi internally generated. - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): If subprogram has - a classwide clone, build body of clone as copy of original body, - and rewrite original body as a wrapper as a wrapper for a call to - the clone, so that it incorporates the original pre/postconditions - of the subprogram. - * freeze.adb (Check_Inherited_Conditions): For an inherited - subprogram that inherits a classwide condition, build spec and - body of corresponding wrapper so that call to inherited operation - gets the modified conditions. - * contracts.adb (Analyze_Contracts): If analysis of classwide - condition has created a clone for a primitive operation, analyze - declaration of clone. - -2017-04-27 Steve Baird - - * exp_util.adb (Build_Allocate_Deallocate_Proc): - Add "Suppress => All_Checks" to avoid generating unnecessary - checks. - -2017-04-27 Yannick Moy - - * debug.adb: Reserve debug flag 'm' for no inlining in GNATprove. - * sem_ch6.adb (Anayze_Subprogram_Body_Helper): Skip creation of - inlining body in GNATprove mode when switch -gnatdm used. - * sem_res.adb (Resolve_Call): Skip detection of lack of inlining - in GNATprove mode when switch -gnatdm used. - -2017-04-27 Arnaud Charlet - - * sem_ch13.adb (Analyze_Attribute_Definition_Clause - [Attribute_Address]): Call Set_Address_Taken when ignoring rep - clauses, so that we keep an indication of the address clause - before removing it from the tree. - -2017-04-27 Yannick Moy - - * exp_util.ads, exp_util.adb (Evaluate_Name): Force evaluation - of expression being qualified, when not an object name, or else - evaluate the underlying name. - -2017-04-27 Jerome Lambourg - - * bindusg.adb, bindgen.adb, gnatbind.adb, opt.ads: add -nognarl switch. - -2017-04-27 Justin Squirek - - * exp_ch7.adb (Build_Finalize_Statements): Move Num_Comps to - Process_Component_List_For_Finalization as a local variable. - (Process_Component_For_Finalize): Add an extra parameter to avoid - global references. - (Process_Component_List_For_Finalization): Correct calls to - Process_Component_For_Finalize to take Num_Comps as a parameter. - -2017-04-27 Hristian Kirtchev - - * sem_ch8.adb (Find_Direct_Name): Account for the case where - a use-visible entity is defined within a nested scope of an - instance when giving priority to entities which were visible in - the original generic. - * sem_util.ads, sem_util.adb (Nearest_Enclosing_Instance): New routine. - -2017-04-27 Tristan Gingold - - * raise-gcc.c: Don't use unwind.h while compiling - for the frontend, but mimic host behavior. - -2017-04-27 Javier Miranda - - * sem_ch3.adb (Build_Discriminated_Subtype): - Propagate Has_Pragma_Unreferenced_Objects to the built subtype. - -2017-04-27 Hristian Kirtchev - - * sem_prag.adb (Analyze_Global_Item): - Do not consider discriminants because they are not "entire - objects". Remove the discriminant-related checks because they are - obsolete. - (Analyze_Input_Output): Do not consider discriminants - because they are not "entire objects". - -2017-04-27 Ed Schonberg - - * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Do not - perform check if the current scope does not come from source, - as is the case for a rewritten task body, because check has - been performed already, and may not be doable because of changed - visibility. - -2017-04-27 Hristian Kirtchev - - * a-cofuse.adb, a-cfdlli.adb, a-cofuse.ads, a-cfdlli.ads, a-cofuve.adb, - a-cofuve.ads, a-cofuma.adb, a-cofuma.ads, sem_eval.adb, a-cofuba.adb: - Minor reformatting. - -2017-04-27 Ed Schonberg - - * sem_ch4.adb (Analyze_Call): If the return type of a function - is incomplete in an context in which the full view is available, - replace the type of the call by the full view, to prevent spurious - type errors. - * exp_disp.adb (Check_Premature_Freezing): Disable check on an - abstract subprogram so that compiler does not reject a parameter - of a primitive operation of a tagged type being frozen, when - the untagged type of that parameter cannot be frozen. - -2017-04-27 Bob Duff - - * sem_attr.adb (Compute_Type_Key): Don't walk - representation items for irrelevant types, which could be in a - different source file. - -2017-04-27 Steve Baird - - * exp_attr.adb (Expand_N_Attribute_Reference): - Don't expand Image, Wide_Image, Wide_Wide_Image attributes - for CodePeer. - -2017-04-27 Yannick Moy - - * exp_unst.ads: Fix typos in comments. - -2017-04-27 Ed Schonberg - - * sem_eval.adb (Choice_Matches): Handle properly a real literal - whose type has a defined static predicate. - -2017-04-27 Hristian Kirtchev - - * exp_ch4.adb (Insert_Dereference_Action): - Do not adjust the address of a controlled object when the - associated access type is subject to pragma No_Heap_Finalization. - Code reformatting. - -2017-04-27 Pierre-Marie de Rodat - - * gcc-interface/utils.c (gnat_type_for_size): Set - TYPE_ARTIFICIAL on created types. - -2017-04-27 Claire Dross - - * a-cfdlli.adb, a-cfdlli.ads (Formal_Model): Adapt to - modifications in functional containers. - * a-cofuba.ads, a-cofuma.ads, a-cofuse.ads, a-cofuve.ads Reformat - to improve readablity. Subprograms are separated between basic - operations, constructors and properties. Universally quantified - formulas in contracts are factorized in independant functions - with a name and a comment. Names of parameters are improved. - -2017-04-27 Gary Dismukes - - * exp_spark.adb, sem_elab.adb: Minor reformatting and typo fix. - -2017-04-27 Hristian Kirtchev - - * sem_res.adb (Resolve_Type_Conversion): Do not - install a predicate check here since this is already done during - the expansion phase. Verify whether the operand satisfies the - static predicate (if any) of the target type. - * sem_ch3.adb (Analyze_Object_Declaration): Do - not install a predicate check if the object is initialized by - means of a type conversion because the conversion is subjected - to the same check. - -2017-04-27 Tristan Gingold - - * raise.c (__gnat_builtin_longjmp): Remove. - (__gnat_bracktrace): - Add a dummy definition for the compiler (__gnat_eh_personality, - __gnat_rcheck_04, __gnat_rcheck_10) (__gnat_rcheck_19, - __gnat_rcheck_20, __gnat_rcheck_21) (__gnat_rcheck_30, - __gnat_rcheck_31, __gnat_rcheck_32): Likewise. - * a-exexpr.adb: Renamed from a-exexpr-gcc.adb - * a-except.ads, a-except.adb: Renamed from a-except-2005.ads - and a-except-2005.adb. - * raise-gcc.c: Allow build in compiler, compiled as a C++ - file. - (__gnat_Unwind_ForcedUnwind): Adjust prototype. - (db): Constify msg_format. - (get_call_site_action_for): Don't use void arithmetic. - * system.ads (Frontend_Exceptions): Set to False. - (ZCX_By_Default): Set to True. - (GCC_ZC_Support): Set to True. - * gcc-interface/Makefile.in: No more variants for a-exexpr.adb and - a-except.ad[sb]. - * gcc-interface/Make-lang.in: Add support for backend zcx exceptions - in gnat1 and gnatbind. - * gnat1, gnatbind: link with raise-gcc.o, a-exctra.o, s-addima.o, - s-excmac.o, s-imgint.o, s-traceb.o, s-trasym.o, s-wchstw.o - * s-excmac.ads, s-excmac.adb: Copy of variants. - * a-except.o: Adjust preequisites. - Add handling of s-excmac-arm.adb and s-excmac-gcc.adb. - -2017-04-27 Claire Dross - - * a-cfdlli.adb, a-cfdlli.ads (Formal_Model): Adapt to - modifications in functional containers. - * a-cofuba.ads, a-cofuma.ads, a-cofuse.ads, a-cofuve.ads Reformat - to improve readablity. Subprograms are separated between basic - operations, constructors and properties. Universally quantified - formulas in contracts are factorized in independant functions - with a name and a comment. Names of parameters are improved. - -2017-04-27 Gary Dismukes - - * exp_spark.adb, sem_elab.adb: Minor reformatting and typo fix. - -2017-04-27 Hristian Kirtchev - - * sem_res.adb (Resolve_Type_Conversion): Do not - install a predicate check here since this is already done during - the expansion phase. Verify whether the operand satisfies the - static predicate (if any) of the target type. - * sem_ch3.adb (Analyze_Object_Declaration): Do - not install a predicate check if the object is initialized by - means of a type conversion because the conversion is subjected - to the same check. - -2017-04-27 Tristan Gingold - - * a-except.ads, a-except.adb, a-exexpr.adb: Removed (will be - replaced by their variants). - -2017-04-27 Hristian Kirtchev - - * exp_prag.adb, a-cofuse.adb, a-cofuse.ads, einfo.adb, sem_prag.adb, - cstand.adb, par-prag.adb, a-cofuve.adb, a-cofuve.ads, a-cofuma.adb, - a-cofuma.ads, a-cofuba.adb, a-cofuba.ads: Minor reformatting. - -2017-04-27 Tristan Gingold - - * s-excmac-gcc.ads, s-excmac-gcc.adb, - s-excmac-arm.ads, s-excmac-arm.adb (New_Occurrence): Rewrite it in - Ada95. - -2017-04-27 Hristian Kirtchev - - * exp_ch7.adb (Establish_Transient_Scope): Rewrite - the loop which detects potential enclosing transient scopes. The - loop now terminates much earlier as transient scopes are bounded - by packages and subprograms. - -2017-04-27 Claire Dross - - * a-cfdlli.adb, a-cfdlli.ads (=): Generic parameter removed to - allow the use of regular equality over elements in contracts. - (Cursor): Type is now public so that it can be used in - model functions. - (Formal_Model): Ghost package containing - model functions that are used in subprogram contracts. - (Current_To_Last): Removed, model functions should be used - instead. - (First_To_Previous): Removed, model functions should - be used instead. - (Strict_Equal): Removed, model functions - should be used instead. - (Append): Default parameter value - replaced by new wrapper to allow more precise contracts. - (Insert): Default parameter value replaced by new wrapper to - allow more precise contracts. - (Delete): Default parameter - value replaced by new wrapper to allow more precise contracts. - (Prepend): Default parameter value replaced by new wrapper to - allow more precise contracts. - (Delete_First): Default parameter - value replaced by new wrapper to allow more precise contracts. - (Delete_Last): Default parameter value replaced by new wrapper - to allow more precise contracts. - -2017-04-27 Hristian Kirtchev - - * exp_spark.adb (Expand_SPARK): Perform specialized expansion - for object declarations. - (Expand_SPARK_N_Object_Declaration): New routine. - * sem_elab.adb (Check_A_Call): Include calls to the - Default_Initial_Condition procedure of a type under the SPARK - elaboration checks umbrella. - -2017-04-27 Hristian Kirtchev - - * sem.adb (Analyze): Diagnose an illegal iterated component - association. - * sem_util.ads, sem_util.adb - (Diagnose_Iterated_Component_Association): New routine. - -2017-04-27 Bob Duff - - * adaint.c (__gnat_get_current_dir): Return 0 in length if - getcwd fails. - * a-direct.adb, g-dirope.adb, osint.adb, s-os_lib.adb: Raise - exception if getcwd failed. - -2017-04-27 Yannick Moy - - * exp_dbug.adb, exp_dbug.ads (Get_External_Name): Prefix ghost - entities with special prefix. - -2017-04-27 Hristian Kirtchev - - * debug.adb Change the documentation of switch -gnatd.s. - * exp_ch7.adb (Make_Transient_Block): Transient blocks do not need - to manage the secondary stack when an enclosing scope already - performs this functionality (aka relaxed management). Switch - -gnatd.s may be used to force strict management in which case - the block will manage the secondary stack unconditionally. Add - a guard to stop the traversal when encountering a package or a - subprogram scope. - -2017-04-27 Ed Schonberg - - * sem_res.adb (Resolve_Call): Refine further the handling of - limited views of return types in function calls. If the function - that returns a limited view appears in the current unit, - we do not replace its type by the non-limited view because - this transformation is performed int the back-end. However, - the type of the call itself must be the non-limited view, to - prevent spurious resolution errors. - -2017-04-27 Ed Schonberg - - * einfo,ads, einfo.adb (Class_Wide_Preconds, Class_Wide_Postconds): - Removed, proposed implementation using generics for class-wide - preconditions proved impractical. - (Class_Wide_Clone): New attribute of subprogram. Designates - subprogram created for primitive operations with class-wide - pre/postconditions that contain calls to other primitives. The - clone holds the body of the original primitive, but the - pre/postonditions do not apply to it. The original body is - rewritten as a wrapper for a call to the clone. - (Is_Class_Wide_Clone): New flag to identify a Class_Wide_Clone. If - the flag is set, no code for the corresponding pre/postconditions - is inserted into its body. - -2017-04-27 Bob Duff - - * exp_prag.adb, par-prag.adb, sem_ch13.adb: Ignore - Scalar_Storage_Order if -gnatI is given. - * sem_prag.adb (Analyze_Pragma): Ignore - Default_Scalar_Storage_Order if -gnatI is given. - -2017-04-27 Claire Dross - - * a-cofuba.ads (Add): Take as an additional input parameter - the position where the element should be inserted. - (Remove): New function that removes an element from the container. - * a-cofuma.ads (Add): Adapt to the new API of Base.Add. - * a-cofuse.ads (Add): Adapt to the new API of Base.Add. - (Remove): New function that removes an element from a set. - * a-cofuve.ads (Add): Adapt to the new API of Base.Add. - (Remove): New function that removes an element from a sequence. - (Insert): New function that adds anywhere in a sequence. - -2017-04-27 Hristian Kirtchev - - * checks.adb (Generate_Range_Check): Revert previous change. - -2017-04-27 Gary Dismukes - - * sem_util.adb: Minor reformatting/rewording. - -2017-04-27 Hristian Kirtchev - - * lib-xref.adb (Generate_Reference): The use - of attribute 'Result is not considered a violation of pragma - Unreferenced. - -2017-04-27 Justin Squirek - - * cstand.adb (Create_Standard): Correctly set - Directly_Designated_Type for Any_Access. - * sem_type.adb (Covers): Minor grammar fixes. - -2017-04-27 Bob Duff - - * sem_attr.adb: Minor cleanup. - -2017-04-27 Claire Dross - - * a-cofuba.ads, a-cofuba.adb (Ada.Containers.Functional_Base): New - private child of Ada.Containers used to implement all functional - containers. - * a-cofuma.ads, a-cofuma.adb (Ada.Containers.Functional_Maps): New - child of Ada.Containers. It provides functional indefinite unbounded - maps which can be used as high level models for specification - of data structures. - * a-cofuse.ads, a-cofuse.adb (Ada.Containers.Functional_Sets): New - child of Ada.Containers. It provides functional indefinite unbounded - sets which can be used as high level models for specification - of data structures. - * a-cofuve.ads, a-cofuve.adb (Ada.Containers.Functional_Vectors): New - child of Ada.Containers. It provides functional indefinite unbounded - vectors which can be used as high level models for specification - of data structures. - * Makefile.rtl: Add new packages. - * impunit.adb: Add new packages. - -2017-04-27 Gary Dismukes - - * sem_ch4.adb: Minor reformatting. - -2017-04-27 Ed Schonberg - - * sem_ch12.adb (Analyze_Associations): minor reformatting. - (Check_Fixed_Point_Actual): Do not emit a warning on a fixed - point type actual that has user-defined arithmetic primitives, - when there is a previous actual for a formal package that defines - a fixed-point type with the parent user-defined operator. - -2017-04-27 Hristian Kirtchev - - * checks.adb (Generate_Range_Check): Reinstate part of previous change. - * sem_attr.adb (Resolve_Attribute): Generate a range check when - the component type allows range checks. - -2017-04-27 Ed Schonberg - - * sem_aux.adb (Is_Generic_Formal): Use original node to locate - corresponding declaration, because formal derived types are - rewritten as private extensions. - -2017-04-27 Ed Schonberg - - * sem_dim.adb (Analyze_Dimension_Binary_Op): Do not check - dimensions of operands if node has been analyzed already, because - previous analysis and dimension checking will have removed the - dimension information from the operands. - -2017-04-27 Hristian Kirtchev - - * debug.adb: Document the use of switch -gnatd.s. - * einfo.ads Update the documentation on attribute - Sec_Stack_Needed_For_Return and attribute Uses_Sec_Stack. Remove - the uses of these attributes from certain entities. - * exp_ch7.adb (Make_Transient_Block): Reimplement the circuitry - which determines whether the block should continue to manage - the secondary stack. - (Manages_Sec_Stack): New routine. - -2017-04-27 Bob Duff - - * atree.ads: Minor edit. - -2017-04-27 Hristian Kirtchev - - * sinfo.ads: Update the section on Ghost mode. Add - a section on SPARK mode. Update the placement of section on - expression functions. - -2017-04-27 Bob Duff - - * sinput.adb (Get_Source_File_Index): Don't - assert that S is in the right range in the case where this is - a .dg file under construction. - -2017-04-27 Yannick Moy - - * sem_util.adb (Check_Result_And_Post_State): - Handle more precisely each conjunct in expressions formed by - and'ing sub-expressions. - -2017-04-27 Gary Dismukes - - * exp_ch4.adb, sem_ch4.adb: Minor typo fix and reformatting. - -2017-04-25 Arnaud Charlet - - * gnat_rm.texi, gnat_ugn.texi, - doc/gnat_ugn/building_executable_programs_with_gnat.rst, - doc/gnat_ugn/platform_specific_information.rst, - doc/gnat_ugn/gnat_and_program_execution.rst, - doc/gnat_ugn/gnat_utility_programs.rst, - doc/gnat_ugn/the_gnat_compilation_model.rst, - doc/gnat_rm/implementation_defined_attributes.rst, - doc/gnat_rm/the_gnat_library.rst, - doc/gnat_rm/implementation_defined_pragmas.rst, - doc/gnat_rm/representation_clauses_and_pragmas.rst, - doc/gnat_rm/implementation_of_specific_ada_features.rst, - doc/gnat_rm/implementation_defined_aspects.rst, - doc/gnat_rm/implementation_defined_characteristics.rst: Update - documentation. - -2017-04-25 Arnaud Charlet - - * exp_ch4.adb (Expand_N_Case_Expression): Emit error message when - generating C code on complex case expressions. - -2017-04-25 Arnaud Charlet - - * sem_prag.adb (Analyze_Pragma): Generate a warning instead - of silently ignoring pragma Ada_xxx in Latest_Ada_Only mode. - * directio.ads, ioexcept.ads, sequenio.ads, text_io.ads: Use - Ada_2012 instead of Ada_2005 to be compatible with the above - change. - * bindgen.adb: Silence new warning on pragma Ada_95. - -2017-04-25 Hristian Kirtchev - - * checks.adb (Generate_Range_Check): Revert part of previous change. - -2017-04-25 Ed Schonberg - - * sem_ch4.adb (Try_Container_Indexing): Handle properly a - container indexing operation that appears as a an actual in a - parameter association in a procedure call. - -2017-04-25 Olivier Ramonat - - * prj-proc.adb, sem_util.adb, s-stposu.adb, sem_attr.adb, prj-conf.ads: - Fix spelling mistakes. - -2017-04-25 Bob Duff - - * types.ads, osint.adb, sinput-c.adb, sinput-d.adb, sinput-l.adb, - * sinput-p.adb: Use regular fat pointers, with bounds checking, - for source buffers. Fix misc obscure bugs. - * sinput.ads, sinput.adb: Use regular fat pointers, with bounds - checking, for source buffers. Modify representation clause for - Source_File_Record as appropriate. Move Source_File_Index_Table - from spec to body, because it is not used outside the body. - Move Set_Source_File_Index_Table into the private part, because - it is used only in the body and in children. Use trickery to - modify the dope in the generic instantiation case. It's ugly, - but not as ugly as the previous method. Fix documentation. - Remove obsolete code. - * fname-sf.adb, targparm.adb: Fix misc out-of-bounds - indexing in source buffers. - * fmap.adb: Avoid conversions from one string type to another. - Remove a use of global name buffer. - * osint.ads, sfn_scan.ads, sfn_scan.adb, sinput-c.ads: Comment - fixes. - -2017-04-25 Gary Dismukes - - * exp_util.adb, exp_ch4.adb: Minor reformatting. - -2017-04-25 Hristian Kirtchev - - * checks.adb: Code clean up in various routines. - (Generate_Range_Check): Do not generate a range check when the - expander is not active or when index/range checks are suppressed - on the target type. - (Insert_List_After_And_Analyze, Insert_List_Before_And_Analyze): - Remove variants that include a Supress parameter. These routines - are never used, and were introduced before the current scope-based - check suppression method. - -2017-04-25 Vasiliy Fofanov - - * prj-part.adb, cstreams.c, osint.adb, osint.ads: Remove VMS specific - code and some subprogram calls that are now noop. - -2017-04-25 Arnaud Charlet - - * exp_ch4.adb (Expand_N_Case_Expression): Take - Minimize_Expression_With_Actions into account when possible. - -2017-04-25 Hristian Kirtchev - - * exp_util.adb (Known_Non_Null): Moved to Sem_Util. - (Known_Null): Moved to Sem_Util. - * exp_util.ads (Known_Non_Null): Moved to Sem_Util. - (Known_Null): Moved to Sem_Util. - * sem_util.adb Add new enumeration type Null_Status_Kind. - (Known_Non_Null): Moved from Exp_Util. Most of the logic in - this routine is now carried out by Null_Status. - (Known_Null): Moved from Exp_Util. Most of the logic in this routine - is now carried out by Null_Status. - (Null_Status): New routine. - * sem_util.ads (Known_Non_Null): Moved from Exp_Util. - (Known_Null): Moved from Exp_Util. - -2017-04-25 Ed Schonberg - - * sem_ch6.adb (Analyze_Expression_Function): Do not report an - error on the return type of an expression function that is a - completion, if the type is derived from a generic formal type. - -2017-04-25 Ed Schonberg - - * sem_dim.adb (Dimensions_Of_Operand): The dimensions of a type - conversion are those of the target type. - -2017-04-25 Bob Duff - - * a-clrefi.adb: Minor cleanup. - -2017-04-25 Gary Dismukes - - * exp_util.adb, exp_util.ads, types.ads: Minor reformatting. - -2017-04-25 Bob Duff - - * err_vars.ads, fmap.adb, fmap.ads, comperr.adb, fname-sf.adb, - types.adb, types.ads, types.h, sinput-l.adb, targparm.adb, - errout.adb, sinput.adb, sinput.ads, cstand.adb, scn.adb, - scn.ads, gnatls.adb: Eliminate the vestigial Internal_Source_File and - the Internal_Source buffer. This removes the incorrect call to "=" - the customer noticed. - Wrap remaining calls to "=" in Null_Source_Buffer_Ptr. We - eventually need to eliminate them altogether. Or else get rid - of zero-origin addressing. - -2017-04-25 Claire Dross - - * exp_util.ads (Expression_Contains_Primitives_Calls_Of): New - function used in GNATprove to know if an expression contains - non-dispatching calls on primitives of a tagged type. - -2017-04-25 Bob Duff - - * rtsfind.adb (Initialize): Initialize - First_Implicit_With. Building the compiler with Normalize_Scalars - and validity checking finds this being used as an uninitialized - variable. - -2017-04-25 Hristian Kirtchev - - * contracts.adb (Analyze_Entry_Or_Subprogram_Body_Contract): - Add a warning about SPARK mode management. The routine now - saves and restores both the mode and associated pragma. - (Analyze_Entry_Or_Subprogram_Contract): Add a warning about - SPARK mode management. The routine now saves and restores both - the mode and associated pragma. - (Analyze_Object_Contract): - Add a warning about SPARK mode management. The routine - now saves and restores both the mode and associated pragma. - (Analyze_Package_Body_Contract): Add a warning about SPARK mode - management. The routine now saves and restores both the mode - and associated pragma. (Analyze_Package_Contract): Add a warning - about SPARK mode management. The routine now saves and restores - both the mode and associated pragma. - (Analyze_Task_Contract): - Add a warning about SPARK mode management. The routine now saves - and restores both the mode and associated pragma. - * expander.adb (Expand): Change the way the Ghost mode is saved - and restored. - * exp_ch3.adb (Freeze_Type): Change the way the Ghost mode is - saved and restored. - * exp_disp.adb (Make_DT): Change the way the Ghost mode is saved - and restored. - * exp_util.adb (Build_DIC_Procedure_Body): - Change the way the Ghost mode is saved and restored. - (Build_DIC_Procedure_Declaration): Change the way the Ghost - mode is saved and restored. - (Build_Invariant_Procedure_Body): - Change the way the Ghost mode is saved and restored. - (Build_Invariant_Procedure_Declaration): Change the way the Ghost - mode is saved and restored. - (Make_Predicate_Call): Change the - way the Ghost mode is saved and restored. - * freeze.adb (Freeze_Entity): Change the way the Ghost mode is - saved and restored. - * ghost.adb (Mark_And_Set_Ghost_Assignment): Remove parameter Mode - and its assignment. - (Mark_And_Set_Ghost_Body): Remove parameter - Mode and its assignment. - (Mark_And_Set_Ghost_Completion): - Remove parameter Mode and its assignment. - (Mark_And_Set_Ghost_Declaration): Remove parameter Mode and its - assignment. - (Mark_And_Set_Ghost_Instantiation): Remove parameter - Mode and its assignment. - (Mark_And_Set_Ghost_Procedure_Call): - Remove parameter Mode and its assignment. - (Set_Ghost_Mode): - Remove parameter Mode and its assignment. - * ghost.ads (Mark_And_Set_Ghost_Assignment): Remove parameter Mode - and update the comment on usage. - (Mark_And_Set_Ghost_Body): - Remove parameter Mode and update the comment on usage. - (Mark_And_Set_Ghost_Completion): Remove parameter Mode and - update the comment on usage. - (Mark_And_Set_Ghost_Declaration): - Remove parameter Mode and update the comment on usage. - (Mark_And_Set_Ghost_Instantiation): Remove parameter Mode and - update the comment on usage. - (Mark_And_Set_Ghost_Procedure_Call): - Remove parameter Mode and update the comment on usage. - (Set_Ghost_Mode): Remove parameter Mode and update the comment - on usage. - * lib.ads Remove obsolete fields SPARK_Mode_Pragma from various - types. - * lib-load.adb (Create_Dummy_Package_Unit): Remove the assignment - of obsolete field SPARK_Mode_Pragma. - (Load_Main_Source): Remove - the assignment of obsolete field SPARK_Mode_Pragma. - (Load_Unit): Remove the assignment of obsolete field SPARK_Mode_Pragma. - * lib-writ.adb (Add_Preprocessing_Dependency): Remove - the assignment of obsolete field SPARK_Mode_Pragma. - (Ensure_System_Dependency): Remove the assignment of obsolete - field SPARK_Mode_Pragma. - * rtsfind.adb (Load_RTU): Add a warning about Ghost and SPARK - mode management. Change the way Ghost and SPARK modes are saved - and restored. - * sem.adb (Analyze): Change the way the Ghost mode is saved - and restored. - * sem_ch3.adb (Analyze_Object_Declaration): Change the way the - Ghost mode is saved and restored. - (Process_Full_View): Change - the way the Ghost mode is saved and restored. - * sem_ch5.adb (Analyze_Assignment): Change the way the Ghost - mode is saved and restored. - * sem_ch6.adb (Analyze_Procedure_Call): Change the way the Ghost - mode is saved and restored. - (Analyze_Subprogram_Body_Helper): - Change the way the Ghost mode is saved and restored. - * sem_ch7.adb (Analyze_Package_Body_Helper): Change the way the - Ghost mode is saved and restored. - * sem_ch10.adb (Analyze_Subunit): Add a warning about SPARK mode - management. Save the SPARK mode-related data prior to any changes - to the scope stack and contexts. The mode is then reinstalled - before the subunit is analyzed in order to restore the original - view of the subunit. - * sem_ch12.adb (Analyze_Package_Instantiation): Update the - warning on region management. Change the way the Ghost and - SPARK modes are saved and restored. - (Inline_Instance_Body): - Add a warning about SPARK mode management. Code clean up. - (Analyze_Subprogram_Instantiation): Update the warning on region - management. Change the way the Ghost and SPARK modes are saved - and restored. - (Instantiate_Package_Body): Update the warning - on region management. Change the way the Ghost and SPARK modes - are saved and restored. - (Instantiate_Subprogram_Body): Update - the warning on region management. Change the way the Ghost and - SPARK modes are saved and restored. - (Set_Instance_Env): Add a - warning about SPARK mode management. Change the way SPARK mode - is saved and restored. - * sem_ch13.adb (Build_Predicate_Functions): - Change the way the Ghost mode is saved and restored. - (Build_Predicate_Function_Declaration): Change the way the Ghost - mode is saved and restored. - * sem_elab.adb (Check_Elab_Calls): Add a warning about SPARK - mode management. Change the way SPARK mode is saved and restored. - * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): - Change the way the Ghost mode is saved and restored. - (Analyze_Initial_Condition_In_Decl_Part): Change the way - the Ghost mode is saved and restored. - (Analyze_Pragma): - Change the way the Ghost mode is saved and restored. - (Analyze_Pre_Post_Condition_In_Decl_Part): Change the way the - Ghost mode is saved and restored. - * sem_util.adb (Install_SPARK_Mode): New routine. - (Restore_SPARK_Mode): New routine. - (Save_SPARK_Mode_And_Set): Removed. - (Set_SPARK_Mode): New routine. - * sem_util.ads (Install_SPARK_Mode): New routine. - (Restore_SPARK_Mode): New routine. - (Save_SPARK_Mode_And_Set): Removed. - (Set_SPARK_Mode): New routine. - -2017-04-25 Ed Schonberg - - * sem_util.adb, sem_util.ads (From_Nested_Package): New predicate - to determine whether a type is declared in a local package that - has not yet been frozen. - * freeze.adb (Freeze_Before): Use new predicate to determine - whether a local package must be installed on the scope stack - in order to evaluate in the proper scope actions generated by - aspect specifications, such as Predicate - * sem_ch13.adb: Simplify code in Analyze_Aspects_At_Freeze_Point - using new predicate. - -2017-04-25 Hristian Kirtchev - - * sem_warn.adb (Warn_On_Constant_Valid_Condition): Do not consider - comparisons between non- scalar expressions expressions because - their values cannot be invalidated. - * sem_warn.ads (Warn_On_Constant_Valid_Condition): Update the - comment on usage. - -2017-04-25 Hristian Kirtchev - - * par_sco.adb: Minor reformatting. - -2017-04-25 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): If entity - is a type from an unfrozen local package, install package to - complete the analysis of delayed aspects of the type. - -2017-04-25 Tristan Gingold - - * bingen.adb (System_Version_Control_Used): New variable. - (Resolve_Binder_Options): Set the above variable. - (Gen_Output_File_Ada): Conditionally call Gen_Versions. - (Gen_Elab_Order): Emit blank line before. - -2017-04-25 Justin Squirek - - * sem_cat.adb (Validate_RT_RAT_Component): Added - an extra check to ignore incomplete types. - -2017-04-25 Thomas Quinot - - * sem_prag.adb (Analyze_Pragma, case Pragma_Check): Remove - bogus circuitry for the case where Name is Predicate. - -2017-04-25 Thomas Quinot - - * par_sco.adb(Traverse_Declarations_Or_Statements.Traverse_Aspects): - Create SCOs for Predicate aspects in disabled - state initially, to be enabled later on by... - * sem_ch13.adb (Build_Predicate_Functions.Add_Predicates): Mark - SCO for predicate as enabled. - -2017-04-25 Hristian Kirtchev - - * comperr.adb (Compiler_Abort): Remove now obsolete pair of - pragmas Warnings Off / On. - * namet.adb (Finalize): Remove now obsolete pair of pragmas - Warnings Off / On. - * output.adb: Remove now obsolete pair of pragmas Warnings Off / On. - * sem_warn.adb (Warn_On_Constant_Valid_Condition): Do not - consider comparisons between static expressions because their - values cannot be invalidated. - * urealp.adb (Tree_Read): Remove now obsolete pair of pragmas - Warnings Off / On. - (Tree_Write): Remove now obsolete pair of pragmas Warnings Off / On. - * usage.adb Remove now obsolete pair of pragmas Warnings Off / On. - -2017-04-25 Bob Duff - - * sem_elab.adb (In_Task_Activation): Trace internal calls in - task bodies. - -2017-04-25 Gary Dismukes - - * sem_prag.adb, sem_warn.adb, sem_eval.adb: Minor reformatting and - typo fixes. - -2017-04-25 Hristian Kirtchev - - * comperr.adb (Compiler_Abort): Add a pair of pragma Warnings - On/Off to defend against a spurious warning in conditional - compilation. - * exp_ch4.adb (Rewrite_Comparison): Reimplemented. - * namet.adb (Finalize): Add a pair of pragma Warnings On/Off to - defend against a spurious warning in conditional compilation. - * output.adb Add a pair of pragma Warnings On/Off to defend - against a spurious warning in conditional compilation. - * sem_eval.adb (Eval_Relational_Op): Major code clean up. - (Fold_General_Op): New routine. - (Fold_Static_Real_Op): New routine. - (Test_Comparison): New routine. - * sem_eval.ads (Test_Comparison): New routine. - * sem_warn.adb (Is_Attribute_Constant_Comparison): New routine. - (Warn_On_Constant_Valid_Condition): New routine. - (Warn_On_Known_Condition): Use Is_Attribute_Constant_Comparison - to detect a specific case. - * sem_warn.adb (Warn_On_Constant_Valid_Condition): New routine. - * urealp.adb (Tree_Read): Add a pair of pragma Warnings On/Off - to defend against a spurious warning in conditional compilation. - (Tree_Write): Add a pair of pragma Warnings On/Off to defend - against a spurious warning in conditional compilation. - * usage.adb Add a pair of pragma Warnings On/Off to defend - against a spurious warning in conditional compilation. - -2017-04-25 Arnaud Charlet - - * sinfo.ads, sem_ch13.adb: Update comment. - -2017-04-25 Hristian Kirtchev - - * sem_util.adb (Is_Post_State): A reference to a - generic in out parameter is considered a change in the post-state - of a subprogram. - -2017-04-25 Ed Schonberg - - * sem_ch12.adb (Load_Parent_Of_Generic); When retrieving the - declaration of a subprogram instance within its wrapper package, - skip over null statements that may result from the rewriting of - ignored pragmas. - -2017-04-25 Ed Schonberg - - * exp_attr.adb (Expand_Attribute_Reference, case 'Read): - If the type is an unchecked_union, replace the attribute with - a Raise_Program_Error (rather than inserting such before the - attribute reference) to handle properly the case where we are - processing a component of a larger record, and we need to prevent - further expansion for the unchecked union. - (Expand_Attribute_Reference, case 'Write): If the type is - an unchecked_union, check whether enclosing scope is a Write - subprogram. Replace attribute with a Raise_Program_Error if the - discriminants of the unchecked_union type have not default values - because such a use is erroneous.. - -2017-04-25 Tristan Gingold - - * exp_ch9.adb (Expand_N_Task_Type_Declaration): - Add relative_deadline to task record on edf profile. - (Make_Initialize_Protection): Pass deadline_floor value on edf profile. - (Make_Task_Create_Call): Pass relative_deadline value. - * par-prag.adb (Prag): Handle Pragma_Deadline_Floor. - * s-rident.ads (Profile_Name): Add GNAT_Ravenscar_EDF. - (Profile_Info): Add info for GNAT_Ravenscar_EDF. - * sem_prag.adb (Set_Ravenscar_Profile): Handle - GNAT_Ravenscar_EDF (set scheduling policy). - (Analyze_Pragma): Handle GNAT_Ravenscar_EDF profile and Deadline_Floor - pragma. - (Sig_Flags): Add choice for Pragma_Deadline_Floor. - * snames.ads-tmpl (Name_Deadline_Floor, Name_Gnat_Ravenscar_EDF): - New names. - (Pragma_Deadline_Floor): New pragma. - * targparm.adb (Get_Target_Parameters): Recognize - GNAT_Ravenscar_EDF profile. - -2017-04-25 Arnaud Charlet - - * gnatvsn.ads (Library_Version): Bump to 8. Update comment. - -2017-04-25 Ed Schonberg - - * sem_aux.adb (Nearest_Ancestor): Use original node of type - declaration to locate nearest ancestor, because derived - type declarations for record types are rewritten as record - declarations. - * sem_ch13.adb (Add_Call): Use an unchecked conversion to handle - properly derivations that are completions of private types. - (Add_Predicates): If type is private, examine rep. items of full - view, which may include inherited predicates. - (Build_Predicate_Functions): Ditto. - -2017-04-25 Javier Miranda - - * sem_util.adb (New_Copy_Tree.Visit_Entity): Extend previous change - to generate new entities for subtype declarations located in - Expression_With_Action nodes. - -2017-04-25 Hristian Kirtchev - - * sem_elab.adb (Check_A_Call): Remove - local variables Is_DIC_Proc and Issue_In_SPARK. Verify the - need for Elaborate_All when SPARK elaboration checks are - required. Update the checks for instances, variables, and calls - to Default_Initial_Condition procedures. - -2017-04-25 Ed Schonberg - - * aspects.ads, aspects.adb: Make the GNAT-specific pragma No_Inline - into a boolean aspect, in analogy with the Ada aspect No_Return. - -2017-04-25 Hristian Kirtchev - - * exp_ch6.adb, sem_ch13.adb, sem_ch6.adb: Minor reformatting. - -2017-04-25 Bob Duff - - * sem_res.adb (Resolve_Actuals): Under -gnatd.q, reset - Is_True_Constant for an array variable that is passed to a - foreign function as an 'in' parameter. - * debug.adb: Document -gnatd.q. - -2017-04-25 Ed Schonberg - - * sem_ch6.adb (Analyze_Expression_Function): If expression function - is completion and return type is an access type do not freeze - designated type: this will be done in the process of freezing - the expression if needed. - (Freeze_Expr_Types): Check whether type is complete before - creating freeze node, to provide a better error message if - reference is premature. - * sem_ch13.adb (Check_Indexing_Functions): Ignore inherited - functions created by type derivations. - -2017-04-25 Pascal Obry - - * g-sercom.ads: Add simple usage of GNAT.Serial_Communication. - -2017-04-25 Hristian Kirtchev - - * sem_res.adb (Resolve_Type_Conversion): - When resolving against any fixed type, set the type of the - operand as universal real when the operand is a multiplication - or a division where both operands are of any fixed type. - (Unique_Fixed_Point_Type): Add local variable ErrN. Improve the - placement of an error message by pointing to the operand of a - type conversion rather than the conversion itself. - -2017-04-25 Thomas Quinot - - * sem_ch13.adb (Build_Predicate_Function_Declaration): Set - Needs_Debug_Info when producing SCOs. - -2017-04-25 Thomas Quinot - - * exp_ch6.adb (Add_Finalization_Master_Actual_To_Build_In_Place_Call): - Always pass a null finalization master for a library level named access - type to which a pragme No_Heap_Finalization applies. - -2017-04-25 Arnaud Charlet - - PR ada/78845 - - * a-ngcoar.adb, a-ngrear.adb (Inverse): call Unit_Matrix with First_1 - set to A'First(2) and vice versa. - -2017-04-25 Yannick Moy - - * freeze.adb (Freeze_Record_Type): Remove obsolete - rule on volatile tagged record restriction on SPARK code. - -2017-04-25 Yannick Moy - - * sem_prag.adb (minor) Fix SPARK RM reference. - -2017-04-25 Yannick Moy - - * sem_util.adb, sem_util.ads (Unique_Defining_Entity): Update - comment to reflect which entity is chosen as unique entity. - (Unique_Entity): Return full view instead of private spec for - protected type or task type. Fix possible incorrect access when - called on entry. - -2017-04-25 Eric Botcazou - - * sem_res.adb (Set_Slice_Subtype): Treat specially bit-packed - array types only instead of all packed array types. - -2017-04-25 Ed Schonberg - - * sem_ch6.adb (Conforming_Types): If type of formal as a specified - dimension system, verify that dimensions of both match. - (Check_Conformance): Add error message in case of dimension - mismatch. - * sem_dim.ads, sem_dim.adb (Dimensions_Match): New utility - predicate. - -2017-04-25 Arnaud Charlet - - * gnatxref.adb, gnatfind.adb: Avoid using the term project file, - confusing. - -2017-04-25 Yannick Moy - - * sem_util.adb: Minor refactoring. - * freeze.adb (Freeze_Record_Type): Fix checking of SPARK RM 7.1.3(5). - -2017-04-25 Claire Dross - - * sem_prag.adb (Collect_Inherited_Class_Wide_Conditions): Go to - ultimate alias when accessing overridden operation. Indeed, if the - overridden operation is itself inherited, it won't have any explicit - contract. - -2017-04-25 Ed Schonberg - - * sem_warn.adb (Warn_On_Overlapping_Actuals): There can be no - overlap if the two formals have different types, because formally - the corresponding actuals cannot designate the same objects. - -2017-04-25 Ed Schonberg - - * sem_dim.adb (Dimensions_Of_Operand): minot cleanups: a) If - dimensions are present from context, use them. b) If operand is - a static constant rewritten as a literal, obtain the dimensions - from the original declaration, otherwise use dimensions of type - established from context. - -2017-04-25 Yannick Moy - - * sem_util.adb (Is_Effectively_Volatile): Protect against base type - of array that is private. - -2017-04-25 Gary Dismukes - - * sem_ch3.adb, exp_util.adb, sem_prag.adb, exp_ch4.adb: Minor - reformatting. - -2017-04-25 Yannick Moy - - * a-ngelfu.adb, a-ngelfu.ads: Add SPARK_Mode On on spec, Off - on body. - -2017-04-25 Ed Schonberg - - * sem_disp.adb (Check_Dispatching_Context): Add guard to refine - the check that recognizes a call to a private overridding and - replaces the called subprogram with its alias. - -2017-04-25 Hristian Kirtchev - - * exp_util.adb: Minor reformatting. - -2017-04-25 Justin Squirek - - * exp_ch3.adb (Freeze_Type): Add condition to always treat - interface types as a partial view of a private type for the - generation of invariant procedure bodies. - * exp_util.adb, exp_util.ads (Add_Inherited_Invariants): - Add a condition to get the Corresponding_Record_Type for - concurrent types, add condition to return in the absence of a - class in the pragma, remove call to Replace_Type_References, - and add call to Replace_References. - (Add_Interface_Invariatns), - (Add_Parent_Invariants): Modify call to Add_Inherited_Invariants - to including the working type T. - (Add_Own_Invariants): Remove - legacy condition for separate units, remove dispatching for ASIS - and save a copy of the expression in the pragma expression. - (Build_Invariant_Procedure_Body): Default initalize vars, - remove return condition on interfaces, always use the - private type for interfaces, and move the processing of types - until after the processing of invariants for the full view. - (Build_Invariant_Procedure_Declaration): Remove condition - to return if an interface type is encountered and add - condition to convert the formal parameter to its class-wide - counterpart if Work_Typ is abstract. - (Replace_Type): Add call to Remove_Controlling_Arguments. - (Replace_Type_Ref): Remove class-wide dispatching for the current - instance of the type. - (Replace_Type_References): Remove parameter "Derived" - (Remove_Controlling_Arguments): Created in order to removing - the controlliong argument from calls to primitives in the case - of the formal parameter being an class-wide abstract type. - * sem_ch3.adb (Build_Assertion_Bodies_For_Type): Almost identical - to the change made to Freeze_Type in exp_ch3. Add a condition - to treat interface types as a partial view. - * sem_prag.adb (Analyze_Pragma): Modify parameters in the call - to Build_Invariant_Procedure_Declaration to properly generate a - "partial" invariant procedure when Typ is an interface. - -2017-04-25 Bob Duff - - * a-numeri.ads: Go back to using brackets encoding for the Greek - letter pi. - -2017-04-25 Ed Schonberg - - * sem_ch3.adb (Derive_Subprogram): Implement rule in RM 6.1.1 - (10-15): if derived type T with progenitors is abstract, - and primitive P of this type inherits non-trivial classwide - preconditions from both a parent operation and from an interface - operation, then the inherited operation is abstract if the parent - operation is not null. - * sem_disp.ads, sem_disp.adb: replace function Covers_Some_Interface - with Covered_Interface_Op to yield the actual interface operation - that is implemented by a given inherited operation. - -2017-04-25 Javier Miranda - - * exp_ch4.adb (Expand_N_Op_Expon): Relocate left - and right operands after performing the validity checks. Required - because validity checks may remove side effects from the operands. - -2017-04-25 Javier Miranda - - * exp_attr.adb (Attribute_Unrestricted_Access): - Do not disable implicit type conversion. Required to generate - code that displaces the pointer to reference the secondary - dispatch table. - -2017-04-25 Pascal Obry - - * prj-attr.adb, snames.ads-tmpl: Add package Install's - Required_Artifacts attribute. - -2017-04-25 Ed Schonberg - - * sem_util.adb (Same_Value): String literals are compile-time - values, and comparing them must use Expr_Value_S. - -2017-04-25 Ed Schonberg - - * sem_ch4.adb (Complete_Object_Interpretation): If an explicit - dereference is introduced for the object, and the object is - overloaded, do not check whether it is aliased, because it may - include an implicit dereference. - * sem_type.adb (Disambiguate): If two interpretations are access - attribute types with the same designated type keep either of - them and do not report an ambiguity. A true ambiguity will be - reported elsewhere. - -2017-04-25 Bob Duff - - * a-numeri.ads: Change the encoding of Greek letter Pi from - brackets encoding to UTF-8. Use pragma Wide_Character_Encoding - to indicate the encoding. We considered using a byte order mark - (BOM), but that causes various trouble (misc software eats the - BOM, if you have a patch with a BOM, then it's not at the start - of the patch, so it's not a BOM, the BOM affects with-ing files, - etc.). - * scng.adb, s-wchcnv.adb: Minor. - -2017-04-25 Hristian Kirtchev - - * sem_ch3.adb, sem_ch8.adb, sem_disp.adb: Minor reformatting. -2017-04-25 Ed Schonberg - - * sem_ch3.adb (Add_Internal_Interface_Entities): Move - Has_Non_Trivial_Precondition to sem_util. for use elsewhere. - Improve error message on operations that inherit non-conforming - classwide preconditions from ancestor and progenitor. - * sem_util.ads, sem_util.adb (Has_Non_Trivial_Precondition): - moved here from sem_ch3. - * sem_ch8.adb (Analyze_Subprogram_Renaming): Implement legality - check given in RM 6.1.1 (17) concerning renamings of overriding - operations that inherits class-wide preconditions from ancestor - or progenitor. - -2017-04-25 Hristian Kirtchev - - * exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Code cleanup. - (Build_Adjust_Statements): Code cleanup. - (Build_Finalizer): Update the initialization of - Exceptions_OK. - (Build_Finalize_Statements): Code cleanup. - (Build_Initialize_Statements): Code cleanup. - (Make_Deep_Array_Body): Update the initialization of - Exceptions_OK. - (Make_Deep_Record_Body): Update the initialization of Exceptions_OK. - (Process_Object_Declaration): Generate a null exception handler only - when exceptions are allowed. - (Process_Transients_In_Scope): Update the initialization of - Exceptions_OK. - * exp_util.ads, exp_util.adb (Exceptions_In_Finalization_OK): New - routine. - * sem_ch11.adb (Analyze_Exception_Handlers): Do not check any - restrictions when the handler is internally generated and the - mode is warnings. - -2017-04-25 Ed Schonberg - - * sem_ch3.adb (Has_Non_Trivial_Precondition): New predicate to - enforce legality rule on classwide preconditions inherited from - both an ancestor and a progenitor (RM 6.1.1 (10-13). - * sem_disp.adb (Check_Dispatching_Context): A call to an abstract - subprogram need not be dispatching if it appears in a precondition - for an abstract or null subprogram. - -2017-04-25 Gary Dismukes - - * sem_ch10.adb: Minor typo fix. - -2017-04-25 Arnaud Charlet - - * gcc-interface/Makefile.in: Cleanup VxWorks targets. - -2017-04-25 Eric Botcazou - - * fname.adb (Is_Internal_File_Name): Arrange for the slices to - have a length which is a power of 2. - (Is_Predefined_File_Name): Likewise. Adjust comment. - -2017-04-25 Bob Duff - - * exp_aggr.adb (Component_Count): Protect the - arithmetic from attempting to convert a value >= 2**31 to Int, - which would otherwise raise Constraint_Error. - -2017-04-25 Bob Duff - - * opt.ads (Locking_Policy): Fix incorrect documentation. The - first character of the policy name is not unique. - -2017-04-25 Bob Duff - - * s-fileio.adb (Name): Raise Use_Error if the file is a temp file. - * s-ficobl.ads (Is_Temporary_File): Remove incorrect comment - about this flag not being used. It was already used, and it is - now used more. - -2017-04-25 Hristian Kirtchev - - * einfo.adb Flag301 is now known as Ignore_SPARK_Mode_Pragmas. - (Ignore_SPARK_Mode_Pragmas): New routine. - (Set_Ignore_SPARK_Mode_Pragmas): New routine. - (Write_Entity_Flags): Add an entry for Ignore_SPARK_Mode_Pragmas. - * einfo.ads Add new attribute Ignore_SPARK_Mode_Pragmas and update - related entities. - (Ignore_SPARK_Mode_Pragmas): New routine - along with pragma Inline. - (Set_Ignore_SPARK_Mode_Pragmas): New routine along with pragma Inline. - * opt.ads Rename flag Ignore_Pragma_SPARK_Mode to - Ignore_SPARK_Mode_Pragmas_In_Instance. - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): - Save and restore the value of global flag - Ignore_SPARK_Mode_Pragmas_In_Instance. Set or reinstate the value - of global flag Ignore_SPARK_Mode_Pragmas_In_Instance when either - the corresponding spec or the body must ignore all SPARK_Mode - pragmas found within. - (Analyze_Subprogram_Declaration): Mark - the spec when it needs to ignore all SPARK_Mode pragmas found - within to allow the body to infer this property in case it is - instantiated or inlined later. - * sem_ch7.adb (Analyze_Package_Body_Helper): Save and restore the - value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set - the value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance - when the corresponding spec also ignored all SPARK_Mode pragmas - found within. - (Analyze_Package_Declaration): Mark the spec when - it needs to ignore all SPARK_Mode pragmas found within to allow - the body to infer this property in case it is instantiated or - inlined later. - * sem_ch12.adb (Analyze_Formal_Package_Declaration): - Save and restore the value of flag - Ignore_SPARK_Mode_Pragmas_In_Instance. Mark the - formal spec when it needs to ignore all SPARK_Mode - pragmas found within to allow the body to infer this - property in case it is instantiated or inlined later. - (Analyze_Package_Instantiation): Save and restore the value - of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Mark - the instance spec when it needs to ignore all SPARK_Mode - pragmas found within to allow the body to infer this - property in case it is instantiated or inlined later. - (Analyze_Subprogram_Instantiation): Save and restore the value - of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Mark the - instance spec and anonymous package when they need to ignore - all SPARK_Mode pragmas found within to allow the body to infer - this property in case it is instantiated or inlined later. - (Instantiate_Package_Body): Save and restore the value of global - flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set the value of - global flag Ignore_SPARK_Mode_Pragmas_In_Instance when the - corresponding instance spec also ignored all SPARK_Mode pragmas - found within. - (Instantiate_Subprogram_Body): Save and restore the - value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set - the value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance - when the corresponding instance spec also ignored all SPARK_Mode - pragmas found within. - * sem_prag.adb (Analyze_Pragma): Update the reference to - Ignore_Pragma_SPARK_Mode. - * sem_util.adb (SPARK_Mode_Is_Off): A construct which ignored - all SPARK_Mode pragmas defined within yields mode "off". - -2017-04-25 Hristian Kirtchev - - * bindgen.adb, exp_dbug.adb, errout.adb, fname.adb: Minor reformatting. - -2017-04-25 Bob Duff - - * exp_atag.adb (Build_CW_Membership): Add "Suppress => - All_Checks" to avoid generating unnecessary checks. - * exp_ch4.adb (Expand_N_In, Make_Tag_Check): Add "Suppress => - All_Checks". - * sem.ads: Fix comment. - * expander.ads: Fix comment. - * exp_atag.ads: Fix comment: "Index = 0" should be - "Index >= 0". - -2017-04-25 Gary Dismukes - - * s-taprop-linux.adb: Minor editorial fixes. - -2017-04-25 Eric Botcazou - - * sem_util.adb (New_Copy_Tree): Put back the declarations of the - hash tables at library level. Reinstate the NCT_Hash_Tables_Used - variable and set it to True whenever the main hash table is - populated. Short- circuit the Assoc function if it is false - and add associated guards. - -2017-04-25 Olivier Hainque - - * bindgen.adb (Gen_Elab_Calls): Also update counter of lone - specs without elaboration code that have an elaboration counter - nevertheless, e.g. when compiled with -fpreserve-control-flow. - * sem_ch10.adb (Analyze_Compilation_Unit): - Set_Elaboration_Entity_Required when requested to preserve - control flow, to ensure the unit elaboration is materialized at - bind time, resulting in the inclusion of the unit object file - in the executable closure at link time. - -2017-04-25 Pierre-Marie de Rodat - - * exp_dbug.adb: In Debug_Renaming_Declaration, - when dealing with indexed component, accept to produce a renaming - symbol when the index is an IN parameter or when it is a name - defined in an outer scope. - -2017-04-25 Yannick Moy - - * errout.adb (Error_Msg): Adapt continuation - message in instantiations and inlined bodies for info messages. - -2017-04-25 Eric Botcazou - - * fname.adb (Has_Internal_Extension): Add pragma Inline. - Use direct 4-character slice comparisons. - (Has_Prefix): Add - pragma Inline. (Has_Suffix): Delete. - (Is_Internal_File_Name): - Test Is_Predefined_File_Name first. - (Is_Predefined_File_Name): - Use direct slice comparisons as much as possible and limit all - comparisons to at most 8 characters. - -2017-04-25 Hristian Kirtchev - - * checks.adb (Insert_Valid_Check): Code cleanup. - * exp_ch6.adb (Add_Validation_Call_By_Copy_Code): New routine. - (Expand_Actuals): Generate proper copy-back for a validation - variable when it acts as the argument of a type conversion. - * sem_util.adb (Is_Validation_Variable_Reference): Augment the - predicate to operate on type qualifications. - -2017-04-25 Hristian Kirtchev - - * sem_prag.adb, exp_ch6.adb, binde.adb, sem_disp.adb, s-fileio.adb: - Minor reformatting. - -2017-04-25 Bob Duff - - * sem_prag.adb (No_Return): Give an error if the pragma applies - to a body. Specialize the error for the specless body case, - as is done for (e.g.) pragma Convention. - * debug.adb: Add switch -gnatd.J to disable the above legality - checks. This is mainly for use in our test suite, to avoid - rewriting a lot of illegal (but working) code. It might also - be useful to customers. Under this switch, if a pragma No_Return - applies to a body, and the procedure raises an exception (as it - should), the pragma has no effect. If the procedure does return, - execution is erroneous. - -2017-04-25 Bob Duff - - * exp_ch6.adb (Expand_Actuals): This is the - root of the problem. It took N as an 'in out' parameter, and in - some cases, rewrote N, but then set N to Original_Node(N). So - the node returned in N had no Parent. The caller continued - processing of this orphaned node. In some cases that caused a - crash (e.g. Remove_Side_Effects climbs up Parents in a loop, - and trips over the Empty Parent). The solution is to make N an - 'in' parameter. Instead of rewriting it, return the list of - post-call actions, so the caller can do the rewriting later, - after N has been fully processed. - (Expand_Call_Helper): Move most of Expand_Call here. It has - too many premature 'return' statements, and we want to do the - rewriting on return. - (Insert_Post_Call_Actions): New procedure to insert the post-call - actions in the appropriate place. In the problematic case, - that involves rewriting N as an Expression_With_Actions. - (Expand_Call): Call the new procedures Expand_Call_Helper and - Insert_Post_Call_Actions. - -2017-04-25 Ed Schonberg - - * sem_prag.adb (Inherits_Class_Wide_Pre): Cleanup code, handle - properly type derived from generic formal types, to handle - properly modified version of ACATS 4.1B B611017. - -2017-04-25 Javier Miranda - - * exp_unst.adb (Subp_Index): Adding missing - support for renamings and functions that return a constrained - array type (i.e. functions for which the frontend built a - procedure with an extra out parameter). - -2017-04-25 Pascal Obry - - * s-string.adb: Minor code clean-up. - -2017-04-25 Bob Duff - - * s-os_lib.ads, s-os_lib.adb (Non_Blocking_Wait_Process): New - procedure. - * adaint.h, adaint.c (__gnat_portable_no_block_wait): C support - function for Non_Blocking_Wait_Process. - -2017-04-25 Bob Duff - - * prep.adb (Preprocess): Remove incorrect - Assert. Current character can be ASCII.CR. - -2017-04-25 Ed Schonberg - - * sem_prag.adb (Set_Convention_From_Pragma): Cleanup code for - convention Stdcall, which has a number of exceptions. Convention - is legal on a component declaration whose type is an anonymous - access to subprogram. - -2017-04-25 Hristian Kirtchev - - * sem_ch4.adb: sem_ch4.adb Various reformattings. - (Try_One_Prefix_Interpretation): Use the base type when dealing - with a subtype created for purposes of constraining a private - type with discriminants. - -2017-04-25 Javier Miranda - - * einfo.ads, einfo.adb (Has_Private_Extension): new attribute. - * warnsw.ads, warnsw.adb (All_Warnings): Set warning on late - dispatching primitives (Restore_Warnings): Restore warning on - late dispatching primitives (Save_Warnings): Save warning on late - dispatching primitives (Do_Warning_Switch): Use -gnatw.j/-gnatw.J - to enable/disable this warning. - (WA_Warnings): Set warning on late dispatching primitives. - * sem_ch3.adb (Analyze_Private_Extension_Declaration): Remember - that its parent type has a private extension. - * sem_disp.adb (Warn_On_Late_Primitive_After_Private_Extension): - New subprogram. - * usage.adb: Document -gnatw.j and -gnatw.J. - -2017-04-25 Hristian Kirtchev - - * exp_ch7.adb, checks.adb, sem_prag.adb, eval_fat.adb: Minor - reformatting. - -2017-04-25 Bob Duff - - * binde.adb (Validate): Do not pass dynamic strings - to pragma Assert, because older compilers do not support that. - -2017-04-25 Bob Duff - - * s-fileio.adb (Close): When a temp file is - closed, delete it and clean up its Temp_File_Record immediately, - rather than waiting until later. - (Temp_File_Record): Add File - component, so Close can know which Temp_File_Record corresponds - to the file being closed. - (Delete): Don't delete temp files, - because they are deleted by Close. - (Open): Set the File component - of Temp_File_Record. This requires moving the creation of the - Temp_File_Record to the end, after the AFCB has been created. - -2017-04-25 Hristian Kirtchev - - * checks.adb (Insert_Valid_Check): Do not generate - a validity check when inside a generic. - -2017-04-25 Yannick Moy - - * sem_res.adb (Resolve_Type_Conversion): Fix bad logic. - -2017-04-25 Arnaud Charlet - - * snames.ads-tmpl (Snames): More names for detecting predefined - potentially blocking subprograms. - -2017-04-25 Ed Schonberg - - * sem_prag.adb (Analyze_Pre_Post_Condition): The rules - concerning inheritance of class-wide preconditions do not apply - to postconditions. - -2017-04-25 Bob Duff - - * s-ficobl.ads: Minor comment fix. - -2017-04-25 Yannick Moy - - * checks.adb (Apply_Scalar_Range_Check): Analyze precisely - conversions from float to integer in GNATprove mode. - (Apply_Type_Conversion_Checks): Make sure in GNATprove mode - to call Apply_Type_Conversion_Checks, so that range checks - are properly positioned when needed on conversions, including - when converting from float to integer. (Determine_Range): In - GNATprove mode, take into account the possibility of conversion - from float to integer. - * sem_res.adb (Resolve_Type_Conversion): Only enforce range - check on conversions from fixed-point to integer, not anymore - on conversions from floating-point to integer, when in GNATprove - mode. - -2017-04-25 Yannick Moy - - * checks.adb (Determine_Range_R): Special case type conversions - from integer to float in order to get bounds in that case too. - * eval_fat.adb (Machine): Avoid issuing warnings in GNATprove - mode, for computations involved in interval checking. - -2017-04-25 Hristian Kirtchev - - * checks.adb (Insert_Valid_Check): Partially reimplement validity - checks. - * einfo.adb Node36 is now used as Validated_Object. - (Validated_Object): New routine. - (Set_Validated_Object): New routine. - (Write_Field36_Name): Add an entry for Validated_Object. - * einfo.ads Add new attribute Validated_Object along with - usage in entities. - (Validated_Object): New routine along with pragma Inline. - (Set_Validated_Object): New routine along with pragma Inline. - * exp_attr.adb (Make_Range_Test): Add processing for validation - variables to avoid extra reads and copies of the prefix. - * exp_ch6.adb (Expand_Actuals): Add copy-back for validation - variables in order to reflect any changes done in the variable - back into the original object. - * sem_util.adb (Is_Validation_Variable_Reference): New routine. - * sem_util.ads (Is_Validation_Variable_Reference): New routine. - -2017-04-25 Steve Baird - - * exp_ch7.adb (Build_Array_Deep_Procs, - Build_Record_Deep_Procs, Make_Finalize_Address_Body): Don't - generate Finalize_Address routines for CodePeer. - -2017-04-25 Ed Schonberg - - * sem_prag.adb (Inherits_Class_Wide_Pre): subsidiary of - Analyze_Pre_Post_Condition, to implement the legality checks - mandated by AI12-0131: Pre'Class shall not be specified for an - overriding primitive subprogram of a tagged type T unless the - Pre'Class aspect is specified for the corresponding primitive - subprogram of some ancestor of T. - -2017-04-25 Bob Duff - - * sem_ch8.adb (Use_One_Type): If a use_type_clause - is redundant, set its Used_Operations to empty. This is only - necessary for use clauses that appear in the parent of a generic - child unit, because those use clauses get reanalyzed when we - instantiate the generic, and we don't want the Used_Operations - carried over from the original context (where it was probably - not redundant). - -2017-04-25 Hristian Kirtchev - - * exp_ch6.adb: Minor reformatting. - -2017-04-25 Bob Duff - - * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): - Use Source_Index (Current_Sem_Unit) to find the correct casing. - * exp_prag.adb (Expand_Pragma_Check): Use Source_Index - (Current_Sem_Unit) to find the correct casing. - * par.adb (Par): Null out Current_Source_File, to ensure that - the above bugs won't rear their ugly heads again. - -2017-04-25 Ed Schonberg - - * sem_ch8.adb (Find_Type): For an attribute reference - 'Class, if prefix type is synchronized and previous errors - have suppressed the creation of the corresponding record type, - create a spurious class-wide for the synchonized type itself, - to catch other misuses of the attribute - -2017-04-25 Steve Baird - - * exp_ch6.adb (Expand_Simple_Function_Return): if CodePeer_Mode - is True, then don't generate the accessibility check for the - tag of a tagged result. - * exp_intr.adb (Expand_Dispatching_Constructor_Call): - if CodePeer_Mode is True, then don't generate the - tag checks for the result of call to an instance of - Ada.Tags.Generic_Dispatching_Constructor (i.e., both the "is a - descendant of" check and the accessibility check). - -2017-04-25 Ed Schonberg - - * sem_ch13.adb: Code cleanups. - * a-strbou.ads: minor whitespace fix in Trim for bounded strings. - * sem_ch8.ads: Minor comment fix. - -2017-04-25 Eric Botcazou - - * exp_ch4.adb (Library_Level_Target): New function. - (Expand_Concatenate): When optimization is enabled, also expand - the operation out-of-line if the concatenation is present within - the expression of the declaration of a library-level object and - not only if it is the expression of the declaration. - -2017-04-25 Bob Duff - - * freeze.adb (Freeze_Object_Declaration): Do - not Remove_Side_Effects if there is a pragma Linker_Section, - because in that case we want static initialization in the - appropriate section. - -2017-04-25 Gary Dismukes - - * exp_dbug.adb: Minor rewording and reformatting. - -2017-04-25 Ed Schonberg - - * sem_attr.adb (Statically_Denotes_Object): New predicate, to - handle the proposed changes to rules concerning potentially - unevaluated expressions, to include selected components that - do not depend on discriminants, and indexed components with - static indices. - * sem_util.adb (Is_Potentially_Unevaluated): Add check for - predicate in quantified expression, and fix bugs in the handling - of case expressions and membership test. - (Analyze_Attribute_Old_Result): use new predicate. - (Analyze_Attribute, case Loop_Entry): ditto. - -2017-04-25 Bob Duff - - * s-secsta.adb (SS_Info): Add a comment - explaining why we don't need to walk all the chunks in order to - compute the total size. - -2017-04-25 Bob Duff - - * namet.ads, namet.adb (Global_Name_Buffer): Increase the length - of the global name buffer to 4*Max_Line_Length. - -2017-04-25 Javier Miranda - - * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): When creating a - renaming entity for debug information, mark the entity as needing debug - info if it comes from sources. - -2017-04-25 Hristian Kirtchev - - * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Remove the - restriction converning the use of 'Address where the prefix is - of a controlled type. - -2017-04-25 Pierre-Marie de Rodat - - * exp_dbug.adb: In Debug_Renaming_Declaration, - skip slices that are made redundant by an indexed component - access. - * atree.h: New definition for Original_Node. - -2017-04-25 Hristian Kirtchev - - * sem_prag.adb, sem_prag.ads: Minor reformatting. - -2017-04-25 Ed Schonberg - - * sem_ch3.adb (Check_Entry_Contract): Call - Preanalyze_Spec_Expression so that resolution takes place as well. - * sem_util.adb (Check_Internal_Protected_Use): Reject properly - internal calls that appear in preconditions of protected - operations, in default values for same, and in contract guards - for contract cases in SPARK. - -2017-04-25 Eric Botcazou - - * a-numaux.ads: Fix description of a-numaux-darwin - and a-numaux-x86. - (Double): Define to Long_Float. - * a-numaux-vxworks.ads (Double): Likewise. - * a-numaux-darwin.ads - (Double): Likewise. - * a-numaux-libc-x86.ads (Double): Define to Long_Long_Float. - * a-numaux-x86.ads: Fix package description. - * a-numaux-x86.adb (Is_Nan): Minor tweak. - (Reduce): Adjust and complete description. Call Is_Nan instead of - testing manually. Use an integer temporary to hold rounded value. - * a-numaux-darwin.adb (Reduce): Likewise. - (Is_Nan): New function. - -2017-04-25 Ed Schonberg - - * sem_ch4.adb (Analyze_Selected_Component): Additional refinement - on analysis of prefix whose type is a current instance of a - synchronized type, but where the prefix itself is an entity that - is an object. - -2017-04-25 Ed Schonberg - - * exp_ch5.adb (Replace_Target): When rewriting the RHS, preserve - the identity of callable entities therein, because they have been - properly resolved, and prefixed calls may have been rewritten - as normal calls. - -2017-04-25 Patrick Bernardi - - * exp_ch3.adb (Build_Init_Statements): Convert - the expression of the pragma/aspect Secondary_Stack_Size to - internal type System.Parameters.Size_Type before assigning - it to the Secondary_Stack_Size component of the task type's - corresponding record. - -2017-04-25 Eric Botcazou - - * sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal - (etc) optimizations when the type is modular and the offsets - are equal. - -2017-04-25 Eric Botcazou - - * s-osinte-freebsd.ads: Minor comment tweaks - -2017-04-25 Javier Miranda - - * urealp.adb (UR_Write): Reverse previous patch - adding documentation on why we generate multiplications instead - of divisions (needed to avoid expressions whose computation with - large numbers may cause division by 0). - -2017-04-25 Bob Duff - - * erroutc.adb (Set_Specific_Warning_Off, - Set_Warnings_Mode_Off): Use the correct source file for - Stop. Was using Current_Source_File, which is only valid during - parsing. Current_Source_File will have a leftover value from - whatever file happened to be parsed last, because of a with_clause - or something. - -2017-04-25 Bob Duff - - * lib.ads, lib.adb (In_Internal_Unit): New functions similar - to In_Predefined_Unit, but including GNAT units. - * sem_util.ads, sem_util.adb (Should_Ignore_Pragma): Replace - with Should_Ignore_Pragma_Par and Should_Ignore_Pragma_Sem, - because Should_Ignore_Pragma was not working reliably outside - the parser, because Current_Source_File is not valid. - * sem_prag.adb, exp_prag.adb: Call Should_Ignore_Pragma_Sem. - * par-prag.adb: Call Should_Ignore_Pragma_Par. - -2017-04-25 Arnaud Charlet - - * gnat1drv.adb (Gnat1Drv): Disable Generate_Processed_File in - codepeer mode. - -2017-04-25 Javier Miranda - - * urealp.adb (UR_Write): Fix output of constants with a base other - that 10. - -2017-04-25 Justin Squirek - - * sem_ch13.adb (Get_Interfacing_Aspects): Moved to sem_util.adb. - * sem_prag.adb (Analyze_Pragma, Process_Import_Or_Interface): - Add extra parameter for Process_Interface_Name. - (Process_Interface_Name): Add parameter for pragma to analyze - corresponding aspect. - * sem_util.ads, sem_util.adb (Get_Interfacing_Aspects): Added - from sem_ch13.adb - -2017-04-25 Gary Dismukes - - * exp_ch7.adb, einfo.ads, sem_prag.adb: Minor reformatting and typo - correction. - -2017-04-25 Yannick Moy - - * sem_res.adb (Resolve_Comparison_Op): Do not - attempt evaluation of relational operations inside assertions. - -2017-04-25 Justin Squirek - - * exp_util.adb (Add_Interface_Invariants): - Restored, code moved back from Build_Invariant_Procedure_Body. - (Add_Parent_Invariants): Restored, code moved back from - Build_Invariant_Procedure_Body. - (Build_Invariant_Procedure_Body): - Remove refactored calls and integrated code from - Add_Parent_Invariants and Add_Interface_Invariants. - -2017-04-25 Johannes Kanig - - * errout.adb (Output_Messages): Adjust computation of total - errors - * erroutc.adb (Error_Msg): In statistics counts, deal - correctly with informational messages that are not warnings. - * errutil.adb (Finalize): adjust computation of total errors. - -2017-04-25 Arnaud Charlet - - * terminals.c (__gnat_terminate_pid): New. - * g-exptty.ads (Terminate_Process): New. Update comments. - -2017-04-25 Arnaud Charlet - - * a-cfinve.ads, a-cofove.ads (Empty_Vector): add Global contract. - -2017-04-25 Justin Squirek - - * sem_ch3.adb (Analyze_Declarations): Minor - correction to comments, move out large conditional and scope - traversal into a predicate. - (Uses_Unseen_Lib_Unit_Priv): Predicate function made from extracted - logic. - -2017-04-25 Ed Schonberg - - * sem_ch4.adb (Analyze_Selected_Component): Refine analysis - of prefix whose type is a current instance of a synchronized - type. If the prefix is an object this is an external call (or - requeue) that can only access public operations of the object. The - previous predicate was too restrictive, and did not allow public - protected operations, only task entries. - -2017-04-25 Hristian Kirtchev - - * sem_ch5.adb, fname.adb: Minor reformatting. - -2017-04-25 Hristian Kirtchev - - * einfo.adb (Is_Anonymous_Access_Type): New routine. - * einfo.ads Update the placement of - E_Anonymous_Access_Subprogram_Type along with all subtypes that - mention the ekind. - (Is_Anonymous_Access_Type): New routine. - * exp_ch7.adb (Allows_Finalization_Master): Do not generate a - master for an access type subject to pragma No_Heap_Finalization. - * exp_util.adb (Build_Allocate_Deallocate_Proc): An object being - allocated or deallocated does not finalization actions if the - associated access type is subject to pragma No_Heap_Finalization. - * opt.ads Add new global variable No_Heap_Finalization_Pragma. - * par-prag.adb Pragma No_Heap_Finalization does not need special - processing from the parser. - * sem_ch6.adb (Check_Return_Subtype_Indication): Remove ancient - ??? comments. Use the new predicate Is_Anonymous_Access_Type. - * sem_prag.adb Add an entry in table Sig_Flags for pragma - No_Heap_Finalization. - (Analyze_Pragma): Add processing for - pragma No_Heap_Finalization. Update various error messages to - use Duplication_Error. - * sem_util.ads, sem_util.adb (No_Heap_Finalization): New routine. - * snames.ads-tmpl: Add new predefined name No_Heap_Finalization - and corresponding pragma id. - -2017-04-25 Bob Duff - - * freeze.adb (Freeze_Record_Type): Use the - underlying type of the component type to determine whether it's - elementary. For representation clause purposes, a private type - should behave the same as its full type. - * fname.ads, fname.adb (Is_Predefined_File_Name): - Make sure things like "system.ali" are recognized as predefined. - -2017-04-25 Javier Miranda - - * debug.adb: Update documentation of -gnatd.6. - -2017-04-25 Ed Schonberg - - * sem_ch5.adb (Preanalyze_Range): Handle properly an Ada2012 - element iterator when the name is an overloaded function call, - one of whose interpretations yields an array. - -2017-04-25 Bob Duff - - * uname.ads, uname.adb (Is_Predefined_Unit_Name, - Is_Internal_Unit_Name): New functions for operating on unit - names, as opposed to file names. There's some duplicated code - with fname.adb, which is unfortunate, but it seems like we don't - want to add dependencies here. - * fname-uf.adb (Get_File_Name): Change Is_Predefined_File_Name - to Is_Predefined_Unit_Name; the former was wrong, because Uname - is not a file name at all. - * fname.ads, fname.adb: Document the fact that - Is_Predefined_File_Name and Is_Internal_File_Name can be called - for ALI files, and fix the code so it works properly for ALI - files. E.g. these should return True for "system.ali". - -2017-04-25 Justin Squirek - - * exp_util.adb (Add_Invariant): Removed, - code moved to Add_Invariant_Check, Add_Inherited_Invariant, - and Add_Own_Invariant. (Add_Invariant_Check): Used - for adding runtime checks from any kind of invariant. - (Add_Inherited_Invariant): Generates invariant checks for - class-wide invariants (Add_Interface_Invariants): Removed, code - moved to Build_Invariant_Procedure_Body (Add_Own_Invariant): - Create a types own invariant procedure (Add_Parent_Invariants): - Removed, code moved to Build_Invariant_Procedure_Body - (Build_Invariant_Procedure_Body): Add refactored calls - and integrated code from Add_Parent_Invariants and - Add_Interface_Invariants. - (Process_Type): Removed, the - relavant code was inlined into both Add_Own_Invariant and - Add_Inherited_Invariant. - -2017-04-25 Hristian Kirtchev - - * make.adb, par-ch2.adb, sem_util.adb, scans.ads, sem_ch8.adb, - scn.adb, osint.adb, fname.adb: Minor reformatting. - -2017-04-25 Pascal Obry - - * s-taprop-mingw.adb: Do not check for CloseHandle in - Finalize_TCB. - -2017-04-25 Hristian Kirtchev - - * sem_util.adb (Check_Part_Of_Reference): - Continue to examine the context if the reference appears within - an expression function. - -2017-04-25 Justin Squirek - - * exp_ch7.adb, exp_ch7.ads Remove Build_Invariant_Procedure_Body - and Build_Invariant_Procedure_Declaration. - * exp_util.ads, exp_util.adb Add Build_Invariant_Procedure_Body - and Build_Invariant_Procedure_Declaration from exp_ch7 - and break-out Is_Untagged_Private_Derivation from - Build_Invariant_Procedure_Body. - (Replace_Type_References): - Append an extra parameter to allow for dispatching replacements - and add the corrasponding logic. - (Type_Invariant): Remove - Replace_Typ_Refs and replace its references with calls to - Replace_Type_References. - * sem_ch3.adb, sem_prag.adb: Remove with and use of exp_ch7. - -2017-04-25 Bob Duff - - * sem_util.ads, sem_util.adb (Should_Ignore_Pragma): New function - that returns True when appropriate. - * par-prag.adb, exp_prag.adb, sem_prag.adb: Do not ignore pragmas - when compiling predefined files. - * fname.ads, fname.adb (Is_Predefined_File_Name): Fix bug: - "gnat.adc" should not be considered a predefined file name. - That required (or at least encouraged) a lot of cleanup of global - variable usage. We shouldn't be communicating information via - the global name buffer. - * bindgen.adb, errout.adb, fname-uf.adb, lib-load.adb, make.adb, - * restrict.adb, sem_ch10.adb, sem_ch6.adb, sem_ch8.adb: Changes - required by the above-mentioned cleanup. - -2017-04-25 Ed Schonberg - - * osint.adb (Find_File): Handle properly a request for a - configuration file whose name is a directory. - -2017-04-25 Hristian Kirtchev - - * sem_attr.adb, sem_ch5.adb: Minor reformatting. - -2017-04-25 Bob Duff - - * types.ads: Minor: Fix '???' comment. - * sem_ch8.adb: Minor comment fix. - -2017-04-25 Bob Duff - - * sem_prag.adb: Remove suspicious uses of Name_Buf. - * stringt.ads, stringt.adb, exp_dbug.adb, sem_dim.adb: Remove - Add_String_To_Name_Buffer, to avoid using the global Name_Buf. - Add String_To_Name with no side effects. - -2017-04-25 Justin Squirek - - * sem_ch3.adb (Analyze_Declarations): Add - additional condition for edge case. - -2017-04-25 Bob Duff - - * par-ch2.adb, scans.ads, scn.adb: Do not give an error for - reserved words inside pragmas. This is necessary to allow the - pragma name Interface to be used in pragma Ignore_Pragma. - * par.adb: Minor comment fix. - -2017-04-25 Javier Miranda - - * a-tags.ads, a-tags.adb (Type_Is_Abstract): Renamed as Is_Abstract. - * rtsfind.ads (RE_Type_Is_Abstract): Renamed as Is_Abstract. - * exp_disp.adb (Make_DT): Update occurrences of RE_Type_Is_Abstract. - * exp_intr.adb (Expand_Dispatching_Constructor_Call): Update - occurrences of RE_Type_Is_Abstract - -2017-04-25 Hristian Kirtchev - - * exp_util.adb (Build_Chain): Account for ancestor - subtypes while traversing the derivation chain. - -2017-04-25 Ed Schonberg - - * sem_attr.adb: minor reformatting. - -2017-04-25 Doug Rupp - - * sigtramp-vxworks-target.inc [PPC64]: Add a .localentry pseudo-op. - -2017-04-25 Ed Schonberg - - * sem_ch5.adb (Analyze_Assignment): Reset Full_Analysis flag on - the first pass over an assignment statement with target names, - to prevent the generation of subtypes (such as discriminated - record components)that may carry the target name outside of the - tree for the assignment. The subtypes will be generated when - the assignment is reanalyzed in full. - (Analyze_Target_Name): Handle properly class-wide types. - -2017-04-25 Hristian Kirtchev - - * elists.ads, elists.adb (Prepend_Unique_Elmt): New routine. - * exp_ch3.adb (Freeze_Type): Signal the DIC body is created for - the purposes of freezing. - * exp_util.adb Update the documentation and structure of the - type map used in class-wide semantics of assertion expressions. - (Add_Inherited_Tagged_DIC): There is really no need to preanalyze - and resolve the triaged expression because all substitutions - refer to the proper entities. Update the replacement of - references. - (Build_DIC_Procedure_Body): Add formal parameter - For_Freeze. Add local variable Build_Body. Inherited DIC pragmas - are now only processed when freezing occurs. Build a body only - when one is needed. - (Entity_Hash): Removed. - (Map_Types): New routine. - (Replace_Object_And_Primitive_References): Removed. - (Replace_References): New routine. - (Replace_Type_References): Moved to the library level of Exp_Util. - (Type_Map_Hash): New routine. - (Update_Primitives_Mapping): Update the mapping call. - (Update_Primitives_Mapping_Of_Types): Removed. - * exp_util.ads (Build_DIC_Procedure_Body): Add formal - parameter For_Freeze and update the comment on usage. - (Map_Types): New routine. - (Replace_References): New routine. - (Replace_Type_References): Moved to the library level of Exp_Util. - (Update_Primitives_Mapping_Of_Types): Removed. - * sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC - properties of the private type to the full view in case the full - view derives from a parent type and inherits a DIC pragma. - * sem_prag.adb (Analyze_Pragma): Guard against a case where a - DIC pragma is placed at the top of a declarative region. - -2017-04-25 Arnaud Charlet - - * a-tasatt.adb: Complete previous change and use an unsigned - int to avoid overflow checks. - -2017-04-25 Ed Schonberg - - * sem_attr.adb (Analyze_Attribute, case 'Access): Specialize - the error message when the attribute reference is an actual in - a call to a subprogram inherited from a generic formal type with - unknown discriminants, which makes the subprogram and its formal - parameters intrinsic (see RM 6.3.1 (8) and (13)). - -2017-04-25 Hristian Kirtchev - - * sem_aggr.adb, inline.adb, einfo.adb, einfo.ads, scng.adb, - sem_prag.adb: Minor reformatting. - -2017-04-25 Bob Duff - - * sem_attr.adb (Type_Key): Add code in the - recursive Compute_Type_Key to protect against fetching the source - code for Standard, in case a component of the type is declared - in Standard. There was already code to do this for the original - type, but not for its components. - -2017-04-25 Javier Miranda - - * exp_ch3.adb (Build_Initialization_Call): Handle - subtypes of private types when searching for the underlying full - view of a private type. - -2017-04-25 Javier Miranda - - * sem_res.adb (Set_Mixed_Mode_Operand): A universal - real conditional expression can appear in a fixed-type context - and must be resolved with that context to facilitate the code - generation to the backend. - -2017-04-25 Ed Schonberg - - * einfo.adb, einfo.ads (Body_Needed_For_Inlining): New flag, - to indicate whether during inline processing, when some unit U1 - appears in the context of a unit U2 compiled for instantiation - or inlining purposes, the body of U1 needs to be compiled as well. - * sem_prag.adb (Process_Inline): Set Body_Needed_For_Inlining if - context is a package declaration. - * sem_ch12.adb (Analyze_Generic_Subprogram_Declaration, - Analyze_Generic_Package_Declaration): ditto. - * inline.adb (Analyze_Inlined_Bodies): Check - Body_Needed_For_Inlining. - -2017-04-25 Ed Schonberg - - * par.adb (Current_Assign_Node): Global variable use to record - the presence of a target_name in the right hand side of the - assignment being parsed. - * par-ch4.adb (P_Name): If the name is a target_name, mark the - enclosing assignment node accordingly. - * par-ch5.adb (P_Assignment_Statement): Set Current_Assign_Node - appropriately. - * sem_ch5.adb (Analyze_Assignment): Disable expansion before - analyzing RHS if the statement has target_names. - * sem_aggr.adb (Resolve_Iterated_Component_Association): Handle - properly choices that are subtype marks. - * exp_ch5.adb: Code cleanup. - -2017-04-25 Bob Duff - - * s-memory.adb: Add a comment regarding efficiency. - * atree.adb: Fix the assertion, and combine 2 assertions into one, - "the source has an extension if and only if the destination does." - * sem_ch3.adb, sem_ch13.adb: Address ??? comments. - -2017-04-25 Arnaud Charlet - - * a-tasatt.adb (Set_Value): Fix handling of 32bits -> 64bits - conversion. - -2017-04-25 Doug Rupp - - * init.c (__gnat_error_handler) [vxworks]: Turn on sigtramp - handling for ppc64-vx7. - * sigtramp-vxworks-target.inc - [SIGTRAMP_BODY]: Add section for ppc64-vx7. - -2017-04-25 Arnaud Charlet - - * ada_get_targ.adb: New file. - -2017-04-25 Bob Duff - - * uintp.adb (Most_Sig_2_Digits): In case Direct (Right), fetch - Direct_Val (Right), instead of the incorrect Direct_Val (Left). - (UI_GCD): Remove ??? comment involving possible efficiency - improvements. This just isn't important after all these years. - Also minor cleanup. - * uintp.ads: Minor cleanup. - -2017-04-25 Hristian Kirtchev - - * exp_util.adb, exp_util.ads, sem_ch7.adb, sem_prag.adb, exp_ch3.adb: - Revert previous changes. - * scng.adb: Minor reformatting. - * s-stratt.ads: Fix unbalanced parens in comment. - -2017-04-25 Hristian Kirtchev - - * sem_ch3.adb, exp_util.adb, sem_prag.adb, freeze.adb, sem_util.adb: - Minor reformatting. - -2017-04-25 Ed Schonberg - - * scng.adb (Scan): Handle '@' appropriately. - * sem_ch5.adb: Code cleanup. - -2017-04-25 Ed Schonberg - - * freeze.adb (Check_Expression_Function): Do not check for the - use of deferred constants if the freezing of the expression - function is triggered by its generated body, rather than a - premature use. - -2017-04-25 Javier Miranda - - * exp_attr.adb (Rewrite_Stream_Proc_Call): Handle - subtypes of private types when performing the view conversion. - -2017-04-25 Hristian Kirtchev - - * exp_ch3.adb (Freeze_Type): Signal the DIC body is created for - the purposes of freezing. - * exp_util.adb Update the documentation and structure of the - type map used in class-wide semantics of assertion expressions. - (Add_Inherited_Tagged_DIC): There is really no need to preanalyze - and resolve the triaged expression because all substitutions - refer to the proper entities. Update the replacement of - references. - (Build_DIC_Procedure_Body): Add formal parameter - For_Freeze. Add local variable Build_Body. Inherited DIC pragmas - are now only processed when freezing occurs. Build a body only - when one is needed. - (Entity_Hash): Removed. - (Map_Types): New routine. - (Replace_Object_And_Primitive_References): Removed. - (Replace_References): New routine. - (Replace_Type_References): Moved to the library level of Exp_Util. - (Type_Map_Hash): New routine. - (Update_Primitives_Mapping): Update the mapping call. - (Update_Primitives_Mapping_Of_Types): Removed. - * exp_util.ads (Build_DIC_Procedure_Body): Add formal - parameter For_Freeze and update the comment on usage. - (Map_Types): New routine. - (Replace_References): New routine. - (Replace_Type_References): Moved to the library level of Exp_Util. - (Update_Primitives_Mapping_Of_Types): Removed. - * sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC - properties of the private type to the full view in case the full - view derives from a parent type and inherits a DIC pragma. - * sem_prag.adb (Analyze_Pragma): Guard against a case where a - DIC pragma is placed at the top of a declarative region. - -2017-04-25 Tristan Gingold - - * s-mmap.ads (Data): Add pragma Inline. - -2017-04-25 Hristian Kirtchev - - * checks.adb (Insert_Valid_Check): Do not use - a renaming to alias a volatile name because this will lead to - multiple evaluations of the volatile name. Use a constant to - capture the value instead. - -2017-04-25 Doug Rupp - - * init.c [VxWorks Section]: Disable sigtramp for ppc64-vx7. - -2017-04-25 Ed Schonberg - - * exp_util.adb, exp_util.ads (Build_Class_Wide_Expression): - Add out parameter to indicate to caller that a wrapper must - be constructed for an inherited primitive whose inherited - pre/postcondition has called to overridden primitives. - * freeze.adb (Check_Inherited_Conditions): Build wrapper body - for inherited primitive that requires it. - * sem_disp.adb (Check_Dispatching_Operation): Such wrappers are - legal primitive operations and belong to the list of bodies - generated after the freeze point of a type. - * sem_prag.adb (Build_Pragma_Check_Equivalent): Use new signature - of Build_Class_Wide_Expression. - * sem_util.adb, sem_util.ads (Build_Overriding_Spec): New procedure - to construct the specification of the wrapper subprogram created - for an inherited operation. - -2017-04-25 Bob Duff - - * s-osinte-linux.ads (pthread_mutexattr_setprotocol, - pthread_mutexattr_setprioceiling): Add new interfaces for these - pthread operations. - * s-taprop-linux.adb (Initialize_Lock, Initialize_TCB): Set - protocols as appropriate for Locking_Policy 'C' and 'I'. - * s-taprop-posix.adb: Minor reformatting to make it more similar - to s-taprop-linux.adb. - -2017-04-25 Ed Schonberg - - * sem_ch3.adb (Get_Discriminant_Value, Search_Derivation_Levels): - Handle properly a multi- level derivation involving both renamed - and constrained parent discriminants, when the type to be - constrained has fewer discriminants that the ultimate ancestor. - -2017-04-25 Bob Duff - - * sem_util.adb (Is_Object_Reference): In the - case of N_Explicit_Dereference, return False if it came from a - conditional expression. - -2017-04-25 Bob Duff - - * par-ch4.adb (P_Case_Expression): If a semicolon - is followed by "when", assume that ";" was meant to be ",". - -2017-04-25 Gary Dismukes - - * sem_ch9.adb, sem_ch10.adb, sem_util.adb: Minor reformatting and typo - fixes. - -2017-04-25 Arnaud Charlet - - * rtsfind.ads (SPARK_Implicit_Load): New procedure for forced - loading of an entity. - * rtsfind.adb (SPARK_Implicit_Load): Body with a pattern - previously repeated in the analysis. - * sem_ch9.adb (Analyze_Protected_Type_Declaration): use new - procedure SPARK_Implicit_Load. (Analyze_Task_Type_Declaration): - use new procedure SPARK_Implicit_Load. - * sem_ch10.adb (Analyze_Compilation_Unit): Use new procedure - SPARK_Implicit_Load. - -2017-04-25 Javier Miranda - - * sem_util.adb (New_Copy_Tree): By default - copying of defining identifiers is prohibited because - this would introduce an entirely new entity into the - tree. This patch introduces an exception to this general - rule: the declaration of constants and variables located in - Expression_With_Action nodes. - (Copy_Itype_With_Replacement): Renamed as Copy_Entity_With_Replacement. - (In_Map): New subprogram. - (Visit_Entity): New subprogram. - (Visit_Node): Handle EWA_Level, - EWA_Inner_Scope_Level, and take care of defining entities defined - in Expression_With_Action nodes. - -2017-04-25 Thomas Quinot - - * exp_ch6.adb: minor comment edit. - * sinfo.ads, sinfo.adb: New Null_Statement attribute for null - procedure specifications that come from source. - * par-ch6.adb (P_Subprogram, case of a null procedure): Set new - Null_Statement attribute. - * par_sco.adb (Traverse_Declarations_Or_Statements): For a null - procedure, generate statement SCO for the generated NULL statement. - * sem_ch6.adb (Analyze_Null_Procedure): Use null statement from - parser, if available. - -2017-04-04 Andreas Krebbel - - * system-linux-s390.ads: Use Long_Integer'Size to define - Memory_Size. - -2017-04-04 Eric Botcazou - - * sem_ch3.adb (Build_Derived_Record_Type): Fix long line. - -2017-04-03 Jonathan Wakely - - * doc/gnat_ugn/gnat_and_program_execution.rst: Fix typo. - * g-socket.adb (To_Host_Entry): Fix typo in comment. - * gnat_ugn.texi: Fix typo. - * raise.c (_gnat_builtin_longjmp): Fix capitalization in comment. - * s-stposu.adb (Allocate_Any_Controlled): Fix typo in comment. - * sem_ch3.adb (Build_Derived_Record_Type): Likewise. - * sem_util.adb (Mark_Coextensions): Likewise. - * sem_util.ads (Available_Full_View_Of_Component): Likewise. - -2017-03-28 Andreas Schwab - - PR ada/80117 - * system-linux-aarch64-ilp32.ads: New file. - * gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS_COMMON): Rename - from LIBGNAT_TARGET_PAIRS. - (LIBGNAT_TARGET_PAIRS_32, LIBGNAT_TARGET_PAIRS_64): Define. - (LIBGNAT_TARGET_PAIRS): Use LIBGNAT_TARGET_PAIRS_COMMON, and - LIBGNAT_TARGET_PAIRS_64 or LIBGNAT_TARGET_PAIRS_32 for -mabi=lp64 - or -mabi=ilp32, resp. - -2017-03-14 James Cowgill - - * s-osinte-linux.ads (struct_sigaction): Use correct type for sa_flags. - -2017-03-08 Thanassis Tsiodras - - PR ada/79903 - * socket.c (__gnat_gethostbyaddr): Add missing test for __rtems__. - -2017-03-08 Eric Botcazou - - PR ada/79945 - * system-linux-ppc.ads (Default_Bit_Order): Use Standard's setting. - - * system-linux-arm.ads (Default_Bit_Order): Likewise. - * system-linux-mips.ads (Default_Bit_Order): Likewise. - * system-linux-armeb.ads: Delete. - * system-linux-mipsel.ads: Likewise. - * gcc-interface/Makefile.in (MIPS/Linux): Adjust. - (ARM/Linux): Likewise. - -2017-02-24 Jakub Jelinek - - PR c/79677 - * gcc-interface/misc.c (gnat_handle_option): Pass true to - handle_generated_option GENERATED_P. - -2017-02-24 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_field): Do not remove the wrapper - around a justified modular type if it doesn't have the same scalar - storage order as the enclosing record type. - -2017-02-24 Eric Botcazou - - * gcc-interface/trans.c (gnat_to_gnu): Do not apply special handling - of boolean rvalues to function calls. - -2017-02-24 Eric Botcazou - - * gcc-interface/utils.c (fold_bit_position): New function. - (rest_of_record_type_compilation): Call it instead of bit_position to - compute the field position and remove the call to remove_conversions. - (compute_related_constant): Factor out the multiplication in both - operands, if any, and streamline the final test. - -2017-02-24 Eric Botcazou - - * gcc-interface/trans.c (return_value_ok_for_nrv_p): Add sanity check. - -2017-02-24 Eric Botcazou - - * gcc-interface/decl.c: Include demangle.h. - (is_cplusplus_method): Return again true for a primitive operation - only if it is dispatching. For a subprogram with an interface name, - call the demangler to get the number of C++ parameters and compare it - with the number of Ada parameters. - -2017-02-24 Eric Botcazou - - * gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): If - there is no end label, put the location of the At_End procedure on - the call to the procedure. - -2017-02-24 Eric Botcazou - - * gcc-interface/misc.c (gnat_type_max_size): Try to return a meaningful - value for array types with TYPE_INDEX_TYPE set on their domain type. - * gcc-interface/utils.c (max_size): For operations and expressions, do - not build a new node if the operands have not changed or are missing. - -2017-02-24 Eric Botcazou - - * gcc-interface/utils.c (max_size) : Flip the second - argument when recursing on TRUTH_NOT_EXPR. - -2017-02-12 John Marino - - * system-freebsd-x86.ads: Rename into... - * system-freebsd.ads: ...this. - (Default_Bit_Order): Define using Standard'Default_Bit_Order. - * gcc-interface/Makefile.in: Support aarch64-freebsd. - (x86-64/FreeBSD): Adjust to above renaming. - (i386/FreeBSD): Likewise. - -2017-02-09 Gerald Pfeifer - - * comperr.adb: Update FSF bug reporting URL. - -2017-02-01 Eric Botcazou - Jakub Jelinek - - PR ada/79309 - * adaint.c (__gnat_killprocesstree): Fix broken string handling. - -2017-01-25 Maxim Ostapenko - - PR lto/79061 - * gcc-interface/utils.c (get_global_context): Pass main_input_filename - to build_translation_unit_decl. - -2017-01-23 Javier Miranda - - * sem_util.adb (New_Copy_Tree): Code cleanup: - removal of the internal map (ie. variable Actual_Map, its - associated local variables, and all the code handling it). - * sem_ch9.adb (Analyze_Task_Type_Declaration): in GNATprove mode - force loading of the System package when processing a task type. - (Analyze_Protected_Type_Declaration): in GNATprove mode force - loading of the System package when processing a protected type. - * sem_ch10.adb (Analyze_Compilation_Unit): in GNATprove mode - force loading of the System package when processing compilation - unit with a main-like subprogram. - * frontend.adb (Frontend): remove forced loading of the System - package. - -2017-01-23 Ed Schonberg - - * sem_prag.adb (Default_Initial_Condition): If the desired type - declaration is a derived type declaration with discriminants, - it is rewritten as a private type declaration. - * sem_ch13.adb (Replace_Type_References_Generic, - Visible_Component): A discriminated private type with descriminnts - has components that must be rewritten as selected components - if they appear as identifiers in an aspect expression such as - a Default_Initial_Condition. - * sem_util.adb (Defining_Entity): support N_Iterator_Specification - nodes. - -2017-01-23 Hristian Kirtchev - - * ghost.ads, ghost.adb (Is_Ignored_Ghost_Unit): New routine. - * gnat1drv.adb Generate an empty object file for an ignored - Ghost compilation unit. - * inline.adb, sem_util.adb, sem_ch4.adb: Minor reformatting. - -2017-01-23 Yannick Moy - - * sem_ch4.adb (Analyze_Indexed_Component_Form): - Adapt to inlined prefix with string literal subtype. - * inline.adb (Expand_Inlined_Call): Keep unchecked - conversion inside inlined call when formal type is constrained. - -2017-01-23 Javier Miranda - - * sem_util.adb (New_Copy_Tree): Code cleanup: - removal of global variables. All the global variables, global - functions and tables of this subprogram are now declared locally. - -2017-01-23 Gary Dismukes - - * exp_strm.ads: Minor reformatting and typo fixes. - -2017-01-23 Hristian Kirtchev - - * sem_aggr.adb, par_sco.adb, exp_util.adb, sem.adb, sem_ch4.adb, - exp_aggr.adb: Minor reformatting. - * g-diopit.adb: minor grammar/punctuation fix in comment. - * g-byorma.ads: minor fix of unbalanced parens in comment. - -2017-01-23 Hristian Kirtchev - - * par.adb: Update the documentation of component Labl. - * par-ch6.adb (P_Return_Statement): Set the expected label of - an extended return statement to Error. - -2017-01-23 Tristan Gingold - - * s-boustr.ads, s-boustr.adb (Is_Full): New function. - -2017-01-23 Ed Schonberg - - * expander.adb: Handle N_Delta_Aggregate. - -2017-01-23 Javier Miranda - - * exp_ch6.adb (Expand_Call): Improve the code that - checks if some formal of the called subprogram is a class-wide - interface, to handle subtypes of class-wide interfaces. - -2017-01-23 Javier Miranda - - * checks.adb (Apply_Parameter_Aliasing_Checks): - Remove side effects of the actuals before generating the overlap - check. - -2017-01-23 Justin Squirek - - * exp_strm.ads, exp_strm.ads - (Build_Record_Or_Elementary_Input_Function): Add an extra parameter so - as to avoid getting the underlying type by default. - * exp_attr.adb (Expand_N_Attribute_Reference): Remove use of - underlying type in the Iiput and output attribute cases when - building their respective functions. - -2017-01-23 Gary Dismukes - - * scng.adb: Minor reformatting of error message. - -2017-01-23 Ed Schonberg - - * sem_ch6.adb (Analyze_Expression_Function): Do not attempt - to freeze the return type of an expression funxtion that is a - completion, if the type is a limited view and the non-limited - view is available. - -2017-01-23 Ed Schonberg - - * par-ch4.adb (P_Aggregate_Or_Parent_Expr): Recognize delta - aggregate construct. - (P_Record_Or_Array_Component_Association): An array aggregate - can start with an Iterated_Component_Association. - * scng.adb: Modify error message on improper use of @ in earlier - versions of the language. - * sinfo.ads: New node kind N_Delta_Aggregate. - * sinfo.adb: An N_Delta_Aggregate has component associations and - an expression. - * sem_res.adb (Resolve): Call Resolve_Delta_Aggregate. - * sem_aggr.ads, sem_aggr.adb (Resolve_Iterated_Component_Association): - Create a new index for each one of the choices in the association, - to prevent spurious homonyms in the scope. - (Resolve_Delta_Aggregate): New. - * sem.adb: An N_Delta_Aggregate is analyzed like an aggregate. - * exp_util.adb (Insert_Actions): Take into account - N_Delta_Aggregate. - * exp_aggr.ads: New procedure Expand_N_Delta_Aggregate. - * exp_aggr.adb: New procedure Expand_N_Delta_Aggregate, - and local procedures Expand_Delta_Array_Aggregate and - expand_Delta_Record_Aggregate. - * sprint.adb: Handle N_Delta_Aggregate. - -2017-01-23 Hristian Kirtchev - - * exp_ch11.adb (Expand_N_Exception_Declaration): Generate an - empty name when the exception declaration is subject to pragma - Discard_Names. - (Null_String): New routine. - -2017-01-23 Hristian Kirtchev - - * par-ch9.adb (P_Protected_Definition): Parse - any optional and potentially illegal pragmas which appear in - a protected operation declaration list. - (P_Task_Items): Parse - any optional and potentially illegal pragmas which appear in a - task item list. - -2017-01-23 Pascal Obry - - * s-taprop-mingw.adb (Enter_Task): Initialize the Thread handle which - is needed when a foreign thread call a Win32 API using a thread handle - like GetThreadTimes() for example. - -2017-01-23 Hristian Kirtchev - - * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not - allow an 'Address clause to be specified on a prefix of a - class-wide type. - -2017-01-23 Hristian Kirtchev - - * checks.adb (Insert_Valid_Check): Ensure that the prefix of - attribute 'Valid is a renaming of the original expression when - the expression denotes a name. For all other kinds of expression, - use a constant to capture the value. - * exp_util.adb (Is_Name_Reference): Moved to Sem_Util. - * sem_util.ads, sem_util.adb (Is_Name_Reference): Moved from Exp_Util. - -2017-01-23 Justin Squirek - - * sem_eval.adb (Eval_Integer_Literal): Add special - case to avoid optimizing out check if the literal appears in - an if-expression. - -2017-01-23 Hristian Kirtchev - - * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not - allow an 'Address clause to be specified on a prefix of a - class-wide type. - -2017-01-23 Hristian Kirtchev - - * checks.adb (Insert_Valid_Check): Ensure that the prefix of - attribute 'Valid is a renaming of the original expression when - the expression denotes a name. For all other kinds of expression, - use a constant to capture the value. - * exp_util.adb (Is_Name_Reference): Moved to Sem_Util. - * sem_util.ads, sem_util.adb (Is_Name_Reference): Moved from Exp_Util. - -2017-01-23 Justin Squirek - - * sem_eval.adb (Eval_Integer_Literal): Add special - case to avoid optimizing out check if the literal appears in - an if-expression. - -2017-01-23 Ed Schonberg - - * sem_ch4.adb (Try_Primitive_Operations, - Is_Valid_First_Argument_Of): argument is valid if it is a derived - type with unknown discriminants that matches its underlying - record view. - * exp_util.adb (Expand_Subtype_From_Expr): Do not expand - expression if its type is derived from a limited type with - unknown discriminants, because the expansion (which is a call) - must be expanded in the enclosing context to add the proper build- - in-place parameters to the call. - * lib.ads, exp_ch9.adb: Minor fixes in comments. - -2017-01-23 Yannick Moy - - * frontend.adb (Frontend): Do not load runtime - unit for GNATprove when parsing failed. - * exp_ch9.adb: minor removal of extra whitespace - * exp_ch6.adb: minor typo in comment - * sem_util.adb: Code cleanup. - * exp_ch9.ads, par-ch2.adb: minor style fixes in whitespace and comment - * a-ngcefu.adb: minor style fix in whitespace - -2017-01-23 Thomas Quinot - - * scos.ads: Document usage of 'd' as default SCO kind for - declarations. - * par_sco.adb (Traverse_Declarations_Or_Statements. - Traverse_Degenerate_Subprogram): New supporting routine for expression - functions and null procedures. - (Traverse_Declarations_Or_Statements.Traverse_One): Add - N_Expression_Function to the subprogram case; add required - support for null procedures and expression functions. - -2017-01-23 Bob Duff - - * namet.ads (Bounded_String): Decrease the size of type - Bounded_String to avoid running out of stack space. - * namet.ads (Append): Don't ignore buffer overflow; raise - Program_Error instead. - -2017-01-23 Hristian Kirtchev - - * exp_ch5.adb, freeze.adb, par-ch4.adb, scng.adb, sem_ch13.adb, - sem_ch3.adb, sem_ch5.adb, sem_ch5.ads, sem_util.adb, sinfo.ads: Minor - reformatting. - * exp_ch9.adb: minor style fix in comment. - -2017-01-23 Ed Schonberg - - * sem_ch4.adb (Analyze_Allocator): Handle properly a type derived - for a limited record extension with unknown discriminants whose - full view has no discriminants. - -2017-01-23 Yannick Moy - - * exp_spark.adb: Alphabetize with clauses. - -2017-01-23 Yannick Moy - - * sem_util.adb (Has_Enabled_Property): Treat - protected objects and variables differently from other variables. - -2017-01-23 Thomas Quinot - - * sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): - Split original Ada 95 part off into new subprogram - below. Call that subprogram (instead of proceeding with - AI95-0133 behaviour) if debug switch -gnatd.p is in use. - (Adjust_Record_For_Reverse_Bit_Order_Ada_95): ... new subprogram - * debug.adb Document new switch -gnatd.p - * freeze.adb (Freeze_Entity.Freeze_Record_Type): Do not adjust - record for reverse bit order if an error has already been posted - on the record type. This avoids generating extraneous "info:" - messages for illegal code. - -2017-01-23 Justin Squirek - - * sem_ch3.adb (Analyze_Declarations): Correct comments - * freeze.adb (Find_Constant): Add detection of deferred constants - so they are not incorrectly flagged as premature. - -2017-01-23 Ed Schonberg - - * scans.ads: New token At_Sign. Remove '@' from list of illegal - characters for future version of the language. '@' is legal name. - * scng.ads, scng.adb (Scan): Handle '@' appropriately. - * scn.adb (Scan_Reserved_Identifier): An occurrence of '@' - denotes a Target_Name. - * par-ch4.adb (P_Name, P_Primary): Handle Target_Name. - * sinfo.ads, sinfo.adb (N_Target_Name): New non-terminal node. - (Has_Target_Names): New flag on N_Assignment_Statement, to - indicate that RHS has occurrences of N_Target_Name. - * sem.adb: Call Analyze_Target_Name. - * sem_ch5.ads, sem_ch5.adb (Analyze_Target_Name): New subpogram. - (urrent_LHS): Global variable that denotes LHS of assignment, - used in the analysis of Target_Name nodes. - * sem_res.adb (Resolve_Target_Name): New procedure. - * exp_ch5.adb (Expand_Assign_With_Target_Names): (AI12-0125): - N is an assignment statement whose RHS contains occurences of @ - that designate the value of the LHS of the assignment. If the - LHS is side-effect free the target names can be replaced with - a copy of the LHS; otherwise the semantics of the assignment - is described in terms of a procedure with an in-out parameter, - and expanded as such. - (Expand_N_Assignment_Statement): Call - Expand_Assign_With_Target_Names when needed. - * exp_util.adb (Insert_Actions): Take into account N_Target_Name. - * sprint.adb: Handle N_Target_Name. - -2017-01-23 Eric Botcazou - - * checks.adb: Minor fix in comment. - -2017-01-23 Philippe Gil - - * g-debpoo.adb (Do_Report) remove freed chunks from chunks - count in Sort = Memory_Usage or Allocations_Count - -2017-01-23 Justin Squirek - - * sem_ch3.adb: Code cleanup. - -2017-01-23 Hristian Kirtchev - - * sem_prag.adb (Analyze_Refined_Depends_In_Decl_Part): Move all global - variables to the local variable section. Update the profile - of various nested routine that previously had visibility - of those globals. One the matching phase has completed, - remove certain classes of clauses which are considered noise. - (Check_Dependency_Clause): Properly detect a match between two - 'Result attributes. Update the various post-match cases to use - Is_Already_Matched as this routine now automatically recognizes - a previously matched 'Result attribute. - (Is_Already_Matched): New routine. - (Remove_Extra_Clauses): New routine. - (Report_Extra_Clauses): Remove the detection of ... => null - clauses as this is now done in Remove_Extra_Clauses. - -2017-01-23 Ed Schonberg - - * sem_aggr.adb (Resolve_Array_Aggregate): In ASIS mode do not - report on spurious overlaps between values involving a subtype - with a static predicate, because the expansion of such a subtype - into individual ranges in inhibited in ASIS mode. - -2017-01-23 Justin Squirek - - * sem_ch3.adb (Analyze_Declarations): Add detection - of an edge case and delay freezing if it is present. - -2017-01-23 Hristian Kirtchev - - * sem_ch3.adb, exp_spark.adb, exp_attr.adb, sem_ch9.adb, sem_prag.adb, - sem_util.adb, sem_warn.adb, exp_ch3.adb: Minor reformatting. - -2017-01-23 Hristian Kirtchev - - * freeze.adb (Freeze_Subprogram): Ensure that all anonymous - access-to-subprogram types inherit the convention of the - associated subprogram. (Set_Profile_Convention): New routine. - * sem_ch6.adb (Check_Conformance): Do not compare the conventions - of the two entities directly, use Conventions_Match to account - for anonymous access-to-subprogram and subprogram types. - (Conventions_Match): New routine. - -2017-01-23 Claire Dross - - * exp_spark.adb (Expand_SPARK_Attribute_Reference): For attributes - which return Universal_Integer, force the overflow check flag for - Length and Range_Length for types as big as Long_Long_Integer. - -2017-01-23 Claire Dross - - * exp_spark.adb (Expand_SPARK_Attribute_Reference): For - attributes which return Universal_Integer, introduce a conversion - to the expected type with the appropriate check flags set. - * sem_res.adb (Resolve_Range): The higher bound can be in Typ's - base type if the range is null. It may still be invalid if it - is higher than the lower bound. This is checked later in the - context in which the range appears. - -2017-01-23 Pierre-Marie de Rodat - - * scos.ads: Introduce a constant to represent ignored - dependencies in SCO_Unit_Table_Entry. - -2017-01-23 Hristian Kirtchev - - * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Remove extra - spaces from error messages. - -2017-01-23 Ed Schonberg - - * exp_ch3.adb (Check_Large_Modular_Array): New procedure, - subsidiary to Expand_N_Object_ Declaration, to compute a guard on - an object declaration for an array type with a modular index type - with the size of Long_Long_Integer. Special processing is needed - in this case to compute reliably the size of the object, and - eventually to raise Storage_Error, when wrap-around arithmetic - might compute a meangingless size for the object. - -2017-01-23 Justin Squirek - - * a-wtenau.adb, par-endh.adb, sem_prag.adb, - sem_type.adb: Code cleanups. - -2017-01-23 Bob Duff - - * sem_res.adb (Resolve_Call): In the part of the code where - it is deciding whether to turn the call into an indexed - component, avoid doing so if the call is to an instance of - Unchecked_Conversion. Otherwise, the compiler turns it into an - indexed component, and resolution of that turns it back into a - function call, and so on, resulting in infinite recursion. - * sem_util.adb (Needs_One_Actual): If the first formal has a - default, then return False. - -2017-01-21 Eric Botcazou - - * sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal (etc) - optimizations when the type is modular and the offsets are equal. - -2017-01-20 Thomas Quinot - - * sem_warn.adb (Warn_On_Useless_Assignment): Adjust wording of warning - message. - -2017-01-20 Nicolas Roche - - * terminals.c: Ignore failures on setpgid and tcsetpgrp commands. - -2017-01-20 Bob Duff - - * sem_eval.adb (Compile_Time_Compare): Disable the expr+literal - (etc) optimizations when the type is modular. - -2017-01-20 Yannick Moy - - * sem_ch6.adb (Move_Pragmas): move some pragmas, - but copy the SPARK_Mode pragma instead of moving it. - (Build_Subprogram_Declaration): Ensure that the generated spec - and original body share the same SPARK_Pragma aspect/pragma. - * sem_util.adb, sem_util.ads (Copy_SPARK_Mode_Aspect): New - procedure to copy SPARK_Mode aspect. - -2017-01-20 Bob Duff - - * sem_ch3.adb (Analyze_Declarations): Disable Resolve_Aspects - even in ASIS mode. - * sem_ch13.adb (Resolve_Name): Enable setting the entity to - Empty even in ASIS mode. - -2017-01-20 Hristian Kirtchev - - * exp_ch9.adb: minor style fixes in comments. - * sem_ch9.adb (Analyze_Delay_Relative): in GNATprove mode a delay - relative statement introduces an implicit dependency on - Ada.Real_Time.Clock_Time. - * sem_util.adb: Minor reformatting. - -2017-01-20 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Alignment - must be treated as delayed aspect even if the expression is - a literal, because the aspect affects the freezing and the - elaboration of the object to which it applies. - -2017-01-20 Tristan Gingold - - * s-osinte-vxworks.ads (Interrup_Range): New subtype. - -2017-01-20 Ed Schonberg - - * lib-xref.adb (Generate_Reference): Do not warn about the - presence of a pragma Unreferenced if the entity appears as the - actual in a procedure call that does not come from source. - -2017-01-20 Pascal Obry - - * expect.c, terminals.c: Fix some warnings about unused variables. - * gsocket.h, adaint.c, adaint.h: Fix some more warnings in the C part - of the runtime. - -2017-01-20 Bob Duff - - * exp_attr.adb (Constrained): Apply an access check (check that - the prefix is not null) when the prefix denotes an object of an - access type; that is, when there is an implicit dereference. - -2017-01-20 Gary Dismukes - - * s-rident.ads (constant Profile_Info): Remove - No_Calendar from GNAT_Extended_Ravenscar restrictions. - -2017-01-20 Tristan Gingold - - * s-maccod.ads: Add pragma No_Elaboration_Code_All - -2017-01-20 Hristian Kirtchev - - * ghost.adb (Mark_Ghost_Clause): New routine. - (Prune_Node): Do not prune compilation unit nodes. - (Remove_Ignored_Ghost_Code): Prune the compilation unit node directly. - This does not touch the node itself, but does prune all its fields. - * ghost.ads (Mark_Ghost_Clause): New routine. - * sem_ch8.adb (Analyze_Use_Package): Emit an error when a use - package clause mentions Ghost and non-Ghost packages. Mark a - use package clause as Ghost when it mentions a Ghost package. - (Analyze_Use_Type): Emit an error when a use type clause mentions - Ghost and non-Ghost types. Mark a use type clause as Ghost when - it mentions a Ghost type. - * sem_ch10.adb (Analyze_With_Clause): Mark a with clause as - Ghost when it withs a Ghost unit. - -2017-01-20 Javier Miranda - - * sem_res.adb (Resolve_Call): If a function call - returns a limited view of a type and at the point of the call the - function is not declared in the extended main unit then replace - it with the non-limited view, which must be available. If the - called function is in the extended main unit then no action is - needed since the back-end handles this case. - -2017-01-20 Eric Botcazou - - * sem_ch7.adb (Contains_Subp_Or_Const_Refs): Rename into... - (Contains_Subprograms_Refs): ...this. Adjust comment - for constants. (Is_Subp_Or_Const_Ref): Rename into... - (Is_Subprogram_Ref): ...this. - (Has_Referencer): Rename Has_Non_Subp_Const_Referencer variable into - Has_Non_Subprograms_Referencer and adjust comment. Remove - incorrect shortcut for package declarations and bodies. - -2017-01-20 Ed Schonberg - - * sem_ch3.adb (Complete_Private_Subtype): If the scope of the - base type differs from that of the completion and the private - subtype is an itype (created for a constraint on an access - type e.g.), set Delayed_Freeze on both to prevent out-of-scope - anomalies in gigi. - -2017-01-20 Hristian Kirtchev - - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): - When inheriting the SPARK_Mode of a prior expression function, - look at the properly resolved entity rather than the initial - candidate which may denote a homonym. - -2017-01-20 Ed Schonberg - - * sem_prag.adb (Rewrite_Assertion_Kind): If the name is - Precondition or Postcondition, and the context is pragma - Check_Policy, indicate that this Pre-Ada2012 usage is deprecated - and suggest the standard names Assertion_Policy /Pre /Post - instead. - -2017-01-20 Hristian Kirtchev - - * sem_ch10.adb, sem_cat.adb: Minor reformatting. - -2017-01-20 Javier Miranda - - * sem_ch3.adb (Access_Type_Declaration): Protect access to the - Entity attribute. - * sem_ch10.adb (Install_Siblings): Skip processing malformed trees. - * sem_cat.adb (Validate_Categoriztion_Dependency): Skip processing - malformed trees. - -2017-01-20 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspect_Specification, case - Dynamic_Predicate): If the entity E is a subtype that inherits - a static predicate for its parent P,, the inherited and the - new predicate combine in the generated predicate function, - and E only has a dynamic predicate. - -2017-01-20 Tristan Gingold - - * s-boustr.ads, s-boustr.adb: New package. - * Makefile.rtl: Add s-boustr. - -2017-01-20 Hristian Kirtchev - - * inline.adb (Process_Formals): Qualify the - expression of a return statement when it yields a universal type. - -2017-01-20 Hristian Kirtchev - - * freeze.adb (Freeze_All): Freeze the default - expressions of all eligible formal parameters that appear in - entries, entry families, and protected subprograms. - -2017-01-20 Ed Schonberg - - * sem_ch3.adb (Check_Nonoverridable_Aspects); Refine check - for illegal inherited Implicit_Dereference aspects with renamed - discriminants. - -2017-01-20 Javier Miranda - - * debug.adb (switch d.6): do not avoid declaring unreferenced itypes. - * nlists.ads (Lock_Lists, Unlock_Lists): New subprograms. - * nlists.adb (Lock_Lists, Unlock_Lists): New subprograms. - (Set_First, Set_Last, Set_List_Link, Set_Next, Set_Parent, - Set_Prev, Tree_Read): Adding assertion. - * atree.ads (Lock_Nodes, Unlock_Nodes): New subprograms. - * atree.adb (Lock_Nodes, Unlock_Nodes): New subprograms. - (Set_Analyzed, Set_Check_Actuals, Set_Comes_From_Source, - Set_Ekind, Set_Error_Posted, Set_Has_Aspects, - Set_Is_Ignored_Ghost_Node, Set_Original_Node, Set_Paren_Count, - Set_Parent, Set_Sloc, Set_Nkind, Set_FieldNN, Set_NodeNN, - Set_ListNN, Set_ElistNN, Set_NameN, Set_StrN, Set_UintNN, - Set_UrealNN, Set_FlagNNN, Set_NodeN_With_Parent, - Set_ListN_With_Parent): Adding assertion. - -2017-01-20 Ed Schonberg - - * sem_prag.adb (Process_Convention): Diagnose properly a pragma - import that applies to several homograph subprograms. when one - of them is declared by a subprogram body. - -2017-01-20 Justin Squirek - - * exp_ch6.adb (Expand_Call): Remove optimization - that nulls out calls to null procedures. - -2017-01-20 Yannick Moy - - * inline.adb (Expand_Inlined_Call): Keep more - precise type of actual for inlining whenever possible. In - particular, do not switch to the formal type in GNATprove mode in - some case where the GNAT backend might require it for visibility. - -2017-01-20 Ed Schonberg - - * sem_ch3.adb (Check_Non_Overridable_Aspects): An inherited - aspect Implicit_Dereference can be inherited by a full view if - the partial view has no discriminants, because there is no way - to apply the aspect to the partial view. - (Build_Derived_Record_Type): If derived type renames discriminants - of the parent, the new discriminant inherits the aspect from - the old one. - * sem_ch4.adb (Analyze_Call): Handle properly a parameterless - call through an access discriminant designating a subprogram. - * sem_ch5.adb (Analyze_Assignment): (Analyze_Call): Handle - properly a parameterless call through an access discriminant on - the left-hand side of an assignment. - * sem_res.adb (resolve): If an interpreation involves a - discriminant with an implicit dereference and the expression is an - entity, resolution takes place later in the appropriate routine. - * sem_ch13.adb (Analyze_Aspect_Implicit_Dereference): Recognize - access discriminants that designate a subprogram type. - -2017-01-20 Pascal Obry - - * a-locale.adb, a-locale.ads: Update Ada.Locales for RM 2012 COR:1:2016 - -2017-01-20 Yannick Moy - - * sem_ch10.adb (Check_No_Elab_Code_All): Do not issue an error - on implicitly with'ed units in GNATprove mode. - * sinfo.ads (Implicit_With): Document use of flag for implicitly - with'ed units in GNATprove mode. - -2017-01-20 Ed Schonberg - - * sem_cat.adb (Validate_Static_Object_Name): In a preelaborated - unit Do not report an error on a non-static entity that appears - in the context of a spec expression, such as an aspect expression. - -2017-01-20 Hristian Kirtchev - - * einfo.adb: Flag298 now denotes Is_Underlying_Full_View. - (Is_Underlying_Full_View): New routine. - (Set_Is_Underlying_Full_View): New routine. - (Write_Entity_Flags): Add an entry for Is_Underlying_Full_View. - * einfo.ads Add new attribute Is_Underlying_Full_View. - (Is_Underlying_Full_View): New routine along with pragma Inline. - (Set_Is_Underlying_Full_View): New routine along with pragma Inline. - * exp_util.adb (Build_DIC_Procedure_Body): Do not consider - class-wide types and underlying full views. The first subtype - is used as the working type for all Itypes, not just array base types. - (Build_DIC_Procedure_Declaration): Do not consider - class-wide types and underlying full views. The first subtype - is used as the working type for all Itypes, not just array - base types. - * freeze.adb (Freeze_Entity): Inherit the freeze node of a full - view or an underlying full view without clobbering the attributes - of a previous freeze node. - (Inherit_Freeze_Node): New routine. - * sem_ch3.adb (Build_Derived_Private_Type): Mark an underlying - full view as such. - (Build_Underlying_Full_View): Mark an underlying full view as such. - * sem_ch7.adb (Install_Private_Declarations): Mark an underlying - full view as such. - -2017-01-20 Yannick Moy - - * sinfo.ads: Document lack of Do_Division_Check flag - on float exponentiation. - -2017-01-19 Javier Miranda - - * ghost.adb (Propagate_Ignored_Ghost_Code): Protect access to the - identifier attribute of a block-statement node. Required to avoid - assertion failure when building the new containers library. - -2017-01-19 Bob Duff - - * exp_ch3.adb: Update comment. - -2017-01-19 Vincent Celier - - * gprep.adb (Gnatprep): Parse the definition file without - "replace in comments" even when switch -C is used. - -2017-01-19 Justin Squirek - - * exp_ch9.adb (Is_Pure_Barrier): Create function - Is_Count_Attribute to identify an expansion of the 'Count - attribute. - -2017-01-19 Ed Schonberg - - * sem_ch5.adb (Analyze_Loop_Statement): In GNATprove mode the - statements within an element iterator loop are only analyzed - agter the loop is rewritten. Within a generic the analysis must - be performed in any case to complete name capture. - -2017-01-19 Bob Duff - - * sem_prag.adb (Analyze_Pragma): Check for ignored pragmas first, - before checking for unrecognized pragmas. - Initialize Pname on its declarations; that's always good style. - -2017-01-19 Claire Dross - - * exp_ch7.adb (Build_Invariant_Procedure_Body): Semi-insert the - body into the tree for GNATprove by setting its Parent field. The - components invariants of composite types are not checked by - the composite type's invariant procedure in GNATprove mode. - (Build_Invariant_Procedure_Declaration): Semi-insert the - declaration into the tree for GNATprove by setting its Parent - field. - * freeze.adb (Freeze_Arry_Type):In GNATprove mode, do not add - the component invariants to the array type invariant procedure - so that the procedure can be used to check the array type - invariants if any. - (Freeze_Record_Type): In GNATprove mode, do - not add the component invariants to the record type invariant - procedure so that the procedure can be used to check the record - type invariants if any. - -2017-01-19 Hristian Kirtchev - - * lib-xref-spark_specific.adb: Minor reformatting. - * exp_ch7.adb (Add_Parent_Invariants): Do not process array types. - -2017-01-19 Javier Miranda - - * exp_aggr.adb (Pass_Aggregate_To_Back_End): Renamed as - Build_Back_End_Aggregate. - (Generate_Aggregate_For_Derived_Type): Code cleanup. - (Prepend_Stored_Values): Code cleanup. - -2017-01-19 Ed Schonberg - - * sem_ch6.adb (Analyze_Expression_Function): Check for an - incomplete return type after attempting to freeze it, so that - other freeze actiona are generated in the proper order. - -2017-01-19 Ed Schonberg - - * sem_aggr.adb (Resolve_Aggregate): If the type is a string - type, ie. a type whose component is a character type, and the - aggregate is positional, do not convert into a string literal - if the index type is not an integer type, because the original - type may be required in an enclosing operation. - -2017-01-19 Bob Duff - - * binde.adb, debug.adb: Enable new elaboration order algorithm - by default. -dp switch reverts to the old algorithm. - -2017-01-19 Hristian Kirtchev - - * sem_ch3.adb Add with and use clauses for Exp_Ch7. - (Analyze_Declarations): Create the DIC and Invariant - procedure bodies s after all freezing has taken place. - (Build_Assertion_Bodies): New routine. - * sem_ch7.adb Remove the with and use clauses for Exp_Ch7 - and Exp_Util. - (Analyze_Package_Specification): Remove the - generation of the DIC and Invariant procedure bodies. This is - now done by Analyze_Declarations. - * sem_disp.adb (Check_Dispatching_Operation): DIC and Invariant - procedures are never treated as primitives. - -2017-01-19 Yannick Moy - - * frontend.adb: Analyze inlined bodies and check elaboration - rules in GNATprove mode too. - * sem_elab.adb (Delay_Element): Add Boolean component to save - indication that call is in SPARK code. (Check_Elab_Calls): - Check elaboration rules in GNATprove mode, and correctly set - the current value of SPARK_Mode. - * lib-xref-spark_specific.adb - (Add_SPARK_Xrefs): Simplify iteration over dereferences. - -2017-01-19 Ed Schonberg - - * exp_ch4.adb (Expand_Concatenate): Do no enable overflow - checks on the expression for the high bound of concatenation - when checks are disabled, to suppress warnings about potential - constraint errors in restricted runtimes. - -2017-01-19 Hristian Kirtchev - - * exp_ch3.adb (Expand_Freeze_Enumeration_Type): Mark the - representation-to-position function as inlined. - * sem_cat.adb (Set_Categorization_From_Scope): Do not modify - the purity of an internally generated entity if it has been - explicitly marked as pure for optimization purposes. - * exp_aggr.adb: Minor reformatting. - -2017-01-19 Javier Miranda - - * exp_ch6.adb (Expand_Call): Remove side effects on - actuals that are allocators with qualified expression since the - initialization of the object is performed by means of individual - statements (and hence it must be done before the call). - -2017-01-19 Ed Schonberg - - * sem_ch3.adb (Analyze_Declarations): Minor reformatting. - (Build_Derived_Enumeration_Type): If the derived type inherits a - dynamic predicate from its parent, the bounds of the type must - freeze because an explicit constraint is constructed for the - type and the corresponding range is elaborated now. - -2017-01-19 Arnaud Charlet - - * sem_attr.ads: minor fix of inconsistent casing in comment - * lib-writ.ads: minor align comments in columns - * sem_ch3.adb: Minor reformatting. - * spark_xrefs.ads: minor fix typo in SPARK-related comment - * table.ads: minor style fix in comment - * lib-xref-spark_specific.adb - (Add_SPARK_Xrefs): simplify processing of SPARK cross-references. - * sem_ch12.adb: minor whitespace fix - * freeze.adb: Add comment. - * sem_util.adb (Unique_Name): for instances of - generic subprograms ignore the name of the wrapper package. - -2017-01-19 Javier Miranda - - * exp_aggr.adb (Resolve_Record_Aggregate): - Factorize code needed for aggregates of limited and unlimited - types in a new routine. - (Pass_Aggregate_To_Back_End): New subprogram. - -2017-01-19 Yannick Moy - - * sinfo.adb (Pragma_Name): Only access up to Last_Pair of Pragma_Map. - -2017-01-19 Ed Schonberg - - * sem_ch4.ads, sem_ch4.adb (Try_Object_Operation): Make subprogram - public, for use elsewhere. - * sem_ch6.adb (Analyze_Procedure_Call): In SPARK_Mode and within - an Inlined_body, recognize a call that uses object notation - and has not been rewritten as a regular call because regular - expansion has not taken place. - -2017-01-19 Bob Duff - - * checks.adb (Apply_Type_Conversion_Checks): Disable small optimization - in case of generic formal discrete types, because it causes crashes in - the compiler when built with assertions on. - -2017-01-19 Hristian Kirtchev - - * lib-xref-spark_specific.adb, sem_util.adb, sem_util.ads, - sem_ch4.adb, sem_ch8.adb, lib-xref.ads: Minor reformatting. - -2017-01-19 Bob Duff - - * bcheck.adb (Check_Consistent_Dynamic_Elaboration_Checking): - Increment Warnings_Detected. It was decrementing, which is - wrong since we just issued a warning message. - * binderr.ads (Errors_Detected, Warnings_Detected): Declare - these variables to be of subtype Nat instead of Int, because - they should never be negative. - -2017-01-19 Javier Miranda - - * contracts.adb (Build_Postconditions_Procedure): Replace - Generate_C_Code by Modify_Tree_For_C. - * exp_aggr.adb (Build_Record_Aggr_Code, Expand_Array_Aggregate): - Replace Generate_C_Code by Modify_Tree_For_C. - * exp_attr.adb (Float_Valid, Is_GCC_Target): Replace Generate_C_Code by - Modify_Tree_For_C. - * exp_ch11.adb (Expand_N_Exception_Declaration): Replace - Generate_C_Code by Modify_Tree_For_C. - * exp_ch4.adb (Expand_Allocator_Expression): Replace - Generate_C_Code by Modify_Tree_For_C. - * exp_dbug.adb (Qualify_Entity_Name): Replace Generate_C_Code - by Modify_Tree_For_C. - * exp_util.adb (Remove_Side_Effects, Side_Effect_Free): Replace - Generate_C_Code by Modify_Tree_For_C. - * sem_res.adb (Resolve_Type_Conversion): Replace Generate_C_Code - by Modify_Tree_For_C. - * sinfo.ads (Modify_Tree_For_C): Adding documentation. - -2017-01-19 Javier Miranda - - * sem_util.ads, sem_util.adb (Expression_Of_Expression_Function): New - subprogram. - (Is_Inlinable_Expression_Function): New subprogram. - * exp_ch6.ads, exp_ch6.adb (Expression_Of_Expression_Function): Moved - to Sem_Util. - (Is_Inlinable_Expression_Function): Moved to Sem_Util. - -2017-01-19 Ed Schonberg - - * sem_ch4.adb (Diagnose_Call): Improve error message when a - selected component has a prefix that might be interpreted - as a parameterless function call, but none of the candidate - interpretations is parameterless, and there is a hidden homonym - of the prefix that is a package. - * sem_ch8.adb (Find_Selected_Component): If the prefix might be - interpreted as a parameterless function call and its analysis - fails, do not call Analyze_Selected_Component. - -2017-01-19 Steve Baird - - * sem_util.ads: Add new Use_Full_View Boolean parameter to - Get_Index_Bounds. - * sem_util.adb (Get_Index_Bounds): replace calls to Scalar_Range with - calls to a newly-defined Scalar_Range_Of_Right_View function. - -2017-01-19 Arnaud Charlet - - * gnat1drv.adb: minor fix of unbalanced parens in comment - * lib-xref.ads (Traverse_Compilation_Unit): declaration moved - to visible part of the package to allow re-use in GNATprove. - * lib-xref-spark_specific.adb (Traverse_Stub): routine refactored - from repeated code of Traverse_Compilation_Unit. - (Traverse_Declaration_Or_Statement): fixed detection of - generic subprograms and packages; also, iteration over case - statement alternatives rewritten to avoid testing if the first - alternative is present (since it must be present due to Ada - syntax restrictions). - -2017-01-19 Hristian Kirtchev - - * exp_ch6.adb (Expand_N_Subprogram_Body): Mark the spec as - returning by reference not just for subprogram body stubs, - but for all subprogram cases. - * sem_util.adb: Code reformatting. - (Requires_Transient_Scope): Update the call to Results_Differ. - (Results_Differ): Update the parameter profile and the associated - comment on usage. - -2017-01-19 Ed Schonberg - - * sem_dim.adb (Analyze_Dimension): Analyze object declaration and - identifier nodes that do not come from source, to handle properly - dimensionality check within an inlined body which inclddes both - original operands and rewritten operands. This removes spurious - dimensionality errors in the presence of front-end inlining, - as well as in SPARK mode. - -2017-01-16 Jakub Jelinek - - PR driver/49726 - * gcc-interface/lang.opt (gant, gnatO, gnat): Add Driver flag. - -2017-01-13 Rainer Orth - - * gcc-interface/Makefile.in (SPARC/Solaris): Fix typo. - -2017-01-13 Arnaud Charlet - - * doc/gnat_ugn/getting_started_with_gnat.rst, - doc/gnat_ugn/inline_assembler.rst, - doc/gnat_ugn/building_executable_programs_with_gnat.rst, - doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, - doc/gnat_ugn/about_this_guide.rst, - doc/gnat_ugn/platform_specific_information.rst, - doc/gnat_ugn/example_of_binder_output.rst, - doc/gnat_ugn/gnat_and_program_execution.rst, - doc/gnat_ugn/gnat_utility_programs.rst, - doc/gnat_ugn/the_gnat_compilation_model.rst, - doc/gnat_rm/implementation_defined_attributes.rst, - doc/gnat_rm/compatibility_and_porting_guide.rst, - doc/gnat_rm/standard_library_routines.rst, - doc/gnat_rm/standard_and_implementation_defined_restrictions.rst, - doc/gnat_rm/implementation_defined_pragmas.rst, - doc/gnat_rm/the_gnat_library.rst, - doc/gnat_rm/obsolescent_features.rst, - doc/gnat_rm/about_this_guide.rst, - doc/gnat_rm/the_implementation_of_standard_i_o.rst, - doc/gnat_rm/implementation_of_ada_2012_features.rst, - doc/gnat_rm/interfacing_to_other_languages.rst, - doc/gnat_rm/implementation_defined_aspects.rst, - doc/gnat_rm.rst: Update documentation. - * gnat_rm.texi, gnat_ugn.texi: Regenerated. - -2017-01-13 Ed Schonberg - - * einfo.ads: minor grammar fixes in comment of Normalized_Position_Max. - * scil_ll.adb: Minor style fix in comment. - * sem_ch8.adb (Analyze_Expanded_Name): Perform dimension analysis - even if entity is already set, because the node may be renalyzed - after inlining transformations. - -2017-01-13 Javier Miranda - - * sem_res.adb (Resolve_Call): Do not establish a transient scope - for a call to inlinable expression function (since the call will - be replaced by its returned object). - * exp_ch6.ads (Is_Inlinable_Expression_Function): New subprogram. - * exp_ch6.adb (Expression_Of_Expression_Function): New subprogram. - (Expand_Call): For inlinable expression function call replace the - call by its returned object. - (Is_Inlinable_Expression_Function): New subprogram. - -2017-01-13 Gary Dismukes - - * checks.adb: Minor typo fix and reformatting. - -2017-01-13 Javier Miranda - - * contracts.adb (Contract_Only_Subprograms): Remove formal. - (Copy_Original_Specification): Removed. - (Skip_Contract_Only_Subprogram): Move here checks previously - located in the caller of this routine (to leave the code more clean). - (Build_Contract_Only_Subprogram): Code cleanup. - * scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): Removed. - (Get_Contract_Only_Missing_Body_Name): Removed. - -2017-01-13 Javier Miranda - - * sem_ch6.adb (Cloned_Expression): New subprogram. - (Freeze_Expr_Types): Complete previous patch since the expression - of an expression-function may have iterators and loops with - defining identifiers which, as part of the preanalysis of the - expression, may be left decorated with itypes that will not be - available in the tree passed to the backend. - -2017-01-13 Ed Schonberg - - * checks.adb (Apply_Type_Conversion_Checks): Optimize a type - conversion to Integer of an expression that is an attribute - reference 'Pos on an enumeration type. - -2017-01-13 Bob Duff - - * atree.ads: Minor comment fix. - -2017-01-13 Justin Squirek - - * sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function - calls in accessibility check on return statement. - -2017-01-13 Hristian Kirtchev - - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): - Ensure that the input body is a subprogram body before trying to - determine whether it denoted an expression function. Note that - subprogram body stubs cannot denote expression functions. - -2017-01-13 Gary Dismukes - - * bindgen.adb, sem_ch6.adb, binde.adb, exp_ch3.adb: Minor reformatting - and typo fixes. - -2017-01-13 Javier Miranda - - * einfo.ads (Component_Bit_Offset): Fix documentation. - * sem_ch13.adb (Check_Record_Representation_Clause): Skip check - on record holes for components with unknown compile-time offsets. - -2017-01-13 Bob Duff - - * ali.ads, ali.adb (Static_Elaboration_Model_Used): Remove unused flag. - * g-locfil.ads: Minor comment fix. - -2017-01-13 Bob Duff - - * binde.adb (Elab_New): New elaboration order algorithm - that is expected to cause fewer ABE issues. This is a work in - progress. The new algorithm is currently disabled, and can be - enable by the -dp switch, or by modifying the Do_Old and Do_New - etc. flags and rebuilding. Experimental code is included to - compare the results of the old and new algorithms. - * binde.ads: Use GNAT.Dynamic_Tables instead of Table, so we - can have multiple of these tables, so the old and new algorithms - can coexist. - * bindgen.ads (Gen_Output_File): Pass Elab_Order as an 'in' - parameter of type array. This avoids the global variable, and - allows bounds checking (which is normally defeated by the tables - packages). It also ensures that the Elab_Order is read-only - to Bindgen. - * bindgen.adb: Pass Elab_Order as an 'in' parameter to all - subprograms that need it, as above. - * debug.adb: Document new -dp switch. Modify doc of old -do - switch. - * gnatbind.adb (Gnatbind): Make use of new interfaces to Binde - and Bindgen. Move writing of closure (-R and -Ra switches) - to Binde; that's more convenient. - -2017-01-13 Ed Schonberg - - * sem_ch6.adb (Analyze_Expression_Function): If the expression - function is a completion, all entities referenced in the - expression are frozen. As a consequence, a reference to an - uncompleted private type from an enclosing scope is illegal. - -2017-01-13 Javier Miranda - - * sem_ch6.adb (Freeze_Expr_Types): New subprogram. - (Analyze_Subprogram_Body_Helper): At the occurrence of an - expression function declaration that is a completion, its - expression causes freezing (AI12-0103). - -2017-01-13 Vadim Godunko - - * a-coinho-shared.adb: Fix memory leaks in Constant_Reference and - Reference functions of Ada.Containers.Indefinite_Holders. - -2017-01-13 Bob Duff - - * s-os_lib.ads: Minor comment fixes. - -2017-01-13 Hristian Kirtchev - - * exp_ch3.adb (Default_Initialize_Object): Do not default - initialize an object when it is of a task type and restriction - No_Tasking is in effect because the initialization is obsolete. - * exp_ch9.adb (Build_Master_Entity): Do not generate a master when - restriction No_Tasking is in effect. - (Build_Master_Renaming): Do not rename a master when restriction - No_Tasking is in effect. - -2017-01-13 Ed Schonberg - - * sem_aggr.adb (Resolve_Array_Aggregate): The code that verifies - the legality of An others clause applies as well to a choice in - an Iterated_component_ association. - (Resolve_Iterated_Component_Association): An others choice - is legal. - * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): An - Iterated_Component_Association is not static. - -2017-01-13 Hristian Kirtchev - - * exp_ch3.adb (Freeze_Type): Mark the Ghost mode as set in case - control is passed to the expresion handler before the new mode - is set. - * sem_ch12.adb (Analyze_Package_Instantiation, - Analyze_Subprogram_Instantiation): Mark the Ghost mode as set - in case control is passed to the expresion handler before the - new mode is set. - -2017-01-13 Hristian Kirtchev - - * sem_aggr.adb, sem_ch3.adb, inline.adb, sem_util.adb, exp_ch4.adb, - exp_aggr.adb: Minor reformatting. - -2017-01-13 Gary Dismukes - - * inline.adb: Minor reformatting and typo fix. - -2017-01-13 Ed Schonberg - - * sem_util.ads, sem_util.adb (Choice_List): Move function here - from sem_aggr.adb, for use elsewhere. - * sem_ch3.adb (Analyze_Object_Declaration): Use Choice_List. - * sem_aggr.adb (Resolve_Array_Aggregate): Remove - Iterated_Component_Present. - * exp_aggr.adb: Use Choice_List throughout, to handle - Iterated_Component_Associations. - (Gen_Loop): Generate proper loop for an - Iterated_Component_Association: loop variable has the identifier - of the original association. Generate a loop even for a single - component choice, in order to make loop parameter visible in - expression. - (Flatten): An Iterated_Component_Association is not static. - -2017-01-13 Yannick Moy - - * exp_ch4.adb (Expand_N_Op_Expon): Ensure that the value of - float exponentiation for statically known small negative values - is the reciprocal of the exponentiation for the opposite value - of the exponent. - * s-exnllf.adb (Exn_Float, Exn_Long_Float, Exn_Long_Long_Float): - Ensure that the value of float exponentiation for negative values - is the reciprocal of the exponentiation for the opposite value - of the exponent. - * inline.adb (Expand_Inlined_Call): Fix the count - for the number of generated gotos. - -2017-01-13 Yannick Moy - - * inline.adb: Code cleanup. - * sem_util.adb (Is_OK_Volatile_Context): Add - expression in delay statement as OK for volatile context. - -2017-01-13 Ed Schonberg - - * sem_aggr.adb (Resolve_Array_Aggregate): In normal compilation - mode a choice that is a subtype with a static predicate is - replaced by the values it covers. This transformation must not - be performed in ASIS mode, to preserve the source for analysis. - -2017-01-13 Justin Squirek - - * nlists.ads: Correct minor typo. - -2017-01-13 Gary Dismukes - - * sem_ch13.adb: Minor reformatting and typo fix. - -2017-01-13 Ed Schonberg - - * par-ch4.adb (P_Aggregate_Or_Parent_Expr): An - Iterated_Component_Association is a named association in an - array aggregate. - * sem_aggr.adb (Resolve_Iterated_Component_Association): New - procedure, subsidiary of Resolve_Array_Aggregate, to analyze - and resolve the discrete choices and the expression of the - new construct. - * sinfo.adb, sinfo.ads: In analogy with N_Component_Association, - Loop_Actions and Box_Present are attributes of - N_Iterated_Component_Association nodes. Box_Present is always - False in this case. - * sprint.adb (Sprint_Node): An Iterated_Component_Association - has a Discrete_Choices list, as specified in the RM. A - Component_Association for aggregate uses instead a Choices list. - We have to live with this small inconsistency because the new - construct also has a defining identifier, and there is no way - to merge the two node structures. - -2017-01-13 Yannick Moy - - * inline.adb (Remove_Aspects_And_Pragmas): Add Unused to the - list of pragmas to remove. Remove pragmas from the list of - statements in the body to inline. - * namet.adb, namet.ads (Nam_In): New version with 12 parameters. - -2017-01-13 Ed Schonberg - - * sem_ch3.adb (Resolve_Aspects): New procedure, subsidiary of - Analyze_Declarations, to analyze and resolve the expressions of - aspect specifications in the current declarative list, so that - the expressions have proper entity and type info. This is needed - for ASIS when there is no subsequent expansion to generate this - semantic information. - * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Use Etype of - original expression, to suppress cascaded errors when expression - has been constant-folded. - (Resolve_Aspect_Expressions, Resolve_Name): Preserve entities in - ASIS mode, because there is no subsequent expansion to decorate - the tree. - -2017-01-13 Yannick Moy - - * inline.adb, inline.ads (Call_Can_Be_Inlined_In_GNATprove_Mode): - New function to detect when a call may be inlined or not in - GNATprove mode. - (Expand_Inlined_Call): Ensure that a temporary - is always created in the cases where a type conversion may be - needed on an input parameter in GNATprove mode, so that GNATprove - sees the check to perform. - * sem_res.adb (Resolve_Call): In GNATprove mode, skip inlining - when not applicable due to actual requiring type conversion - with possible check but no temporary value can be copied for - GNATprove to see the check. - -2017-01-13 Hristian Kirtchev - - * sem_aggr.adb, par_sco.adb, s-osprim-mingw.adb, exp_ch5.adb, - exp_prag.adb, sem_ch3.adb, xr_tabls.adb, lib-xref-spark_specific.adb, - layout.adb, sem_dist.adb, exp_spark.adb, exp_ch7.adb, gnatcmd.adb, - exp_util.adb, prj-proc.adb, sem_aux.adb, comperr.adb, g-memdum.adb, - exp_attr.adb, s-intman-solaris.adb, exp_ch9.adb, make.adb, live.adb, - g-sercom-linux.adb, sem_dim.adb, mlib-prj.adb, s-intman-posix.adb, - sem_ch9.adb, sem_ch10.adb, prep.adb, einfo.adb, scng.adb, checks.adb, - prj-strt.adb, sem_prag.adb, eval_fat.adb, sem_ch12.adb, sem.adb, - a-numaux-x86.adb, a-stwifi.adb, i-cobol.adb, prj.adb, - get_spark_xrefs.adb, s-tasini.adb, rtsfind.adb, freeze.adb, - g-arrspl.adb, par-ch4.adb, sem_util.adb, sem_res.adb, expander.adb, - sem_attr.adb, exp_dbug.adb, prj-pp.adb, a-stzfix.adb, s-interr.adb, - s-wchcnv.adb, switch-m.adb, gnat1drv.adb, sinput-l.adb, stylesw.adb, - contracts.adb, s-intman-android.adb, g-expect.adb, exp_ch4.adb, - g-comlin.adb, errout.adb, sinput.adb, s-exctra.adb, repinfo.adb, - g-spipat.adb, g-debpoo.adb, exp_ch6.adb, sem_ch4.adb, exp_ch13.adb, - a-wtedit.adb, validsw.adb, pprint.adb, widechar.adb, makeutl.adb, - ali.adb, set_targ.adb, sem_mech.adb, sem_ch6.adb, gnatdll.adb, - get_scos.adb, g-pehage.adb, s-tratas-default.adb, gnatbind.adb, - prj-dect.adb, g-socthi-mingw.adb, par-prag.adb, prj-nmsc.adb, - exp_disp.adb, par-ch12.adb, binde.adb, sem_ch8.adb, - s-tfsetr-default.adb, s-regexp.adb, gprep.adb, s-tpobop.adb, - a-teioed.adb, sem_warn.adb, sem_eval.adb, g-awk.adb, s-io.adb, - a-ztedit.adb, xoscons.adb, exp_intr.adb, sem_cat.adb, sprint.adb, - g-socket.adb, exp_dist.adb, sem_ch13.adb, s-tfsetr-vxworks.adb, - par-ch3.adb, treepr.adb, g-forstr.adb, g-catiio.adb, par-ch5.adb, - uname.adb, osint.adb, exp_ch3.adb, prj-env.adb, a-strfix.adb, - a-stzsup.adb, prj-tree.adb, s-fileio.adb: Update all eligible case - statements to reflect the new style for case alternatives. Various - code clean up and reformatting. - -2017-01-13 Gary Dismukes - - * exp_util.adb: Minor reformatting. - -2017-01-13 Yannick Moy - - * exp_spark.adb: Code cleanup. - * sem_ch9.adb (Analyze_Delay_Until): Resolve - expression so that calls are identified as such inside delay - until. - -2017-01-13 Ed Schonberg - - * exp_util.adb (Insert_Actions): Handle Iterated_Component_Association. - * par-ch3.adb (P_Discrete_Choice_List): An - Iterated_Component_Association is an array aggregate component. - * par-ch4.adb (P_Iterated_Component_Association): New procedure. - (Is_Quantified_Expression): New function that performs a lookahead - to distinguish quantified expressions from iterated component - associations. - (P_Aggregate_Or_Paren_Expr): Recognize iterated component - associations. - (P_Unparen_Cond_Case_Quant_Expression, P_Primary): Ditto. - * sem.adb (Analyze): Handle Iterated_Component_Association. - * sem_aggr.adb (Resolve_Array_Aggregate): Dummy handling of iterated - component associations. - * sinfo.ads, sinfo.adb: Entries for for - N_Iterated_Component_Association and its fields. - * sprint.adb (Sprint_Node_Actual): Handle - N_Iterated_Component_Association. - -2017-01-13 Justin Squirek - - * sem_ch12.adb (Analyze_Package_Instantiation): Move disabiling - of the style check until after preanalysis of acutals. - -2017-01-13 Yannick Moy - - * sem_ch13.adb: Minor reformatting. - * par-ch11.adb: minor style fix in whitespace - * gnatbind.adb (Gnatbind): Scope of Std_Lib_File - reduced to Add_Artificial_ALI_File; style fix in declaration of - Text; grammar fix in comment. - * osint-c.adb (Read_Library_Info): strip trailing NUL from result. - * freeze.adb: Cleanup to pass pragma instead of - expression to call. - * exp_spark.adb (Expand_SPARK_Attribute_Reference): New procedure to - replace System'To_Address by equivalent call. - -2017-01-13 Arnaud Charlet - - * bindusg.adb: Improve usage output for -f switch. - -2017-01-13 Hristian Kirtchev - - * frontend.adb, freeze.adb, sem_res.adb, sem_attr.adb, sem_ch8.adb: - Minor reformatting. - -2017-01-13 Ed Schonberg - - * sem_ch13.adb (Is_Predicate_Static): Following the intent of the RM, - treat comparisons on strings as legal in a Static_Predicate. - (Is_Predicate_Static, Is_Type_Ref): Predicate also returns true on - a function call that is the expansion of a string comparison.The - function call is built when compiling the corresponding predicate - function, but the expression has been found legal as a static - predicate during earlier analysis. - * sem_eval.adb (Real_Or_String_Static_Predicate_Matches): Handle - properly a function call that is the expansion of a string - comparison operation, in order to recover the Static_Predicate - expression and apply it to a static argument when needed. - -2017-01-13 Tristan Gingold - - * s-mmap.adb, s-mmap.ads (Open_Read_No_Exception): New function. - (Open_Read): Re-implement using Open_Read_No_Exception. - (Open_Write): Raise exception in case of error. - * s-mmosin-mingw.adb (Open_Common): Do not raise exception. - * s-mmosin-unix.adb (Open_Read, Open_Write): Do not - reaise exception. - * s-mmosin-mingw.ads, s-mmosin-unix.ads (Open_Read): Adjust comment. - -2017-01-13 Yannick Moy - - * checks.adb: Code cleanup. - -2017-01-13 Yannick Moy - - * freeze.adb (Check_Inherited_Conditions): Use analyzed pragma - expression instead of unanalyzed aspect expression for checking - the validity of inheriting an operation. Also copy the expression - being passing it to Build_Class_Wide_Expression, as this call - modifies its argument. - * sem_util.ads Fix comment to reference correct function name - New_Copy_Tree. - -2017-01-13 Javier Miranda - - * sem_res.adb (Resolve_Generalized_Indexing): Compiling in ASIS mode, - when we propagate information about the indexes back to the original - indexing mode and the prefix of the index is a function call, do not - remove any parameter from such call. - -2017-01-13 Gary Dismukes - - * exp_ch6.ads (Needs_BIP_Finalization_Master): Update comment. - * exp_ch6.adb (Needs_BIP_Finalization_Master): Return True for - a build-in-place function whose result type is tagged. - -2017-01-13 Yannick Moy - - * sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper): - Do not generate a wrapper when the only candidate is a class-wide - subprogram. - (Analyze_Subprogram_Renaming): Do not freeze the renaming or renamed - inside a generic context. - -2017-01-13 Hristian Kirtchev - - * exp_util.adb (Add_Inherited_Tagged_DIC): - Pass the object parameters of both the parent and the derived - type DIC procedure to the reference replacement circuitry. - (Find_DIC_Type): Modify the circuitry to present the partial - view of a private type in case the private type defines its own - DIC pragma. - (Replace_Object_And_Primitive_References): Add two - optional formal parameters. Update the comment on usage. Update - the replacement of references to object parameters. - -2017-01-13 Gary Dismukes - - * einfo.adb, sem_ch6.adb, atree.adb: Minor reformatting and typo fix. - -2017-01-13 Ed Schonberg - - * sem_res.adb (Resolve_Actuals): Apply Scalar_Range_Check to - an out parameter that is a type conversion, independently of th - range check that may apply to the expression of the conversion, - for use in GNATProve. - -2017-01-13 Yannick Moy - - * gnat1drv.adb (Gnat1drv): Move the implicit with for System in - GNATprove_Mode here to Frontend. - * frontend.adb (Frontend): Move the implicit with for System - in GNATprove_Mode here as it ismore correct this way; the old - place only worked by chance, since there were no overloaded names. - * rtsfind.ads (RE_Id, RE_Unit_Table): Add RE_Tasking_State. - * sem_attr.adb (Analyze_Attribute): In GNATprove_Mode, for the - four attributes identified in SRM 9(18), add an implicit with - to Ada.Task_Identification. - * sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper): - Deal specially with the wrapper introduced for AI05-0071 in GNATprove - mode. - * checks.adb (Apply_Discriminant_Check, - Apply_Selected_Length_Checks, Apply_Selected_Range_Checks): - In GNATprove mode, we do not apply the checks, but we still - analyze the expression to possibly issue errors on SPARK - code when a run-time error can be detected at compile time. - (Selected_Length_Checks, Selected_Range_Checks): Perform analysis - in GNATprove mode. - -2017-01-13 Hristian Kirtchev - - * expander.adb (Expand): Add a warning about using return - statements in Ghost management code. - * exp_ch3.adb (Freeze_Type): Add a warning about using return - statements in Ghost management code. - * exp_ch7.adb (Build_Invariant_Procedure_Body, - Build_Invariant_Procedure_Declaration): Add a warning about - using return statements in Ghost management code. - * exp_disp.adb (Make_DT): Add a warning about using return - statements in Ghost management code. - * exp_util.adb (Build_DIC_Procedure_Body, - Build_DIC_Procedure_Declaration, Make_Predicated_Call): Add a - warning about using return statements in Ghost management code. - * freeze.adb (Freeze_Entity): Add a warning about using return - statements in Ghost management code. - * sem.adb (Analyze, Do_Analyze): Add a warning about using return - statements in Ghost management code. - * sem_ch3.adb (Analyze_Object_Declaration, Process_Full_View): Add - a warning about using return statements in Ghost management code. - * sem_ch5.adb (Analyze_Assignment): Add a warning about using - return statements in Ghost management code. - * sem_ch6.adb (Analyze_Procedure_Call, - Analyze_Subprogram_Body_Helper): Add a warning about using return - statements in Ghost management code. - * sem_ch7.adb (Analyze_Package_Body_Helper): Add a warning about - using return statements in Ghost management code. - * sem_ch12.adb (Analyze_Package_Instantiation, - Analyze_Subprogram_Instantiation, Instantiate_Package_Body, - Instantiate_Subprogram_Body): Add a warning about using return - statements in Ghost management code. - * sem_ch13.adb (Build_Predicate_Functions, - Build_Predicate_Function_Declarations): Add a warning about - using return statements in Ghost management code. - * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part, - Analyze_Initial_Condition_In_Decl_Part, Analyze_Pragma, - Analyze_Pre_Post_Condition_In_Decl_Part): Add a warning about - using return statements in Ghost management code. - -2017-01-13 Tristan Gingold - - * s-mmosin-mingw.adb: Fix pragma import. - -2017-01-13 Arnaud Charlet - - * gnat1drv.adb (Adjust_Global_Switches): Ignore -gnateE in - codepeer mode. - -2017-01-13 Hristian Kirtchev - - * atree.adb (Allocate_Initialize_Node): A newly created node is - no longer marked as Ghost at this level. - (Mark_New_Ghost_Node): New routine. - (New_Copy): Mark the copy as Ghost. - (New_Entity): Mark the entity as Ghost. - (New_Node): Mark the node as Ghost. - * einfo.adb (Is_Checked_Ghost_Entity): This attribute can now - apply to unanalyzed entities. - (Is_Ignored_Ghost_Entity): This attribute can now apply to unanalyzed - entities. - (Set_Is_Checked_Ghost_Entity): This attribute now - applies to all entities as well as unanalyzed entities. - (Set_Is_Ignored_Ghost_Entity): This attribute now applies to - all entities as well as unanalyzed entities. - * expander.adb Add with and use clauses for Ghost. - (Expand): Install and revert the Ghost region associated with the node - being expanded. - * exp_ch3.adb (Expand_Freeze_Array_Type): Remove all Ghost-related code. - (Expand_Freeze_Class_Wide_Type): Remoe all Ghost-related code. - (Expand_Freeze_Enumeration_Type): Remove all Ghost-related code. - (Expand_Freeze_Record_Type): Remove all Ghost-related code. - (Freeze_Type): Install and revert the Ghost region associated - with the type being frozen. - * exp_ch5.adb Remove with and use clauses for Ghost. - (Expand_N_Assignment_Statement): Remove all Ghost-related code. - * exp_ch6.adb Remove with and use clauses for Ghost. - (Expand_N_Procedure_Call_Statement): Remove all Ghost-relatd code. - (Expand_N_Subprogram_Body): Remove all Ghost-related code. - * exp_ch7.adb (Build_Invariant_Procedure_Body): Install and revert the - Ghost region of the working type. - (Build_Invariant_Procedure_Declaration): Install and revert - the Ghost region of the working type. - (Expand_N_Package_Body): Remove all Ghost-related code. - * exp_ch8.adb Remove with and use clauses for Ghost. - (Expand_N_Exception_Renaming_Declaration): Remove all Ghost-related - code. - (Expand_N_Object_Renaming_Declaration): Remove all Ghost-related code. - (Expand_N_Package_Renaming_Declaration): Remove all Ghost-related code. - (Expand_N_Subprogram_Renaming_Declaration): Remove all Ghost-related - code. - * exp_ch13.adb Remove with and use clauses for Ghost. - (Expand_N_Freeze_Entity): Remove all Ghost-related code. - * exp_disp.adb (Make_DT): Install and revert the Ghost region of - the tagged type. Move the generation of various entities within - the Ghost region of the type. - * exp_prag.adb Remove with and use clauses for Ghost. - (Expand_Pragma_Check): Remove all Ghost-related code. - (Expand_Pragma_Contract_Cases): Remove all Ghost-related code. - (Expand_Pragma_Initial_Condition): Remove all Ghost-related code. - (Expand_Pragma_Loop_Variant): Remove all Ghost-related code. - * exp_util.adb (Build_DIC_Procedure_Body): Install - and revert the Ghost region of the working types. - (Build_DIC_Procedure_Declaration): Install and revert the - Ghost region of the working type. - (Make_Invariant_Call): Install and revert the Ghost region of the - associated type. - (Make_Predicate_Call): Reimplemented. Install and revert the - Ghost region of the associated type. - * freeze.adb (Freeze_Entity): Install and revert the Ghost region - of the entity being frozen. - (New_Freeze_Node): Removed. - * ghost.adb Remove with and use clauses for Opt. - (Check_Ghost_Completion): Update the parameter profile - and all references to formal parameters. - (Ghost_Entity): Update the comment on usage. - (Install_Ghost_Mode): New routines. - (Is_Ghost_Assignment): New routine. - (Is_Ghost_Declaration): New routine. - (Is_Ghost_Pragma): New routine. - (Is_Ghost_Procedure_Call): New routine. - (Is_Ghost_Renaming): Removed. - (Is_OK_Declaration): Reimplemented. - (Is_OK_Pragma): Reimplemented. - (Is_OK_Statement): Reimplemented. - (Is_Subject_To_Ghost): Update the comment on usage. - (Mark_And_Set_Ghost_Assignment): New routine. - (Mark_And_Set_Ghost_Body): New routine. - (Mark_And_Set_Ghost_Completion): New routine. - (Mark_And_Set_Ghost_Declaration): New routine. - (Mark_And_Set_Ghost_Instantiation): New routine. - (Mark_And_Set_Ghost_Procedure_Call): New routine. - (Mark_Full_View_As_Ghost): Removed. - (Mark_Ghost_Declaration_Or_Body): New routine. - (Mark_Ghost_Pragma): New routine. - (Mark_Ghost_Renaming): New routine. - (Mark_Pragma_As_Ghost): Removed. - (Mark_Renaming_As_Ghost): Removed. - (Propagate_Ignored_Ghost_Code): Update the comment on usage. - (Prune_Node): Freeze nodes no longer need special pruning, they - are processed by the general ignored Ghost code mechanism. - (Restore_Ghost_Mode): New routine. - (Set_Ghost_Mode): Reimplemented. - (Set_Ghost_Mode_From_Entity): Removed. - * ghost.ads Add with and use clauses for Ghost. - (Check_Ghost_Completion): Update the parameter profile - along with the comment on usage. - (Install_Ghost_Mode): New routine. - (Is_Ghost_Assignment): New routine. - (Is_Ghost_Declaration): New routine. - (Is_Ghost_Pragma): New routine. - (Is_Ghost_Procedure_Call): New routine. - (Mark_And_Set_Ghost_Assignment): New routine. - (Mark_And_Set_Ghost_Body): New routine. - (Mark_And_Set_Ghost_Completion): New routine. - (Mark_And_Set_Ghost_Declaration): New routine. - (Mark_And_Set_Ghost_Instantiation): New routine. - (Mark_And_Set_Ghost_Procedure_Call): New routine. - (Mark_Full_View_As_Ghost): Removed. - (Mark_Ghost_Pragma): New routine. - (Mark_Ghost_Renaming): New routine. - (Mark_Pragma_As_Ghost): Removed. - (Mark_Renaming_As_Ghost): Removed. - (Restore_Ghost_Mode): New routine. - (Set_Ghost_Mode): Redefined. - (Set_Ghost_Mode_From_Entity): Removed. - * sem.adb (Analyze): Install and revert the Ghost region of the - node being analyzed. - (Do_Analyze): Change the way a clean Ghost - region is installed and reverted. - * sem_ch3.adb (Analyze_Full_Type_Declaration): Remove - all Ghost-related code. - (Analyze_Incomplete_Type_Decl): Remove all Ghost-related code. - (Analyze_Number_Declaration): Remove all Ghost-related code. - (Analyze_Object_Declaration): Install and revert the Ghost region of - a deferred object declaration's completion. - (Array_Type_Declaration): Remove all Ghost-related code. - (Build_Derived_Type): Update the comment on - the propagation of Ghost attributes from a parent to a derived type. - (Derive_Subprogram): Remove all Ghost-related code. - (Make_Class_Wide_Type): Remove all Ghost-related code. - (Make_Implicit_Base): Remove all Ghost-related code. - (Process_Full_View): Install and revert the Ghost region of - the partial view. There is no longer need to check the Ghost - completion here. - * sem_ch5.adb (Analyze_Assignment): Install and revert the Ghost - region of the left hand side. - * sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Remove - all Ghost-related code. - (Analyze_Expression_Function): Remove all Ghost-related code. - (Analyze_Generic_Subprogram_Body): Remove all Ghost-related code. - (Analyze_Procedure_Call): Install and revert the Ghost region of - the procedure being called. - (Analyze_Subprogram_Body_Helper): Install and revert the Ghost - region of the spec or body. - (Analyze_Subprogram_Declaration): Remove all Ghost-related code. - (Build_Subprogram_Declaration): Remove all Ghost-related code. - (Find_Corresponding_Spec): Remove all Ghost-related code. - (Process_Formals): Remove all Ghost-related code. - * sem_ch7.adb (Analyze_Package_Body_Helper): Install and revert - the Ghost region of the spec. - (Analyze_Package_Declaration): Remove all Ghost-related code. - * sem_ch8.adb (Analyze_Exception_Renaming): Mark a renaming as - Ghost when it aliases a Ghost entity. - (Analyze_Generic_Renaming): Mark a renaming as Ghost when it aliases - a Ghost entity. - (Analyze_Object_Renaming): Mark a renaming as Ghost when - it aliases a Ghost entity. - (Analyze_Package_Renaming): Mark a renaming as Ghost when it aliases - a Ghost entity. - (Analyze_Subprogram_Renaming): Mark a renaming as Ghost when it - aliases a Ghost entity. - * sem_ch11.adb Remove with and use clauses for Ghost. - (Analyze_Exception_Declaration): Remove all Ghost-related code. - * sem_ch12.adb (Analyze_Generic_Package_Declaration): Remove all - Ghost-related code. - (Analyze_Generic_Subprogram_Declaration): Remove all Ghost-related - code. - (Analyze_Package_Instantiation): Install and revert the Ghost region - of the package instantiation. - (Analyze_Subprogram_Instantiation): Install - and revert the Ghost region of the subprogram instantiation. - (Instantiate_Package_Body): Code clean up. Install and revert the - Ghost region of the package body. - (Instantiate_Subprogram_Body): Code clean up. Install and revert the - Ghost region of the subprogram body. - * sem_ch13.adb (Build_Predicate_Functions): Install - and revert the Ghost region of the related type. - (Build_Predicate_Function_Declaration): Code clean up. Install - and rever the Ghost region of the related type. - * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): - Install and revert the Ghost region of the pragma. - (Analyze_Initial_Condition_In_Decl_Part): Install and revert the - Ghost region of the pragma. - (Analyze_Pragma): Install and revert the Ghost region of various - pragmas. Mark a pragma as Ghost when it is related to a Ghost entity - or encloses a Ghost entity. - (Analyze_Pre_Post_Condition): Install and revert the Ghost - region of the pragma. - (Analyze_Pre_Post_Condition_In_Decl_Part): Install and revert the - Ghost region of the pragma. - * sem_res.adb (Resolve): Remove all Ghost-related code. - * sem_util.adb (Is_Declaration): Reimplemented. - (Is_Declaration_Other_Than_Renaming): New routine. - * sem_util.ads (Is_Declaration_Other_Than_Renaming): New routine. - * sinfo.adb (Is_Checked_Ghost_Pragma): New routine. - (Is_Ghost_Pragma): Removed. - (Is_Ignored_Ghost_Pragma): New routine. - (Set_Is_Checked_Ghost_Pragma): New routine. - (Set_Is_Ghost_Pragma): Removed. - (Set_Is_Ignored_Ghost_Pragma): New routine. - * sinfo.ads: Update the documentation on Ghost mode and - Ghost regions. New attributes Is_Checked_Ghost_Pragma - and Is_Ignored_Ghost_Pragma along with usages in nodes. - Remove attribute Is_Ghost_Pragma along with usages in nodes. - (Is_Checked_Ghost_Pragma): New routine along with pragma Inline. - (Is_Ghost_Pragma): Removed along with pragma Inline. - (Is_Ignored_Ghost_Pragma): New routine along with pragma Inline. - (Set_Is_Checked_Ghost_Pragma): New routine along with pragma Inline. - (Set_Is_Ghost_Pragma): Removed along with pragma Inline. - (Set_Is_Ignored_Ghost_Pragma): New routine along with pragma Inline. - -2017-01-12 Tristan Gingold - - * s-mmap.ads, s-mmap.adb, s-mmosin-unix.ads, s-mmosin-unix.adb, - s-mmauni-long.ads, s-mmosin-mingw.ads, s-mmosin-mingw.adb: New files. - -2017-01-12 Yannick Moy - - * errout.adb, errout.ads (Initialize): Factor common treatment - in Reset_Warnings. - (Reset_Warnings): New procedure to reset counts related to warnings. - (Record_Compilation_Errors): New variable to store the presence of an - error, used in gnat2why to allow changing the Warning_Mode. - (Compilation_Errors): Use new variable Record_Compilation_Errors to - store the presence of an error. - -2017-01-12 Javier Miranda - - * sem_ch13.adb (Analyze_Aspect_Specifications): - For Interrupt_Handler and Attach_ Handler aspects, decorate the - internally built reference to the protected procedure as coming - from sources and force its analysis. - -2017-01-12 Ed Schonberg - - * sem_ch3.adb (Build_Derived_Type): For a scalar derived type, - inherit predicates if any from the first_subtype of the parent, - not from the anonymous parent type. - * sem_eval.adb (Is_Static_Subtype): A type that inherits a dynamic - predicate is not a static subtype. - -2017-01-12 Gary Dismukes - - * freeze.adb (Check_Suspicious_Convention): New procedure - performing a warning check on discriminated record types with - convention C or C++. Factored out of procedure Freeze_Record_Type, - and changed to only apply to base types (to avoid spurious - warnings on subtypes). Minor improvement of warning messages - to refer to discriminated rather than variant record types. - (Freeze_Record_Type): Remove code for performing a suspicious - convention check. - (Freeze_Entity): Only call Freeze_Record_Type - on types that aren't declared within any enclosing generic units - (rather than just excluding the type when the innermost scope - is generic). Call Check_Suspicious_Convention whether or not - the type is declared within a generic unit. - * sem_ch8.adb (In_Generic_Scope): Move this function to Sem_Util. - * sem_util.ads, sem_util.adb (In_Generic_Scope): New function (moved - from Sem_Ch8). - -2017-01-12 Tristan Gingold - - * sysdep.c, adaint.c, rtinit.c, ming32.h: - (__gnat_current_codepage): Renamed from CurrentCodePage - (__gnat_current_ccs_encoding): Renamed from CurrentCCSEncoding - -2017-01-12 Ed Schonberg - - * sem_ch6.adb (Fully_Conformant_Expressions): Handle properly - quantified expressions, following AI12-050: the loop parameters - of two quantified expressions are conformant if they have the - same identifier. - -2017-01-12 Arnaud Charlet - - * gcc-interface/Makefile.in: Clean up VxWorks targets. - -2017-01-12 Ed Schonberg - - * sem_attr.adb (Analyze_Attribute_Reference, case Loop_Entry): - Hnadle properly the attribute reference when it appears as part - of an expression in another loop aspect. - -2017-01-12 Ed Schonberg - - * exp_ch3.adb (Check_Predicated_Discriminant): New procedure, - subsidiary of Build_Initialization_Call, to complete generation - of predicate checks on discriminants whose (sub)types have - predicates, and to add checks on variants that do not have an - others clause. - * sem_util.adb (Gather_Components): A missing Others alternative is - not an error when the type of the discriminant is a static predicate - (and coverage has been checked when analyzing the case statement). A - runtime check is generated to verify that a given discriminant - satisfies the predicate (RM 3.8.1. (21.1/2)). - -2017-01-12 Yannick Moy - - * gnat1drv.adb (Adjust_Global_Switches): Only - perform checking of exception mechanism when generating code. - -2017-01-12 Justin Squirek - - * exp_ch7.adb (Add_Type_Invariants, Process_Array_Component): - Remove handling of access component with invariant. - (Build_Invariant_Procedure_Declaration): Remove return on class - wide type. - * freeze.adb (Freeze_Array_Type, Freeze_Record_Type): Remove - conditional exception for component or array so Has_Own_Invariants - flag is not falsly set. - * sem_ch3.adb (Make_Class_Wide_Type): Initialize copy of class - wide type to have no invariant flags. - -2017-01-12 Hristian Kirtchev - - * exp_ch9.adb, sem_prag.adb, s-tassta.adb, sem_util.adb, s-tarest.adb, - sem_ch13.adb: Minor reformatting. - -2017-01-12 Hristian Kirtchev - - * exp_aggr.adb (Build_Record_Aggr_Code): Guard against a missing - adjustment primitive when the ancestor type was not properly frozen. - (Gen_Assign): Guard against a missing initialization - primitive when the component type was not properly frozen. - (Initialize_Array_Component): Guard against a missing adjustment - primitive when the component type was not properly frozen. - (Initialize_Record_Component): Guard against a missing adjustment - primitive when the component type was not properly frozen. - (Process_Transient_Component_Completion): The transient object may - not be finalized when its associated type was not properly frozen. - * exp_ch3.adb (Build_Assignment): Guard against a missing - adjustment primitive when the component type was not properly frozen. - (Build_Initialization_Call): Guard against a missing - initialization primitive when the associated type was not properly - frozen. - (Expand_N_Object_Declaration): Guard against a missing - adjustment primitive when the base type was not properly frozen. - (Predefined_Primitive_Bodies): Create an empty Deep_Adjust - body when there is no adjustment primitive available. Create an - empty Deep_Finalize body when there is no finalization primitive - available. - * exp_ch4.adb (Apply_Accessibility_Check): Guard against a - missing finalization primitive when the designated type was - not properly frozen. - (Expand_N_Allocator): Guard against a missing initialization primitive - when the designated type was not properly frozen. - * exp_ch5.adb (Make_Tag_Ctrl_Assignment): Add the adjustment call - only when the corresponding adjustment primitive is available. - * exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Generate the - adjustment/finalization statements only when there is an available - primitive to carry out the action. - (Build_Initialize_Statements): Generate the initialization/finalization - statements only when there is an available primitive to carry out the - action. - (Make_Adjust_Call): Do not generate a call when the underlying - type is not present due to a possible missing full view. - (Make_Final_Call): Do not generate a call when the underlying - type is not present due to a possible missing full view. - (Make_Finalize_Address_Stmts): Generate an empty body when the - designated type lacks a finalization primitive. - (Make_Init_Call): Do not generate a call when the underlying type is - not present due to a possible missing full view. - (Process_Component_For_Adjust): Add the adjustment call only when the - corresponding adjustment primitive is available. - (Process_Component_For_Finalize): Add the finalization call only when - the corresponding finalization primitive is available. - (Process_Object_Declaration): Use a null statement to emulate a - missing call to the finalization primitive of the object type. - * exp_ch7.ads (Make_Adjust_Call): Update the comment on usage. - (Make_Final_Call): Update the comment on usage. - (Make_Init_Call): Update the comment on usage. - * exp_util.adb (Build_Transient_Object_Statements): Code reformatting. - -2017-01-12 Arnaud Charlet - - * einfo.ads: Update documentation of Address_Taken. - * sem_attr.adb (Analyze_Access_Attribute, Resolve_Attribute - [Access_Attribute]): Only consider 'Access/'Unchecked_Access - for subprograms when setting Address_Taken flag. - -2017-01-12 Patrick Bernardi - - * sem_ch10.adb (Analyze_With_Clause): Removed code that turned - Configurable_Run_Time_Mode off when analysing with'ed predefined - libraries. - -2017-01-12 Gary Dismukes - - * sem_prag.adb: Minor reformatting. - * sem_util.adb (Unique_Entity): fix result for - bodies of entry families. - -2017-01-12 Justin Squirek - - * sem_prag.adb (Analyze_Pragma): Add appropriate calls to - Resolve_Suppressible in the pragma Assertion_Policy case. - (Resolve_Suppressible): Created this function to factor out - common code used to resolve Suppress to either Ignore or Check - * snames.ads-tmpl: Add name for Suppressible. - -2017-01-12 Gary Dismukes - - * exp_ch9.adb, s-secsta.adb, snames.ads-tmpl, exp_ch3.adb: Minor - reformatting. - * debug.adb: Minor comment fixes. - -2017-01-12 Arnaud Charlet - - * sem_util.adb (Unique_Entity): For concurrent - bodies that are defined with stubs and complete a declaration - of a single concurrent object return the entity of an implicit - concurrent type, not the entity of the anonymous concurrent - object. - * debug.adb: -gnatd.J is no longer used. - * make.adb (Globalize): Removed, no longer used. - * sem_ch9.adb: minor typo in comment for entry index - -2017-01-12 Patrick Bernardi - - * aspect.adb, aspect.ads: Added new aspect Secondary_Stack_Size. - * exp_ch3.adb (Build_Init_Statements): As part of initialising - the value record of a task, set its _Secondary_Stack_Size field - if present. - * exp_ch9.adb (Expand_N_Task_Type_Declaration): Create - a _Secondary_Stack_Size field in the value record of - the task if a Secondary_Stack_Size rep item is present. - (Make_Task_Create_Call): Include secondary stack size - parameter. If No_Secondary_Stack restriction is in place, passes - stack size of 0. - * par-prag.adb, sem_prag.adb, sem_prag.ads: Added new pragma - Secondary_Stack_Size. - * s-secsta.adb, s-secsta.ads (Minimum_Secondary_Stack_Size): New - function to define the overhead of the secondary stack. - * s-tarest.adb (Create_Restricted_Task, - Create_Restricted_Task_Sequential): Functions now include - Secondary_Stack_Size parameter to pass to Initialize_ATCB. - * s-tarest.adb (Create_Restricted_Task, - Create_Restricted_Task_Sequential): Calls to Initialize_ATCB now - include Secondary_Stack_Size parameter. - (Task_Wrapper): Secondary stack now allocated to the size specified by - the Secondary_Stack_Size parameter in the task's ATCB. - * s-taskin.adb, s-taskin.adb (Common_ATCB, Initialize_ATCB): New - Secondary_Stack_Size component. - * s-tassta.adb, s-tassta.ads (Create_Restricted_Task, - Create_Restricted_Task_Sequential): Function now include - Secondary_Stack_Size parameter. - (Task_Wrapper): Secondary stack now allocated to the size - specified by the Secondary_Stack_Size parameter in the task's - ATCB. - * s-tproft.adb (Register_Foreign_Thread): Amended Initialize_ATCB call - to include Secondary_Stack_Size parameter. - * sem_ch13.adb (Analyze_Aspect_Specification): Add support for - Secondary_Stack_Size aspect, turning the aspect into its corresponding - internal attribute. - (Analyze_Attribute_Definition): Process Secondary_Stack_Size attribute. - * snames.adb-tmpl, snames.ads-tmpl: Added names - Name_Secondary_Stack_Size, Name_uSecondary_Stack_Size, - Attribute_Secondary_Stack_Size and Pragma_Secondary_Stack_Size. - -2017-01-12 Yannick Moy - - * exp_spark.adb (Expand_SPARK_Potential_Renaming): Fix sloc of copied - subtree. - -2017-01-12 Justin Squirek - - * exp_attr.adb (Expand_N_Attribute_Reference): - Fix Finalization_Size case by properly resolving the type after - rewritting the node. - -2017-01-12 Hristian Kirtchev - - * exp_util.adb (Build_DIC_Procedure_Body): Semi-insert the body into - the tree. - (Build_DIC_Procedure_Declaration): Semi-insert the body into the tree. - * binde.adb, exp_ch5.adb, sem_type.adb, sem.ads, sem_res.adb, - exp_sel.ads: Minor reformatting. - -2017-01-12 Justin Squirek - - * exp_ch6.adb (Expand_Call): Add guard to prevent - invariant checks from being created for internally generated - subprograms. - -2017-01-12 Bob Duff - - * lib-writ.ads: Remove incorrect comment. - -2017-01-12 Javier Miranda - - * debug.adb (-gnatd.K): Enable generation of contract-only - procedures in CodePeer mode. - * contracts.adb (Build_And_Analyze_Contract_Only_Subprograms): - New subprogram. - (Analyze_Contracts): Generate contract-only procedures if -gnatdK is - set. - * scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): New - subprogram. - (Get_Contract_Only_Missing_Body_Name): New subprogram. - (Get_Contract_Only_Body): New subprogram. - (Set_Contract_Only_Body): New subprogram. - (Is_Contract_Only_Body): New subprogram. - (Set_Is_Contract_Only_Body): New subprogram. - (SCIL_Nodes): Replace table by hash-table. - -2017-01-12 Hristian Kirtchev - - * exp_ch6.adb: Minor reformatting. - * spark_xrefs.ads: minor cleanup of comments for SPARK xrefs - -2017-01-12 Bob Duff - - * binde.adb (Forced): New reason for a dependence. - (Force_Elab_Order): Implementation of the new switch. - * binde.ads: Minor comment fixes. - * bindusg.adb: Add -f switch. Apparently, there was an -f switch - long ago that is no longer supported; removed comment about that. - * opt.ads (Force_Elab_Order_File): Name of file specified for - -f switch. - * switch-b.adb: Parse -f switch. - -2017-01-12 Justin Squirek - - * exp_ch6.adb (Check_View_Conversion): Created this function - to properly chain calls to check type invariants that may be - present in a subprogram call after the subprogram. - (Expand_Call): Add a conditional to identify when a view conversion - needs to be checked. - * nlists.adb, nlists.ads (Prepend_New): New routine. - (Prepend_New_To): New routine. - -2017-01-12 Hristian Kirtchev - - * sinfo.ads: Minor reformatting. - -2017-01-12 Gary Dismukes - - * exp_util.adb, exp_util.ads, einfo.ads: Minor typo fixes and - reformatting. - -2017-01-12 Hristian Kirtchev - - * exp_ch6.adb (Make_Build_In_Place_Call_In_Anonymous_Context): Add new - variable Definite. Create a local object and pass its 'Access to the - BIP function when the result type is either definite or it does not - require any finalization or secondary stack management. - -2017-01-12 Bob Duff - - * contracts.adb, einfo.adb, errout.adb, exp_attr.adb, - exp_ch3.adb, exp_ch7.adb, exp_ch9.adb, exp_prag.adb, freeze.adb, - frontend.adb, ghost.adb, inline.adb, lib-writ.adb, lib-xref.adb, - par.adb, par-ch10.adb, par-ch2.adb, par-prag.adb, par_sco.adb, - sem_attr.adb, sem_aux.adb, sem_ch10.adb, sem_ch12.adb, - sem_ch13.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb, sem_elab.adb, - sem_prag.adb, sem_res.adb, sem_util.adb, sem_util.ads, - sem_warn.adb, sinfo.adb, sinfo.ads, sprint.adb (Pragma_Name): - Change name to Pragma_Name_Unmapped. - (Pragma_Name_Mapped): Change name to Pragma_Name. - This is because the "mapped" version should be the usual case. - -2017-01-09 Hristian Kirtchev - - * einfo.ads, einfo.adb: Remove uses of flags Has_Default_Init_Cond, - Is_Default_Init_Cond_Procedure, and - Has_Inherited_Default_Init_Cond. Add uses of flags - Has_Own_DIC, Is_DIC_Procedure, and Has_Inherited_DIC. - (Default_Init_Cond_Procedure): Removed. - (DIC_Procedure): New routine. - (Has_Default_Init_Cond): Removed. - (Has_DIC): New routine. - (Has_Inheritable_Invariants): The attribute applies to the base type. - (Has_Inherited_Default_Init_Cond): Removed. - (Has_Inherited_DIC): New routine. - (Has_Inherited_Invariants): The attribute applies to the base type. - (Has_Own_DIC): New routine. - (Has_Own_Invariants): The attribute applies to the base type. - (Is_Default_Init_Cond_Procedure): Removed. - (Is_DIC_Procedure): New routine. - (Set_Default_Init_Cond_Procedure): Removed. - (Set_DIC_Procedure): New routine. - (Set_Has_Default_Init_Cond): Removed. - (Set_Has_Inheritable_Invariants): The attribute applies - to the base type. - (Set_Has_Inherited_Default_Init_Cond): Removed. - (Set_Has_Inherited_DIC): New routine. - (Set_Has_Inherited_Invariants): The attribute applies to the base type. - (Set_Has_Own_DIC): New routine. - (Set_Has_Own_Invariants): The attribute applies to the base type. - (Set_Is_Default_Init_Cond_Procedure): Removed. - (Set_Is_DIC_Procedure): New routine. - (Write_Entity_Flags): Update the output of all flags related to - default initial condition. - * exp_ch3.adb (Expand_N_Object_Declaration): Update the generation - of the call to the DIC procedure. - (Freeze_Type): Generate the body of the DIC procedure. - * exp_ch7.adb (Build_Invariant_Procedure_Body): Replace - all occurrences of Create_Append with Append_New_To. Do - not generate an invariant procedure for a class-wide type. - The generated body acts as a freeze action of the working type. - (Build_Invariant_Procedure_Declaration): Do not generate an - invariant procedure for a class-wide type. - (Create_Append): Removed. - * exp_util.adb: Add with and use clauses for Sem_Ch3, sem_ch6, - sem_Ch12, Sem_Disp, and GNAT.HTable. Move the handling of - class-wide pre/postcondition description and data structures from - Sem_Prag. - (Build_Class_Wide_Expression): Moved from Sem_Prag. - (Build_DIC_Call): New routine. - (Build_DIC_Procedure_Body): New routine. - (Build_DIC_Procedure_Declaration): New routine. - (Entity_Hash): Moved from Sem_Prag. - (Find_DIC_Type): New routine. - (Update_Primitives_Mapping): Reimplemented. - (Update_Primitives_Mapping_Of_Types): New routine. - * exp_util.ads (Build_Class_Wide_Expression): Moved from Sem_Prag. - (Build_DIC_Call): New routine. - (Build_DIC_Procedure_Body): New routine. - (Build_DIC_Procedure_Declaration): New routine. - (Update_Primitives_Mapping): Moved from Sem_Prag. - (Update_Primitives_Mapping_Of_Types): New routine. - * nlists.adb (Append_New): New routine. - (Append_New_To): New routine. - * nlists.ads (Append_New): New routine. - (Append_New_To): New routine. - * sem_ch3.adb (Analyze_Declarations): Do not generate the bodies - of DIC procedures here. This is now done at the end of the - visible declarations, private declarations, and at the freeze - point of a type. - (Analyze_Private_Extension_Declaration): - A private extension inherits the DIC pragma of a parent type. - (Analyze_Subtype_Declaration): No need to propagate invariant - attributes to a subtype as those apply to the base type. - (Build_Derived_Record_Type): No need to inherit invariants here - as this is now done in Build_Derived_Type. - (Build_Derived_Type): Inherit both the DIC pragma and invariants from - a parent type. - (Process_Full_View): Update the propagation of DIC attributes. - (Propagate_Default_Init_Cond_Attributes): Removed. - * sem_ch7.adb Add with and use clauses for Exp_Util. - (Analyze_Package_Specification): Create the body of the DIC - procedure at the end of the visible and private declarations. - (Preserve_Full_Attributes): Propagate DIC attributes. - * sem_ch9.adb (Analyze_Protected_Type_Declaration): Propagate - DIC attributes. - (Analyze_Task_Type_Declaration): Propagate DIC attributes. - * sem_elab.adb (Check_A_Call): Update the call to - Is_Nontrivial_Default_Init_Cond_Procedure. - * sem_prag.adb Remove the with and use clauses for - GNAT.HTable. Move the handling of class- wide pre/postcondition - description and data structures to Exp_Util. - (Analyze_Pragma): Create the declaration of the DIC procedure. There - is no need to propagate invariant-related attributes at this point - as this is done in Build_Invariant_Procedure_Declaration. - (Build_Class_Wide_Expression): Moved to Exp_Util. - (Entity_Hash): Moved to Exp_Util. - (Update_Primitives_Mapping): Moved to Exp_Util. - * sem_prag.ads (Build_Class_Wide_Expression): Moved to Exp_Util. - (Update_Primitives_Mapping): Moved to Exp_Util. - * sem_util.adb: Remove with and use clauses for Ghost - and Sem_Ch13. - (Build_Default_Init_Cond_Call): Removed. - (Build_Default_Init_Cond_Procedure_Bodies): Removed. - (Build_Default_Init_Cond_Procedure_Declaration): Removed. - (Get_Views): Reimplemented. - (Has_Full_Default_Initialization): Reimplement the section on DIC. - (Inherit_Default_Init_Cond_Procedure): Removed. - (Is_Nontrivial_Default_Init_Cond_Procedure): Removed. - (Is_Nontrivial_DIC_Procedure): New routine. - (Is_Verifiable_DIC_Pragma): New routine. - (Propagate_DIC_Attributes): New routine. - * sem_util.ads (Build_Default_Init_Cond_Call): Removed. - (Build_Default_Init_Cond_Procedure_Bodies): Removed. - (Build_Default_Init_Cond_Procedure_Declaration): Removed. - (Inherit_Default_Init_Cond_Procedure): Removed. - (Is_Nontrivial_Default_Init_Cond_Procedure): Removed. - (Is_Nontrivial_DIC_Procedure): New routine. - (Is_Verifiable_DIC_Pragma): New routine. - (Propagate_DIC_Attributes): New routine. - * sem_warn.adb (Is_OK_Fully_Initialized): Reimplement the section - on DIC. - * sinfo.ads, sinfo.adb: Add new attribute Expression_Copy along with - usage in nodes. - (Expression_Copy): New routine along with pragma Inline. - (Set_Expression_Copy): New routine along with pragma Inline. - -2017-01-06 Bob Duff - - * bindgen.adb (Gen_Adainit, Gen_Adafinal): Change - "Bind_Main_Program" to "not Bind_For_Library", because otherwise - we won't generate the call to s_stalib_adafinal when the main - is not written in Ada. - -2017-01-06 Bob Duff - - * sem_prag.adb: Minor: remove pragma Warnings. - -2017-01-06 Tristan Gingold - - * Makefile.rtl: Do not compile s-stchop by default. - -2017-01-06 Patrick Bernardi - - * aspects.adb, aspects.ads, exp_ch3.adb, exp_ch9.adb, par-prag.adb, - sem_ch13.adb, sem_prag.adb, sem_prag.ads, snames.adb-tmpl, - snames.ads-tmpl, s-secsta.adb, s-secsta.ads, s-tarest.adb, - s-tarest.ads, s-taskin.adb, s-taskin.ads, s-tassta.adb, s-tassta.ads: - Reverted previous change for now. - -2017-01-06 Ed Schonberg - - * exp_ch3.adb (Build_Initialization_Call): Apply predicate - check to default discriminant value if checks are enabled. - (Build_Assignment): If type of component has static predicate, - apply check to its default value, if any. - -2017-01-06 Patrick Bernardi - - * aspect.adb, aspect.ads: Added new aspect Secondary_Stack_Size. - * exp_ch3.adb (Build_Init_Statements): As part of initialising - the value record of a task, set its _Secondary_Stack_Size field - if present. - * exp_ch9.adb (Expand_N_Task_Type_Declaration): Create - a _Secondary_Stack_Size field in the value record of - the task if a Secondary_Stack_Size rep item is present. - (Make_Task_Create_Call): Include secondary stack size - parameter. If No_Secondary_Stack restriction is in place, passes - stack size of 0. - * par-prag.adb, sem_prag.adb, sem_prag.ads: Added new pragma - Secondary_Stack_Size. - * s-secsta.adb, s-secsta.ads (Minimum_Secondary_Stack_Size): New - function to define the overhead of the secondary stack. - * s-tarest.adb (Create_Restricted_Task, - Create_Restricted_Task_Sequential): Functions now include - Secondary_Stack_Size parameter to pass to Initialize_ATCB. - * s-tarest.adb (Create_Restricted_Task, - Create_Restricted_Task_Sequential): Calls to Initialize_ATCB - now include Secondary_Stack_Size parameter. - (Task_Wrapper): - Secondary stack now allocated to the size specified by the - Secondary_Stack_Size parameter in the task's ATCB. - * s-taskin.adb, s-taskin.adb (Common_ATCB, Initialise_ATCB): New - Secondary_Stack_Size component. - * s-tassta.adb, s-tassta.ads (Create_Restricted_Task, - Create_Restricted_Task_Sequential): Function now include - Secondary_Stack_Size parameter. - (Task_Wrapper): Secondary stack - now allocated to the size specified by the Secondary_Stack_Size - parameter in the task's ATCB. - * sem_ch13.adb (Analyze_Aspect_Specification): Add support - for Secondary_Stack_Size aspect, turning the aspect into its - corresponding internal attribute. - (Analyze_Attribute_Definition): - Process Secondary_Stack_Size attribute. - * snames.adb-tmpl, snames.ads-tmpl: Added names - Name_Secondary_Stack_Size, Name_uSecondary_Stack_Size, - Attribute_Secondary_Stack_Size and Pragma_Secondary_Stack_Size. - -2017-01-06 Pascal Obry - - * a-direio.adb, a-direio.ads, a-sequio.adb, a-sequio.ads: Add Flush to - Sequential_IO and Direct_IO. - -2017-01-06 Bob Duff - - * snames.ads-tmpl (Renamed): New name for the pragma argument. - * par-ch2.adb: Allow the new pragma (with analysis deferred - to Sem_Prag). - * sinfo.ads, sinfo.adb (Map_Pragma_Name, Pragma_Name_Mapped): - Keep a mapping from new pragma names to old names. - * sem_prag.adb: Check legality of pragma Rename_Pragma, and - implement it by calling Map_Pragma_Name. - * checks.adb, contracts.adb, einfo.adb, errout.adb, - * exp_attr.adb, exp_ch3.adb, exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, - * exp_prag.adb, exp_util.adb, freeze.adb, frontend.adb, ghost.adb, - * inline.adb, lib-writ.adb, scans.adb, scans.ads, sem_attr.adb, - * sem_aux.adb, sem_ch10.adb, sem_ch13.adb, sem_ch6.adb, sem_ch9.adb, - * sem_elab.adb, sem_res.adb, sem_util.adb, sem_util.ads, - * sem_warn.adb: Call Pragma_Name_Mapped instead of Pragma_Name - as appropriate. - -2017-01-06 Hristian Kirtchev - - * exp_ch9.adb: Minor reformatting. - -2017-01-06 Tristan Gingold - - * exp_ch9.ads, exp_ch9.adb (Build_Entry_Names): Remove (unused). - * rtsfind.ads (RE_Task_Entry_Names_Array, RO_ST_Set_Entry_Names) - (RE_Protected_Entry_Names_Array, RO_PE_Set_Entry_Names): Remove - (unused). - * s-taskin.ads, s-taskin.adb (Set_Entry_Names, - Task_Entry_Names_Array, Task_Entry_Names_Access): Remove. - * s-tpoben.ads, s-tpoben.adb (Set_Entry_Names, - Protected_Entry_Names_Array, Protected_Entry_Names_Access): Remove. - -2017-01-06 Bob Duff - - * sinfo.ads, sinfo.adb (Map_Pragma_Name): Preparation work, - dummy implementation of Map_Pragma_Name. - -2017-01-06 Tristan Gingold - - * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Make the - entry_body variable constant. - * s-taprob.ads (Entry_Body_Access): Move to s-tposen. - * s-tpoben.ads (Protected_Entry_Body_Access): Now access - to constant. - * s-tposen.ads (Entry_Body_Access): Moved from s-taprob, - now access to constant. - -2017-01-06 Gary Dismukes - - * einfo.ads, sem_res.adb, sem_attr.adb, sem_ch6.adb: Minor - reformatting and typo fixes. - -2017-01-06 Bob Duff - - * snames.ads-tmpl: New names for pragma renaming. - * snames.adb-tmpl (Is_Configuration_Pragma_Name): Minor cleanup. - * par-prag.adb: Add new pragma name to case statement. - * sem_prag.adb (Rename_Pragma): Initial cut at semantic analysis - of the pragma. - * sinfo.ads, sinfo.adb (Pragma_Name_Mapped): Preparation work, - Dummy implementation of Pragma_Name_Mapped. - -2017-01-06 Ed Schonberg - - * exp_ch6.adb (Expand_Protected_Subprogram_Call): Add guard to - better detect call within an entry_wrapper. - * sem_res.adb (Resolve_Call): A protected call within an - entity_wrapper is analyzed in the context of the protected - object but corresponds to a pre-analysis and is not an access - before elaboration. - * sem_attr.adb: Minor reformatting. - -2017-01-06 Justin Squirek - - * sem_attr.adb (Analyze_Attribute): Modify semantic checks for - Finalization_Size to allow a prefix of any non-class-wide type. - * sem_attr.ads Modify comment for Finalization_Size to include - definite type use case. - -2017-01-06 Ed Schonberg - - * einfo.ads, einfo.adb (Is_Entry_Wrapper): New flag, defined - on procedures that are wrappers created for entries that have - preconditions. - * sem_ch6.adb (Analyze_Subrogram_Body_Helper): If the subprogram - body is an entry_wrapper, compile it in the context of the - synchronized type, because a precondition may refer to funtions - of the type. - * exp_ch9.adb (Build_Contract_Wrapper): Set Is_Entry_Wrapper on - body entity. - * exp_ch6.adb (Expand_Protected_Subprogram_Call): if the call is - within an Entry_Wrapper this is an external call whose target - is the synchronized object that is the actual in the call to - the wrapper. - -2017-01-06 Yannick Moy - - * sem_attr.adb (Analyze_Attribute/Attribute_Loop_Entry): Analyze node - in tree, which means not analyzing the previous prefix if the node has - been rewritten into its prefix. - -2017-01-06 Gary Dismukes - - * s-tpobop.adb: Minor reformatting. - -2017-01-06 Ed Schonberg - - * checks.adb (Ensure_Valid): Do not generate a validity check - within a generated predicate function, validity checks will have - been applied earlier when required. - -2017-01-06 Tristan Gingold - - * s-tpoben.ads (Protection_Entries): Add comment and reorder - components for performances. - * s-tpobop.adb (PO_Do_Or_Queue): Implement Max_Queue_Length runtime - semantic. - -2017-01-06 Ed Schonberg - - * sem_eval.adb (Check_Expression_Against_Static_Predicate): - If expression is compile-time known and obeys a static predicate - it must be labelled as static, to prevent spurious warnings and - run-time errors, e.g. in case statements. This is relevant when - the expression is the result of constant-folding a type conversion - whose expression is a variable with a known static value. - -2017-01-06 Hristian Kirtchev - - * exp_attr.adb, sem_attr.ads: Minor reformatting. - -2017-01-06 Justin Squirek - - * exp_attr.adb (Expand_N_Attribute_Reference): Add entry for - expansion of Finalization_Size attribute. - * sem_attr.adb (Analyze_Attribute): Add entry to check the - semantics of Finalization_Size. - (Eval_Attribute): Add null entry for Finalization_Size. - * sem_attr.ads: Add Finalization_Size to the implementation - dependent attribute list. - * snames.ads-tmpl: Add name entry for Finalization_Size attribute. - -2017-01-06 Ed Schonberg - - * sem_ch5.adb (Analyze_Loop_Statement): If the loop includes an - iterator specification with a serious syntactic error, transform - construct into an infinite loop in order to continue analysis - and prevent a compiler abort. - -2017-01-06 Tristan Gingold - - * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Do not generate - max_queue_lengths_array if unused. - -2017-01-06 Bob Duff - - * errout.adb (Set_Msg_Text): Protect against out-of-bounds - array access, in case "\" is at the end of Text. - * stylesw.adb (Set_Style_Check_Options): Don't include input - characters in the error message template, because they could - be control characters such as "\", which Errout will try to - interpret. - -2017-01-06 Ed Schonberg - - * sem_ch4.adb (Find_Indexing_Operations, Inspect_Declarations): - For a private type examine the visible declarations that follow - the partial view, not just the private declarations that follow - the full view. - -2017-01-06 Hristian Kirtchev - - * exp_ch5.adb, sem_ch3.adb, checks.adb: Minor reformatting and - code cleanup. - -2017-01-06 Ed Schonberg - - * exp_ch5.adb (Get_Default_Iterator): For a derived type, the - alias of the inherited op is the parent iterator, no need to - examine dispatch table positions which might not be established - yet if type is not frozen. - * sem_disp.adb (Check_Controlling_Formals): The formal of a - predicate function may be a subtype of a tagged type. - * sem_ch3.adb (Complete_Private_Subtype): Adjust inheritance - of representation items for the completion of a type extension - where a predicate applies to the partial view. - * checks.ads, checks.adb (Apply_Predicate_Check): Add optional - parameter that designates function whose actual receives a - predicate check, to improve warning message when the check will - lead to infinite recursion. - * sem_res.adb (Resolve_Actuals): Pass additional parameter to - Apply_Predicate_Check. - -2017-01-06 Tristan Gingold - - * s-rident.ads (Profile_Info): Remove No_Entry_Queue from - Gnat_Extended_Ravenscar. - * exp_ch9.adb, s-tpoben.adb, s-tpoben.ads: Fix spelling. - -2017-01-06 Gary Dismukes - - * sem_util.ads: Minor typo fix and reformatting. - -2017-01-06 Yannick Moy - - * ghost.adb Minor fixing of references to SPARK RM. - (Check_Ghost_Context): Check whether reference is to a lvalue - before issuing an error about violation of SPARK RM 6.9(13) - when declaration has Ghost policy Check and reference has Ghost - policy Ignore. - * sem_util.adb Minor indentation. - * sem_ch10.adb (Analyze_Package_Body_Stub, Analyze_Protected_Body_Stub, - Analyze_Task_Body_Stub): Set Ekind of the defining identifier. - * sem_util.ads (Unique_Defining_Entity): Document the result - for package body stubs. - -2017-01-06 Tristan Gingold - - * raise-gcc.c (abort): Macro to call Abort_Propagation. - * s-tpoben.ads (Protected_Entry_Queue_Max_Access): Make it access - constant. - * exp_ch9.adb (Expand_N_Protected_Type_Declaration): - Do not generate the Entry_Max_Queue_Lengths_Array if all default - values. - * exp_util.adb (Corresponding_Runtime_Package): Consider - Max_Queue_Length pragma. - -2017-01-06 Justin Squirek - - * exp_ch9.adb (Expand_N_Protected_Type_Declaration): - Remove declaration generation in the case of - System_Tasking_Protected_Objects_Single_Entry being used, - and add a warning message when this is detected to occur. - (Make_Initialize_Protection): Remove reference pass in the case - of System_Tasking_Protected_Objects_Single_Entry. - * rtsfind.ads: Remove RE_Protected_Entry_Queue_Max - * s-tposen.adb (Initialize_Protection_Entry): Remove - Entry_Queue_Max parameter. - * s-tposen.ads: Remove the types use to store the entry queue - maximum. - * sem_prag.adb (Analyze_Pragma): Remove entry families restriction - -2017-01-06 Yannick Moy - - * sem_util.adb, sem_util.ads (Get_Enum_Lit_From_Pos): Strengthen - behavior of function, to also accept out of range positions - and raise Constraint_Error in such case, and to copy sloc from - literal if No_Location passed as location. - * uintp.adb, uintp.ads (UI_To_Int, UI_To_CC): Strengthen behavior - of functions to raise Constraint_Error in case of value not in - appropriate range. - -2017-01-06 Tristan Gingold - - * sem_util.adb, s-taprop-linux.adb (Finalize_TCB): Remove call to - Invalidate_Stack_Cache. - -2017-01-06 Eric Botcazou - - * s-os_lib.adb: Minor fix to the signature of Readlink. - -2017-01-06 Javier Miranda - - * sem_ch6.adb (Conforming_Types): Handle another - confusion between views in a nested instance with an actual - private type whose full view is not in scope. - -2017-01-06 Arnaud Charlet - - * exp_ch5.adb (Expand_N_If_Statement): Obey existing comment and - mark a rewritten if statement as explicit (Comes_From_Source). - -2017-01-06 Gary Dismukes - - * sem_prag.adb, rtsfind.adb, sem_util.adb: Minor typo fixes. - -2017-01-06 Tristan Gingold - - * ada.ads, a-unccon.ads: Add pragma No_Elaboration_Code_All. - -2017-01-06 Hristian Kirtchev - - * sem_case.adb: Minor reformatting. - -2017-01-06 Thomas Quinot - - * g-socthi-mingw.adb: Remove now extraneous USE TYPE clause - -2017-01-06 Justin Squirek - - * aspects.adb: Register aspect in Canonical_Aspect. - * aspects.ads: Associate qualities of Aspect_Max_Queue_Length - into respective tables. - * einfo.ads, einfo.adb: Add a new attribute for - handling the parameters for Pragma_Max_Entry_Queue - (Entry_Max_Queue_Lengths_Array) in E_Protected_Type. Subprograms - for accessing and setting were added as well. - * par-prag.adb (Prag): Register Pramga_Max_Entry_Queue. - * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Emit - declaration for pramga arguments and store them in the protected - type node. - (Make_Initialize_Protection): Pass a reference to - the Entry_Max_Queue_Lengths_Array in the protected type node to - the runtime. - * rtsfind.adb: Minor grammar fix. - * rtsfind.ads: Register new types taken from the - runtime libraries RE_Protected_Entry_Queue_Max and - RE_Protected_Entry_Queue_Max_Array - * s-tposen.adb, s-tpoben.adb - (Initialize_Protection_Entry/Initialize_Protection_Entries): - Add extra parameter and add assignment to local object. - * s-tposen.ads, s-tpoben.ads: Add new types to - store entry queue maximums and a field to the entry object record. - * sem_ch13.adb (Analyze_Aspect_Specifications): Add case statement - for Aspect_Max_Queue_Length. - (Check_Aspect_At_Freeze_Point): - Add aspect to list of aspects that don't require delayed analysis. - * sem_prag.adb (Analyze_Pragma): Add case statement for - Pragma_Max_Queue_Length, check semantics, and register arugments - in the respective entry nodes. - * sem_util.adb, sem_util.ads Add functions Get_Max_Queue_Length - and Has_Max_Queue_Length - * snames.ads-tmpl: Add constant for the new aspect-name - Name_Max_Queue_Length and corrasponding pragma. - -2017-01-06 Hristian Kirtchev - - * exp_util.adb (Is_Controlled_Function_Call): - Reimplemented. Consider any node which has an entity as the - function call may appear in various ways. - -2017-01-06 Hristian Kirtchev - - * exp_attr.adb (Rewrite_Stream_Proc_Call): Use - an unchecked type conversion when performing a view conversion - to/from a private type. In all other cases use a regular type - conversion to ensure that any relevant checks are properly - installed. - -2017-01-06 Hristian Kirtchev - - * sem_prag.adb, sem_ch8.adb: Minor reformatting. - -2017-01-06 Ed Schonberg - - * sem_case.adb (Explain_Non_Static_Bound): Suppress cascaded - error on case expression that is an entity, when coverage is - incomplete and entity has a static value obtained by local - propagation. - (Handle_Static_Predicate): New procedure, subsidiary of - Check_Choices, to handle case alternatives that are either - subtype names or subtype indications involving subtypes that - have static predicates. - -2017-01-06 Thomas Quinot - - * s-oscons-tmplt.c, g-socket.adb, g-socket.ads, g-sothco.ads: - (GNAT.Socket): Add support for Busy_Polling and Generic_Option - -2017-01-06 Bob Duff - - * sem_elab.adb (Activate_Elaborate_All_Desirable): Don't add - Elaborate_All(P) to P itself. That could happen in obscure cases, - and always introduced a cycle (P body must be elaborated before - P body). - * lib-writ.ads: Comment clarification. - * ali-util.ads: Minor comment fix. - * ali.adb: Minor reformatting. - -2017-01-06 Tristan Gingold - - * a-exexpr-gcc.adb: Improve comment. - -2017-01-03 James Cowgill - - * s-linux-mips.ads: Use correct signal and errno constants. - (sa_handler_pos, sa_mask_pos): Fix offsets for 64-bit MIPS. - -2017-01-03 James Cowgill - - * s-linux-mips.ads: Rename from s-linux-mipsel.ads. - * gcc-interface/Makefile.in (MIPS/Linux): Merge mips and mipsel - sections. - -2017-01-01 Eric Botcazou - - * gnatvsn.ads: Bump copyright year. - -2017-01-01 Jakub Jelinek - - * gnat_ugn.texi: Bump @copying's copyright year. - * gnat_rm.texi: Likewise. + * gnat_ugn.texi: Bump @copying's copyright year. + * gnat_rm.texi: Likewise. -Copyright (C) 2017 Free Software Foundation, Inc. +Copyright (C) 2018 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/ada/ChangeLog-2017 b/gcc/ada/ChangeLog-2017 new file mode 100644 index 00000000000..e724844c73e --- /dev/null +++ b/gcc/ada/ChangeLog-2017 @@ -0,0 +1,12773 @@ +2017-12-21 Eric Botcazou + + PR ada/83535 + * gcc-interface/decl.c (gnat_to_gnu_entity) : Always take + into account the Esize if it is known. + +2017-12-21 Richard Sandiford + Alan Hayward + David Sherwood + + * gcc-interface/trans.c (Attribute_to_gnu): Track polynomial + offsets and sizes. + * gcc-interface/utils2.c (build_unary_op): Likewise. + +2017-12-20 Eric Botcazou + + * gcc-interface/trans.c (Loop_Statement_to_gnu): Use IN_RANGE macro. + * gcc-interface/misc.c (gnat_get_array_descr_info): Likewise. + (default_pass_by_ref): Likewise. + * gcc-interface/decl.c (gnat_to_gnu_entity): Likewise. + +2017-12-19 Jakub Jelinek + + * gcc-interface/trans.c (Loop_Statement_to_gnu): Replace Yoda + conditions with typical order conditions. + * gcc-interface/misc.c (gnat_get_array_descr_info): Likewise. + (default_pass_by_ref): Likewise. + * gcc-interface/decl.c (gnat_to_gnu_entity): Likewise. + * adaint.c (__gnat_tmp_name): Likewise. + +2017-12-19 Arnaud Charlet + + PR ada/66205 + * bindgen.adb (Gen_AdaFinal): Revert previous change. + +2017-12-15 Jakub Jelinek + + * gcc-interface/utils.c (gnat_internal_attribute_table): Swap + affects_type_identity and handler fields, adjust comments. + +2017-12-15 Eric Botcazou + + * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use Component_Size of + the innermost array instead of Esize of its component type to exclude + inappropriate array types, including packed array types. + +2017-12-15 Hristian Kirtchev + + * sem_prag.adb (Analyze_Input_Item): Allow concurrent types to appear + within the input list of Initializes. Remove the uses of Input_OK. + +2017-12-15 Ed Schonberg + + * exp_ch4.adb (Expand_N_In): Do not replace a membership test on a + scalar type with a validity test when the membership appears in a + predicate expression, to prevent a spurious error when predicate is + specified static. + * sem_ch13.adb (Build_Predicate_Functions): Add warning if a static + predicate, after constant-folding, reduces to True and is this + redundant. + * par-ch4.adb: Typo fixes and minor reformattings. + +2017-12-15 Hristian Kirtchev + + * sem_elab.adb (Ensure_Prior_Elaboration_Static): Mark the generated + with clause as being implicit for an instantiation in order to + circumvent an issue with 'W' and 'Z' line encodings in ALI files. + +2017-12-15 Ed Schonberg + + * sem_util.adb (Is_Potentially_Unevaluated): Detect further cases of + misuse of 'Old that appear within an expression that is potentially + unevaluated, when the prefix of the attribute does not statically + designate an object (e.g. a function call). + +2017-12-15 Ed Schonberg + + * sem_ch6.adb (Conformking_Types): Two incomplete types are conforming + when one of them is used as a generic actual, but only within an + instantiation. + * einfo.ads: Clarify use of flag Used_As_Generic_Actual. + +2017-12-15 Justin Squirek + + * sem_attr.adb (Resolve_Attribute): Modify check for aliased view on + prefix to use the prefix's original node to avoid looking at expanded + conversions for certain array types. + +2017-12-15 Ed Schonberg + + * sem_res.adb (Resolve_Membership_Op): Add warning on a membership + operation on a scalar type for which there is a user-defined equality + operator. + +2017-12-15 Yannick Moy + + * doc/gnat_rm/implementation_defined_pragmas.rst: Add Ghost assertion + policy. + +2017-12-15 Hristian Kirtchev + + * sem_prag.adb (Analyze_Initialization_Item): Remove the specialized + processing for a null initialization item. Such an item is always + illegal. + +2017-12-15 Bob Duff + + * types.ads, types.h, libgnat/a-except.adb, exp_ch11.adb + (PE_Build_In_Place_Mismatch): New reason code for raising when the + BIPalloc formal parameter is incorrect. This can happen if a compiler + bug causes a mismatch of build-in-place between caller and callee. + * exp_ch6.adb (Expand_N_Extended_Return_Statement): Use + PE_Build_In_Place_Mismatch. + +2017-12-15 Ed Schonberg + + * exp_ch4.ads, exp_ch4.adb (Expand_N_Reduction_Expression): New + procedure. + * exp_util.adb (Insert_Actions): Handle N_Reduction_Expression. + * expander.adb (Expand): Call Expand_N_Reduction_Expression + * par-ch4.adb (P_Reduction_Expression): New procedure. + (P_Iterated_Component_Assoc_Or_Reduction): New precedure, extension of + P_Iterated_Component_Association. + (OK_Reduction_Expression_Parameter): New procedure. + (P_Aggregate_Or_Paren_Expr): Improve error message for malformed delta + aggregate. + * sem.adb (Analyze): Call Analyze_Reduction_Expression and + Analyze_Reduction_Expression_Parameter + * sinfo.ads, sinfo.adb: New node kinds N_Reduction_Expression and + N_Reduction_Expression_Parameter. + * sem_ch4.ads, sem_ch4.adb (Analyze_Reduction_Expression, + Analyze_Reduction_Expression_Parameter): New procedures. + * sem_res.adb (Resolve): Handle Reduction_Expression and + Reduction_Expression_Parameter + * sem_spark.adb: Dummy entries for Reduction_Expression and + Reduction_Expression_Parameter + * sprint.adb (Sprint_Node_Actual): Print Reduction_Expression, + Reduction_Expression_Parameter + +2017-12-15 Bob Duff + + * einfo.ads: Comment fix. + +2017-12-15 Piotr Trojanek + + * s-vercon.adb: Minor style fixes. + +2017-12-15 Ed Schonberg + + * sem_ch6.adb (Freeze_Expr_Types): Do not emit a freeze node for an + itype that is the type of a discriminant-dependent component. + +2017-12-15 Hristian Kirtchev + + * sem_prag.adb (Analyze_Part_Of): The context-specific portion of the + analysis is now directed to several specialized routines. + (Check_Part_Of_Abstract_State): New routine. + (Check_Part_Of_Concurrent_Type): New routine. Reimplement the checks + involving the item, the single concurrent type, and their respective + contexts. + * sem_res.adb (Resolve_Entity_Name): Potential constituents of a single + concurrent type are now recorded regardless of the SPARK mode. + * sem_util.adb (Check_Part_Of_Reference): Split some of the tests in + individual predicates. A Part_Of reference is legal when it appears + within the statement list of the object's immediately enclosing + package. + (Is_Enclosing_Package_Body): New routine. + (Is_Internal_Declaration_Or_Body): New routine. + (Is_Single_Declaration_Or_Body): New routine. + (Is_Single_Task_Pragma): New routine. + +2017-12-15 Patrick Bernardi + + * gnat_ugn.texi: Regenerate. + +2017-12-15 Bob Duff + + * gnatvsn.ads: Minor comment fixes. + +2017-12-15 Patrick Bernardi + + * doc/gnat_ugn/gnat_and_program_execution.rst: Update section "Dynamic + Stack Usage Analysis" to include more details about GNAT_STACK_LIMIT. + +2017-12-15 Hristian Kirtchev + + * exp_util.adb (Add_Own_DIC): Ensure that the expression of the pragma + is available (Is_Verifiable_DIC_Pragma): Moved from Sem_Util. + * sem_util.adb (Has_Full_Default_Initialization): + Has_Fully_Default_Initializing_DIC_Pragma is now used to determine + whether a type has full default initialization due to pragma + Default_Initial_Condition. + (Has_Fully_Default_Initializing_DIC_Pragma): New routine. + (Is_Verifiable_DIC_Pragma): Moved to Exp_Util. + * sem_util.ads (Has_Fully_Default_Initializing_DIC_Pragma): New + routine. + (Is_Verifiable_DIC_Pragma): Moved to Exp_Util. + * sem_warn.adb (Is_OK_Fully_Initialized): + Has_Fully_Default_Initializing_DIC_Pragma is now used to determine + whether a type has full default initialization due to pragma + Default_Initial_Condition. + +2017-12-15 Hristian Kirtchev + + * sem_prag.adb (Match_Constituent): Do not quietly accept constants as + suitable constituents. + * exp_util.adb: Minor reformatting. + +2017-12-15 Ed Schonberg + + * exp_aggr.adb (In_Place_Assign_OK): Extend the predicate to recognize + an array aggregate in an allocator, when the designated type is + unconstrained and the upper bound of the aggregate belongs to the base + type of the index. + +2017-12-15 Bob Duff + + * exp_ch6.adb (Expand_N_Extended_Return_Statement, + Expand_Simple_Function_Return): Assert that the b-i-p-ness of the + caller and callee match. Otherwise, we would need some substantial + changes to allow b-i-p calls non-b-i-p, and vice versa. + +2017-12-15 Ed Schonberg + + * exp_unst.adb (Unnest_Subprograms): Nothing to do if the main unit is + a generic package body. Unnesting is only an issue when generating + code, and if the main unit is generic then nested instance bodies have + not been created and analyzed, and unnesting will crash in the absence + of those bodies, + +2017-12-15 Hristian Kirtchev + + * inline.adb (Add_Inlined_Body): Do not add a function which is + completed by an expression function defined in the same context as the + initial declaration because the completing body is not in a package + body. + (Is_Non_Loading_Expression_Function): New routine. + +2017-12-15 Hristian Kirtchev + + * debug.adb: Move the functionality of -gnatdL to -gnatd_i. Restore + the behavior of -gnatdL from before revision 255412. + * sem_elab.adb: Update the section of compiler switches. + (Build_Call_Marker): Do not create a marker for a call which originates + from an expanded spec or body of an instantiated gener, does not invoke + a generic formal subprogram, the target is external to the instance, + and -gnatdL is in effect. + (In_External_Context): New routine. + (Process_Conditional_ABE_Activation_Impl): Update the uses of -gnatdL + and associated flag. + (Process_Conditional_ABE_Call): Update the uses of -gnatdL and + associated flag. + * switch-c.adb (Scan_Front_End_Switches): Switch -gnatJ now sets switch + -gnatd_i. + * exp_unst.adb: Minor typo fixes and edits. + +2017-12-15 Ed Schonberg + + * sem_ch6.adb (Possible_Freeze): Do not set Delayed_Freeze on an + subprogram instantiation, now that the enclosing wrapper package + carries an explicit freeze node. THis prevents freeze nodes for the + subprogram for appearing in the wrong scope. This is relevant when the + generic subprogram has a private or incomplete formal type and the + instance appears within a package that declares the actual type for the + instantiation, and that type has itself a delayed freeze. + +2017-12-15 Patrick Bernardi + + * doc/gnat_ugn/gnat_and_program_execution.rst: Removed references to + the environment variable GNAT_STACK_LIMIT from the Stack Overflow + Checking section as it is no longer used by any of our supported + targets. + +2017-12-15 Bob Duff + + * exp_ch6.adb (Expand_N_Extended_Return_Statement): If the + Init_Assignment is rewritten, we need to set Assignment_OK on the new + node. Otherwise, we will get spurious errors when initializing via + assignment statement. + +2017-12-15 Arnaud Charlet + + * exp_unst.adb (Visit_Node): Refine handling of 'Access to ignore non + relevant nodes. + (Has_Non_Null_Statements): Moved to sem_util for later reuse. + +2017-12-15 Eric Botcazou + + * exp_attr.adb (Is_Inline_Floating_Point_Attribute): Fix comment. + * libgnat/s-fatgen.adb (Model): Use Machine attribute. + (Truncation): Likewise. + +2017-12-15 Bob Duff + + * exp_ch7.adb (Expand_Cleanup_Actions): Make sure the block and handled + statement sequence generated for certain extended return statements + have a Sloc that is not No_Location. Otherwise, the back end doesn't + set any location and ends up reading uninitialized variables. + +2017-12-15 Bob Duff + + * types.ads, exp_ch6.adb, libgnat/s-regexp.ads, opt.ads: Partly revert + r255414, committed by mistake. + +2017-12-14 Eric Botcazou + + * gcc-interface/Makefile.in: Generalize support for symbolic traces. + +2017-12-14 Eric Botcazou + + * gcc-interface/misc.c (default_pass_by_ref): Minor tweak. + +2017-12-14 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): Set DECL_DISREGARD_INLINE_LIMITS + to 0 on the callee if the call is recursive. + +2017-12-14 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_field): Do not set the alignment + of the enclosing record type if it is not already set. + +2017-12-14 Eric Botcazou + + * gcc-interface/gigi.h (pad_type_has_rm_size): Declare. + * gcc-interface/decl.c (gnat_to_gnu_entity) : Do not build + a padding type for the alignment before validating the size. + Flip conditional construct and add a comment. + * gcc-interface/trans.c (Attribute_to_gnu) : Make sure to + apply the exception for padded objects to the type of the object. + * gcc-interface/utils.c (hash_pad_type): New static function. + (lookup_and_insert_pad_type): Rename into... + (canonicalize_pad_type): ...this. Call hash_pad_type, do only one + lookup with insertion and always return the canonical type. + (maybe_pad_type): Adjust to above changes. Set debug type later. + (pad_type_has_rm_size): New predicate. + (set_reverse_storage_order_on_pad_type): Adjust to above changes. + +2017-12-13 Eric Botcazou + + * gcc-interface/trans.c (Subprogram_Body_to_gnu): Initialize locus. + +2017-12-13 Eric Botcazou + + * gcc-interface/trans.c (process_freeze_entity): Be prepared for a + package without body. + +2017-12-13 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Robustify test for types + descendant of System.Address. + (gnat_to_gnu_subprog_type): Likewise. + +2017-12-08 Jakub Jelinek + + * gcc-interface/utils.c (gnat_internal_attribute_table): Add + exclusions to the comment. + +2017-12-07 Martin Sebor + + PR c/81544 + * gcc-interface/utils.c (gnat_internal_attribute_table): Initialize + new member of struct attribute_spec. + +2017-12-06 Simon Wright + + PR ada/66205 + * bindgen.adb (Gen_AdaFinal): If the restriction No_Task_Termination is + set, generate a null body. + +2017-12-05 Piotr Trojanek + + * sem_util.adb (Contains_Refined_State): Remove. + +2017-12-05 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specifications, case Predicate): A + predicate cannot apply to a formal type. + +2017-12-05 Arnaud Charlet + + * exp_unst.ads: Fix typos. + +2017-12-05 Jerome Lambourg + + * libgnarl/s-taprop__qnx.adb: Better detect priority ceiling bug in + QNX. At startup, the first mutex created has a non-zero ceiling + priority whatever its actual policy. This makes some tests fail + (c940013 for example). + +2017-12-05 Bob Duff + + * exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Call + Expand_Cleanup_Actions for N_Extended_Return_Statement. + * exp_ch7.adb (Expand_Cleanup_Actions): Handle + N_Extended_Return_Statement by transforming the statements into a + block, and (indirectly) calling Expand_Cleanup_Actions on the block. + It's too hard for Expand_Cleanup_Actions to operate directly on the + N_Extended_Return_Statement, because it has a different structure than + the other node kinds that Expand_Cleanup_Actions. + * exp_util.adb (Requires_Cleanup_Actions): Add support for + N_Extended_Return_Statement. Change "when others => return False;" to + "when others => raise ...;" so it's clear what nodes this function + handles. Use named notation where appropriate. + * exp_util.ads: Mark incorrect comment with ???. + +2017-12-05 Javier Miranda + + * exp_ch9.adb (Install_Private_Data_Declarations): Add missing + Debug_Info_Needed decoration of internally generated discriminal + renaming declaration. + +2017-12-05 Arnaud Charlet + + * exp_unst.adb (Unnest_Subprogram): Add handling of 'Access on + nested subprograms. + +2017-12-05 Sergey Rybin + + * doc/gnat_ugn/gnat_utility_programs.rst: Add description of '--ignore' + option for gnatmetric, gnatpp, gnat2xml, and gnattest. + +2017-12-05 Piotr Trojanek + + * sem_util.adb (Contains_Refined_State): Remove. + +2017-12-05 Piotr Trojanek + + * rtsfind.ads: Add new enumeration literals: RE_Clock_Time (for + Ada.Real_Time.Clock_Time) and RO_CA_Clock_Time (for + Ada.Calendar.Clock_Time). + +2017-12-05 Ed Schonberg + + * sem_ch4.adb (Is_Private_Overriding): If the candidate private + subprogram is overloaded, scan the list of homonyms in the same + scope, to find the inherited operation that may be overridden + by the candidate. + * exp_ch11.adb, exp_ch7.adb: Minor reformatting. + +2017-12-05 Bob Duff + + * exp_ch6.adb (Expand_N_Extended_Return_Statement): If the + Init_Assignment is rewritten, we need to set Assignment_OK on the new + node. Otherwise, we will get spurious errors when initializing via + assignment statement. + +2017-12-05 Hristian Kirtchev + + * sem_elab.adb: Update the terminology and switch sections. + (Check_SPARK_Model_In_Effect): New routine. + (Check_SPARK_Scenario): Verify the model in effect for SPARK. + (Process_Conditional_ABE_Call_SPARK): Verify the model in effect for + SPARK. + (Process_Conditional_ABE_Instantiation_SPARK): Verify the model in + effect for SPARK. + (Process_Conditional_ABE_Variable_Assignment_SPARK): Verify the model + in effect for SPARK. + +2017-12-05 Nicolas Setton + + * terminals.c (__gnat_setup_child_communication): As documented, + __gnat_setup_child_communication should not terminate - it is intended + to be used as the child process of a call to fork(). However, execvp + might actually return in some cases, for instance when attempting to + run a 32-bit binary on a 64-bit Linux distribution when the + compatibility packages are not installed. In these cases, exit the + program to conform to the documentation. + +2017-12-05 Olivier Hainque + + * libgnat/s-tsmona.adb: Fix for oversight in the tsmona interface + update. + +2017-12-05 Gary Dismukes + + * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Minor typo fix + and reformatting. + * gnat_ugn.texi: Regenerate. + +2017-12-05 Olivier Hainque + + * sem_util.adb (Set_Convention): Always clear Can_Use_Internal_Rep + on access to subprogram types with foreign convention. + +2017-12-05 Yannick Moy + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix User's + Guide description of default settings of warnings. + +2017-12-05 Olivier Hainque + + * s-dwalin.adb (Read_And_Execute_Isn): Adjust test checking for the end + of section. Add comments explaining the rationale of the computation. + +2017-12-05 Bob Duff + + * exp_ch11.adb: Minor refactoring. + +2017-12-05 Hristian Kirtchev + + * debug.adb: Add debug switches d_a, d_e, and d_p, along with + documentation. + (Set_Underscored_Debug_Flag): New routine. + * debug.ads: Add the flags for all underscore switches. + (Set_Underscored_Debug_Flag): New routine. + * einfo.adb: Flag303 is now Suppress_Elaboration_Warnings. + (Suppress_Elaboration_Warnings): New routine. + (Set_Suppress_Elaboration_Warnings): New routine. + (Write_Entity_Flags): Add output for Suppress_Elaboration_Warnings. + * einfo.ads: Add new flag Suppress_Elaboration_Warnings. + (Suppress_Elaboration_Warnings): New routine along with pragma Inline. + (Set_Suppress_Elaboration_Warnings): New routine along with pragma + Inline. + * exp_ch3.adb (Build_Init_Procedure): Restore the behavior of the + legacy elaboration model. + (Default_Initialize_Object): Restore the behavior of the legacy + elaboration model. + * exp_ch9.adb: Add with and use clause for Sem_Elab. + (Build_Task_Activation_Call): Restore the behavior of the legacy + elaboration model. + * frontend.adb (Frontend): Restore the behavior of the legacy + elaboration model. + * opt.ads: Add new flags Legacy_Elaboration_Checks and + Relaxed_Elaboration_Checks, along with documentation. + * sem_attr.adb (Analyze_Access_Attribute): Restore the behavior of the + legacy elaboration model. + * sem_ch5.adb (Analyze_Assignment): Restore the behavior of the legacy + elaboration model. + * sem_ch7.adb (Analyze_Package_Declaration): Restore the behavior of + the legacy elaboration model. + * sem_ch8.adb (Attribute_Renaming): Restore the behavior of the legacy + elaboration model. + * sem_ch12.adb (Analyze_Instance_And_Renamings): Restore the behavior + of the legacy elaboration model. + (Analyze_Package_Instantiation): Restore the behavior of the legacy + elaboration model. + (Analyze_Subprogram_Instantiation): Restore the behavior of the legacy + elaboration model. + * sem_elab.adb: Update the documentation of the Processing phase. + Update the documentation on elaboration-related compilation + switches. Update the documentation on adding a new target. Add + Processing_Attributes which represent the state of the Processing + phase. Resurrect the previous elaboration model as "legacy elaboration + model". + (Build_Call_Marker): This routine does not function when the legacy + elaboration model is in effect. Do not consider entry calls and requeue + statements when debug flag d_e is in effect. Do not consider calls to + subprograms which verify the runtime semantics of certain assertion + pragmas when debug flag d_p is in effect. + (Build_Variable_Reference_Marker): This routine does not function when + the legacy elaboration model is in effect. + (Check_Elaboration_Scenarios): This routine does not function when the + legacy elaboration model is in effect. + (Ensure_Prior_Elaboration): The various flags have now been replaced + with a state. Do not generate implicit Elaborate[_All] pragmas when + their creation has been suppressed. + (Ensure_Prior_Elaboration_Static): The with clause is marked based on + the requested pragma, not on the nature of the scenario. + (In_External_Context): Removed. + (Is_Assertion_Pragma_Target): New routine. + (Is_Potential_Scenario): Stop the traversal of a task body when + reaching an accept or select statement, and debug switch d_a is in + effect. + (Kill_Elaboration_Scenario): This routine does not function when the + legacy elaboration model is in effect. + (Process_Activation_Generic): The various flags have now been replaced + with a state. + (Process_Conditional_ABE): The various flags have now been replaced + with a state. + (Process_Conditional_ABE_Access): The various flags have now been + replaced with a state. + (Process_Conditional_ABE_Activation_Impl): The various flags have now + been replaced with a state. Do not process an activation call which + activates a task whose type is defined in an external instance, and + debug switch dL is in effect. Suppress the generation of implicit + Elaborate[_All] pragmas once a conditional ABE check has been + installed. + (Process_Conditional_ABE_Call): The various flags have now been + replaced with a state. Do not process a call which invokes a subprogram + defined in an external instance, and debug switch dL is in effect. + (Process_Conditional_ABE_Call_Ada): The various flags have now been + replaced with a state. Suppress the generation of implicit + Elaborate[_All] pragmas once a conditional ABE check has been + installed. + (Process_Conditional_ABE_Call_SPARK): The various flags have now been + replaced with a state. + (Process_Conditional_ABE_Instantiation): The various flags have now + been replaced with a state. + (Process_Conditional_ABE_Instantiation_Ada): The various flags have now + been replaced with a state. Suppress the generation of implicit + Elaborate[_All] pragmas once a conditional ABE check has been + installed. + (Process_Conditional_ABE_Instantiation_SPARK): The various flags have + now been replaced with a state. + (Process_Guaranteed_ABE_Activation_Impl): The various flags have now + been replaced with a state. + (Process_Single_Activation): The various flags have now been replaced + with a state. + (Record_Elaboration_Scenario): This routine does not function when the + legacy elaboration model is in effect. + (Traverse_Body): The various flags have now been replaced with a state. + * sem_elab.ads: Resurrect the pre-18.x elaboration model as "legacy + elaboration model". + * sem_prag.adb (Analyze_Pragma): Restore the behavior of the legacy + elaboration model. + * sem_res.adb (Resolve_Call): Restore the behavior of the legacy + elaboration model. + (Resolve_Entity_Name): Restore the behavior of the legacy elaboration + model. + * sem_util.adb (Mark_Elaboration_Attributes): This routine does not + function when the legacy elaboration model is in effect. + * sinfo.adb (Is_Known_Guaranteed_ABE): Update the assertion check. + (No_Elaboration_Check): New routine. + (Set_Is_Known_Guaranteed_ABE): Update the assertion check. + (Set_No_Elaboration_Check): New routine. + * sinfo.ads: Update the documentation of flag Is_Known_Guaranteed_ABE + along with occurrences in nodes. Add new flag No_Elaboration_Check + along with occurrences in nodes. + * switch-c.adb (Scan_Front_End_Switches): Add processing for debug + switches with underscores. Add processing for switches -gnatH and + -gnatJ. + * usage.adb (Usage): Add output for switches -gnatH and -gnatJ. + * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the + documentation to include the legacy and relaxed elaboration models. + * gnat_ugn.texi: Regenerate. + +2017-12-05 Arnaud Charlet + + * doc/gnat_ugn/platform_specific_information.rst: Minor edit. + Improve doc on required packages for linux 32bits. + +2017-12-05 Doug Rupp + + * tracebak.c (ppc64-vx7): USE_GCC_UNWINDER for 64bit. + +2017-12-05 Javier Miranda + + * checks.adb (Generate_Range_Check): Force evaluation of the node in + more cases. This patch was written to improve the code generated by + the CCG compiler but it is enabled for all targets since double + evaluation is always a potential source of inefficiency. + +2017-12-05 Gary Dismukes + + * doc/gnat_ugn/gnat_utility_programs.rst: Remove reference to obsolete + -fdump-xref switch. + +2017-12-05 Eric Botcazou + + * exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Use the SLOC of the + iteration scheme throughout, except for the new loop statement(s). + +2017-12-05 Ed Schonberg + + * exp_aggr.adb (Gen_Assign): Do not analyze the expressionn of the + assignment if it is part of an Iterated_Component_Association: the + analysis needs to take place once the loop structure is analyzed and + the loop parameter made visible, because references to it typically + appear in the corresponding expression. This is necessary if the + expression is an aggregate, because previous pre-analysis of the + expression does not handle nested aggregates properly. + +2017-12-05 Bob Duff + + * sem_res.adb (Resolve_Allocator): Avoid coextension processing for an + allocator that is the expansion of a build-in-place function call. + +2017-12-05 Olivier Hainque + +libgnat/ + * s-trasym__dwarf.adb (spec of Module_Name.Get): Instead of + possibly adjusting the lookup address by a load address, expect + a extra argument through which the load address can be conveyed + separately. + (Multi_Module_Symbolic_Traceback): Adjust accordingly. Pass the + retrieved load address to Init_Module. + * s-tsmona__linux.adb (Get): Honor the new interface. + * s-tsmona__mingw.adb (Get): Likewise. + * s-dwalin.ads: Adjust comments to be explicit about which + addresses are from module info and which are run-time addresses, + offsetted by the module load address. + * s-dwalin.adb (Set_Load_Address): Simply set C.Load_Slide. + Do not alter the module Low and High (relative) addresses. + (Is_Inside): Improve documentation regarding the kinds of addresses + at hand and correct the test. + (Symbolic_Traceback): Use separate variables with explicit names + for the address in traceback (run-time value) and the address to + lookup within the shared object (module-relative). Adjust the + computation of address passed to Symbolic_Address for symbolization. + +2017-12-05 Arnaud Charlet + + * opt.ads (Expand_Nonbinary_Modular_Ops): New flag. + * exp_ch4.adb (Expand_Nonbinary_Modular_Op): Use + Expand_Nonbinary_Modular_Ops instead of Modify_Tree_For_C, so that + other back-ends can also benefit from the front-end expansion. Remove + test for Modify_Tree_For_C in all callers to better share code. + * gnat1drv.adb (Adjust_Global_Switches): Set + Expand_Nonbinary_Modular_Ops when generating C code. + +2017-12-05 Ed Schonberg + + * exp_ch5.adb (Expand_Formal_Container_Loop): Ensure that the loop + parameter becomes invisible after analyzing the loop, which has been + rewritten as a while-loop. + +2017-12-05 Doug Rupp + + * vxaddr2line.adb: Revise and enhance for new ports, remove dead ports, + and update for 64bit ports. + +2017-12-05 Bob Duff + + * exp_ch6.adb (Build_In_Place_Formal): Search for the formal by suffix + instead of the full name. + * sem_ch6.adb (Create_Extra_Formals): Make sure there are extra formals + in the case of an instance of a generic. + +2017-12-05 Arnaud Charlet + + (Adjust_Global_Switches): Create an alias GNAT_Annotate to map to + pragma Annotate. + +2017-12-05 Sebastian Huber + + * gcc-interface/Makefile.in (RTEMS): Define EH_MECHANISM. + +2017-12-04 Sebastian Huber + + * gcc-interface/Makefile.in (RTEMS): Use s-osprim__rtems.adb. + * libgnat/s-osprim__rtems.adb: New file. + * libgnarl/s-osinte__rtems.adb (pthread_cond_t): Fix alignment. + (pthread_mutexattr_t): Likewise. + (pthread_rwlockattr_t): Likewise. + (pthread_rwlock_t): Likewise. + (time_t): Use 64-bit integer. + +2017-12-01 Sebastian Huber + + * libgnarl/s-osinte__rtems.ads (pthread_cond_t): Use correct size and + alignment. + (pthread_mutex_t): Likewise. + (pthread_rwlock_t): Likewise. + +2017-11-28 Jakub Jelinek + + * gcc-interface/trans.c (Case_Statement_to_gnu): Build SWITCH_EXPR + using build2 instead of build3. + +2017-11-23 Eric Botcazou + + 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. + +2017-11-23 Mike Stump + Eric Botcazou + + * gcc-interface/trans.c (gnat_gimplify_stmt) : Pass 3rd + operand to ANNOTATE_EXPR and also pass unrolling hints. + +2017-11-20 Eric Botcazou + + PR ada/83016 + * gnatlink.adb (Process_Args): Accept multiple switches for --LINK. + (Usage): Adjust. + * gcc-interface/Makefile.in (GCC_LINK): Remove $(ADA_INCLUDES). + (common-tools): Pass $(CC) as --GCC= and $(GCC_LINK) as --LINK= in + the invocations of $(GNATLINK). + (../../gnatdll$(exeext)): Likewise. + (../../vxaddr2line$(exeext)): Likewise. + (gnatmake-re): Likewise. + (gnatlink-re): Likewise. + +2017-11-16 Doug Rupp + + * gcc-interface/Makefile.in: Merge Aarch64 and ARM "ifeq" blocks. + +2017-11-16 Steve Baird + + * debug.adb: Update another comment to indicate gnat2scil's use of the + -gnatd.7 switch. + +2017-11-16 Bob Duff + + * exp_ch6.adb (Expand_Call_Helper): Avoid creating a transient scope in + the case of nested build-in-place calls. + +2017-11-16 Joel Brobecker + + * doc/gnat_ugn/gnat_utility_programs.rst: Document the switches + available in gnatsymbolize. + +2017-11-16 Steve Baird + + * debug.adb: Update comment to indicate gnat2scil's use of the -gnatd.7 + switch. + +2017-11-16 Gary Dismukes + + * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, sem_ch6.adb, + sem_elab.adb: Minor editorial corrections. + * gnat_ugn.texi: Regenerate. + +2017-11-16 Joel Brobecker + + * doc/gnat_ugn/gnat_utility_programs.rst (GNAT UGN): Add + gnatsymbolize documentation. + * gnat_ugn.texi: Regenerate. + +2017-11-16 Steve Baird + + * sem_ch3.adb (Build_Derived_Record_Type): Replace all uses of + "Scope (Parent_Type)" with "Scope (Parent_Base)". + +2017-11-16 Hristian Kirtchev + + * opt.ads: Elaboration warnings are now on by default. Add a comment + explaining why this is needed. + * sem_ch9.adb (Analyze_Requeue): Preserve the status of elaboration + warnings. + * sem_ch12.adb (Analyze_Package_Instantiation): Preserve the status of + elaboration warnings. + (Analyze_Subprogram_Instantiation): Preserve the status of elaboration + warnings. + * sem_elab.adb: Update the structure of Call_Attributes and + Instantiation_Attributes. + (Build_Call_Marker): Propagate the status of elaboration warnings from + the call to the marker. + (Extract_Call_Attributes): Extract the status of elaboration warnings. + (Extract_Instantiation_Attributes): Extract the status of elaboration + warnings. + (Process_Conditional_ABE_Activation_Impl): Elaboration diagnostics are + now dependent on the status of elaboration warnings. + (Process_Conditional_ABE_Call_Ada): Elaboration diagnostics are now + dependent on the status of elaboration warnings. + (Process_Conditional_ABE_Instantiation_Ada): Elaboration diagnostics + are now dependent on the status of elaboration warnings. + (Process_Guaranteed_ABE_Activation_Impl): Remove pragma Unreferenced + for formal Call_Attrs. Elaboration diagnostics are now dependent on the + status of elaboration warnings. + (Process_Guaranteed_ABE_Call): Elaboration diagnostics are now + dependent on the status of elaboration warnings. + (Process_Guaranteed_ABE_Instantiation): Elaboration diagnostics are now + dependent on the status of elaboration warnings. + * sem_prag.adb (Analyze_Pragma): Remove the unjustified warning + concerning pragma Elaborate. + * sem_res.adb (Resolve_Call): Preserve the status of elaboration + warnings. + (Resolve_Entry_Call): Propagate flag Is_Elaboration_Warnings_OK_Node + from the procedure call to the entry call. + * sem_util.adb (Mark_Elaboration_Attributes): Add formal parameter + Warnings. + (Mark_Elaboration_Attributes_Node): Preserve the status of elaboration + warnings + * sem_util.ads (Mark_Elaboration_Attributes): Add formal parameter + Warnings. Update the comment on usage. + * sinfo.adb (Is_Dispatching_Call): Update to use Flag6. + (Is_Elaboration_Warnings_OK_Node): New routine. + (Set_Is_Dispatching_Call): Update to use Flag6. + (Set_Is_Elaboration_Warnings_OK_Node): New routine. + * sinfo.ads: Attribute Is_Dispatching_Call now uses Flag6. Add new + attribute Is_Elaboration_Warnings_OK_Node along with occurrences + in nodes. + (Is_Elaboration_Warnings_OK_Node): New routine along with pragma + Inline. + (Set_Is_Elaboration_Warnings_OK_Node): New routine along with pragma + Inline. + * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update various + sections to indicate how to suppress elaboration warnings. Document + switches -gnatwl and -gnatwL. + * gnat_ugn.texi: Regenerate. + +2017-11-16 Sylvain Dailler + + * sem_util.adb (Get_Enum_Lit_From_Pos): Add a condition for Pos + lower than 0. + +2017-11-16 Bob Duff + + * sem_ch13.adb (Check_Expr_Constants): Avoid error message in case of + System'To_Address. + +2017-11-16 Yannick Moy + + * sem_elab.adb (Include): Fix mode of parameter Curr to out. + +2017-11-16 Piotr Trojanek + + * sem_util.ads, sem_util.adb (Is_CCT_Instance): Allow calls where + Context_Id denotes a record type. + +2017-11-16 Hristian Kirtchev + + * sem_ch8.adb (Check_SPARK_Primitive_Operation): Enable the check in + instantiations. + +2017-11-16 Doug Rupp + + Initial gnat port to aarch64-wrs-vxworks7 + * libgnarl/s-vxwork__aarch64.ads, + libgnat/system-vxworks7-aarch64-rtp-smp.ads, + libgnat/system-vxworks7-aarch64.ads: New files + * sigtramp-vxworks-target.inc (aarch64): New section. + * tracebak.c (USE_ARM_UNWINDING): Disable for ARMARCH8A. + +2017-11-16 Hristian Kirtchev + + * sem_elab.adb (Include): Including a node which is also a compilation + unit terminates the search because there are no more lists to examine. + +2017-11-16 Hristian Kirtchev + + * sem_ch8.adb (Analyze_Subprogram_Renaming): Ensure that a renaming + declaration does not define a primitive operation of a tagged type for + SPARK. + (Check_SPARK_Primitive_Operation): New routine. + +2017-11-16 Arnaud Charlet + + * libgnat/a-elchha.adb (Last_Chance_Handler): Display Argv (0) in + message when using -E binder switch. + +2017-11-16 Piotr Trojanek + + * errout.ads: Fix minor typo in comment. + +2017-11-16 Ed Schonberg + + * sem_ch3.adb (Process_Subtype): If the subtype indication does not + syntactically denote a type, return Any_Type to prevent subsequent + compiler crashes or infinite loops. + +2017-11-16 Steve Baird + + * lib-writ.adb: Fix bug which causes Program_Error to be raised in some + cases when writing out a .ali file when a Rename_Pragma pragma is in + effect. + * lib-writ.adb (Write_Unit_Information): Replace call to + Pragma_Name_Unmapped with call to Pragma_Name. + +2017-11-16 Gary Dismukes + + * sem_elab.adb: Minor typo fixes. + +2017-11-16 Justin Squirek + + * sem_res.adb (Resolve_Allocator): Correct warning messages and make + them more explicit. + +2017-11-16 Hristian Kirtchev + + * atree.ads (Nkind_In): Add 10 and 11 parameter versions. + * checks.adb (Install_Primitive_Elaboration_Check): Mark the setting of + the elaboration flag as elaboration code. + * einfo.adb (Contract): Update the comments. + (Ignore_SPARK_Mode_Pragmas): Update the comments. + (SPARK_Aux_Pragma): Update the comments. + (SPARK_Aux_Pragma_Inherited): Update the comments. + (SPARK_Pragma): Update the comments. The attribute now applies + to all types and abstract states. + (SPARK_Pragma_Inherited): Update the comments. The attribute now + applies to all types and abstract states. + (Set_Contract): Update the comments. + (Set_Ignore_SPARK_Mode_Pragmas): Update the comments. + (Set_SPARK_Aux_Pragma): Update the comments. + (Set_SPARK_Aux_Pragma_Inherited): Update the comments. + (Set_SPARK_Pragma): Update the comments. The attribute now applies to + all types and abstract states. + (Set_SPARK_Pragma_Inherited): Update the comments. The attribute now + applies to all types and abstract states. + (Write_Field40_Name): Add output for SPARK_Pragma when it appears on a + type and abstract states. + * einfo.ads: Update the documentation of attributes SPARK_Pragma and + SPARK_Pragma_Inherited. Both of them now apply to all types and + abstract states. + * exp_util.adb (Set_Elaboration_Flag): Mark the setting of the + elaboration flag as elaboration code. + * sem_ch3.adb: Add with and use clauses for Sem_Elab. + (Analyze_Full_Type_Declaration): Set the SPARK_Mode of the type. Record + a derived type for later processing by the ABE mechanism. + (Analyze_Incomplete_Type_Decl): Set the SPARK_Mode of the type. + (Analyze_Private_Extension_Declaration): Set the SPARK_Mode of the + type. + * sem_ch7.adb (Analyze_Private_Type_Declaration): Set the SPARK_Mode of + the type. + * sem_elab.adb: Define the term "early call region". Update the + terminology for "scenario" and "target". Update the architecture of + the ABE mechanism. Update the steps which must be taken when adding a + new scenario. Update the section on debugging ABE issues. Add new + hash tables Early_Call_Regions and Recorded_SPARK_Scenarios. Add new + table SPARK_Scenarios. Hash table Elaboration_Context is now + Elaboration_Statuses. The majority of Process_xxx routines have been + updated to better reflect their role. + (Add_Unit): Reimplemented. + (Check_Elaboration_Constituent): New routine. + (Check_Elaboration_Scenarios): Verify previously recorded scenarios for + conditional ABE issues. Verify previously recorded SPARK scenarios. + (Check_SPARK_Derived_Type): New routine. + (Check_SPARK_Instantiation): New routine. + (Check_SPARK_Scenario): New routine. + (Check_SPARK_Refined_State_Pragma): New routine. + (Early_Call_Region): New routine. + (Elaboration_Status): New routine. + (Ensure_Prior_Elaboration): Add new formal parameter Prag_Nam. The + implicit Elabotate[_All] pragma is now specified via Prag_Nam. + (Find_Early_Call_Region): New routine. + (Info_Scenario): Add output for refinement constituents. + (Is_Recorded_SPARK_Scenario): New routine. + (Is_Suitable_SPARK_Derived_Type): New routine. + (Is_Suitable_SPARK_Instantiation): New routine. + (Is_Suitable_SPARK_Refined_State_Pragma): New routine. + (Is_Visited_Body): New routine. + (Kill_Elaboration_Scenario): Reimplemented. + (Output_Active_Scenarios): Add output for pragma Refined_State. + (Output_SPARK_Refined_State_Pragma): New routine. + (Process_Conditional_ABE_Call): Remove the use of -gnatd.v. The effect + is now achieved by different means. + (Process_Conditional_ABE_Call_SPARK): Verify that a call which precedes + the subprogram body appears within the early call region of the body. + Either ensure the prior elaboration of external subprograms or verify + that the context meets the suitable elaboration requirement. + (Process_Conditional_ABE_Instantiation_SPARK): New routine. + (Record_Elaboration_Scenario): Reimplement the portion which enforces + the level restrictions of the static model. Add support for SPARK + scenarios. + (Record_SPARK_Elaboration_Scenario): New routine. + (Reset_Visited_Bodies): New routine. + (Set_Early_Call_Region): New routine. + (Set_Elaboration_Status): New routine. + (Set_Is_Recorded_SPARK_Scenario): New routine. + (Update_Elaboration_Scenario): Reimplemented. + * sem_elab.ads: Add new subtype Library_Or_Instantiation_Level. + * sem_prag.adb (Analyze_Refined_State_In_Decl_Part): Save the pragma + for examination by the ABE Processing phase. + (Create_Abstract_State): Save the SPARK_Mode from the context. + * sem_util.adb (Is_Non_Preelaborable_Construct): New routine. + * sem_util.ads (Is_Non_Preelaborable_Construct): New routine. + * sinfo.adb (Is_Elaboration_Code): New routine. + (Set_Is_Elaboration_Code): New routine. + (Nkind_In): Add 10 and 11 parameter versions. + * sinfo.ads: Add new attribute Is_Elaboration_Code along with + occurrences in nodes. + (Is_Elaboration_Code): New routine along with pragma Inline. + (Set_Is_Elaboration_Code): New routine along with pragma Inline. + (Nkind_In): Add 10 and 11 parameter versions. + +2017-11-16 Justin Squirek + + * sem.adb (Analyze): Remove requirement that the original node of N be + an operator in the case that analysis on the node yields the relevant + operator - so prefer it instead. + +2017-11-16 Bob Duff + + * sem_ch6.adb (Create_Extra_Formals): The type of the BIP_Object_Access + formal must not have a designated type that is the full view coming + from a limited-with'ed package. + * sem_util.adb,sem_util.ads (Incomplete_View_From_Limited_With): New + function called from sem_ch6. + * sem_ch5.adb (Analyze_Assignment): Treat user-defined concatenation + specially for b-i-p cases. + +2017-11-10 Martin Sebor + + PR c/81117 + * adadecode.c (__gnat_decode): Use memcpy instead of strncpy. + * argv.c (__gnat_fill_arg, __gnat_fill_env): Likewise. + +2017-11-10 Eric Botcazou + + * gcc-interface/utils.c (convert) : Add comment and do + not fall through to the next case. + : Deal specially with a dereference from another array + type with the same element type. + +2017-11-09 Gary Dismukes + + * exp_util.adb, freeze.adb: Minor reformatting. + +2017-11-09 Jerome Lambourg + + * gcc-interface/Makefile.in: Add rules to build aarch64-qnx runtimes. + +2017-11-09 Hristian Kirtchev + + * gcc-interface/trans.c (gnat_to_gnu): Add processing for + N_Variable_Reference_Marker nodes. + +2017-11-09 Ed Schonberg + + * sem_ch12.adb (Analyze_Generic_Package_Declaration): Handle properly + the pragma Compile_Time_Error when it appears in a generic package + declaration and uses an expanded name to denote the current unit. + +2017-11-09 Jerome Lambourg + + * libgnarl/s-taprop__qnx.adb: Fix incorrect casing for pthread_self. + * tracebak.c: Add support for tracebacks in QNX. + +2017-11-09 Eric Botcazou + + * exp_aggr.adb (Aggr_Size_OK): Bump base limit from 50000 to 500000. + +2017-11-09 Yannick Moy + + * erroutc.adb, set_targ.adb: Remove pragma Annotate for CodePeer + justification. + +2017-11-09 Joel Brobecker + + * doc/gnat_ugn/platform_specific_information.rst: Document packages + needed on GNU/Linux by GNAT. + * gnat_ugn.texi: Regenerate. + +2017-11-09 Hristian Kirtchev + + * contracts.adb (Analyze_Contracts): Remove the three parameter + version. This routine now only analyzes contracts and does not perform + any freezing actions. + (Analyze_Previous_Contracts): Removed. + (Freeze_Previous_Contracts): New routine. + * contracts.ads (Analyze_Previous_Contracts): Removed. + (Freeze_Previous_Contracts): New routine. + * sem_ch3.adb (Analyze_Declarations): Analyze the contract of an + enclosing package spec regardless of whether the list denotes the + visible or private declarations. Fix the removal of partial state + refinements when the context is a package spec. + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Freeze previous + contracts. + * sem_ch7.adb (Analyze_Package_Body_Helper): Freeze previous contracts. + * sem_ch9.adb (Analyze_Entry_Body): Freeze previous contracts. + (Analyze_Protected_Body): Freeze previous contracts. + (Analyze_Task_Body): Freeze previous contracts. + * sem_prag.adb: Comment reformatting. + +2017-11-09 Bob Duff + + * libgnarl/g-thread.ads, libgnarl/g-thread.adb: (Make_Independent): + Export this so users can use it without importing + System.Tasking.Utilities. + * libgnarl/s-tassta.adb (Vulnerable_Complete_Task): Relax assertion + that fails when Make_Independent is called on a user task. + * libgnarl/s-taskin.ads (Master_Of_Task): Avoid unusual + capitalization style ((style) bad casing of "Master_of_Task"). + +2017-11-09 Ed Schonberg + + * sem_ch12.adb (Analyze_Subprogram_Instantiation): Correct use of + uninitialized variable uncovered by Codepeer. + +2017-11-09 Arnaud Charlet + + * namet.adb: Replace pragma Assume by pragma Assert to fix bootstrap. + +2017-11-09 Javier Miranda + + * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: + (Static_Dispatch_Tables): Minor rewording. + * gnat_rm.texi: Regenerate. + +2017-11-09 Justin Squirek + + * sem_ch8.adb (Analyze_Use_Package): Remove forced installation of + use_clauses within instances. + (Use_One_Package): Add condition to check for "hidden" open scopes to + avoid skipping over packages that have not been properly installed even + though they are visible. + +2017-11-09 Ed Schonberg + + * sem_ch4.adb (Analyze_Selected_Component): Reject properly a call to a + private operation of a protected type, when the type has no visible + operations. + +2017-11-09 Javier Miranda + + * rtsfind.ads (RE_Id, RE_Unit_Table): Add RE_HT_Link. + * exp_disp.adb (Make_DT): Initialize the HT_Link field of the TSD only + if available. + +2017-11-09 Bob Duff + + * exp_ch4.adb, exp_ch9.adb, exp_prag.adb, par-ch3.adb, sem_aggr.adb, + sem_ch12.adb, sem_ch13.adb, sem_ch4.adb, sem_disp.adb, sem_prag.adb, + sem_res.adb, sem_util.adb: Get rid of warnings about uninitialized + variables. + +2017-11-09 Yannick Moy + + * exp_disp.adb (Make_DT): Default initialize Ifaces_List and + Ifaces_Comp_List. + +2017-11-09 Pascal Obry + + * libgnarl/s-taprop__mingw.adb: On Windows, initialize the thead handle + only for foreign threads. We initialize the thread handle only if not + yet initialized. This happens in Enter_Task for foreign threads only. + But for native threads (Ada tasking) we do want to keep the real + handle (from Create_Task) to be able to free the corresponding + resources in Finalize_TCB (CloseHandle). + +2017-11-09 Yannick Moy + + * sem_attr.adb (Analyze_Attribute): Default initialize P_Type, + P_Base_Type. + (Error_Attr_P): Fix name in pragma No_Return. + (Unexpected_Argument): Add pragma No_Return. + (Placement_Error): Add pragma No_Return. + +2017-11-09 Javier Miranda + + * exp_disp.adb (Elab_Flag_Needed): Elaboration flag not needed when the + dispatch table is statically built. + (Make_DT): Declare constant the Interface_Table object associated with + an statically built dispatch table. For this purpose the Offset_To_Top + value of each interface is computed using the dummy object. + * exp_ch3.adb (Build_Init_Procedure): Do not generate code initializing + the Offset_To_Top field of secondary dispatch tables when the dispatch + table is statically built. + (Initialize_Tag): Do not generate calls to Register_Interface_Offset + when the dispatch table is statically built. + * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: + Document the new GNAT restriction Static_Dispatch_Tables. + * gnat_rm.texi: Regenerate. + +2017-11-09 Hristian Kirtchev + + * sem_aggr.adb (Resolve_Delta_Record_Aggregate): Reorder declarations + to avoid a dormant bug. + +2017-11-09 Jerome Lambourg + + * init.c: Define missing __gnat_alternate_stack for QNX. Set it to 0, + as such capability is not available on the OS. + * link.c: Make sure linker options for QNX are correct. + * libgnarl/s-osinte__qnx.ads: Add some missing bindings to pthread. + * libgnarl/s-taprop__qnx.adb: New, derived from s-taprop__posix.adb. This brings + in particular a workaround with locks priority ceiling where a higher + priority task is allowed to lock a lower ceiling priority lock. This + also fixes the scheduling of FIFO tasks when the priority of a task is + lowered. + * libgnat/system-qnx-aarch64.ads: Fix priority ranges. + +2017-11-09 Yannick Moy + + * erroutc.adb (Output_Error_Msgs): Justify CodePeer false positive + message. + * gnatbind.adb (Scan_Bind_Arg): Simplify test to remove always true + condition. + * namet.adb (Copy_One_Character): Add assumption for static analysis, + as knowledge that Hex(2) is in the range 0..255 is too complex for + CodePeer. + (Finalize): Add assumption for static analysis, as the fact that there + are symbols in the table depends on a global invariant at this point in + the program. + * set_targ.adb (Check_Spaces): Justify CodePeer false positive message. + * stylesw.adb (Save_Style_Check_Options): Rewrite to avoid test always + true. + +2017-11-09 Javier Miranda + + * libgnat/s-rident.ads (Static_Dispatch_Tables): New restriction name. + * exp_disp.adb (Building_Static_DT): Check restriction. + (Building_Static_Secondary_DT): Check restriction. + (Make_DT): Initialize the HT_Link to No_Tag. + * opt.ads (Static_Dispatch_Tables): Rename flag... + (Building_Static_Dispatch_Tables): ... into this. This will avoid + conflict with the restriction name. + * gnat1drv.adb: Update. + * exp_aggr.adb (Is_Static_Dispatch_Table_Aggregate): Update. + * exp_ch3.adb (Expand_N_Object_Declaration): Update. + +2017-11-09 Pascal Obry + + * libgnarl/s-taprop__mingw.adb: Minor code clean-up. Better using a + named number. + +2017-11-09 Yannick Moy + + * binde.adb (Diagnose_Elaboration_Problem): Mark procedure No_Return. + * checks.adb (Apply_Scalar_Range_Check): Rescope variable OK closer to + use. Default initialize Hi, Lo. + (Selected_Range_Checks): Retype Num_Checks more precisely. + (Determine_Range, Determine_Range_R): Default initialize Hi_Right, + Lo_Right. + * contracts.adb (Process_Contract_Cases): Mark parameter Stmts as + Unmodified. + (Process_Postconditions): Mark parameter Stmts as Unmodified. + * exp_attr.adb (Expand_Loop_Entry_Attribute): Default initialize Blk. + * exp_ch4.adb (Expand_N_Allocator): Default initialize Typ. + (Expand_Concatenate): Default initialize High_Bound. + (Optimize_Length_Comparison): Default initialize Ent, Index. + * exp_ch5.adb (Expand_Predicated_Loop): Default initialize L_Hi and + L_Lo. + * exp_ch6.adb (Expand_N_Extended_Return_Statement): Default initialize + Return_Stmt. + * exp_ch9.adb (Expand_Entry_Barrier): Default initialize Func_Body and + remove pragma Warnings(Off). + * exp_imgv.adb (Expand_Image_Attribute): Default initialize Tent. + * exp_util.adb (Find_Interface_Tag): Default initialize AI_Tag. + * freeze.adb (Check_Component_Storage_Order): Default initialize + Comp_Byte_Aligned rather than silencing messages with pragma + Warnings(Off), which does not work for CodePeer initialization + messages, and given that here the possible read of an unitialized value + depends on a proper use of parameters by the caller. + * inline.adb (Expand_Inlined_Call): Default initialize Lab_Decl, Targ. + * sem_ch12.adb (Build_Operator_Wrapper): Default initialize Expr. + * sem_ch3.adb (Build_Derived_Array_Type): Default initialize + Implicit_Base. + * sem_ch4.adb (List_Operand_Interps): Default initialize Nam and remove + pragma Warnings(Off). + (Analyze_Case_Expression): Rescope checking block within branch where + Others_Present is set by the call to Check_Choices. + * sem_ch5.adb (Analyze_Assignment): Default initialize + Save_Full_Analysis. + * sem_ch6.adb (Analyze_Function_Return): Default initialize Obj_Decl, + and restructure code to defend against previous errors, so that, in + that case, control does not flow to the elsif condition which read an + uninitialized Obj_Decl. + * sem_ch9.adb (Analyze_Requeue): Default initialize Synch_Type. + (Check_Interfaces): Default initialize Full_T_Ifaces and Priv_T_Ifaces, + which seem to be left uninitialized and possibly read in some cases. + * sem_dim.adb (Analyze_Aspect_Dimension_System): Retype Position more + precisely. This requires to exchange the test for exiting in case of + too many positions and the increment to Position, inside the loop. + * sem_eval.adb (Eval_Concatenation): Default initialize Folded_Val, + which cannot be read uninitialized, but the reasons for that are quite + subtle. + * sem_intr.adb (Check_Intrinsic_Call): Default initialize Rtyp. + * sem_prag.adb (Collect_Subprogram_Inputs_Outputs): Default initialize + Spec_Id. + * sem_res.adb (Make_Call_Into_Operator): Default initialize Opnd_Type, + and test for presence of non-null Opnd_Type before testing its scope, + in a test which would read its value uninitialized, and is very rarely + exercized (it depends on the presence of an extension of System). + * sem_spark.ads: Update comment to fix name of main analysis procedure. + * sem_warn.adb (Warn_On_Known_Condition): Default initialize + Test_Result. + * set_targ.adb (FailN): Mark procedure with No_Return. + * stylesw.adb (Save_Style_Check_Options): Delete useless code to + initialize all array Options to white space, as there is already code + doing the same for the remaining positions in Options at the end of the + procedure. + +2017-11-09 Eric Botcazou + + * exp_ch11.adb (Possible_Local_Raise): Do not issue the warning for + generic instantiations either. + +2017-11-09 Piotr Trojanek + + * sem_prag.adb (Analyze_Part_Of): Reword error message. + (Get_SPARK_Mode_Type): Do not raise Program_Error in case pragma + SPARK_Mode appears with an illegal mode, treat this as a non-existent + mode. + +2017-11-09 Ed Schonberg + + * sem_ch4.adb (Analyze_Call): Reject a call to a function that returns + a limited view of a type T declared in unit U1, when the function is + declared in another unit U2 and the call appears in a procedure within + another unit. + +2017-11-09 Justin Squirek + + * sem_ch8.adb (Analyze_Use_Package): Force installation of use_clauses + when processing generic instances. + +2017-11-09 Bob Duff + + * namet.ads, namet.adb (Valid_Name_Id): New subtype that excludes + Error_Name and No_Name. Use this (versus Name_Id) to indicate which + objects can have those special values. Valid_Name_Id could usefully be + used all over the compiler front end, but that's too much trouble for + now. If we did that, we might want to rename: + Name_Id --> Optional_Name_Id, Valid_Name_Id --> Name_Id. + For parameters of type Valid_Name_Id, remove some redundant tests, + including the ones found by CodePeer. Use Is_Valid_Name instead of + membership test when appropriate. + (Error_Name_Or_No_Name): Delete this; it's no longer needed. + * sem_ch2.adb (Analyze_Identifier): Use "not Is_Valid_Name" instead of + "in Error_Name_Or_No_Name". + (Check_Parameterless_Call): Use "not Is_Valid_Name" instead of "in + Error_Name_Or_No_Name". + +2017-11-09 Arnaud Charlet + + * gnat1drv.adb (Adjust_Global_Switches): Suppress warnings in codepeer + mode here unless -gnateC is specified. + * switch-c.adb (Scan_Front_End_Switches): Do not suppress warnings with + -gnatC here. + +2017-11-09 Piotr Trojanek + + * lib-writ.adb (Write_ALI): Remove processing of the frontend xrefs as + part of the ALI writing; they are now processed directly from memory + when requested by the backend. + * lib-xref.ads (Collect_SPARK_Xrefs): Remove. + (Iterate_SPARK_Xrefs): New routine for iterating over frontend xrefs. + * lib-xref-spark_specific.adb (Traverse_Compilation_Unit): Remove. + (Add_SPARK_File): Remove. + (Add_SPARK_Xref): Refactored from removed code; filters xref entries + that are trivially uninteresting to the SPARK backend. + * spark_xrefs.ads: Remove code that is no longer needed. + * spark_xrefs.adb (dspark): Adapt to use Iterate_SPARK_Xrefs. + +2017-11-09 Hristian Kirtchev + + * sem_elab.adb: Update the documentation on adding a new elaboration + schenario. Add new hash table Recorded_Top_Level_Scenarios. + (Is_Check_Emitting_Scenario): Removed. + (Is_Recorded_Top_Level_Scenario): New routine. + (Kill_Elaboration_Scenario): Reimplemented. + (Record_Elaboration_Scenario): Mark the scenario as recorded. + (Set_Is_Recorded_Top_Level_Scenario): New routine. + (Update_Elaboration_Scenario): Reimplemented. + * sinfo.adb (Is_Recorded_Scenario): Removed. + (Set_Is_Recorded_Scenario): Removed. + * sinfo.ads: Remove attribute Is_Recorded_Scenario along with + occurrences in nodes. + (Is_Recorded_Scenario): Removed along with pragma Inline. + (Set_Is_Recorded_Scenario): Removed along with pragma Inline. + +2017-11-09 Piotr Trojanek + + * sem_prag.adb (Analyze_Part_Of): Change "designate" to "denote" in + error message. + +2017-11-09 Justin Squirek + + * sem_res.adb (Resolve_Allocator): Add warning messages corresponding + to the allocation of an anonymous access-to-controlled object. + +2017-11-09 Jerome Lambourg + + * sigtramp-qnx.c: Fix obvious typo. + +2017-11-09 Doug Rupp + + * libgnarl/s-taprop__linux.adb (Monotonic_Clock): Minor reformatting. + +2017-11-09 Ed Schonberg + + * sem_res.adb (Resolve): If expression is an entity whose type has + implicit dereference, generate reference to it, because no reference is + generated for an overloaded entity during analysis, given that its + identity may not be known. + +2017-11-09 Javier Miranda + + * exp_disp.adb (Expand_Interface_Thunk): Replace substraction of + offset-to-top field by addition. + (Make_Secondary_DT): Initialize the offset-to-top field with a negative + offset. + * exp_ch3.adb (Build_Offset_To_Top_Function): Build functions that + return a negative offset-to-top value. + (Initialize_Tag): Invoke runtime services Set_Dynamic_Offset_To_Top and + Set_Static_Offset_To_Top passing a negative offet-to-top value; + initialize also the offset-to-top field with a negative offset. + * libgnat/a-tags.adb (Base_Address): Displace the pointer by means of + an addition since the offset-to-top field is now a negative value. + (Displace): Displace the pointer to the object means of a substraction + since it is now a negative value. + (Set_Dynamic_Offset_to_top): Displace the pointer to the object by + means of a substraction since it is now a negative value. + +2017-11-09 Eric Botcazou + + * gnat1drv.adb (Gnat1drv): Call Errout.Finalize (Last_Call => True) + before Errout.Output_Messages also in the case of compilation errors. + +2017-11-09 Javier Miranda + + * doc/gnat_ugn/the_gnat_compilation_model.rst (Interfacing with C++ at + the Class Level): Fix error interfacing with C strings. + * gnat_ugn.texi: Regenerate. + +2017-11-09 Jerome Lambourg + + * system-qnx-aarch64.ads: Fix the priority constants. + * s-osinte__qnx.ads: Fix constants for handling the locking protocols + and scheduling. + * s-osinte__qnx.adb: New file , prevents the use of priority 0 that + corresponds to an idle priority on QNX. + +2017-11-09 Piotr Trojanek + + * sem_prag.adb, sem_util.adb, sem_elab.adb: Fix minor typos in + comments. + +2017-11-09 Piotr Trojanek + + * lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Ignore loop parameters + in expression funtions that are expanded into variables. + +2017-11-09 Piotr Trojanek + + * sem_util.adb: Minor whitespace cleanup. + +2017-11-09 Jerome Lambourg + + * libgnarl/s-taprop__qnx.adb: Refine aarch64-qnx. Use the POSIX + s-taprop version rather than a custom one. + * sigtramp-qnx.c (aarch64-qnx): Implement the signal trampoline. + +2017-11-08 Piotr Trojanek + + * lib-xref.ads, lib-xref-spark_specific.adb + (Traverse_Compilation_Unit): Move declaration to package body. + +2017-11-08 Hristian Kirtchev + + * exp_spark.adb (Expand_SPARK_N_Object_Renaming_Declaration): Obtain + the type of the renaming from its defining entity, rather then the + subtype mark as there may not be a subtype mark. + +2017-11-08 Jerome Lambourg + + * adaint.c, s-oscons-tmplt.c, init.c, libgnat/system-qnx-aarch64.ads, + libgnarl/a-intnam__qnx.ads, libgnarl/s-intman__qnx.adb, + libgnarl/s-osinte__qnx.ads, libgnarl/s-qnx.ads, + libgnarl/s-taprop__qnx.adb, s-oscons-tmplt.c, sigtramp-qnx.c, + terminals.c: Initial port of GNAT for aarch64-qnx + +2017-11-08 Elisa Barboni + + * exp_util.adb (Find_DIC_Type): Move... + * sem_util.ads, sem_util.adb (Find_DIC_Type): ... here. + +2017-11-08 Justin Squirek + + * sem_res.adb (Resolve_Allocator): Add info messages corresponding to + the owner and corresponding coextension. + +2017-11-08 Ed Schonberg + + * sem_aggr.adb (Resolve_Delta_Aggregate): Divide into the + following separate procedures. + (Resolve_Delta_Array_Aggregate): Previous code form + Resolve_Delta_Aggregate. + (Resolve_Delta_Record_Aggregate): Extend previous code to cover latest + ARG decisions on the legality rules for delta aggregates for records: + in the case of a variant record, components from different variants + cannot be specified in the delta aggregate, and this must be checked + statically. + +2017-11-08 Piotr Trojanek + + * spark_xrefs.ads (SPARK_Scope_Record): Remove File_Num component. + * lib-xref-spark_specific.adb (Add_SPARK_Scope): Skip initialization of + removed component. + +2017-11-08 Gary Dismukes + + * sem_ch4.adb: Minor typo fix. + +2017-11-08 Piotr Trojanek + + * spark_xrefs.ads (SPARK_Scope_Record): Remove Spec_File_Num and + Spec_Scope_Num components. + * spark_xrefs.adb (dspark): Skip pretty-printing to removed components. + * lib-xref-spark_specific.adb (Add_SPARK_Scope): Skip initialization of + removed components. + (Collect_SPARK_Xrefs): Skip setting proper values of removed + components. + +2017-11-08 Gary Dismukes + + * exp_ch4.adb (Expand_N_Type_Conversion): Add test that the selector + name is a discriminant in check for unconditional accessibility + violation within instances. + +2017-11-08 Piotr Trojanek + + * lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove special-case + for constants (with variable input). + (Is_Constant_Object_Without_Variable_Input): Remove. + +2017-11-08 Hristian Kirtchev + + * exp_ch9.adb, sem_disp.adb, sem_util.adb: Minor reformatting. + +2017-11-08 Piotr Trojanek + + * spark_xrefs.ads (Rtype): Remove special-casing of constants for SPARK + cross-references. + (dspark): Remove hardcoded table bound. + +2017-11-08 Ed Schonberg + + * sem_ch4.adb (Analyze_Aggregate): For Ada2020 delta aggregates, use + the type of the base of the construct to determine the type (or + candidate interpretations) of the delta aggregate. This allows the + construct to appear in a context that expects a private extension. + * sem_res.adb (Resolve): Handle properly a delta aggregate with an + overloaded base. + +2017-11-08 Piotr Trojanek + + * spark_xrefs.ads (SPARK_Xref_Record): Replace file and scope indices + with Entity_Id of the reference. + * spark_xrefs.adb (dspark): Adapt pretty-printing routine. + * lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Store Entity_Id of the + reference, not the file and scope indices. + +2017-11-08 Arnaud Charlet + + * errout.ads (Current_Node): New. + * errout.adb (Error_Msg): Use Current_Node. + * par-ch6.adb, par-ch7.adb, par-ch9.adb, par-util.adb: Set Current_Node + when relevant. + * style.adb: Call Error_Msg_N when possible. + +2017-11-08 Piotr Trojanek + + * spark_xrefs.ads (SPARK_Scope_Record): Rename Scope_Id component to + Entity. + * lib-xref-spark_specific.adb, spark_xrefs.adb: Propagate renaming of + the Scope_Id record component. + +2017-11-08 Piotr Trojanek + + * spark_xrefs.ads (SPARK_File_Record): Remove string components. + * spark_xrefs.adb (dspark): Remove pretty-printing of removed + SPARK_File_Record components. + * lib-xref-spark_specific.adb (Add_SPARK_File): Do not store string + representation of files/units. + +2017-11-08 Piotr Trojanek + + * lib-xref.ads, lib-xref-spark_specific.adb (Traverse_Declarations): + Remove Inside_Stubs parameter. + +2017-11-08 Piotr Trojanek + + * spark_xrefs.ads (SPARK_Xref_Record): Referenced object is now + represented by Entity_Id. + (SPARK_Scope_Record): Referenced scope (e.g. subprogram) is now + represented by Entity_Id; this information is not repeated as + Scope_Entity. + (Heap): Moved from lib-xref-spark_specific.adb, to reside next to + Name_Of_Heap_Variable. + * spark_xrefs.adb (dspark): Adapt debug routine to above changes in + data types. + * lib-xref-spark_specific.adb: Adapt routines for populating SPARK + scope and xrefs tables to above changes in data types. + +2017-11-08 Justin Squirek + + * sem_ch8.adb (Mark_Use_Clauses): Add condition to always mark the + primitives of generic actuals. + (Mark_Use_Type): Add recursive call to properly mark class-wide type's + base type clauses as per ARM 8.4 (8.2/3). + +2017-11-08 Ed Schonberg + + * sem_ch6.adb (Analyze_Generic_Subprobram_Body): Validate + categorization dependency of the body, as is done for non-generic + units. + (New_Overloaded_Entity, Visible_Part_Type): Remove linear search + through declarations (Simple optimization, no behavior change). + +2017-11-08 Piotr Trojanek + + * spark_xrefs.ads (SPARK_Xref_Record): Remove inessential components. + (SPARK_Scope_Record): Remove inessential components. + * spark_xrefs.adb (dspark): Remove pretty-printing of removed record + components. + * lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove setting of + removed record components. + (Add_SPARK_Xrefs): Remove setting of removed record components. + +2017-11-08 Piotr Trojanek + + * lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove dead check for + empty entities. + +2017-11-08 Javier Miranda + + * sem_disp.adb (Is_Inherited_Public_Operation): Extend the + functionality of this routine to handle multiple levels of derivations. + +2017-11-08 Hristian Kirtchev + + * einfo.adb: Elist36 is now used as Nested_Scenarios. + (Nested_Scenarios): New routine. + (Set_Nested_Scenarios): New routine. + (Write_Field36_Name): New routine. + * einfo.ads: Add new attribute Nested_Scenarios along with occurrences + in entities. + (Nested_Scenarios): New routine along with pragma Inline. + (Set_Nested_Scenarios): New routine along with pragma Inline. + * sem_elab.adb (Find_And_Process_Nested_Scenarios): New routine. + (Process_Nested_Scenarios): New routine. + (Traverse_Body): When a subprogram body is traversed for the first + time, find, save, and process all suitable scenarios found within. + Subsequent traversals of the same subprogram body utilize the saved + scenarios. + +2017-11-08 Piotr Trojanek + + * lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove detection of + protected operations. + (Add_SPARK_Xrefs): Simplify detection of empty entities. + * get_spark_xrefs.ads, get_spark_xrefs.adb, put_spark_xrefs.ads, + put_spark_xrefs.adb, spark_xrefs_test.adb: Remove code for writing, + reading and testing SPARK cross-references stored in the ALI files. + * lib-xref.ads (Output_SPARK_Xrefs): Remove. + * lib-writ.adb (Write_ALI): Do not write SPARK cross-references to the + ALI file. + * spark_xrefs.ads, spark_xrefs.adb (pspark): Remove, together + with description of the SPARK xrefs ALI format. + * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Remove get_spark_refs.o + and put_spark_refs.o. + +2017-11-08 Hristian Kirtchev + + * exp_ch4.adb (Apply_Accessibility_Check): Do not finalize the object + when the associated access type is subject to pragma + No_Heap_Finalization. + * exp_intr.adb (Expand_Unc_Deallocation): Use the available view of the + designated type in case it comes from a limited withed unit. + +2017-11-08 Hristian Kirtchev + + * exp_ch3.adb (Expand_N_Object_Declaration): Save and restore relevant + SPARK-related flags. Add ??? comment. + * exp_util.adb (Insert_Actions): Add an entry for node + N_Variable_Reference_Marker. + * sem.adb (Analyze): Add an entry for node N_Variable_Reference_Marker. + * sem_ch8.adb (Find_Direct_Name): Add constant Is_Assignment_LHS. Build + and record a variable reference marker for the current name. + (Find_Expanded_Name): Add constant Is_Assignment_LHS. Build and record + a variable reference marker for the current name. + * sem_elab.adb (Build_Variable_Reference_Marker): New routine. + (Extract_Variable_Reference_Attributes): Reimplemented. + (Info_Scenario): Add output for variable references and remove output + for variable reads. + (Info_Variable_Read): Removed. + (Info_Variable_Reference): New routine. + (Is_Suitable_Scenario): Variable references are now suitable scenarios + while variable reads are not. + (Output_Active_Scenarios): Add output for variable references and + remove output for variable reads. + (Output_Variable_Read): Removed. + (Output_Variable_Reference): New routine. + (Process_Variable_Read): Removed. + (Process_Variable_Reference): New routine. + (Process_Variable_Reference_Read): New routine. + * sem_elab.ads (Build_Variable_Reference_Marker): New routine. + * sem_res.adb (Resolve_Actuals): Build and record a variable reference + marker for the current actual. + * sem_spark.adb (Check_Node): Add an entry for node + N_Variable_Reference_Marker. + * sem_util.adb (Within_Subprogram_Call): Moved to the library level. + * sem_util.ads (Within_Subprogram_Call): Moved to the library level. + * sinfo.adb (Is_Read): New routine. + (Is_Write): New routine. + (Target): Updated to handle variable reference markers. + (Set_Is_Read): New routine. + (Set_Is_Write): New routine. + (Set_Target): Updated to handle variable reference markers. + * sinfo.ads: Add new attributes Is_Read and Is_Write along with + occurrences in nodes. Update attribute Target. Add new node + kind N_Variable_Reference_Marker. + (Is_Read): New routine along with pragma Inline. + (Is_Write): New routine along with pragma Inline. + (Set_Is_Read): New routine along with pragma Inline. + (Set_Is_Write): New routine along with pragma Inline. + * sprint.adb (Sprint_Node_Actual): Add an entry for node + N_Variable_Reference_Marker. + +2017-11-08 Arnaud Charlet + + * sem_util.adb (Subprogram_Name): Append suffix for overloaded + subprograms. + +2017-11-08 Yannick Moy + + * sem_ch8.adb (Use_One_Type, Update_Use_Clause_Chain): Do not report + about unused use-type or use-package clauses inside inlined bodies. + +2017-11-08 Hristian Kirtchev + + * sem_elab.adb (Ensure_Prior_Elaboration): Add new parameter + In_Partial_Fin along with a comment on its usage. Do not guarantee the + prior elaboration of a unit when the need came from a partial + finalization context. + (In_Initialization_Context): Relocated to Process_Call. + (Is_Partial_Finalization_Proc): New routine. + (Process_Access): Add new parameter In_Partial_Fin along with a comment + on its usage. + (Process_Activation_Call): Add new parameter In_Partial_Fin along with + a comment on its usage. + (Process_Activation_Conditional_ABE_Impl): Add new parameter + In_Partial_Fin along with a comment on its usage. Do not emit any ABE + diagnostics when the activation occurs in a partial finalization + context. + (Process_Activation_Guaranteed_ABE_Impl): Add new parameter + In_Partial_Fin along with a comment on its usage. + (Process_Call): Add new parameter In_Partial_Fin along with a comment + on its usage. A call is within a partial finalization context when it + targets a finalizer or primitive [Deep_]Finalize, and the call appears + in initialization actions. Pass this information down to the recursive + steps of the Processing phase. + (Process_Call_Ada): Add new parameter In_Partial_Fin along with a + comment on its usage. Remove the guard which suppresses the generation + of implicit Elaborate[_All] pragmas. This is now done in + Ensure_Prior_Elaboration. + (Process_Call_Conditional_ABE): Add new parameter In_Partial_Fin along + with a comment on its usage. Do not emit any ABE diagnostics when the + call occurs in a partial finalization context. + (Process_Call_SPARK): Add new parameter In_Partial_Fin along with a + comment on its usage. + (Process_Instantiation): Add new parameter In_Partial_Fin along with a + comment on its usage. + (Process_Instantiation_Ada): Add new parameter In_Partial_Fin along + with a comment on its usage. + (Process_Instantiation_Conditional_ABE): Add new parameter + In_Partial_Fin along with a comment on its usage. Do not emit any ABE + diagnostics when the instantiation occurs in a partial finalization + context. + (Process_Instantiation_SPARK): Add new parameter In_Partial_Fin along + with a comment on its usage. + (Process_Scenario): Add new parameter In_Partial_Fin along with a + comment on its usage. + (Process_Single_Activation): Add new parameter In_Partial_Fin along + with a comment on its usage. + (Traverse_Body): Add new parameter In_Partial_Fin along with a comment + on its usage. + +2017-11-08 Arnaud Charlet + + * sem_ch13.adb: Add optional parameter to Error_Msg. + +2017-11-08 Jerome Lambourg + + * fname.adb (Is_Internal_File_Name): Do not check the 8+3 naming schema + for the Interfaces.* hierarchy as longer unit names are now allowed. + +2017-11-08 Arnaud Charlet + + * sem_util.adb (Subprogram_Name): Emit sloc for the enclosing + subprogram as well. Support more cases of entities. + (Append_Entity_Name): Add some defensive code. + +2017-11-06 Eric Botcazou + + * gcc-interface/misc.c (gnat_post_options): Clear warn_return_type. + +2017-10-31 Eric Botcazou + + PR ada/82785 + * gcc-interface/Makefile.in (m68k/Linux): Fix typo. + +2017-10-21 Eric Botcazou + + * gcc-interface/Makefile.in: Remove bogus settings for VxWorks. + +2017-10-21 Eric Botcazou + + * gcc-interface/utils.c (pad_type_hash): Use hashval_t for hash value. + (convert): Do not use an unchecked conversion for converting from a + type to another type padding it. + +2017-10-20 Doug Rupp + + * libgnarl/s-osinte__linux.ads (Relative_Timed_Wait): Add variable + needed for using monotonic clock. + * libgnarl/s-taprop__linux.adb: Revert previous monotonic clock + changes. + * libgnarl/s-taprop__linux.adb, s-taprop__posix.adb: Unify and factor + out monotonic clock related functions body. + (Timed_Sleep, Timed_Delay, Montonic_Clock, RT_Resolution, + Compute_Deadline): Move to... + * libgnarl/s-tpopmo.adb: ... here. New separate package body. + +2017-10-20 Ed Schonberg + + * sem_util.adb (Is_Controlling_Limited_Procedure): Handle properly the + case where the controlling formal is an anonymous access to interface + type. + * exp_ch9.adb (Extract_Dispatching_Call): If controlling actual is an + access type, handle properly the the constructed dereference that + designates the object used in the rewritten synchronized call. + (Parameter_Block_Pack): If the type of the actual is by-copy, its + generated declaration in the parameter block does not need an + initialization even if the type is a null-excluding access type, + because it will be initialized with the value of the actual later on. + (Parameter_Block_Pack): Do not add controlling actual to parameter + block when its type is by-copy. + +2017-10-20 Justin Squirek + + * sem_ch8.adb (Update_Use_Clause_Chain): Add sanity check to verify + scope stack traversal into the context clause. + +2017-10-20 Bob Duff + + * sinfo.ads: Fix a comment typo. + +2017-10-20 Eric Botcazou + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst (-flto): Add + warning against usage in conjunction with -gnatn. + (-fdump-xref): Delete entry. + * doc/gnat_ugn/gnat_utility_programs.rst (--ext): Remove mention of + -fdump-xref switch. + * gnat_ugn.texi: Regenerate. + +2017-10-20 Hristian Kirtchev + + * sem_type.adb, exp_util.adb, sem_util.adb, sem_dim.adb, sem_elab.adb: + Minor reformatting. + +2017-10-20 Yannick Moy + + * sem_dim.adb (Analyze_Dimension_Binary_Op): Accept with a warning to + compare a dimensioned expression with a literal. + (Dim_Warning_For_Numeric_Literal): Do not issue a warning for the + special value zero. + * doc/gnat_ugn/gnat_and_program_execution.rst: Update description of + dimensionality system in GNAT. + * gnat_ugn.texi: Regenerate. + +2017-10-20 Yannick Moy + + * sem_ch6.adb (Analyze_Expression_Function.Freeze_Expr_Types): Remove + inadequate silencing of errors. + * sem_util.adb (Check_Part_Of_Reference): Do not issue an error when + checking the subprogram body generated from an expression function, + when this is done as part of the preanalysis done on expression + functions, as the subprogram body may not yet be attached in the AST. + The error if any will be issued later during the analysis of the body. + (Is_Aliased_View): Trivial rewrite with Is_Formal_Object. + +2017-10-20 Arnaud Charlet + + * sem_ch8.adb (Update_Chain_In_Scope): Add missing [-gnatwu] marker for + warning on ineffective use clause. + +2017-10-20 Eric Botcazou + + * exp_ch11.ads (Warn_If_No_Local_Raise): Declare. + * exp_ch11.adb (Expand_Exception_Handlers): Use Warn_If_No_Local_Raise + to issue the warning on the absence of local raise. + (Possible_Local_Raise): Do not issue the warning for Call_Markers. + (Warn_If_No_Local_Raise): New procedure to issue the warning on the + absence of local raise. + * sem_elab.adb: Add with and use clauses for Exp_Ch11. + (Record_Elaboration_Scenario): Call Possible_Local_Raise in the cases + where a scenario could give rise to raising Program_Error. + * sem_elab.adb: Typo fixes. + * fe.h (Warn_If_No_Local_Raise): Declare. + * gcc-interface/gigi.h (get_exception_label): Change return type. + * gcc-interface/trans.c (gnu_constraint_error_label_stack): Change to + simple vector of Entity_Id. + (gnu_storage_error_label_stack): Likewise. + (gnu_program_error_label_stack): Likewise. + (gigi): Adjust to above changes. + (Raise_Error_to_gnu): Likewise. + (gnat_to_gnu) : Set TREE_USED on the label. + (N_Push_Constraint_Error_Label): Push the label onto the stack. + (N_Push_Storage_Error_Label): Likewise. + (N_Push_Program_Error_Label): Likewise. + (N_Pop_Constraint_Error_Label): Pop the label from the stack and issue + a warning on the absence of local raise. + (N_Pop_Storage_Error_Label): Likewise. + (N_Pop_Program_Error_Label): Likewise. + (push_exception_label_stack): Delete. + (get_exception_label): Change return type to Entity_Id and adjust. + * gcc-interface/utils2.c (build_goto_raise): Change type of first + parameter to Entity_Id and adjust. Set TREE_USED on the label. + (build_call_raise): Adjust calls to get_exception_label and also + build_goto_raise. + (build_call_raise_column): Likewise. + (build_call_raise_range): Likewise. + * doc/gnat_ugn/building_executable_programs_with_gnat.rst (-gnatw.x): + Document actual default behavior. + +2017-10-20 Piotr Trojanek + + * einfo.ads: Minor consistent punctuation in comment. All numbered + items in the comment of Is_Internal are now terminated with a period. + +2017-10-20 Piotr Trojanek + + * exp_util.adb (Build_Temporary): Mark created temporary entity as + internal. + +2017-10-20 Piotr Trojanek + + * sem_type.adb (In_Generic_Actual): Simplified. + +2017-10-20 Justin Squirek + + * sem_ch12.adb (Check_Formal_Package_Instance): Add sanity check to + verify a renaming exists for a generic formal before comparing it to + the actual as defaulted formals will not have a renamed_object. + +2017-10-20 Javier Miranda + + * exp_ch6.adb (Replace_Returns): Fix wrong management of + N_Block_Statement nodes. + +2017-10-20 Bob Duff + + * exp_aggr.adb (Initialize_Array_Component): Avoid adjusting a + component of an array aggregate if it is initialized by a + build-in-place function call. + * exp_ch6.adb (Is_Build_In_Place_Result_Type): Use -gnatd.9 to disable + bip for nonlimited types. + * debug.adb: Document -gnatd.9. + +2017-10-20 Bob Duff + + * sem_ch12.adb: Remove redundant setting of Parent. + +2017-10-20 Eric Botcazou + + * sem_ch4.adb (Find_Concatenation_Types): Filter out operators if one + of the operands is a string literal. + +2017-10-20 Bob Duff + + * einfo.ads: Comment fix. + +2017-10-20 Clement Fumex + + * switch-c.adb: Remove -gnatwm from the switches triggered by -gnateC. + +2017-10-20 Ed Schonberg + + * sem_dim.adb (Extract_Power): Accept dimension values that are not + non-negative integers when the dimensioned base type is an Integer + type. + +2017-10-20 Bob Duff + + * sinfo.ads, sinfo.adb (Alloc_For_BIP_Return): New flag to indicate + that an allocator came from a b-i-p return statement. + * exp_ch4.adb (Expand_Allocator_Expression): Avoid adjusting the return + object of a nonlimited build-in-place function call. + * exp_ch6.adb (Expand_N_Extended_Return_Statement): Set the + Alloc_For_BIP_Return flag on generated allocators. + * sem_ch5.adb (Analyze_Assignment): Move Assert to where it can't fail. + If the N_Assignment_Statement has been transformed into something else, + then Should_Transform_BIP_Assignment won't work. + * exp_ch3.adb (Expand_N_Object_Declaration): A previous revision said, + "Remove Adjust if we're building the return object of an extended + return statement in place." Back out that part of the change, because + the Alloc_For_BIP_Return flag is now used for that. + +2017-10-19 Bob Duff + + * exp_ch6.adb (Is_Build_In_Place_Result_Type): Fix silly bug -- "Typ" + should be "T". Handle case of a subtype of a class-wide type. + +2017-10-19 Bob Duff + + * exp_util.adb: (Process_Statements_For_Controlled_Objects): Clarify + which node kinds can legitimately be ignored, and raise Program_Error + for others. + +2017-10-19 Hristian Kirtchev + + * sem_elab.adb (Compilation_Unit): Handle the case of a subprogram + instantiation that acts as a compilation unit. + (Find_Code_Unit): Reimplemented. + (Find_Top_Unit): Reimplemented. + (Find_Unit_Entity): New routine. + (Process_Instantiation_SPARK): Correct the elaboration requirement a + package instantiation imposes on a unit. + +2017-10-19 Bob Duff + + * exp_ch6.adb (Is_Build_In_Place_Result_Type): Enable build-in-place + for a narrow set of controlled types. + +2017-10-19 Eric Botcazou + + * sinput.ads (Line_Start): Add pragma Inline. + * widechar.ads (Is_Start_Of_Wide_Char): Likewise. + +2017-10-19 Bob Duff + + * exp_attr.adb (Expand_N_Attribute_Reference): Disable + Make_Build_In_Place_Call_... for F(...)'Old, where F(...) is a + build-in-place function call so that the temp is declared in the right + place. + +2017-10-18 Eric Botcazou + + * gcc-interface/misc.c (gnat_tree_size): Move around. + + * gcc-interface/utils.c (max_size): Deal with SSA names. + +2017-10-17 Jakub Jelinek + + * gcc-interface/misc.c (gnat_tree_size): New function. + (LANG_HOOKS_TREE_SIZE): Redefine. + +2017-10-14 Hristian Kirtchev + + * sem_elab.adb (In_Preelaborated_Context): A generic package subject to + Remote_Call_Interface is not a suitable preelaboratd context when the + call appears in the package body. + +2017-10-14 Eric Botcazou + + * layout.ads (Set_Elem_Alignment): Add Align parameter defaulted to 0. + * layout.adb (Set_Elem_Alignment): Likewise. Use M name as maximum + alignment for consistency. If Align is non-zero, use the minimum of + Align and M for the alignment. + * cstand.adb (Build_Float_Type): Use Set_Elem_Alignment instead of + setting the alignment directly. + +2017-10-14 Ed Schonberg + + * sem_prag.adb (Analyze_Pragma, case Check): Defer evaluation of the + optional string in an Assert pragma until the expansion of the pragma + has rewritten it as a conditional statement, so that the string + argument is only evaluaed if the assertion fails. This is mandated by + RM 11.4.2. + +2017-10-14 Hristian Kirtchev + + * debug.adb: Switch -gnatd.v and associated flag are now used to + enforce the SPARK rules for elaboration in SPARK code. + * sem_elab.adb: Describe switch -gnatd.v. + (Process_Call): Verify the SPARK rules only when -gnatd.v is in effect. + (Process_Instantiation): Verify the SPARK rules only when -gnatd.v is + in effect. + (Process_Variable_Assignment): Clarify why variable assignments are + processed reglardless of whether -gnatd.v is in effect. + * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the + sections on elaboration code and compilation switches. + * gnat_ugn.texi: Regenerate. + +2017-10-14 Gary Dismukes + + * exp_util.adb, freeze.adb, sem_aggr.adb, sem_util.ads, sem_util.adb, + sem_warn.adb: Minor reformattings. + +2017-10-14 Ed Schonberg + + * doc/gnat_rm/implementation_defined_aspects.rst: Add documentation + for reverse iteration over formal containers. + * gnat_rm.texi: Regenerate. + +2017-10-14 Hristian Kirtchev + + * sem_elab.adb (Ensure_Dynamic_Prior_Elaboration): Renamed to + Ensure_Prior_Elaboration_Dynamic for consistency reasons. + (Ensure_Static_Prior_Elaboration): Renamed to + Ensure_Prior_Elaboration_Static for consistency reasons. + (Info_Variable_Reference): Renamed to Info_Variable_Read in order to + reflect its new purpose. + (Is_Initialized): New routine. + (Is_Suitable_Variable_Reference): Renamed to Is_Suitable_Variable_Read + in order to reflect its new purpose. + (Is_Variable_Read): New routine. + (Output_Variable_Reference): Renamed to Output_Variable_Read in order + to reflect its new purpose. + (Process_Variable_Assignment): This routine now acts as a top level + dispatcher for variable assignments. + (Process_Variable_Assignment_Ada): New routine. + (Process_Variable_Assignment_SPARK): New routine. + (Process_Variable_Reference): Renamed to Process_Variable_Read in order + to reflects its new purpose. A reference to a variable is now suitable + for ABE processing only when it is a read. The logic in the routine now + reflects the latest SPARK elaboration rules. + +2017-10-14 Justin Squirek + + * sem_ch8.adb (Analyze_Subprogram_Renaming): Modify condition that + triggers marking on formal subprograms. + +2017-10-14 Javier Miranda + + * checks.adb (Ensure_Valid): Do not skip adding the validity check on + renamings of objects that come from the sources. + +2017-10-14 Eric Botcazou + + * cstand.adb (Build_Float_Type): Move down Siz parameter, add Align + parameter and set the alignment of the type to Align. + (Copy_Float_Type): Adjust call to Build_Float_Type. + (Register_Float_Type): Add pragma Unreferenced for Precision. Adjust + call to Build_Float_Type and do not set RM_Size and Alignment. + +2017-10-14 Patrick Bernardi + + * Makefile.rtl (GNATRTL_NONTASKING_OBJ): Add s-soliin to + GNATRTL_NONTASKING_OBJ. + +2017-10-14 Bob Duff + + * exp_ch6.adb (Is_Build_In_Place_Result_Type): Include code for + enabling b-i-p for nonlimited controlled types (but disabled). + +2017-10-14 Justin Squirek + + * sem_elab.adb (Is_Suitable_Variable_Assignment): Replace call to + Has_Warnings_Off with Warnings_Off. + +2017-10-14 Piotr Trojanek + + * sinfo.ads (Generic_Parent): Remove wrong (possibly obsolete) comment. + +2017-10-14 Hristian Kirtchev + + * sem_ch3.adb (Analyze_Declarations): Analyze the contract of an + enclosing package at the end of the visible declarations. + * sem_prag.adb (Analyze_Initialization_Item): Suppress the analysis of + an initialization item which is undefined due to some illegality. + +2017-10-14 Patrick Bernardi + + * ali.adb: Add new ALI line 'T' to read the number of tasks contain + within each unit that require a default-sized primary and secondary + stack to be generated by the binder. + (Scan_ALI): Scan new 'T' lines. + * ali.ads: Add Primary_Stack_Count and Sec_Stack_Count to Unit_Record. + * bindgen.adb (Gen_Output_File): Count the number of default-sized + stacks within the closure that are to be created by the binder. + (Gen_Adainit, Gen_Output_File_Ada): Generate default-sized secondary + stacks and record these in System.Secodnary_Stack. + (Resolve_Binder_Options): Check if System.Secondary_Stack is in the + closure of the program being bound. + * bindusg.adb (Display): Add "-Q" switch. Remove rouge "--RTS" comment. + * exp_ch3.adb (Count_Default_Sized_Task_Stacks): New routine. + (Expand_N_Object_Declaration): Count the number of default-sized stacks + used by task objects contained within the object whose declaration is + being expanded. Only performed when either the restrictions + No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations are in + effect. + * exp_ch9.adb (Create_Secondary_Stack_For_Task): New routine. + (Expand_N_Task_Type_Declaration): Create a secondary stack as part of + the expansion of a task type if the size of the stack is known at + run-time and the restrictions No_Implicit_Heap_Allocations or + No_Implicit_Task_Allocations are in effect. + (Make_Task_Create_Call): If using a restricted profile provide + secondary stack parameter: either the statically created stack or null. + * lib-load.adb (Create_Dummy_Package_Unit, Load_Unit, + Load_Main_Source): Include Primary_Stack_Count and Sec_Stack_Count in + Unit_Record initialization expressions. + * lib-writ.adb (Add_Preprocessing_Dependency, + Ensure_System_Dependency): Include Primary_Stack_Count and + Sec_Stack_Count in Unit_Record initialization expression. + (Write_ALI): Write T lines. + (Write_Unit_Information): Do not output 'T' lines if there are no + stacks for the binder to generate. + * lib-writ.ads: Updated library information documentation to include + new T line entry. + * lib.adb (Increment_Primary_Stack_Count): New routine. + (Increment_Sec_Stack_Count): New routine. + (Primary_Stack_Count): New routine. + (Sec_Stack_Count): New routine. + * lib.ads: Add Primary_Stack_Count and Sec_Stack_Count components to + Unit_Record and updated documentation. + (Increment_Primary_Stack_Count): New routine along with pragma Inline. + (Increment_Sec_Stack_Count): New routine along with pragma Inline. + (Primary_Stack_Count): New routine along with pragma Inline. + (Sec_Stack_Count): New routine along with pragma Inline. + * opt.ads: New constant No_Stack_Size. Flag Default_Stack_Size + redefined. New flag Default_Sec_Stack_Size and + Quantity_Of_Default_Size_Sec_Stacks. + * rtfinal.c Fixed erroneous comment. + * rtsfind.ads: Moved RE_Default_Secondary_Stack_Size from + System.Secondary_Stack to System.Parameters. Add RE_SS_Stack. + * sem_util.adb (Number_Of_Elements_In_Array): New routine. + * sem_util.ads (Number_Of_Elements_In_Array): New routine. + * switch-b.adb (Scan_Binder_Switches): Scan "-Q" switch. + * libgnarl/s-solita.adb (Get_Sec_Stack_Addr): Removed routine. + (Set_Sec_Stack_Addr): Removed routine. + (Get_Sec_Stack): New routine. + (Set_Sec_Stack): New routine. + (Init_Tasking_Soft_Links): Update System.Soft_Links reference to + reflect new procedure and global names. + * libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb, + libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__solaris.adb, + libgnarl/s-taprop__vxworks.adb (Register_Foreign_Thread): Update + parameter profile to allow the secondary stack size to be specified. + * libgnarl/s-tarest.adb (Create_Restricted_Task): Update the parameter + profile to include Sec_Stack_Address. Update Tasking.Initialize_ATCB + call to remove Secondary_Stack_Size reference. Add secondary stack + address and size to SSL.Create_TSD call. + (Task_Wrapper): Remove secondary stack creation. + * libgnarl/s-tarest.ads (Create_Restricted_Task, + Create_Restricted_Task_Sequential): Update parameter profile to include + Sec_Stack_Address and clarify the Size parameter. + * libgnarl/s-taskin.adb (Initialize_ATCB): Remove Secondary_Stack_Size + from profile and body. + (Initialize): Remove Secondary_Stack_Size from Initialize_ATCB call. + * libgnarl/s-taskin.ads: Removed component Secondary_Stack_Size from + Common_ATCB. + (Initialize_ATCB): Update the parameter profile to remove + Secondary_Stack_Size. + * libgnarl/s-tassta.adb (Create_Task): Updated parameter profile and + call to Initialize_ATCB. Add secondary stack address and size to + SSL.Create_TSD call, and catch any storage exception from the call. + (Finalize_Global_Tasks): Update System.Soft_Links references to reflect + new subprogram and component names. + (Task_Wrapper): Remove secondary stack creation. + (Vulnerable_Complete_Master): Update to reflect TSD changes. + * libgnarl/s-tassta.ads: Reformat comments. + (Create_Task): Update parameter profile. + * libgnarl/s-tporft.adb (Register_Foreign_Thread): Update parameter + profile to include secondary stack size. Remove secondary size + parameter from Initialize_ATCB call and add it to Create_TSD call. + * libgnat/s-parame.adb, libgnat/s-parame__rtems.adb, + libgnat/s-parame__vxworks.adb (Default_Sec_Stack_Size): New routine. + * libgnat/s-parame.ads, libgnat/s-parame__ae653.ads, + libgnat/s-parame__hpux.ads, libgnat/s-parame__vxworks.ads: Remove type + Percentage. Remove constants Dynamic, Sec_Stack_Percentage and + Sec_Stack_Dynamic. Add constant Runtime_Default_Sec_Stack_Size and + Sec_Stack_Dynamic. + (Default_Sec_Stack_Size): New routine. + * libgnat/s-secsta.adb, libgnat/s-secsta.ads: New implementation. Is + now Preelaborate. + * libgnat/s-soflin.adb: Removed unused with-clauses. With + System.Soft_Links.Initialize to initialize non-tasking TSD. + (Create_TSD): Update parameter profile. Initialize the TSD and + unconditionally call SS_Init. + (Destroy_TSD): Update SST.SS_Free call. + (Get_Sec_Stack_Addr_NT, Get_Sec_Stack_Addr_Soft, Set_Sec_Stack_Addr_NT, + Set_Sec_Stack_Addr_Soft): Remove routines. + (Get_Sec_Stack_NT, Get_Sec_Stack_Soft, Set_Sec_Stack_NT, + Set_Sec_Stack_Soft): Add routines. + (NT_TSD): Move to private part of package specification. + * libgnat/s-soflin.ads: New types Get_Stack_Call and Set_Stack_Call + with suppressed access checks. Renamed *_Sec_Stack_Addr_* routines and + objects to *_Sec_Stack_*. TSD: removed warning suppression and + component intialization. Changed Sec_Stack_Addr to Sec_Stack_Ptr. + (Create_TSD): Update parameter profile. + (NT_TSD): Move to private section from body. + * libgnat/s-soliin.adb, libgnat/s-soliin.ads: New files. + * libgnat/s-thread.ads (Thread_Body_Enter): Update parameter profile. + * libgnat/s-thread__ae653.adb (Get_Sec_Stack_Addr, Set_Sec_Stack_Addr): + Remove routine. + (Get_Sec_Stack, Set_Sec_Stack): Add routine. + (Thread_Body_Enter): Update parameter profile and body to adapt to new + System.Secondary_Stack. + (Init_RTS): Update body for new System.Soft_Links names. + * gcc-interface/Make-lang.in (GNAT_ADA_OBJS, GNATBIND_OBJS): Add + s-soliin.o. + +2017-10-10 Richard Sandiford + + * gcc-interface/decl.c (annotate_value): Use wi::to_wide when + operating on trees as wide_ints. + +2017-10-09 Hristian Kirtchev + + * sem_unit.adb (Find_Enclosing_Scope): Do not treat a block statement + as a scoping construct when it is byproduct of exception handling. + +2017-10-09 Hristian Kirtchev + + * sinfo.ads: Update table Is_Syntactic_Field to reflect the nature of + semantic field Target of node N_Call_Marker. + +2017-10-09 Ed Schonberg + + * sem_res.adb (Resolve_Allocator): Reject properly an allocator that + attempts to copy a limited value, when the allocator is the expression + in an expression function. + +2017-10-09 Joel Brobecker + + * doc/share/conf.py: Tell the style checker that this is a Python + fragment, and therefore that pyflakes should not be run to validate + this file. + +2017-10-09 Eric Botcazou + + * einfo.ads (Is_Boolean_Type): Add pragma Inline. + (Is_Entity_Name): Likewise. + (Is_String_Type): Likewise. + * sem_type.adb (Full_View_Covers): Do not test Is_Private_Type here + and remove useless comparisons on the base types. + (Covers): Use simple tests for Standard_Void_Type. Move up cheap tests + on T2. Always test Is_Private_Type before Full_View_Covers. + +2017-10-09 Bob Duff + + * exp_ch4.adb: Minor refactoring. + +2017-10-09 Javier Miranda + + * sem_ch3.adb (Replace_Components): Browse the list of discriminants, + not components. + +2017-10-09 Hristian Kirtchev + + * sem_elab.adb (Static_Elaboration_Checks): Elaboration requirements + are verified only in the static model. + +2017-10-09 Ed Schonberg + + * sem_ch5.adb (Analyze_Iterator_Specification, + Check_Reverse_Iteration): Check that the domain of iteration supports + reverse iteration when it is a formal container. This requires the + presence of a Previous primitive in the Iterable aspect. + * sem_ch13.adb (Resolve_Iterable_Operation): Verify legality of + primitives Last and Previous to support reverse iteration over formal + containers. + (Validate_Iterable_Aspect): Add check for reverse iteration operations. + * exp_ch5.adb (Build_Formal_Container_Iteration): Add proper expansion + for reverse iteration using primitives Last and Previous in generated + loop. + +2017-10-09 Ed Schonberg + + * sem_util.adb (Subprogram_Name): If this is a child unit, use the name + of the Defining_Program_Unit_Name, which is an identifier, in order to + construct the string for the fully qualified name. + +2017-10-09 Justin Squirek + + * sem_ch3.adb: Rename Uses_Unseen_Priv into + Contains_Lib_Incomplete_Type. + +2017-10-09 Hristian Kirtchev + + * sem_aggr.adb, sem_spark.adb, adabkend.adb, exp_ch5.adb, frontend.adb, + sem_ch12.adb, fmap.adb, exp_ch6.adb, exp_spark.adb, lib-load.adb, + exp_ch9.adb, osint.adb, exp_disp.adb, sem_ch8.adb, sem_ch8.ads, + prepcomp.adb, gnat1drv.adb, atree.adb, sinput-l.adb, targparm.adb, + sem_ch10.adb, par-ch8.adb: Minor reformatting. + +2017-10-09 Hristian Kirtchev + + * sem_elab.adb (Is_Suitable_Access): This scenario is now only relevant + in the static model. + (Is_Suitable_Variable_Assignment): This scenario is now only relevant + in the static model. + (Is_Suitable_Variable_Reference): This scenario is now only relevant in + the static model. + +2017-10-09 Ed Schonberg + + * sem_ch3.adb (Analyze_Declarations): In ASIS mode, resolve aspect + expressions when the enclosing scope is a subprogram body and the next + declaration is a body that freezes entities previously declared in the + scope. + +2017-10-09 Justin Squirek + + * sem_ch8.adb (Analyze_Use_Package): Remove checking of mixture between + ghost packages and living packages in use clauses. + (Use_One_Type, Note_Redundant_Use): Correct warning messages + +2017-10-09 Justin Squirek + + * osint.ads: Document new parameter FD for Read_Source_File. + +2017-10-09 Ed Schonberg + + * exp_util.adb (Make_Predicate_Call): If the type of the expression to + which the predicate check applies is tagged, convert the expression to + that type. This is in most cases a no-op, but is relevant if the + expression is clas-swide, because the predicate function being invoked + is not a primitive of the type and cannot take a class-wide actual. + +2017-10-09 Gary Dismukes + + * exp_disp.adb: Minor reformatting. + +2017-10-09 Arnaud Charlet + + * sem_warn.adb (Warn_On_Unreferenced_Entity): Fix typo. + +2017-10-09 Hristian Kirtchev + + * sem_elab.adb (Install_ABE_Check): Do not generate an ABE check for + GNATprove. + (Install_ABE_Failure): Do not generate an ABE failure for GNATprove. + +2017-10-09 Bob Duff + + * exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Return + immediately if the call has already been processed (by a previous call + to Make_Build_In_Place_Call_In_Anonymous_Context). + * sem_elab.adb: Minor typo fixes. + +2017-10-09 Ed Schonberg + + * sem_ch13.adb (Replace_Type_Ref): In the expression for a dynamic + predicate, do not replace an identifier that matches the type if the + identifier is a selector in a selected component, because this + indicates a reference to some homograph of the type itself, and not to + the current occurence in the predicate. + +2017-10-09 Eric Botcazou + + * repinfo.adb (List_Record_Layout): Tweak formatting. + (Write_Val): Remove superfluous spaces in back-end layout mode. + +2017-10-09 Piotr Trojanek + + * sem_res.adb (Property_Error): Remove. + (Resolve_Actuals): check for SPARK RM 7.1.3(10) rewritten to match the + current wording of the rule. + +2017-10-09 Justin Squirek + + * sem_ch3.adb (Analyze_Declarations): Add check for ghost packages + before analyzing a given scope due to an expression function. + (Uses_Unseen_Lib_Unit_Priv): Rename to Uses_Unseen_Priv. + +2017-10-09 Bob Duff + + * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Use + Defining_Identifier (Obj_Decl) in two places, because it might have + changed. + * exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Deal with cases + involving 'Input on (not visibly) derived types. + +2017-10-09 Hristian Kirtchev + + * atree.adb: Add new soft link Rewriting_Proc. + (Rewrite): Invoke the subprogram attached to the rewriting soft link. + (Set_Rewriting_Proc): New routine. + * attree.ads: Add new access-to-subprogram type Rewrite_Proc. + (Set_Rewriting_Proc): New routine. + * checks.adb (Install_Primitive_Elaboration_Check): Use 'E' character + for *E*laboration flag to maintain consistency with other elaboration + flag generating subprograms. + * debug.adb: Document the new usage of flag -gnatdL. + * einfo.adb: Node19 is now used as Receiving_Entry. Node39 is now used + as Protected_Subprogram. Flag148 is now used as + Is_Elaboration_Checks_OK_Id. Flag302 is now used as + Is_Initial_Condition_Procedure. + (Is_Elaboration_Checks_OK_Id): New routine. + (Is_Initial_Condition_Procedure): New routine. + (Protected_Subprogram): New routine. + (Receiving_Entry): New routine. + (SPARK_Pragma): Update assertion. + (SPARK_Pragma_Inherited): Update assertion. + (Suppress_Elaboration_Warnings): Removed. + (Set_Is_Elaboration_Checks_OK_Id): New routine. + (Set_Is_Initial_Condition_Procedure): New routine. + (Set_Protected_Subprogram): New routine. + (Set_Receiving_Entry): New routine. + (Set_SPARK_Pragma): Update assertion. + (Set_SPARK_Pragma_Inherited): Update assertion. + (Write_Entity_Flags): Update the output for Flag148 and Flag302. + (Write_Field19_Name): Add output for Receiving_Entry. + (Write_Field39_Name): Add output for Protected_Subprogram. + (Write_Field40_Name): Update the output for SPARK_Pragma. + * einfo.ads: New attributes Is_Elaboration_Checks_OK_Id, + Is_Initial_Condition_Procedure, Protected_Subprogram, Receiving_Entry. + Remove attribute Suppress_Elaboration_Warnings. Update the stricture + of various entities. + (Is_Elaboration_Checks_OK_Id): New routine along with pragma Inline. + (Is_Initial_Condition_Procedure): New routine along with pragma Inline. + (Protected_Subprogram): New routine along with pragma Inline. + (Receiving_Entry): New routine along with pragma Inline. + (Suppress_Elaboration_Warnings): Removed. + (Set_Is_Elaboration_Checks_OK_Id): New routine along with pragma + Inline. + (Set_Is_Initial_Condition_Procedure): New routine along with pragma + Inline. + (Set_Protected_Subprogram): New routine along with pragma Inline. + (Set_Receiving_Entry): New routine along with pragma Inline. + (Set_Suppress_Elaboration_Warnings): Removed. + * exp_ch3.adb (Build_Init_Procedure): Use name _Finalizer to maintain + consistency with other finalizer generating subprograms. + (Default_Initialize_Object): Mark the block which wraps the call to + finalize as being part of initialization. + * exp_ch7.adb (Expand_N_Package_Declaration): Directly expand pragma + Initial_Condition. + (Expand_N_Package_Body): Directly expand pragma Initial_Condition. + (Next_Suitable_Statement): Update the comment on usage. Skip over call + markers generated by the ABE mechanism. + * exp_ch9.adb (Activation_Call_Loc): New routine. + (Add_Accept): Link the accept procedure to the original entry. + (Build_Protected_Sub_Specification): Link the protected or unprotected + version to the original subprogram. + (Build_Task_Activation_Call): Code cleanup. Use a source location which + is very close to the "begin" or "end" keywords when generating the + activation call. + * exp_prag.adb (Expand_Pragma_Initial_Condition): Reimplemented. + * exp_spark.adb (Expand_SPARK): Use Expand_SPARK_N_Loop_Statement to + process loops. + (Expand_SPARK_N_Loop_Statement): New routine. + (Expand_SPARK_N_Object_Declaration): Code cleanup. Partially insert the + call to the Default_Initial_Condition procedure. + (Expand_SPARK_Op_Ne): Renamed to Expand_SPARK_N_Op_Ne. + * exp_util.adb (Build_DIC_Procedure_Body): Capture the SPARK_Mode in + effect. + (Build_DIC_Procedure_Declaration): Capture the SPARK_Mode in effect. + (Insert_Actions): Add processing for N_Call_Marker. + (Kill_Dead_Code): Explicitly kill an elaboration scenario. + * exp_util.ads (Make_Invariant_Call): Update the comment on usage. + * frontend.adb: Initialize Sem_Elab. Process all saved top level + elaboration scenarios for ABE issues. + * gcc-interface/trans.c (gnat_to_gnu): Add processing for N_Call_Marker + nodes. + * lib.adb (Earlier_In_Extended_Unit): New variant. + * sem.adb (Analyze): Ignore N_Call_Marker nodes. + (Preanalysis_Active): New routine. + * sem.ads (Preanalysis_Active): New routine. + * sem_attr.adb (Analyze_Access_Attribute): Save certain + elaboration-related attributes. Save the scenario for ABE processing. + * sem_ch3.adb (Analyze_Object_Declaration): Save the SPARK mode in + effect. Save certain elaboration-related attributes. + * sem_ch5.adb (Analyze_Assignment): Save certain elaboration-related + attributes. Save the scenario for ABE processing. + * sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Save the SPARK + mode in effect. Save certain elaboration-related attributes. + (Analyze_Subprogram_Body_Helper): Skip N_Call_Marker nodes when + locating the first real statement. + (Analyze_Subprogram_Declaration): Save the SPARK mode in effect. Save + certain elaboration-related attributes. + * sem_ch7.adb (Analyze_Package_Declaration): Do not suppress + elaboration warnings. + * sem_ch8.adb (Attribute_Renaming): Mark a subprogram body which was + generated for purposes of wrapping an attribute used as a generic + actual. + (Find_Direct_Name): Save certain elaboration-related attributes. Save + the scenario for ABE processing. + (Find_Expanded_Name): Save certain elaboration-related attributes. Save + the scenario for ABE processing. + * sem_ch9.adb (Analyze_Entry_Declaration): Save certain + elaboration-related attributes. + (Analyze_Requeue): Save certain elaboration-related attributes. Save + the scenario for ABE processing. + (Analyze_Single_Task_Declaration): Save certain elaboration-related + attributes. + (Analyze_Task_Type_Declaration): Save certain elaboration-related + attributes. + * sem_ch12.adb (Analyze_Generic_Package_Declaration): Save certain + elaboration-related attributes. + (Analyze_Generic_Subprogram_Declaration): Save the SPARK mode in + effect. Save certain elaboration-related attributes. + (Analyze_Package_Instantiation): Save certain elaboration-related + attributes. Save the scenario for ABE processing. Create completing + bodies in case the instantiation results in a guaranteed ABE. + (Analyze_Subprogram_Instantiation): Save certain elaboration-related + attributes Save the scenario for ABE processing. Create a completing + body in case the instantiation results in a guaranteed ABE. + (Provide_Completing_Bodies): New routine. + * sem_elab.ads: Brand new implementation. + * sem_prag.adb (Analyze_Pragma, cases Elaborate, Elaborate_All, + Elaborate_Body): Do not suppress elaboration warnings. + * sem_res.adb (Make_Call_Into_Operator): Set the parent field of the + operator. + (Resolve_Call): Save certain elaboration-related attributes. Save the + scenario for ABE processing. + (Resolve_Entity_Name): Do not perform any ABE processing here. + (Resolve_Entry_Call): Inherit certain attributes from the original call. + * sem_util.adb (Begin_Keyword_Location): New routine. + (Defining_Entity): Update the parameter profile. Add processing for + concurrent subunits that are rewritten as null statements. + (End_Keyword_Location): New routine. + (Find_Enclosing_Scope): New routine. + (In_Instance_Visible_Part): Code cleanup. + (In_Subtree): Update the parameter profile. Add new version. + (Is_Preelaborable_Aggregate): New routine. + (Is_Preelaborable_Construct): New routine. + (Mark_Elaboration_Attributes): New routine. + (Scope_Within): Update the parameter profile. + (Scope_Within_Or_Same): Update the parameter profile. + * sem_util.ads (Begin_Keyword_Location): New routine. + (Defining_Entity): Update the parameter profile and the comment on + usage. + (End_Keyword_Location): New routine. + (Find_Enclosing_Scope): New routine. + (In_Instance_Visible_Part): Update the parameter profile. + (In_Subtree): Update the parameter profile. Add new version. + (Is_Preelaborable_Aggregate): New routine. + (Is_Preelaborable_Construct): New routine. + (Mark_Elaboration_Attributes): New routine. + (Scope_Within): Update the parameter profile and the comment on usage. + (Scope_Within_Or_Same): Update the parameter profile and the comment on + usage. + * sem_warn.adb (Check_Infinite_Loop_Warning): Use Has_Condition_Actions + to determine whether a loop has meaningful condition actions. + (Has_Condition_Actions): New routine. + * sinfo.adb (ABE_Is_Certain): Removed. + (Is_Declaration_Level_Node): New routine. + (Is_Dispatching_Call): New routine. + (Is_Elaboration_Checks_OK_Node): New routine. + (Is_Initialization_Block): New routine. + (Is_Known_Guaranteed_ABE): New routine. + (Is_Recorded_Scenario): New routine. + (Is_Source_Call): New routine. + (Is_SPARK_Mode_On_Node): New routine. + (No_Elaboration_Check): Removed. + (Target): New routine. + (Was_Attribute_Reference): New routine. + (Set_ABE_Is_Certain): Removed. + (Set_Is_Declaration_Level_Node): New routine. + (Set_Is_Dispatching_Call): New routine. + (Set_Is_Elaboration_Checks_OK_Node): New routine. + (Set_Is_Initialization_Block): New routine. + (Set_Is_Known_Guaranteed_ABE): New routine. + (Set_Is_Recorded_Scenario): New routine. + (Set_Is_Source_Call): New routine. + (Set_Is_SPARK_Mode_On_Node): New routine. + (Set_No_Elaboration_Check): Removed. + (Set_Target): New routine. + (Set_Was_Attribute_Reference): New routine. + * sinfo.ads: Remove attribute ABE_Is_Certain. Attribute + Do_Discriminant_Check now utilizes Flag3. Attribute + No_Side_Effect_Removal now utilizes Flag17. Add new node + N_Call_Marker. Update the structure of various nodes. + (ABE_Is_Certain): Removed along with pragma Inline. + (Is_Declaration_Level_Node): New routine along with pragma Inline. + (Is_Dispatching_Call): New routine along with pragma Inline. + (Is_Elaboration_Checks_OK_Node): New routine along with pragma Inline. + (Is_Initialization_Block): New routine along with pragma Inline. + (Is_Known_Guaranteed_ABE): New routine along with pragma Inline. + (Is_Recorded_Scenario): New routine along with pragma Inline. + (Is_Source_Call): New routine along with pragma Inline. + (Is_SPARK_Mode_On_Node): New routine along with pragma Inline. + (No_Elaboration_Check): Removed along with pragma Inline. + (Target): New routine along with pragma Inline. + (Was_Attribute_Reference): New routine along with pragma Inline. + (Set_ABE_Is_Certain): Removed along with pragma Inline. + (Set_Is_Declaration_Level_Node): New routine along with pragma Inline. + (Set_Is_Dispatching_Call): New routine along with pragma Inline. + (Set_Is_Elaboration_Checks_OK_Node): New routine along with pragma + Inline. + (Set_Is_Initialization_Block): New routine along with pragma Inline. + (Set_Is_Known_Guaranteed_ABE): New routine along with pragma Inline. + (Set_Is_Recorded_Scenario): New routine along with pragma Inline. + (Set_Is_Source_Call): New routine along with pragma Inline. + (Set_Is_SPARK_Mode_On_Node): New routine along with pragma Inline. + (Set_No_Elaboration_Check): Removed along with pragma Inline. + (Set_Target): New routine along with pragma Inline. + (Set_Was_Attribute_Reference): New routine along with pragma Inline. + * sprint.adb (Sprint_Node_Actual): Add an entry for N_Call_Marker. + +2017-10-09 Bob Duff + + * exp_ch7.adb (Create_Finalizer): Suppress checks within the finalizer. + +2017-10-09 Bob Duff + + * freeze.ads: Minor comment fixed. + +2017-10-09 Bob Duff + + * exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Take + care of unchecked conversions in addition to regular conversions. This + takes care of a case where a type is derived from a private untagged + type that is completed by a tagged controlled type. + +2017-10-09 Ed Schonberg + + * exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When + rewriting a class-wide condition, handle properly the case where the + controlling argument of the operation to which the condition applies is + an access to a tagged type, and the condition includes a dispatching + call with an implicit dereference. + +2017-10-09 Bob Duff + + * exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Remove + the code at the end of this procedure that was setting the type of a + class-wide object to the specific type returned by a function call. + Treat this case as indefinite instead. + +2017-10-09 Ed Schonberg + + * sem_ch4.adb (Try_Class_Wide_Operation, Traverse_Homonyms): + Suppress spurious ambiguity error when two traversals of the homonym + chain (first directly, and then through an examination of relevant + interfaces) retrieve the same operation, when other irrelevant homonyms + of the operatioh are also present. + +2017-10-09 Ed Schonberg + + * sem_util.adb (Object_Access_Level): If the object is the return + statement of an expression function, return the level of the function. + This is relevant when the object involves an implicit conversion + between access types and the expression function is a completion, which + forces the analysis of the expression before rewriting it as a body, so + that freeze nodes can appear in the proper scope. + +2017-10-09 Bob Duff + + * atree.adb: Make nnd apply to everything "interesting", including + Rewrite. Remove rrd. + +2017-10-09 Javier Miranda + + * exp_ch3.adb (Expand_N_Object_Declaration): Avoid never-ending loop + processing the declaration of the dummy object internally created by + Make_DT to compute the offset to the top of components referencing + secondary dispatch tables. + (Initialize_Tag): Do not initialize the offset-to-top field if it has + been initialized initialized. + * exp_disp.ads (Building_Static_Secondary_DT): New subprogram. + * exp_disp.adb (Building_Static_Secondary_DT): New subprogram. + (Make_DT): Create a dummy constant object if we can statically build + secondary dispatch tables. + (Make_Secondary_DT): For statically allocated secondary dispatch tables + use the dummy object to compute the offset-to-top field value by means + of the attribute 'Position. + +2017-10-09 Bob Duff + + * exp_ch6.adb (Expand_N_Extended_Return_Statement): Add self-checking + code so if BIPAlloc is not passed in, it will likely raise + Program_Error instead of cause miscellaneous chaos. + (Is_Build_In_Place_Result_Type): Return False if not Expander_Active, + as for the other Is_B-I-P... functions. + * sem_aggr.adb (Resolve_Extension_Aggregate): For an extension + aggregate whose ancestor part is a build-in-place call returning a + nonlimited type, transform the assignment to the ancestor part to use a + temp. + * sem_ch3.adb (Build_Itype_Reference): Handle the case where we're + creating an Itype for a library unit entity. + (Check_Initialization): Avoid spurious error message on + internally-generated call. + * sem_ch5.adb (Analyze_Assignment): Handle the case where the + right-hand side is a build-in-place call. This didn't happen when b-i-p + was only for limited types. + * sem_ch6.adb (Create_Extra_Formals): Remove assumption that b-i-p + implies >= Ada 2005. + * sem_ch7.adb (Scan_Subprogram_Refs): Avoid traversing the same nodes + repeatedly. + * sem_util.adb (Next_Actual): Handle case of build-in-place call. + +2017-10-09 Arnaud Charlet + + * doc/gnat_ugn/gnat_and_program_execution.rst: Minor edit. + +2017-10-09 Piotr Trojanek + + * libgnarl/s-taprob.adb: Minor whitespace fix. + +2017-10-09 Bob Duff + + * namet.ads: Minor comment fix. + +2017-10-09 Piotr Trojanek + + * sem_aux.adb (Unit_Declaration_Node): Detect protected declarations, + just like other program units listed in Ada RM 10.1(1). + +2017-10-09 Justin Squirek + + * sem_ch8.adb (Update_Chain_In_Scope): Modify warning messages. + +2017-10-09 Ed Schonberg + + * sem_ch12.adb (Analyze_Associations, Check_Generic_Parent): If an + actual for a formal package is an instantiation of a child unit, create + a freeze node for the instance of the parent if it appears in the same + scope and is not frozen yet. + +2017-10-09 Pierre-Marie de Rodat + + * exp_atag.ads, libgnat/a-tags.adb, libgnat/a-tags.ads: Enhance + in-source documentation for tagged types's Offset_To_Top. + +2017-10-09 Bob Duff + + * exp_ch3.adb (Build_Assignment): Parameter name N was somewhat + confusing. Same for N_Loc. Remove assumption that b-i-p implies + limited. This is for the case of a function call that occurs as the + default for a record component. + (Expand_N_Object_Declaration): Deal with the case where expansion has + created an object declaration initialized with something like + F(...)'Reference. + * exp_ch3.adb: Minor reformatting. + +2017-10-09 Ed Schonberg + + * exp_attr.adb (Expand_Attribute_Reference, case 'Valid): The prefix of + the attribute is an object, but it may appear within a conversion. The + object itself must be retrieved when generating the range test that + implements the validity check on a scalar type. + +2017-10-05 Eric Botcazou + + PR ada/82393 + * mingw32.h (_O_U8TEXT, _O_U16TEXT, _O_WTEXT): Delete. + * sysdep.c (__gnat_set_mode ): Use DJGPP version for Cygwin. + +2017-10-02 Eric Botcazou + Pierre-Marie de Rodat + + PR ada/82384 + * libgnarl/s-linux__x32.ads (suseconds_t): New subtype. + (time_t): Change from derived type to subtype. + (timeval): Use suseconds_t for tv_usec. + * libgnarl/s-osinte__x32.adb (To_Timespec): Remove use type clause. + +2017-10-02 Richard Sandiford + + * gcc-interface/decl.c (annotate_value): Use wi::to_widest when + handling the form (plus/mult (convert @0) @1). + +2017-09-29 Bob Duff + + * exp_ch6.adb (Expand_Call_Helper): Replace with code more similar to + what we had before. + (Make_Build_In_Place_Call_In_Object_Declaration): Back out previous + change. Set the Etype in the class-wide case. This fixes a regression + in the libadalang test suite. + +2017-09-29 Joel Brobecker + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst, + doc/gnat_ugn/the_gnat_compilation_model.rst: Avoid use of single colon + in comment markup. + * gnat_ugn.texi: Regenerate. + +2017-09-29 Justin Squirek + + * ali-util.adb, comperr.adb, cprint.adb, errout.adb, fmap.adb, + fname-sf.adb, frontend.adb, lib-xref-spark_specific.adb, gnat1drv.adb, + gnatls.adb, lib.adb, lib-load.adb, lib-writ.adb, prepcomp.adb, + sinput-d.adb, sinput-l.adb, sprint.adb, targparm.adb: Update comparison + for checking source file status and error message and/or call to + Read_Source_File. + * libgnat/s-os_lib.ads: Add new potential value constant for + uninitialized file descriptors. + * osint.adb, osint.ads (Read_Source_File): Add extra parameter to + return result of IO to encompass a read access failure in addition to a + file-not-found error. + +2017-09-29 Bob Duff + + * exp_ch6.adb (Expand_Call_Helper): Handle case of build-in-place + functions returning nonlimited types. Allow for qualified expressions + and type conversions. + (Expand_N_Extended_Return_Statement): Correct the computation of + Func_Bod to allow for child units. + (Expand_Simple_Function_Return): Remove assumption that b-i-p implies + limited (initialization of In_Place_Expansion), and implies >= Ada + 2005. + (Is_Build_In_Place_Result_Type): New function to accompany + Is_Build_In_Place_Function and Is_Build_In_Place_Function_Call, because + sometimes we just have the type on our hands, not the function. For + now, does the same thing as the old version, so build-in-place is + disabled for nonlimited types, except that you can use -gnatd.9 to + enable it. + * exp_ch6.ads (Is_Build_In_Place_Result_Type): New function to + accompany Is_Build_In_Place_Function and + Is_Build_In_Place_Function_Call, because sometimes we just have the + type on our hands, not the function. + (Make_Build_In_Place_Call_In_...): Handle nonlimited build-in-place + cases. + (Make_Build_In_Place_Call_In_Object_Declaration): Remove the + questionable code at the end that was setting the Etype. + * exp_aggr.adb (Is_Build_In_Place_Aggregate_Return): New function to + determine whether "return (...agg...);" is returning from a + build-in-place function. + (Initialize_Ctrl_Array_Component, Initialize_Ctrl_Record_Component): + Remove assumption that b-i-p implies limited (initialization of + In_Place_Expansion). + (Build_Record_Aggr_Code): AI-287: fix comment; it can't be wrapped in + an unchecked conversion. Add assertions. + (Convert_Aggr_In_Object_Decl): Establish_Transient_Scope -- no need for + secondary stack here, just because the type needs finalization. That + code is obsolete. + (Convert_To_Assignments): Only set Unc_Decl if Nkind (N) = N_Aggregate. + For "return (...agg...);" don't assume b-i-p implies limited. + Needs_Finalization does not imply secondary stack. + (Expand_Array_Aggregate): Named notation. Reverse the sense of + Component_OK_For_Backend -- more readability with fewer double + negatives. + * exp_attr.adb (Expand_N_Attribute_Reference): Remove assumptions that + b-i-p implies >= Ada 2005. + * exp_ch3.adb (Expand_N_Object_Declaration): Remove assumptions that + b-i-p implies >= Ada 2005. Remove Adjust if we're building the return + object of an extended return statement in place. + * exp_ch4.adb (Expand_Allocator_Expression, Expand_N_Indexed_Component, + Expand_N_Selected_Component, Expand_N_Slice): Remove assumptions that + b-i-p implies >= Ada 2005. + * exp_ch5.adb (Expand_N_Assignment_Statement): Remove assumption that + b-i-p implies >= Ada 2005. + * exp_ch7.adb: Comment fix. + * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Remove + assumptions that b-i-p implies >= Ada 2005. + * exp_disp.adb (Expand_Interface_Actuals): Remove assumptions that + b-i-p implies >= Ada 2005. + * exp_util.adb (Build_Allocate_Deallocate_Proc): Look at Storage_Pool + (Expr), in case Pool_Id is not set. + (Initialized_By_Aliased_BIP_Func_Call): Handle case where the call is + qualified or converted. + (Is_Secondary_Stack_BIP_Func_Call): Don't check if Nkind (Selector_Name + (Param)) = N_Identifier; that's all it could be. + * sinfo.ads: Comment fixes. + * snames.ads-tmpl: Comment fixes. + * debug.adb: Add flag gnatd.9, to enable the build-in-place machinery. + +2017-09-29 Justin Squirek + + * sem_ch8.adb (Mark_Use_Clauses): Add recursive call to properly handle + all cases related to marking entity identifiers. + +2017-09-29 Vasiliy Fofanov + + * adaint.c (win32_wait): Properly handle error and take into account + the WIN32 limitation on the number of simultaneous wait objects. + +2017-09-29 Vasiliy Fofanov + + * cal.c: Minor proofreading. + +2017-09-29 Vasiliy Fofanov + + * doc/gnat_ugn/gnat_utility_programs.rst: Minor formatting fix. + * gnat_ugn.texi: Regenerate. + +2017-09-29 Bob Duff + + * lib-xref.ads: Comment fix. + +2017-09-29 Bob Duff + + * exp_aggr.adb: Remove calls to Set_No_Ctrl_Actions for discriminants. + Discriminants can't need finalization. + +2017-09-29 Ed Schonberg + + * sem_ch6.adb (Analyze_Expression_Function): Do not emit freeze nodes + for types in expression if the function is within a generic unit. + * sem_res.adb (Resolve): In a generic context do not freeze an + expression, unless it is an entity. This exception is solely for the + purpose of detecting illegal uses of deferred constants in generic + units. + * sem_res.adb: Minor reformatting. + +2017-09-29 Justin Squirek + + * sem_ch8.adb (Note_Redundant_Use): Add guard to protect against false + redundant warnings. + +2017-09-29 Yannick Moy + + * sinput-c.adb: Remove unused with-clause on Ada.Unchecked_Conversion. + +2017-09-29 Eric Botcazou + + * doc/gnat_rm/representation_clauses_and_pragmas.rst: Minor rewording. + * doc/gnat_rm/implementation_defined_pragmas.rst (Optimize_Alignment): + Document the effect of pragma Optimize_Alignment (Space) on non-packed + record types. + * gnat_rm.texi: Regenerate. + +2017-09-25 Justin Squirek + + * aspects.adb, bindgen.adb, clean.adb, erroutc.adb, exp_ch13.adb, + exp_dbug.adb, exp_unst.adb, exp_util.adb, frontend.adb, gnat1drv.adb, + gnatdll.adb, gnatlink.adb, gnatls.adb, gnatname.adb, gnatxref.adb, + gnatfind.adb, libgnat/a-cfhama.ads, libgnat/a-exetim__mingw.adb, + libgnat/a-strmap.adb, libgnat/a-teioed.adb, libgnat/g-alvety.ads, + libgnat/g-expect.adb, libgnat/g-regist.adb, libgnat/g-socket.adb, + libgnat/g-socthi__mingw.ads, libgnat/s-stausa.adb, + libgnat/s-tsmona__linux.adb, libgnat/s-tsmona__mingw.adb, + libgnarl/s-taenca.adb, libgnarl/s-tassta.adb, libgnarl/s-tarest.adb, + libgnarl/s-tpobop.adb, make.adb, makeusg.adb, namet.adb, output.ads, + put_scos.adb, repinfo.adb, rtsfind.adb, scn.ads, sem_attr.adb, + sem_aux.ads, sem_warn.ads, targparm.adb, xr_tabls.adb, xref_lib.adb: + Removal of ineffective use-clauses. + * exp_ch9.adb (Is_Simple_Barrier_Name): Check for false positives with + constant folded barriers. + * ghost.adb, sprint.adb, sem_ch10.adb, sem_warn.adb: Change access to + Subtype_Marks and Names list in use-clause nodes to their new singular + counterparts (e.g. Subtype_Mark, Name). + * par.adb, par-ch8.adb (Append_Use_Clause): Created to set + Prev_Ids and More_Ids in use-clause nodes. + (P_Use_Clause): Modify to take a list as a parameter. + (P_Use_Package_Clause, P_Use_Type_Clause): Divide names and + subtype_marks within an aggregate use-clauses into individual clauses. + * par-ch3.adb, par-ch10.adb, par-ch12.adb: Trivally modify call to + P_Use_Clause to match its new behavior. + * sem.adb (Analyze): Mark use clauses for non-overloaded entities. + * sem_ch4.adb (Try_One_Interp): Add sanity check to handle previous + errors. + * sem_ch6.adb (Analyze_Generic_Subprogram_Body, + Analyze_Subprogram_Body_Helper): Update use clause chain at the end of + the declarative region. + * sem_ch7.adb (Analyze_Package_Body_Helper): Update use clause chain + after analysis (Analyze_Package_Specification): Update use clause chain + when there is no body. + * sem_ch8.ads, sem_ch8.adb (Analyze_Use_Package, Analyze_Use_Type): Add + parameter to determine weither the installation of scopes should also + propagate on the use-clause "chain". + (Mark_Use_Clauses): Created to traverse use-clause chains and determine + what constitutes a valid "use" of a clause. + (Update_Use_Clause_Chain): Created to aggregate common machinary used + to clean up use-clause chains (and warn on ineffectiveness) at the end + of declaritive regions. + * sem_ch8.adb (Analyze_Package_Name): Created to perform analysis on a + package name from a use-package clause. + (Analyze_Package_Name_List): Created to perform analysis on a list of + package names (similar to Analyze_Package_Name). + (Find_Most_Prev): Created to traverse to the beginning of a given + use-clause chain. + (Most_Decendant_Use_Clause): Create to identify which clause from a + given set is highest in scope (not always the most prev). + (Use_One_Package, Use_One_Type): Major cleanup and reorganization to + handle the new chaining algorithm, also many changes related to + redundant clauses. A new parameter has also been added to force + installation to handle certain cases. + * sem_ch9.adb (Analyze_Entry_Body, Analyze_Protected_Body, + Analyze_Task_Body): Mark use clauses on relevant entities. + * sem_ch10.adb, sem_ch10.ads (Install_Context_Clauses, + Install_Parents): Add parameter to determine weither the installation + of scopes should also propagate on the use-clause "chain". + * sem_ch12.adb (Inline_Instance_Body): Add flag in call to + Install_Context to avoid redundant chaining of use-clauses. + * sem_ch13.adb: Minor reformatting. + * sem_res.adb (Resolve): Mark use clauses on operators. + (Resolve_Call, Resolve_Entity_Name): Mark use clauses on relevant + entities. + * sinfo.adb, sinfo.ads (Is_Effective_Use_Clause, + Set_Is_Effective_Use_Clause): Add new flag to N_Use_Clause nodes to + represent any given clause's usage/reference/necessity. + (Prev_Use_Clause, Set_Prev_Use_Clause): Add new field to N_Use_Clause + nodes to allow loose chaining of redundant clauses. + (Set_Used_Operations, Set_Subtype_Mark, Set_Prev_Ids, Set_Names, + Set_More_Ids, Set_Name): Modify set procedure calls to reflect + reorganization in node fields. + * types.ads (Source_File_Index): Adjust index bounds. + (No_Access_To_Source_File): New constant. + +2017-09-25 Ed Schonberg + + * sem_ch13.adb (Analyze_One_Aspect): In ASIS mode make a full copy of + the expression to be used in the generated attribute specification + (rather than relocating it) to avoid resolving a potentially malformed + tree when the expression is resolved through an ASIS-specific call to + Resolve_Aspect_Expressions. This manifests itself as a crash on a + function with parameter associations. + +2017-09-25 Yannick Moy + + * exp_spark.adb (Expand_SPARK_Indexed_Component, + Expand_SPARK_Selected_Component): New procedures to insert explicit + dereference if required. + (Expand_SPARK): Call the new procedures. + +2017-09-25 Patrick Bernardi + + * libgnat/a-stwiun.adb, libgnat/s-stchop__vxworks.adb, + libgnat/g-socthi__vxworks.ads, libgnat/a-stzunb.adb, + libgnat/a-strunb.adb, libgnarl/s-osinte__lynxos178.adb, + libgnarl/s-intman__vxworks.adb, libgnarl/s-osinte__darwin.adb, + libgnarl/a-exetim__darwin.adb: Removed ineffective use-clauses. + +2017-09-25 Vasiliy Fofanov + + * adaint.c (win32_wait): Properly handle error and take into account + the WIN32 limitation on the number of simultaneous wait objects. + +2017-09-25 Yannick Moy + + * sem_ch3.adb (Constant_Redeclaration): Do not insert a call to the + invariant procedure in GNATprove mode. + * sem_ch5.adb (Analyze_Assignment): Likewise. + +2017-09-25 Piotr Trojanek + + * adabkend.adb (Call_Back_End): Fix wording of "front-end" and + "back-end" in comments. + +2017-09-25 Ed Schonberg + + * exp_ch6.adb (Expand_Call_Helper): The extra accessibility check in a + call that appears in a classwide precondition and that mentions an + access formal of the subprogram, must use the accessibility level of + the actual in the call. This is one case in which a reference to a + formal parameter appears outside of the body of the subprogram. + +2017-09-25 Hristian Kirtchev + + * sem_res.adb (Replace_Actual_Discriminants): Replace a discriminant + for GNATprove. + (Resolve_Entry): Clean up predicate + +2017-09-25 Hristian Kirtchev + + * sem_prag.adb (Analyze_Constituent): Raise Unrecoverable_Error rather + than Program_Error because U_E is more in line with respect to the + intended behavior. + +2017-09-25 Ed Schonberg + + * sem_ch13.adb (Resolve_Aspect_Expressions): The expression for aspect + Storage_Size does not freeze, and thus can include references to + deferred constants. + +2017-09-25 Hristian Kirtchev + + * exp_spark.adb (Expand_SPARK_Potential_Renaming): Do not process a + reference when it appears within a pragma of no significance to SPARK. + (In_Insignificant_Pragma): New routine. + * sem_prag.ads: Add new table Pragma_Significant_In_SPARK. + +2017-09-25 Ed Schonberg + + * sem_ch12.adb (Analyze_Associations, case N_Formal_Package): If the + actual is a renaming, indicate that it is the renamed package that must + be frozen before the instantiation. + +2017-09-25 Yannick Moy + + * doc/gnat_ugn/gnat_and_program_execution.rst: Fix typo in description + of dimensionality system in GNAT UG. + * gnat_ugn.texi: Regenerate. + +2017-09-25 Yannick Moy + + * gnat1drv.adb: Call Check_Safe_Pointers from the frontend in + GNATprove_Mode when switch -gnatdF used. + +2017-09-25 Piotr Trojanek + + * adabkend.adb (Call_Back_End): Reset Current_Error_Node when starting + the backend. + +2017-09-25 Javier Miranda + + * exp_imgv.adb (Expand_Image_Attribute): Disable the optimized + expansion of user-defined enumeration types when the generation of + names for enumeration literals is suppressed. + +2017-09-25 Gary Dismukes + + * libgnarl/s-taprop__linux.adb: Minor reformatting. + +2017-09-25 Ed Schonberg + + * sem_ch13.adb (Resolve_Aspect_Expressions): Do not resolve identifiers + that appear as selector names of parameter associations, as these are + never resolved by visibility. + +2017-09-25 Justin Squirek + + * sem_res.adb (Resolve_Entry): Generate reference for index entities. + +2017-09-25 Doug Rupp + + * libgnarl/s-taprop__linux.adb (Compute_Base_Monotonic_Clock): Refine. + +2017-09-25 Javier Miranda + + * exp_imgv.adb (Is_User_Defined_Enumeration_Type): New subprogram. + (Expand_User_Defined_Enumeration_Image): New subprogram. + (Expand_Image_Attribute): Enable speed-optimized expansion of + user-defined enumeration types when we are compiling with optimizations + enabled. + +2017-09-25 Piotr Trojanek + + * sem_util.adb (Has_Null_Abstract_State): Remove, as an exactly same + routine is already provided by Einfo. + * einfo.adb (Has_Null_Abstract_State): Replace with the body from + Sem_Util, which had better comments and avoided double calls to + Abstract_State. + +2017-09-25 Bob Duff + + * exp_ch3.adb: Rename Comp_Type_Simple to be Comp_Simple_Init. + +2017-09-25 Doug Rupp + + * libgnarl/s-taprop__linux.adb (Base_Monotonic_Clock): New variable. + (Compute_Base_Monotonic_Clock): New function. + (Timed_Sleep): Adjust to use Base_Monotonic_Clock. + (Timed_Delay): Likewise. + (Monotonic_Clock): Likewise. + * s-oscons-tmplt.c (CLOCK_MONOTONIC): Use on Linux. + +2017-09-25 Ed Schonberg + + * sem_ch12.adb (Save_References_In_Aggregate): Small correction to + previous change. + +2017-09-25 Hristian Kirtchev + + * exp_ch5.adb, sem_ch4.adb, sem_ch13.adb, sem_attr.adb, exp_ch3.adb: + Minor reformatting. + +2017-09-20 Alexandre Oliva + + * gcc-interface/lang.opt (gant, gnatO, gnat): Add RejectNegative. + +2017-09-18 Bob Duff + + * sem_ch4.adb (Complete_Object_Operation): Do not insert 'Access for + reference types in the access-to-access case. + +2017-09-18 Eric Botcazou + + * sem_attr.adb (Analyze_Access_Attribute): Move check for the presence + of the "aliased" keyword on the prefix from here to... + (Resolve_Attribute) : ...here. Remove useless call + to Check_No_Implicit_Aliasing. + * sinfo.ads (Non_Aliased_Prefix): Delete. + (Set_Non_Aliased_Prefix): Likewise. + * sinfo.adb (Non_Aliased_Prefix): Delete. + (Set_Non_Aliased_Prefix): Likewise. + +2017-09-18 Bob Duff + + * exp_ch5.adb (Build_Formal_Container_Iteration, + Expand_Formal_Container_Element_Loop): Convert the container to the + root type before passing it to the iteration operations, so it will be + of the right type. + +2017-09-18 Bob Duff + + * einfo.ads, validsw.ads, treepr.ads, sem_util.ads: Comment fixes. + +2017-09-18 Bob Duff + + * exp_ch3.adb (Build_Array_Init_Proc): If validity checking is enabled, + and it's a bit-packed array, pass False to the Consider_IS parameter of + Needs_Simple_Initialization. + +2017-09-18 Hristian Kirtchev + + * sem_ch6.adb (Check_Inline_Pragma): Link the newly generated spec to + the preexisting body. + * sem_prag.adb (Check_Inline_Always_Placement): New routine. + (Process_Inline): Verify the placement of pragma Inline_Always. The + pragma must now appear on the initial declaration of the related + subprogram. + +2017-09-18 Ed Schonberg + + * sem_ch3.adb (Analyze_Declarations): In ASIS mode, At the end of the + declarative list in a subprogram body, analyze aspext specifications to + provide basic semantic information, because otherwise the aspect + specifications might only be snalyzed during expansion, when related + subprograms are generated. + +2017-09-18 Bob Duff + + * exp_ch9.adb (Is_Simple_Barrier_Name): Follow Original_Node, in case + validity checks have rewritten the tree. + +2017-09-18 Bob Duff + + * sem_util.adb: Comment fixes, and remove redundant Is_Itype check. + +2017-09-18 Ed Schonberg + + * sem_ch12.adb (Save_References_In_Aggregate): When constructing a + qualified exxpression for an aggregate in a generic unit, verify that + the scope of the type is itself visible and not hidden, so that the + qualified expression is correctly resolved in any instance. + +2017-09-18 Bob Duff + + * sem_ch4.adb (Analyze_Qualified_Expression): Give an error if the type + mark refers to the current instance. Set the type to Any_Type in that + case, to avoid later crashes. + +2017-09-18 Ed Schonberg + + * exp_ch3.adb (Replace_Discriminant_References): New procedure, + subsidiary of Build_Assignment, used to handle the initialization code + for a mutable record component whose default value is an aggregate that + sets the values of the discriminants of the components. + +2017-09-18 Eric Botcazou + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause)
: Mark + the entity as being volatile for an overlay that toggles the scalar + storage order. + +2017-09-18 Fedor Rybin + + * doc/gnat_ugn/gnat_utility_programs.rst: Document that gnattest + options -U main and --harness-only are not compatible. + +2017-09-18 Hristian Kirtchev + + * freeze.adb, sem_ch6.adb, sem_res.adb: Minor reformatting. + +2017-09-18 Piotr Trojanek + + * einfo.ads (Is_Imported): Update comment, as this + routine also applies to constants. + +2017-09-18 Yannick Moy + + * sem_util.adb (Find_Placement_In_State_Space): Allow generic package + holding state. + +2017-09-18 Justin Squirek + + * sem_prag.adb (Is_Non_Significant_Pragma_Reference): Change the + constant indication for Pragma_Linker_Section. + +2017-09-18 Bob Duff + + Alternate fix for PR ada/71358 + * libgnat/g-comlin.adb (Getopt): Remove manual null access checks. + Instead, make a local copy of Config, and if it's null, allocate an + empty Command_Line_Configuration_Record, so we won't crash on null + pointer dereference. + +2017-09-16 Eric Botcazou + + * libgnarl/a-intnam__rtems.ads: Update copyright date. + * libgnarl/s-interr__hwint.adb: Likewise. + * libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise. + * libgnarl/s-osinte__rtems.adb: Likewise. + * libgnarl/s-osinte__rtems.ads: Likewise. + +2017-09-13 Nicolas Roche + + * Make-lang.in: In the fallback mechanim, parse the associated .ali + file and try to guess the locations of dependencies. + +2017-09-13 Eric Botcazou + + * sem_ch13.adb (Register_Address_Clause_Check): New procedure to save + the suppression status of Alignment_Check on the current scope. + (Alignment_Checks_Suppressed): New function to use the saved instead of + the current suppression status of Alignment_Check. + (Address_Clause_Check_Record): Add Alignment_Checks_Suppressed field. + (Analyze_Attribute_Definition_Clause): Instead of manually appending to + the table, call Register_Address_Clause_Check. + (Validate_Address_Clauses): Call Alignment_Checks_Suppressed on the + recorded address clause instead of its entity. + +2017-09-13 Jerome Guitton + + * libgnarl/s-tpopsp__vxworks-tls.adb, + libgnarl/s-tpopsp__vxworks-rtp.adb, libgnarl/s-tpopsp__vxworks.adb + (Self): Register thread if task id is null. + +2017-09-13 Arnaud Charlet + + * libgnat/s-htable.adb, libgnat/s-htable.ads: Minor style tuning. + +2017-09-13 Arnaud Charlet + + * lib-xref-spark_specific.adb (Scopes): simplify hash map; now it maps + from an entity to only scope index, as a mapping from an entity to the + same entity was useless. + (Get_Scope_Num): refactor as a simple renaming; rename parameter from N + to E. + (Set_Scope_Num): refactor as a simple renaming; rename parameter from N + to E. + (Is_Constant_Object_Without_Variable_Input): remove local "Result" + variable, just use return statements. + +2017-09-13 Arnaud Charlet + + * libgnarl/s-vxwext__kernel-smp.adb, + libgnarl/s-tpopsp__vxworks-rtp.adb, libgnarl/s-vxwext__noints.adb: + New file. + +2017-09-13 Hristian Kirtchev + + * einfo.adb: Flag42 is now Is_Controlled_Active. + (Is_Controlled): This attribute is now synthesized. + (Is_Controlled_Active): This attribute is now an explicit flag rather + than a synthesized attribute. (Set_Is_Controlled): Removed. + (Set_Is_Controlled_Active): New routine. + (Write_Entity_Flags): Update the output for Flag42. + * einfo.ads: Update the documentation of the following attributes: + Disable_Controlled, Is_Controlled, Is_Controlled_Active, Is_Controlled + and Is_Controlled_Active have swapped their functionality. + (Is_Controlled): Renamed to Is_Controlled_Active. + (Is_Controlled_Active): Renamed to Is_Controlled. + (Set_Is_Controlled): Renamed to Set_Is_Controlled_Active. + * exp_ch3.adb (Expand_Freeze_Record_Type): Restore the original use of + Is_Controlled. + * exp_util.adb (Has_Some_Controlled_Component): Code clean up. + (Needs_Finalization): Code clean up. Remove the tests for + Disable_Controlled because a) they were incorrect as they would reject + a type which is sublect to the aspect, but may contain controlled + components, and b) they are no longer necessary. + * exp_util.ads (Needs_Finalization): Update comment on documentation. + * freeze.adb (Freeze_Array_Type): Restore the original use of + Is_Controlled. + (Freeze_Record_Type): Restore the original use of Is_Controlled. + * sem_ch3.adb (Analyze_Object_Declaration): Restore the original use of + Is_Controlled. + (Array_Type_Declaration): Restore the original use of Is_Controlled. + (Build_Derived_Private_Type): Restore the original use of + Is_Controlled. + (Build_Derived_Record_Type): Set the Is_Controlled_Active flag of a + type derived from Ada.Finalization.[Limited_]Controlled. + (Build_Derived_Type): Restore the original use of Is_Controlled. + (Record_Type_Definition): Restore the original use of Is_Controlled. + * sem_ch7.adb (Preserve_Full_Attributes): Restore the original use of + Is_Controlled. + * sem_ch13.adb (Analyze_Aspect_Disable_Controlled): New routine. + (Analyze_Aspect_Specifications): Use routine + Analyze_Aspect_Disable_Controlled to process aspect Disable_Controlled. + +2017-09-13 Vincent Celier + + * clean.adb (Gnatclean): Fix error when looking for target + of -gnatclean + +2017-09-13 Javier Miranda + Ed Schonberg + + * sem_ch8.adb (Find_Expanded_Name): Complete code that identifies an + expanded name that designates the current instance of a child unit in + its own body and appears as the prefix of a reference to an entity + local to the child unit. + +2017-09-12 Bob Duff + + * sem_warn.adb: Minor comment. + +2017-09-12 Bob Duff + + * libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb, + libgnat/a-cbmutr.adb, libgnat/a-cborma.adb: Rename New_Item to + be Default_Initialized_Item, and apply pragma Unmodified to it, + to suppress the warning. + +2017-09-12 Eric Botcazou + + * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Add early return + for access types. + +2017-09-12 Yannick Moy + + * gnat1drv.adb (Adjust_Global_Switches): Consider Refined_Global + together with Global when ignoring one in CodePeer mode. + +2017-09-12 Javier Miranda + + * sem_ch3.adb (Analyze_Declarations): In nested + package declarations that have a private part enable missing check + of the RM rule 13.1.1(11/3): usage names in aspect definitions are + resolved at the end of the immediately enclosing declaration list. + +2017-09-12 Bob Duff + + * sem_ch6.adb (Analyze_Expression_Function): Initialize Def_Id to + Empty. + +2017-09-12 Georges-Axel Jaloyan + + * debug.adb: Reserving flag -gnatdF for safe pointer checking. + * gnat1drv.adb (gnat1drv): Adding the call to the analysis on + dF flag. + * sem_spark.adb, sem_spark.ads: Implementation of the analysis, + in preparation for the evolution of the SPARK language that + includes a pointer analysis for checking non-aliasing of access + types. The Check_Safe_Pointers function is the entry point, and + will traverse the AST and raise compile-time errors everytime + it detects non-begign aliasing. Detailed comments are present + in the sem_spark.ads file. + * sem_util.adb, sem_util.ads (First_Global, Next_Global): New + functions to iterate over the list of globals of a subprogram. + * libgnat/system.ads: Add restriction No_Finalization. + * gcc-interface/Make-lang.in: Add new file sem_spark.adb and + dependency on g-dynhta.adb. + +2017-09-12 Bob Duff + + * sem_ch6.adb (Analyze_Expression_Function): Call + Check_Dynamically_Tagged_Expression. + * sem_util.adb (Check_Dynamically_Tagged_Expression): Remove + "and then Is_Tagged_Type (Typ)" because there is an earlier + "Assert (Is_Tagged_Type (Typ))". + +2017-09-12 Eric Botcazou + + * gcc-interface/Makefile.in (SPARC/Solaris): Remove obsolete stuff. + +2017-09-11 Arnaud Charlet + + * doc/gnat_ugn/the_gnat_compilation_model.rst: Fix sphinx warning. + * doc/gnat_ugn/platform_specific_information.rst: Remove doc + for no longer supported platforms. + * doc/gnat_ugn/gnat_and_program_execution.rst: Added detailed + description of the semantics for dimensionality analysis. + * gnat_ugn.texi: Regenerated. + +2017-09-11 Eric Botcazou + + * freeze.adb (Has_Incomplete_Compoent): Delete. + (Freeze_Profile): + Do not inhibit the freezing of the profile of an expression + function here. + (Freeze_Subprogram): Do not re-create extra formals. + * sem_ch6.adb (Analyze_Expression_Function): Always + pre-analyze the expression if the function is not a completion. + (Analyze_Subprogram_Body_Helper): For the body generated + from an expression function that is not a completion, do + not freeze the profile and temporary mask the types declared + outside the expression that are not yet frozen. + * sem_res.adb (Rewrite_Renamed_Operator): Also bail out if invoked + during the pre-analysis of an expression function. + +2017-09-11 Eric Botcazou + + * gcc-interface/gigi.h (enum standard_datatypes): Minor tweak. + (gigi): Likewise. + +2017-09-11 Yannick Moy + + * lib-xref-spark_specific.adb: Minor rewrite. + +2017-09-11 Jerome Lambourg + + * libgnat: Rename ?-[a-z]*-* into ?-[a-z]*__* + * gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Take this + renaming into account. + +2017-09-11 Jerome Lambourg + + * libgnarl: Rename ?-[a-z]*-* into ?-[a-z]*__* + * gcc-interface/Makefile.in: Take this renaming into account. + +2017-09-11 Arnaud Charlet + + * s-auxdec-empty.ads, s-auxdec-empty.adb, 9drpc.adb: Removed, no + longer used. + +2017-09-11 Yannick Moy + + * sem_util.adb (Check_Result_And_Post_State): + Do not issue a warning about missing reference to an outcome if + the subprogram is ghost and has no outputs. + * lib-xref-spark_specific.adb, sem_aggr.adb, sem_aux.ads: Minor + reformatting. + +2017-09-11 Yannick Moy + + * gnat1drv.adb (Adjust_Global_Switches): Set + Check_Validity_Of_Parameters to False in GNATprove mode. + * opt.ads (Check_Validity_Of_Parameters): Document switch to + set option. + +2017-09-09 Pierre-Marie de Rodat + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Don't + generate debug info for inner record types if -fgnat-encodings=minimal. + (gnat_to_gnu_entity) : Use the ultimate base record + type as the debug type. + +2017-09-09 Eric Botcazou + + * gcc-interface/decl.c (components_to_record): Do not reorder in non- + packed record types if pragma Optimize_Alignment (Space) is enabled. + +2017-09-09 Eric Botcazou + + * gcc-interface/trans.c (Subprogram_Body_to_gnu): Disregard inlining + limits for expression functions. + (gnat_to_gnu) : Fix formatting. + +2017-09-09 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Copy the + layout of the record from the parent type only if both are or are not + unchecked unions. + (is_stored_discriminant): Return false for an unchecked union. + +2017-09-09 Eric Botcazou + + * gcc-interface/utils2.c (build_allocator): In type_annotate_only mode + return NULL_EXPR. + +2017-09-09 Eric Botcazou + + * gcc-interface/decl.c (promote_object_alignment): New function taken + from... + (gnat_to_gnu_entity) : ...here. Invoke it. + (gnat_to_gnu_field): If the field is Atomic or VFA, invoke it and + create a padding type on success before doing the atomic check. + +2017-09-09 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Apply the + promotion to static memory earlier in the processing. + +2017-09-09 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Only set the TYPE_ALIGN_OK + and TYPE_BY_REFERENCE_P flags on types after various promotions. + * gcc-interface/trans.c (node_has_volatile_full_access) : + Consider all kinds of entities. + +2017-09-09 Eric Botcazou + + * gcc-interface/utils.c (convert): When converting to a padding type, + reuse an existing CONSTRUCTOR if it has got the right size. + +2017-09-08 Nicolas Roche + + * gcc-interface/Make-lang.in, gcc-interface/Makefile.in: Find runtime + source in libgnat/ + * a-lfztio.ads, g-timsta.ads, g-sercom-linux.adb, s-osprim-solaris.adb, + a-inteio.ads, s-stchop-rtems.adb, s-casuti.adb, s-pack39.adb, + i-vxwork-x86.ads, a-strbou.adb, a-stzmap.adb, s-assert.adb, + a-sfecin.ads, a-cohama.adb, s-casuti.ads, a-suenco.adb, s-pack39.ads, + a-stzmap.ads, a-strbou.ads, s-stalib.adb, s-trasym.adb, g-comver.adb, + s-assert.ads, s-vector.ads, g-cgi.adb, a-cohama.ads, s-wchcnv.adb, + a-titest.adb, s-pack48.adb, a-suenco.ads, a-strunb.adb, s-stalib.ads, + s-trasym.ads, a-nudira.adb, g-comver.ads, a-nuflra.adb, g-cgi.ads, + a-chacon.adb, s-wchcnv.ads, a-excach.adb, s-pack48.ads, a-titest.ads, + a-strunb.ads, s-dwalin.adb, a-nudira.ads, a-chtgbo.adb, s-resfil.adb, + a-scteio.ads, a-nuflra.ads, g-soliop-mingw.ads, s-pack57.adb, + a-chacon.ads, s-bytswa.ads, s-pooloc.adb, g-os_lib.adb, s-dwalin.ads, + a-szuzha.adb, s-resfil.ads, a-chtgbo.ads, s-spsufi.adb, s-pack57.ads, + s-pooloc.ads, g-os_lib.ads, a-stfiha.ads, a-lcteio.ads, a-wtcoau.adb, + a-szuzha.ads, s-mmosin-unix.adb, a-stmaco.ads, s-spsufi.ads, + s-stchop-limit.ads, a-wtcoau.ads, a-exctra.adb, s-mmosin-unix.ads, + s-sequio.adb, s-conca2.adb, g-table.adb, s-imglli.adb, + a-numaux-x86.adb, a-strsea.adb, s-wchstw.adb, a-clrefi.adb, + a-wwboio.adb, a-exctra.ads, s-sequio.ads, s-conca2.ads, a-wwunio.ads, + system-linux-hppa.ads, g-table.ads, s-dimkio.ads, s-imglli.ads, + a-cofove.adb, a-numaux-x86.ads, s-wchstw.ads, a-strsea.ads, + a-clrefi.ads, a-wwboio.ads, s-stratt-xdr.adb, s-crc32.adb, + s-excmac-arm.adb, g-busora.adb, a-cofove.ads, s-osprim-unix.adb, + g-io.adb, s-pack49.adb, s-crc32.ads, s-excmac-arm.ads, a-fzteio.ads, + g-busora.ads, s-stausa.adb, system-linux-mips.ads, sequenio.ads, + g-exctra.adb, g-rewdat.adb, a-cgaaso.adb, g-io.ads, s-pack49.ads, + a-wtflau.adb, a-undesu.adb, s-stausa.ads, a-ztenau.adb, g-enutst.ads, + calendar.ads, s-pack58.adb, g-rewdat.ads, g-exctra.ads, s-ststop.adb, + a-cgaaso.ads, a-strfix.adb, a-comlin.adb, a-strunb-shared.adb, + a-wtflau.ads, a-undesu.ads, a-cbhase.adb, a-ztenau.ads, s-os_lib.adb, + a-coorse.adb, a-chlat1.ads, s-pack58.ads, s-ststop.ads, a-strfix.ads, + a-comlin.ads, a-strunb-shared.ads, a-nscefu.ads, s-valboo.adb, + directio.ads, a-chtgke.adb, a-cbhase.ads, a-wtinau.adb, + system-linux-alpha.ads, s-os_lib.ads, a-coorse.ads, + system-linux-s390.ads, s-imgwiu.adb, a-chtgop.adb, s-valboo.ads, + a-chtgke.ads, a-tienio.adb, s-conca3.adb, a-wtinau.ads, + system-darwin-ppc.ads, i-c.adb, s-expllu.adb, g-expect.adb, + g-sha256.ads, s-vallld.adb, s-imgwiu.ads, a-chtgop.ads, a-strmap.adb, + a-tienio.ads, s-conca3.ads, s-imgint.adb, i-c.ads, s-expllu.ads, + s-osprim-darwin.adb, a-cogeso.adb, g-expect.ads, a-iwteio.ads, + s-vallld.ads, a-coinho-shared.adb, g-shsh64.adb, a-strmap.ads, + g-comlin.adb, a-excpol.adb, s-imgint.ads, a-ztdeau.adb, a-cogeso.ads, + a-coinho-shared.ads, g-shsh64.ads, g-comlin.ads, a-stzsup.adb, + a-rbtgbk.adb, a-wtmoau.adb, a-ztdeau.ads, s-exnlli.adb, g-tty.adb, + g-heasor.adb, g-socthi-dummy.adb, s-llflex.ads, a-zchara.ads, + a-stzsup.ads, a-ztcstr.adb, a-rbtgbk.ads, a-sfwtio.ads, a-wtmoau.ads, + a-sulcin.adb, s-exnlli.ads, system-freebsd.ads, a-stunha.adb, + a-charac.ads, g-tty.ads, g-heasor.ads, s-exctra.adb, + g-socthi-dummy.ads, a-coboho.adb, a-ztcstr.ads, a-tideio.adb, + a-sulcin.ads, a-wrstfi.adb, g-alleve.adb, s-pack59.adb, a-ngrear.adb, + a-stboha.adb, a-stunau-shared.adb, a-stunha.ads, a-lfwtio.ads, + s-fileio.adb, s-exctra.ads, a-coboho.ads, a-ioexce.ads, a-tideio.ads, + a-ngrear.ads, a-wrstfi.ads, s-pack59.ads, g-alleve.ads, a-stboha.ads, + s-poosiz.adb, g-traceb.adb, g-rannum.adb, machcode.ads, s-purexc.ads, + s-fileio.ads, a-cfinve.adb, a-crbtgk.adb, system-solaris-x86.ads, + s-poosiz.ads, g-rannum.ads, g-traceb.ads, a-except.adb, s-conca4.adb, + a-stream.adb, a-cfinve.ads, a-crbtgk.ads, s-wchwts.adb, + system-mingw.ads, a-except.ads, s-conca4.ads, a-chzla9.ads, + s-valenu.adb, s-soflin.adb, a-stream.ads, a-cgarso.adb, s-valllu.adb, + g-crc32.adb, s-wchwts.ads, s-fatflt.ads, s-imguns.adb, s-strcom.adb, + g-decstr.adb, s-valenu.ads, s-soflin.ads, a-cgarso.ads, a-cwila1.ads, + s-valllu.ads, g-crc32.ads, s-imguns.ads, g-spipat.adb, s-valwch.adb, + s-strcom.ads, g-decstr.ads, text_io.ads, g-debuti.adb, s-stchop.adb, + g-spipat.ads, s-valwch.ads, a-string.ads, s-exnint.adb, g-awk.adb, + g-tasloc.adb, s-wwdenu.adb, s-boustr.adb, a-zchuni.adb, s-stchop.ads, + g-debuti.ads, s-stopoo.adb, system-dragonfly-x86_64.ads, + system-linux-x86.ads, s-exnint.ads, g-awk.ads, a-stzhas.adb, + g-tasloc.ads, s-wwdenu.ads, g-debpoo.adb, g-except.ads, + g-sse.ads, s-boustr.ads, a-zchuni.ads, s-bitops.adb, s-wwdwch.adb, + s-stopoo.ads, a-catizo.adb, a-stzhas.ads, a-nlcefu.ads, g-debpoo.ads, + i-vxwoio.adb, s-bitops.ads, g-io-put-vxworks.adb, s-wwdwch.ads, + g-sehamd.adb, a-ssicst.adb, a-catizo.ads, s-mmap.adb, g-string.adb, + s-traceb.adb, a-swunau.adb, s-rannum.adb, a-ticoau.adb, i-vxwoio.ads, + g-sehamd.ads, a-stwiun.adb, a-ssicst.ads, s-conca5.adb, a-ssitio.ads, + s-mmap.ads, a-zttest.adb, g-string.ads, g-sercom.adb, a-cdlili.adb, + a-swunau.ads, s-traceb.ads, s-rannum.ads, a-ticoau.ads, system-aix.ads, + a-cforma.adb, a-stwiun.ads, s-conca5.ads, s-carsi8.adb, a-zttest.ads, + g-sercom.ads, a-cdlili.ads, a-cihama.adb, g-sptain.ads, a-cforma.ads, + s-maccod.ads, s-carsi8.ads, a-strsup.adb, g-sha1.adb, a-cihama.ads, + g-stseme.adb, s-traent.adb, s-valcha.adb, g-curexc.ads, a-strsup.ads, + g-sha1.ads, a-sflcin.ads, s-traent.ads, s-pack10.adb, s-valcha.ads, + a-coteio.ads, s-tasloc.adb, g-utf_32.adb, a-suteio.adb, s-except.adb, + a-direct.adb, g-stsifd-sockets.adb, a-numaux-vxworks.ads, s-winext.ads, + s-pack10.ads, a-ztexio.adb, a-tiflau.adb, system-vxworks-arm.ads, + s-tasloc.ads, a-suteio.ads, g-utf_32.ads, s-except.ads, + a-direct.ads, a-swbwha.adb, g-hesorg.adb, s-wwdcha.adb, a-wtedit.adb, + a-ztexio.ads, a-wtcoio.adb, a-tiflau.ads, a-ssizti.ads, s-casi32.adb, + a-swbwha.ads, s-veboop.adb, g-hesorg.ads, s-parame-rtems.adb, + s-wwdcha.ads, a-wtedit.ads, a-stuten.adb, a-coinve.adb, a-wtcoio.ads, + s-casi32.ads, s-string.adb, a-tiinau.adb, a-cusyqu.adb, s-conca6.adb, + s-veboop.ads, a-cgcaso.adb, a-numaux-darwin.adb, a-envvar.adb, + a-stuten.ads, s-secsta.adb, a-coinve.ads, s-string.ads, a-cusyqu.ads, + a-tiinau.ads, s-osprim-vxworks.adb, s-conca6.ads, g-spchge.adb, + s-parint.adb, a-cuprqu.adb, a-cgcaso.ads, a-numaux-darwin.ads, + a-envvar.ads, s-secsta.ads, g-spchge.ads, s-parint.ads, a-cuprqu.ads, + a-swuwti.adb, a-flteio.ads, a-sbhcin.adb, a-coprnu.adb, g-u3spch.adb, + s-atocou.adb, g-ctrl_c.adb, a-swuwti.ads, a-calend.adb, a-sbhcin.ads, + a-coprnu.ads, g-dirope.adb, g-sha512.ads, g-u3spch.ads, s-atocou.ads, + g-ctrl_c.ads, a-timoau.adb, a-witeio.adb, s-pack11.adb, a-strhas.adb, + a-wtflio.adb, g-spitbo.adb, a-calend.ads, a-ztenio.adb, g-dirope.ads, + a-slcain.adb, g-sechas.adb, a-timoau.ads, a-witeio.ads, s-pack11.ads, + s-shasto.adb, s-traceb-mastop.adb, a-ciorse.adb, s-utf_32.adb, + a-strhas.ads, a-wtflio.ads, g-spitbo.ads, a-ztenio.ads, a-slcain.ads, + g-sechas.ads, s-gearop.adb, a-siztio.ads, s-pack20.adb, s-shasto.ads, + a-ciorse.ads, s-utf_32.ads, s-crtl.ads, a-wtinio.adb, s-elaall.adb, + s-explli.adb, s-chepoo.ads, s-gearop.ads, a-einuoc.adb, s-pack20.ads, + system-linux-ia64.ads, a-swunau-shared.adb, a-wtinio.ads, g-alvety.ads, + a-liztio.ads, g-calend.adb, s-conca7.adb, s-elaall.ads, s-explli.ads, + a-einuoc.ads, s-widboo.adb, s-imgdec.adb, a-cbhama.adb, g-calend.ads, + s-conca7.ads, a-llitio.ads, i-cexten.ads, a-coorma.adb, s-widboo.ads, + s-diflio.adb, g-souinf.ads, s-imgdec.ads, g-strhas.ads, a-cbhama.ads, + g-shshco.adb, a-ztdeio.adb, s-gloloc.adb, a-coorma.ads, g-wispch.adb, + s-pack03.adb, g-eacodu.adb, s-casi16.adb, s-diflio.ads, a-colien.adb, + g-shshco.ads, a-wtmoio.adb, a-rbtgbo.adb, a-ztdeio.ads, + system-rtems.ads, s-gloloc.ads, a-csquin.ads, a-cofuse.adb, + g-wispch.ads, s-pack03.ads, s-casi16.ads, s-io.adb, a-colien.ads, + g-alveop.adb, gnat.ads, s-diinio.adb, a-cfdlli.adb, g-pehage.adb, + a-wtmoio.ads, a-stwiha.adb, a-locale.adb, a-tirsfi.adb, a-nscoty.ads, + a-rbtgbo.ads, s-pack12.adb, a-cofuse.ads, a-sfteio.ads, s-io.ads, + g-alveop.ads, a-cfdlli.ads, s-diinio.ads, a-stwiha.ads, g-pehage.ads, + a-locale.ads, a-tirsfi.ads, s-pack12.ads, s-valuti.adb, g-cppexc.adb, + system-vxworks-ppc.ads, g-memdum.adb, a-lfteio.ads, s-pack21.adb, + s-unstyp.ads, s-valuti.ads, g-cppexc.ads, system-hpux-ia64.ads, + g-memdum.ads, g-soccon.ads, g-altive.ads, a-crbtgo.adb, s-pack21.ads, + a-llizti.ads, a-numaux-libc-x86.ads, s-expint.adb, s-conca8.adb, + a-crbtgo.ads, s-pack30.adb, s-vallli.adb, s-geveop.adb, s-expint.ads, + a-direio.adb, s-conca8.ads, a-widcha.ads, s-pack30.ads, s-vallli.ads, + s-strhas.adb, s-geveop.ads, g-md5.adb, a-direio.ads, a-numaux.ads, + s-ransee.adb, a-szbzha.adb, i-cobol.adb, g-busorg.adb, s-strhas.ads, + g-md5.ads, s-widenu.adb, s-ransee.ads, s-widllu.adb, a-szbzha.ads, + a-ststio.adb, i-cobol.ads, g-busorg.ads, g-regpat.adb, s-widenu.ads, + a-secain.adb, s-widllu.ads, s-pack13.adb, g-encstr.adb, a-ztcoau.adb, + a-ststio.ads, s-widwch.adb, g-regpat.ads, s-atacco.adb, a-cborse.adb, + a-secain.ads, s-pack13.ads, g-encstr.ads, a-ztcoau.ads, s-widwch.ads, + g-io_aux.adb, s-atacco.ads, a-ncelfu.ads, interfac.ads, a-cborse.ads, + g-regexp.adb, s-pack22.adb, a-szuzti.adb, g-io_aux.ads, s-caun32.adb, + a-nselfu.ads, g-regexp.ads, s-pack22.ads, a-ticoio.adb, a-szuzti.ads, + g-diopit.adb, s-caun32.ads, s-conca9.adb, a-tags.adb, a-swmwco.ads, + a-sbecin.adb, s-pack31.adb, s-expuns.adb, a-ticoio.ads, s-valint.adb, + s-conca9.ads, g-diopit.ads, a-tags.ads, a-nllcef.ads, a-izteio.ads, + a-sbecin.ads, s-expuns.ads, s-pack31.ads, g-dyntab.adb, s-powtab.ads, + s-flocon-none.adb, s-valint.ads, a-ssiwti.ads, s-mmosin-mingw.adb, + s-pack40.adb, s-pack05.adb, a-ztflau.adb, g-dyntab.ads, + a-szuzti-shared.adb, g-alvevi.ads, a-stwise.adb, s-mmosin-mingw.ads, + s-pack40.ads, a-diocst.adb, a-ztflau.ads, s-pack05.ads, a-nlcoty.ads, + a-contai.ads, a-stwisu.adb, g-byorma.adb, a-siwtio.ads, a-stwise.ads, + s-regpat.adb, g-mbdira.adb, s-pack14.adb, a-diocst.ads, g-flocon.ads, + g-mbflra.adb, a-ztinau.adb, s-dim.ads, s-mantis.adb, a-stwisu.ads, + g-byorma.ads, s-atopri.adb, g-wistsp.ads, a-uncdea.ads, s-widcha.adb, + a-caldel.adb, s-regpat.ads, g-mbdira.ads, a-tiflio.adb, s-pack14.ads, + s-parame.adb, a-liwtio.ads, s-memory.adb, g-mbflra.ads, a-ztinau.ads, + a-wtgeau.adb, s-direio.adb, s-mantis.ads, s-atopri.ads, s-widcha.ads, + a-caldel.ads, s-pack23.adb, a-unccon.ads, a-tiflio.ads, s-parame.ads, + a-llftio.ads, s-memory.ads, s-regexp.adb, a-wtgeau.ads, a-exexda.adb, + s-direio.ads, s-pack23.ads, g-stheme.adb, a-tiinio.adb, g-sestin.ads, + s-regexp.ads, a-wtfiio.adb, a-comutr.adb, a-exexpr.adb, a-tiinio.ads, + a-ztmoau.adb, a-cohata.ads, a-wtfiio.ads, s-imgrea.adb, ada.ads, + a-szunau-shared.adb, a-comutr.ads, s-valuns.adb, a-ztmoau.ads, + system-linux-arm.ads, s-osprim-x32.adb, s-pack41.adb, s-pack06.adb, + s-imgrea.ads, s-valuns.ads, s-finroo.adb, s-caun16.adb, s-pooglo.adb, + a-zrstfi.adb, a-suenst.adb, s-pack41.ads, g-binenv.adb, s-pack06.ads, + a-calari.adb, a-nlcoar.ads, s-finroo.ads, a-timoio.adb, s-caun16.ads, + s-flocon.adb, a-suenst.ads, a-zrstfi.ads, s-pooglo.ads, s-wchcon.adb, + s-traceb-hpux.adb, s-pack50.adb, i-fortra.adb, s-pack15.adb, + a-ngcefu.adb, g-sptavs.ads, g-binenv.ads, s-wchjis.adb, a-calari.ads, + a-timoio.ads, a-decima.adb, s-flocon.ads, s-wchcon.ads, a-llfzti.ads, + i-fortra.ads, s-pack50.ads, s-pack15.ads, a-ngcefu.ads, a-cfhase.adb, + s-wchjis.ads, g-soliop.ads, a-decima.ads, a-chlat9.ads, s-pack24.adb, + a-nlelfu.ads, a-cfhase.ads, g-locfil.adb, s-atocou-builtin.adb, + s-memcop.ads, a-szunau.adb, s-pack24.ads, s-imgllb.adb, s-auxdec.adb, + g-locfil.ads, s-pack33.adb, a-szunau.ads, s-parame-vxworks.adb, + s-imgllb.ads, a-ciorma.adb, s-auxdec.ads, a-cobove.adb, s-dsaser.ads, + a-elchha.adb, s-pack33.ads, a-cofuve.adb, s-parame-vxworks.ads, + a-ciorma.ads, system-darwin-x86.ads, s-multip.adb, a-stwiun-shared.adb, + a-wichun.adb, a-cobove.ads, s-imgbiu.adb, s-tsmona-mingw.adb, + a-coormu.adb, a-siocst.adb, s-win32.ads, a-elchha.ads, s-pack42.adb, + s-pack07.adb, a-cofuve.ads, system-hpux.ads, a-teioed.adb, + a-convec.adb, g-speche.adb, s-multip.ads, a-stwiun-shared.ads, + a-wichun.ads, s-imgbiu.ads, a-numeri.ads, a-siocst.ads, a-coormu.ads, + a-lliwti.ads, s-pack42.ads, s-pack07.ads, a-teioed.ads, a-convec.ads, + g-speche.ads, g-socthi.adb, a-nucoty.ads, a-szmzco.ads, s-pack51.adb, + s-osprim-mingw.adb, s-casi64.adb, g-strspl.ads, g-socthi.ads, + g-socket-dummy.adb, s-pack51.ads, s-dimmks.ads, s-casi64.ads, + a-wtenau.adb, s-stchop-vxworks.adb, s-pack60.adb, + system-solaris-sparc.ads, s-pack25.adb, g-socket-dummy.ads, + a-exstat.adb, a-cofuma.adb, s-tsmona-linux.adb, a-wtenau.ads, + s-pack60.ads, s-pack25.ads, i-cstrea.adb, a-cofuma.ads, g-exptty.adb, + a-chzla1.ads, s-pack34.adb, i-cstrea.ads, s-excdeb.adb, a-iteint.ads, + g-exptty.ads, i-pacdec.adb, s-pack34.ads, s-rident.ads, s-sopco3.adb, + i-vxwork.ads, s-excdeb.ads, system-linux-ppc.ads, a-swuwti-shared.adb, + s-widlli.adb, s-pack43.adb, i-pacdec.ads, a-cwila9.ads, s-sopco3.ads, + a-fwteio.ads, s-widlli.ads, s-pack43.ads, a-suhcin.adb, a-wtdeau.adb, + g-allein.ads, a-suezst.adb, a-dirval-mingw.adb, g-zspche.adb, + s-bignum.adb, a-ztedit.adb, g-regist.adb, a-nllefu.ads, a-ztcoio.adb, + s-pack52.adb, a-llctio.ads, a-nucoar.ads, s-pack17.adb, a-suhcin.ads, + a-wtdeau.ads, a-suezst.ads, a-dirval.adb, g-zspche.ads, g-regist.ads, + a-ztedit.ads, s-bignum.ads, a-wtcstr.adb, system.ads, s-pack52.ads, + a-ztcoio.ads, s-pack17.ads, s-imgboo.adb, a-rbtgso.adb, a-dirval.ads, + a-cohase.adb, s-pack61.adb, a-wtcstr.ads, s-pack26.adb, s-osprim.ads, + a-tigeau.adb, s-imgboo.ads, a-nuelfu.ads, a-swfwha.ads, s-commun.adb, + g-socthi-vxworks.adb, a-rbtgso.ads, a-cohase.ads, g-zstspl.ads, + s-pack61.ads, s-pack26.ads, a-intnam-dragonfly.ads, s-imglld.adb, + a-tigeau.ads, s-commun.ads, g-socthi-vxworks.ads, a-cborma.adb, + a-stwifi.adb, g-moreex.adb, s-pack35.adb, s-imglld.ads, s-valdec.adb, + a-tifiio.adb, a-cborma.ads, g-moreex.ads, a-stwifi.ads, s-pack35.ads, + s-sopco4.adb, g-sha224.ads, g-socket.adb, a-intnam-rtems.ads, + s-finmas.adb, s-valdec.ads, s-addima.adb, a-finali.adb, a-tifiio.ads, + s-rpc.adb, a-ztflio.adb, s-pack44.adb, s-pack09.adb, a-sblcin.adb, + s-sopco4.ads, a-textio.adb, g-socket.ads, g-sptabo.ads, s-finmas.ads, + g-shsh32.adb, s-addima.ads, a-finali.ads, s-mmauni-long.ads, s-rpc.ads, + a-ztflio.ads, system-djgpp.ads, s-stache.adb, s-pack44.ads, + s-pack09.ads, a-sblcin.ads, a-textio.ads, a-cidlli.adb, g-shsh32.ads, + a-chtgbk.adb, a-tiocst.adb, s-pack53.adb, s-pack18.adb, s-stache.ads, + a-zchhan.adb, s-fatlfl.ads, a-ztinio.adb, s-strops.adb, a-siteio.ads, + a-cidlli.ads, a-chtgbk.ads, g-ssvety.ads, a-tiocst.ads, s-pack53.ads, + s-parame-hpux.ads, s-pack18.ads, a-zchhan.ads, s-strops.ads, + a-ztinio.ads, a-wichha.adb, a-stwima.adb, a-nlrear.ads, a-liteio.ads, + s-pack62.adb, s-pack27.adb, s-fore.adb, s-vercon.adb, a-wichha.ads, + a-stwima.ads, s-pack62.ads, system-linux-sparc.ads, s-pack27.ads, + g-dynhta.adb, s-fore.ads, s-vercon.ads, a-cofuba.adb, a-cimutr.adb, + i-cpoint.adb, s-imgenu.adb, a-stwibo.adb, s-pack36.adb, i-cstrin.adb, + s-imgllu.adb, a-suteio-shared.adb, g-excact.adb, s-stoele.adb, + s-addope.adb, g-dynhta.ads, a-cofuba.ads, a-ztmoio.adb, a-llfwti.ads, + a-cimutr.ads, i-cpoint.ads, s-imgenu.ads, a-stwibo.ads, a-wttest.adb, + s-pack36.ads, a-tgdico.ads, s-sopco5.adb, s-scaval.adb, i-cstrin.ads, + s-imgllu.ads, g-excact.ads, s-stoele.ads, g-deutst.ads, s-addope.ads, + s-imgwch.adb, g-sha384.ads, a-ztmoio.ads, s-pack45.adb, a-wttest.ads, + s-sopco5.ads, s-excmac-gcc.adb, s-scaval.ads, a-storio.adb, + a-coinho.adb, a-btgbso.adb, s-imgwch.ads, s-carun8.adb, memtrack.adb, + s-pack45.ads, a-sfhcin.ads, s-excmac-gcc.ads, a-storio.ads, + a-coinho.ads, a-btgbso.ads, s-stratt.adb, s-carun8.ads, a-shcain.adb, + s-pack54.adb, s-pack19.adb, a-colire.adb, a-tigeli.adb, s-caun64.adb, + s-stratt.ads, s-fatgen.adb, a-shcain.ads, a-stzunb-shared.adb, + s-pack54.ads, s-pack19.ads, a-colire.ads, a-calcon.adb, s-caun64.ads, + s-fatgen.ads, s-pack63.adb, g-arrspl.adb, a-stzunb-shared.ads, + s-pack28.adb, a-nllrar.ads, a-zzboio.adb, a-zzunio.ads, a-stunau.adb, + a-calcon.ads, g-cgideb.adb, s-objrea.adb, s-mastop.adb, a-tienau.adb, + g-altcon.adb, g-arrspl.ads, s-pack63.ads, s-restri.adb, s-pack28.ads, + a-zzboio.ads, a-stunau.ads, g-cgideb.ads, g-htable.adb, g-sothco.adb, + s-objrea.ads, g-soliop-solaris.ads, s-mastop.ads, a-tienau.ads, + system-linux-m68k.ads, g-altcon.ads, s-dmotpr.ads, s-memory-mingw.adb, + g-cgicoo.adb, s-pack37.adb, s-restri.ads, s-fatllf.ads, s-expmod.adb, + a-swuwha.adb, a-exextr.adb, a-cfhama.adb, s-gloloc-mingw.adb, + a-tiboio.adb, g-forstr.adb, g-sothco.ads, a-stzbou.adb, a-nllcty.ads, + a-suecin.adb, g-htable.ads, s-exctab.adb, a-tiunio.ads, g-cgicoo.ads, + s-osprim-posix.adb, s-pack37.ads, a-ciormu.adb, s-atocou-x86.adb, + a-swuwha.ads, s-expmod.ads, a-cfhama.ads, s-ficobl.ads, a-ngcoty.adb, + g-forstr.ads, a-tiboio.ads, a-calfor.adb, a-stzbou.ads, a-suecin.ads, + a-conhel.adb, a-crbltr.ads, s-exctab.ads, a-dhfina.ads, s-imgcha.adb, + s-pack46.adb, a-ciormu.ads, system-linux-sh4.ads, a-chahan.adb, + a-ngcoty.ads, a-stzunb.adb, a-szfzha.ads, a-calfor.ads, a-cbdlli.adb, + a-conhel.ads, s-imgcha.ads, s-pack46.ads, a-assert.adb, a-chahan.ads, + a-stzunb.ads, a-crdlli.adb, s-pack55.adb, a-cbdlli.ads, a-tideau.adb, + a-assert.ads, ioexcept.ads, s-boarop.ads, g-hesora.adb, a-crdlli.ads, + s-pack55.ads, a-tideau.ads, g-bubsor.adb, a-wtenio.adb, a-cbsyqu.adb, + g-hesora.ads, s-pack29.adb, a-nurear.ads, g-catiio.adb, s-stposu.adb, + g-bubsor.ads, a-wtenio.ads, a-cbsyqu.ads, a-suewst.adb, + system-vxworks-x86.ads, s-pack29.ads, a-cbmutr.adb, a-cbprqu.adb, + s-imenne.adb, g-sothco-dummy.adb, g-casuti.adb, g-catiio.ads, + s-stposu.ads, a-stzsea.adb, s-pack38.adb, a-suewst.ads, s-imgllw.adb, + a-cbprqu.ads, a-cbmutr.ads, s-imenne.ads, g-sothco-dummy.ads, + g-casuti.ads, s-htable.adb, s-fatsfl.ads, g-trasym.adb, unchconv.ads, + a-stzsea.ads, s-arit64.adb, s-pack38.ads, a-nllcar.ads, s-valrea.adb, + s-imgllw.ads, s-htable.ads, a-sequio.adb, g-trasym.ads, a-ngcoar.adb, + s-exnllf.adb, s-pack47.adb, s-arit64.ads, g-sercom-mingw.adb, + s-valrea.ads, g-socthi-mingw.adb, g-bytswa.adb, g-sehash.adb, + unchdeal.ads, a-sequio.ads, a-ngcoar.ads, s-exnllf.ads, a-wtdeio.adb, + s-pack47.ads, g-socthi-mingw.ads, a-excpol-abort.adb, a-ztgeau.adb, + g-bytswa.ads, g-sehash.ads, s-pack56.adb, a-wtdeio.ads, a-ngelfu.adb, + a-ztgeau.ads, a-cforse.adb, s-filatt.ads, a-stzfix.adb, a-cihase.adb, + s-pack56.ads, a-sfztio.ads, a-ngelfu.ads, s-trasym-dwarf.adb, + a-cforse.ads, a-ztfiio.adb, g-timsta.adb, a-stzfix.ads, a-cihase.ads, + a-ztfiio.ads, system-darwin-arm.ads: Move non-tasking runtime sources + to libgnat subdirectory. + +2017-09-08 Yannick Moy + + * sem_aux.adb, sem_aux.ads (Get_Called_Entity): New function to + return the entity associated with the call. + * sem_util.adb, sem_util.ads (Check_Function_Writable_Actuals): + Replace the internal Get_Function_Id with the new + Sem_Aux.Get_Called_Entity. + (Iterate_Call_Parameters): New + procedure to iterate on formals and actuals at the same time. + * sem_ch12.adb (Analyze_Subprogram_Instantiation): + Set SPARK_Mode from spec when set, for analysis + of instance. Restore after analysis of instance. + (Instantiate_Subprogram_Body): Set SPARK_Mode from body when + set, for analysis of body instance. Restored automatically at + the end of the subprogram. + * gnat1drv.adb (Adjust_Global_Switches): Set + Check_Validity_Of_Parameters to False in GNATprove mode. + * opt.ads (Check_Validity_Of_Parameters): Document switch to + set option. + +2017-09-08 Eric Botcazou + + * sem_util.adb (NCT_Tables_In_Use): Move to library level from... + (New_Copy_Tree): ...there. Reset the hash tables only if they + were used in the previous invocation. + * s-htable.adb: Fix typo. + +2017-09-08 Bob Duff + + * a-ssicst.adb (Open): Set File.Last_Op to the appropriate value. + +2017-09-08 Arnaud Charlet + + * sem_aggr.adb: minor style fix. + +2017-09-08 Bob Duff + + * sprint.adb (Write_Corresponding_Source): Ignore if there is + no current source file. + (Write_Name_With_Col_Check, Write_Name_With_Col_Check_Sloc): + Print something helpful in case N is invalid. + * sprint.ads: Minor comment fix. + +2017-09-08 Eric Botcazou + + * exp_aggr.adb: (Aggr_Assignment_OK_For_Backend): Add early return for + access types. + +2017-09-08 Bob Duff + + * par-prag.adb, sem_prag.adb, snames.ads-tmpl: Implement pragma + Ada_2020, along the same lines as the other Ada version pragmas. + +2017-09-08 Gary Dismukes + + * sem_ch12.adb: Minor typo fixes and reformatting. + +2017-09-08 Yannick Moy + + * sem_aggr.adb (Resolve_Record_Aggregate): + Rewrite bounds of aggregate subexpressions which may depend on + discriminants of the enclosing aggregate. + +2017-09-08 Yannick Moy + + * sem_ch5.adb: Prevent assertion failure on illegal code. + +2017-09-08 Yannick Moy + + * lib-xref-spark_specific.adb (Add_SPARK_Xrefs.Is_SPARK_Scope): Avoid + calling Renamed_Entity on an entity which cannot be a renaming. + +2017-09-08 Eric Botcazou + + * exp_aggr.adb: Add with & use clause for Urealp. + (Aggr_Assignment_OK_For_Backend): Accept (almost all) + elementary types instead of just discrete types. + * sem_eval.adb (Expr_Value): Deal with N_Null for access types. + * gcc-interface/trans.c (gnat_to_gnu) : + Be prepared for the FP zero value in the memset case. Add small + guard. + +2017-09-08 Eric Botcazou + + * s-htable.adb (Static_HTable.Reset): Use aggregate instead + of loop. + +2017-09-08 Hristian Kirtchev + + * exp_aggr.adb (Expand_Array_Aggregate): Use New_Copy_Tree instead + of New_Copy because the latter leaves the syntactic structure of + the tree inconsistent (a child is accessible through two parents) + and prevents proper replication of itypes by subsequent calls + to New_Copy_Tree. + * exp_ch4.adb (Expand_Concatenate): Use New_Copy_Tree instead of + New_Copy because the latter leaves the syntactic structure of the + tree inconsistent (a child is accessible through two parents) + and prevents proper replication of itypes by subsequent calls + to New_Copy_Tree. + * sem_util.adb (In_Subtree): New routine. + (New_Copy_Tree): Reimplemented. + * sem_util.ads (In_Subtree): New routine. + (New_Copy_Tree): Reimplemented. + +2017-09-08 Ed Schonberg + + * sem_ch13.adb (Resolve_Aspect_Expressions): The expression + for aspect Default_Value is a static scalar value, but it does + not freeze the type. Yhis allows for subsequent representation + clauses for the type. + +2017-09-08 Javier Miranda + + * sem_ch8.adb (Find_Direct_Name.Undefined): Do + not add entries into the undefined reference table when we are + compiling with errors ignored. + +2017-09-08 Ed Schonberg + + * sem_ch12.adb (Check_Formal_Packages): Do not apply conformance + check if the instance is within an enclosing instance body. The + formal package was legal in the enclosing generic, and is + legal in the enclosing instantiation. This optimisation may be + applicable elsewhere, and it also removes spurious errors that + may arise with on-the-fly processing of instantiations that + contain Inline_Always subprograms. + +2017-09-08 Vincent Celier + + * gnatcmd.adb: Disregard empty argument of GNAT driver. + +2017-09-08 Justin Squirek + + * checks.adb (Insert_Valid_Check): Manually decorate + the generated temporary for range valdity checks. + +2017-09-08 Eric Botcazou + + * usage.adb (Usage): Document new -gnatw.q/-gnatw.Q switches. + +2017-09-08 Justin Squirek + + * switch-c.adb (Scan_Front_End_Switches): Add new warning switch + case to handle underscore flags. + * warnsw.adb, warnsw.ads (Set_Underscore_Warning_Switch): Create + new procedure to handle underscores. + +2017-09-08 Javier Miranda + + * exp_ch4.adb (Expand_N_Op_Divide): Reordering code that handles + divisions with fixed point results to avoid generating twice + the runtime check on divide by zero. + * checks.adb (Apply_Divide_Checks): Ensure that operands are + not evaluated twice (once for their runtime checks and once for + their regular computation). + +2017-09-08 Yannick Moy + + * sem_prag.adb (Analyze_Part_Of): Add missing + return statements after issuing errors. Add detection of + out-of-order item and single concurrent type. + +2017-09-08 Nicolas Roche + + * gcc-interface/Makefile.in, a-extiti.ads, s-taprop-linux.adb, + s-osinte-solaris.adb, a-intnam.ads, s-osinte-solaris.ads, + s-tpobop.adb, s-intman-android.adb, s-tasinf.adb, s-tpobop.ads, + s-tasinf.ads, i-vxinco.adb, a-exetim-posix.adb, i-vxinco.ads, + a-astaco.adb, a-astaco.ads, s-tporft.adb, s-tpoaal.adb, a-taside.adb, + a-taside.ads, s-tpopsp-posix.adb, s-tasdeb.adb, s-tasdeb.ads, + s-tpoben.adb, a-dinopr.ads, s-inmaop-vxworks.adb, s-tpoben.ads, + s-interr-vxworks.adb, s-interr-dummy.adb, s-tassta.adb, + a-intnam-mingw.ads, s-tassta.ads, s-taasde.adb, a-stcoed.ads, + s-taasde.ads, s-osinte-darwin.adb, s-proinf.adb, s-taprop-dummy.adb, + s-osinte-darwin.ads, s-proinf.ads, s-linux.ads, a-intnam-linux.ads, + s-tasren.adb, s-tasren.ads, s-mudido.adb, g-semaph.adb, s-mudido.ads, + s-taprop-posix.adb, g-semaph.ads, s-osinte-mingw.ads, s-vxwork-x86.ads, + s-tposen.adb, s-linux-sparc.ads, s-taprop-vxworks.adb, s-tasini.adb, + s-tposen.ads, s-tasini.ads, a-etgrbu.ads, s-interr-hwint.adb, + s-osinte-linux.ads, s-taprop.ads, s-tasque.adb, s-tasque.ads, + s-taenca.adb, s-taspri-vxworks.ads, s-taenca.ads, a-dynpri.adb, + s-tpopsp-solaris.adb, a-dynpri.ads, s-taprop-hpux-dce.adb, + a-interr.adb, a-intnam-freebsd.ads, s-tarest.adb, a-interr.ads, + s-intman-susv3.adb, a-synbar.adb, a-intnam-dummy.ads, s-tadeca.adb, + s-osinte-vxworks.adb, s-tarest.ads, s-taskin.adb, a-synbar.ads, + s-taspri-hpux-dce.ads, s-tadeca.ads, s-osinte-vxworks.ads, + s-taskin.ads, s-intman-solaris.adb, a-sytaco.adb, s-vxwext-kernel.adb, + s-mudido-affinity.adb, a-sytaco.ads, s-vxwext-kernel.ads, s-taprob.adb, + s-intman-mingw.adb, s-taprob.ads, s-osinte-kfreebsd-gnu.ads, + s-osinte-dummy.ads, s-osinte-gnu.adb, s-osinte-rtems.adb, s-interr.adb, + s-inmaop.ads, s-vxwext-rtp.adb, s-osinte-gnu.ads, s-osinte-rtems.ads, + a-synbar-posix.adb, s-interr.ads, s-taspri-posix-noaltstack.ads, + s-vxwext-rtp.ads, a-synbar-posix.ads, a-extiin.ads, s-osinte-posix.adb, + s-tpinop.adb, s-tasres.ads, s-tpinop.ads, a-disedf.ads, a-diroro.ads, + s-linux-alpha.ads, a-tasatt.adb, s-solita.adb, a-intnam-solaris.ads, + a-tasatt.ads, s-solita.ads, s-tasinf-solaris.adb, s-tasinf-solaris.ads, + s-vxwork-arm.ads, s-tpopsp-posix-foreign.adb, s-intman-dummy.adb, + s-intman.ads, s-stusta.adb, s-stusta.ads, s-intman-posix.adb, + s-tpopsp-vxworks.adb, s-inmaop-dummy.adb, s-taspri-mingw.ads, + a-intnam-darwin.ads, s-osinte-aix.adb, s-osinte-dragonfly.adb, + s-osinte-aix.ads, s-tasinf-mingw.adb, s-osinte-dragonfly.ads, + s-linux-hppa.ads, s-osinte-x32.adb, s-inmaop-posix.adb, + s-tasinf-mingw.ads, s-intman-vxworks.adb, s-linux-mips.ads, + s-intman-vxworks.ads, s-osinte-android.adb, s-tasinf-linux.adb, + s-osinte-android.ads, s-vxwork-ppc.ads, s-tasinf-linux.ads, + a-dispat.adb, a-dispat.ads, s-tadert.adb, g-thread.adb, s-tadert.ads, + g-thread.ads, a-intnam-hpux.ads, s-linux-android.ads, s-tataat.adb, + a-exetim.ads, s-tataat.ads, a-reatim.adb, a-reatim.ads, thread.c, + g-boubuf.adb, s-osinte-freebsd.adb, g-boubuf.ads, s-osinte-freebsd.ads, + s-tasuti.adb, s-taspri-dummy.ads, a-exetim-mingw.adb, s-linux-x32.ads, + s-tasuti.ads, g-signal.adb, a-exetim-mingw.ads, s-interr-sigaction.adb, + g-signal.ads, s-osinte-hpux.ads, a-intnam-vxworks.ads, + s-osinte-hpux-dce.adb, s-taspri-posix.ads, s-osinte-hpux-dce.ads, + s-tasinf-vxworks.ads, g-tastus.ads, s-tpopsp-tls.adb, + s-taprop-solaris.adb, a-retide.adb, a-exetim-darwin.adb, a-retide.ads, + s-vxwext.adb, s-vxwext.ads, a-rttiev.adb, a-rttiev.ads, g-boumai.ads, + a-exetim-default.ads, s-taprop-mingw.adb, s-taspri-solaris.ads, + a-intnam-aix.ads: Move libgnarl sources to libgnarl subdir. + +2017-09-08 Arnaud Charlet + + * doc/share/conf.py, doc/share/latex_elements.py, + doc/share/ada_pygments.py, doc/Makefile: Improve support for Ada + highlighting. + +2017-09-08 Arnaud Charlet + + * gnat_rm.texi, gnat_ugn.texi, + doc/gnat_ugn/the_gnat_compilation_model.rst, + doc/gnat_ugn/getting_started_with_gnat.rst, + doc/gnat_ugn/inline_assembler.rst, + doc/gnat_ugn/building_executable_programs_with_gnat.rst, + doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, + doc/gnat_ugn/about_this_guide.rst, + doc/gnat_ugn/platform_specific_information.rst, + doc/gnat_ugn/example_of_binder_output.rst, + doc/gnat_ugn/gnat_and_program_execution.rst, + doc/gnat_ugn/gnat_utility_programs.rst, + doc/gnat_rm/implementation_of_specific_ada_features.rst, + doc/gnat_rm/interfacing_to_other_languages.rst, + doc/gnat_rm/implementation_defined_aspects.rst, + doc/gnat_rm/intrinsic_subprograms.rst, + doc/gnat_rm/implementation_defined_characteristics.rst, + doc/gnat_rm/implementation_advice.rst, + doc/gnat_rm/implementation_defined_attributes.rst, + doc/gnat_rm/compatibility_and_porting_guide.rst, + doc/gnat_rm/standard_library_routines.rst, + doc/gnat_rm/the_gnat_library.rst, + doc/gnat_rm/implementation_defined_pragmas.rst, + doc/gnat_rm/representation_clauses_and_pragmas.rst, + doc/gnat_rm/standard_and_implementation_defined_restrictions.rst, + doc/gnat_rm/obsolescent_features.rst, + doc/gnat_rm/about_this_guide.rst, + doc/gnat_rm/the_implementation_of_standard_i_o.rst, + doc/gnat_rm/implementation_of_ada_2012_features.rst, + doc/gnat_ugn.rst, + doc/gnat_rm.rst: Update documentation. + +2017-09-08 Arnaud Charlet + + * s-dwalin.ads, s-dwalin.adb, s-trasym-dwarf.adb, s-objrea.ads, + s-objrea.adb, s-tsmona-linux.adb, s-tsmona-mingw.adb: New. + * gcc-interface/Makefile.in: Enable s-trasym-dwarf.adb on x86*linux. + +2017-09-08 Bob Duff + + * s-ststop.ads, s-ststop.adb, rtsfind.ads (String_Input_Tag): + New routine to read the Tag robustly. + * exp_attr.adb (Input): Change the expansion of 'Input, + in the class-wide case, to call String_Input_Tag instead of + String_Input_Blk_IO. + +2017-09-08 Arnaud Charlet + + * s-rident.ads (Restriction_Id): reorder enum + literals, so that Pure_Barriers is no longer in range of the + Cunit_Boolean_Restrictions subtype. + +2017-09-08 Nicolas Roche + + * a-taster.ads, a-taster.adb: Move to libgnarl + * gcc-interface/Makefile.in: Remove obsolete targets. Code cleanups. + Add support for files in libgnarl. + +2017-09-08 Ed Schonberg + + * exp_ch4.adb (Expand_N_Type_Conversion): Do not apply + accessibility check to an interface conversion, whose purpose + is to perform a pointer adjustment in a dispatching call. + * exp_ch6.adb (Expand_Call_JHelper): Add accessibility checks + when the actual is a construct that involves a dereference of an + expression that includes a formal of the enclosing subprogram, + In such cases, the accessibility level of the actual is that of + the corresponding formal, which is passed in as an additional + actual in the outer call. + +2017-09-08 Bob Duff + + * exp_intr.adb (Add_Source_Info): Do not decode + file names; they were not encoded in the first place. + +2017-09-08 Bob Duff + + * a-tags.adb (Internal_Tag): Unsuppress checks, so we get + exceptions instead of crashes. Check for absurdly long strings + and empty strings. Empty strings cause trouble because they can + have super-null ranges (e.g. 100..10), which causes Ext_Copy to + be empty, which causes an array index out of bounds. + * s-ststop.adb (Input): Unsuppress checks, so we get exceptions + instead of crashes. + +2017-09-08 Arnaud Charlet + + * sem_util.adb (Is_CCT_Instance): allow use in + the context of protected types. + +2017-09-08 Arnaud Charlet + + * a-tigeli.adb: minor remove extra whitespace. + +2017-09-08 Gary Dismukes + + * par-ch4.adb: Reformatting of an error message. + +2017-09-08 Javier Miranda + + * sem_ch3.adb (Resolve_Name): Under ASIS mode analyze overloaded + identifiers to ensure their correct decoration of names on + aspect expressions. + +2017-09-08 Yannick Moy + + * exp_attr.adb (Expand_Loop_Entry_Attribute): Do + not skip a loop coming from source which is rewritten into a loop. + +2017-09-08 Ed Schonberg + + * freeze.adb (Wrap_Imported_Subprogram): Indicate that the + wrapper has convention Ada, to prevent spurious warnings on + unconstrained array parameters. + +2017-09-08 Eric Botcazou + + * sem_prag.adb (Check_Variant): Use First_Non_Pragma/Next_Non_Pragma. + (Analyze_Pragma) : Likewise. + +2017-09-08 Eric Botcazou + + * sem_ch6.adb (Freeze_Expr_Types): Rename Spec_Id into Def_Id. + +2017-09-08 Arnaud Charlet + + * exp_intr.adb (Append_Entity_Name): Move to ... + * sem_util.ads, sem_util.adb: ... here to share it. + (Subprogram_Name): New subprogram, to compute the name of the enclosing + subprogram/entity. + * errutil.adb (Error_Msg): Fill new field Node. + * erroutc.ads (Subprogram_Name_Ptr): New. + (Error_Msg_Object): New field Node. + * erroutc.adb (dmsg, Output_Msg_Text): Take new field Node into account. + * errout.adb (Error_Msg): New variant with node id parameter. + Fill new parameter Node when emitting messages. Revert previous + changes for Include_Subprogram_In_Messages. + * sem_ch5.adb (Check_Unreachable_Code): Supply Node parameter when + generating warning message. + +2017-09-08 Ed Schonberg + + * par-ch4.adb (P_Iterated_Component_Association): Place construct + under -gnat2020 flag, given that it is a future feature of + the language. + * sem_aggr.adb (Resolve_Iterated_Component_Association): Mark + defining identifier as referenced to prevent spurious warnings: + corresponding loop is expanded into one or more loops whose + variable has the same name, and the expression uses those names + and not the original one. + +2017-09-08 Hristian Kirtchev + + * sem_elab.adb (Check_A_Call): Do not consider + references to internal variables for SPARK semantics. + +2017-09-08 Arnaud Charlet + + * inline.adb (In_Package_Spec): refine type of + the parameter from Node_Id to Entity_Id. + +2017-09-08 Justin Squirek + + * exp_ch5.adb (Expand_Formal_Container_Loop): + Reset the scope of the loop parameter after it is reanalyzed. + +2017-09-08 Eric Botcazou + + * sem_util.ads (Set_Rep_Info): New inline procedure. + * sem_util.adb (Set_Rep_Info): Implement it. + * sem_ch3.adb (Process_Subtype): If the case of a constraint present, + always copy the representation aspects onto the subtype. + +2017-09-08 Georges-Alex Jaloyan + + * g-dynhta.adb, g-dynhta.ads (Get_First_Key, Get_Next_key): + Correction of the return type from access type to option type. + (Simple_HTable): Moving the Instance_Data to ads file. + +2017-09-08 Yannick Moy + + * sem_prag.adb: Use System.Case_Util.To_Lower to simplify code. + +2017-09-08 Arnaud Charlet + + * opt.ads (Include_Subprogram_In_Messages): New variable. + * errout.ads (Current_Subprogram_Ptr): New variable. + * errout.adb (Error_Msg): Prepend current subprogram info + in messages if Include_Subprogram_In_Messages is set. + * sem_util.adb (elab code): Initialize Current_Subprogram_Ptr to + Current_Subprogram. + * gnat1drv.adb (Adjust_Global_Switches): Set + Include_Subprogram_In_Messages when -gnatdJ is set. + * debug.adb: Document and reserve -gnatdJ. + +2017-09-08 Georges-Axel Jaloyan + + * g-dynhta.adb, g-dynhta.ads (Get_First_Key, Get_Next_Key): New + functions to iterate over simple hastables. + (Load_Factor_HTable): Remove obsolete and inefficient implementation. + +2017-09-08 Javier Miranda + + * exp_ch6.adb (Unqual_BIP_Function_Call): Adding + missing checks on the presence of Entity() before checking the + entity attributes. + +2017-09-08 Eric Botcazou + + * sem_ch6.adb (Analyze_Expression_Function): Reorder some + statements, use local variable and remove unnecessary processing. + +2017-09-08 Javier Miranda + + * exp_ch6.ads (Make_Build_In_Place_Iface_Call_In_Allocator): New + subprogram. + (Make_Build_In_Place_Iface_Call_In_Anonymous_Context): New subprogram. + (Make_Build_In_Place_Iface_Call_In_Object_Declaration): New + subprogram. + (Unqual_BIP_Iface_Function_Call): New subprogram. + * exp_ch6.adb (Replace_Renaming_Declaration_Id): New + subprogram containing code that was previously inside + Make_Build_In_Place_Call_In_Object_Declaration since it is also + required for one of the new subprograms. + (Expand_Actuals): + Invoke Make_Build_In_Place_Iface_Call_In_Anonymous_Context + (Expand_N_Extended_Return_Statement): Extend the + cases covered by an assertion on expected BIP object + declarations. + (Make_Build_In_Place_Call_In_Assignment): + Removing unused code; found working on this ticket. + (Make_Build_In_Place_Call_In_Object_Declaration): Move the code + that replaces the internal name of the renaming declaration + into the new subprogram Replace_Renaming_Declaration_Id. + (Make_Build_In_Place_Iface_Call_In_Allocator): New subprogram. + (Make_Build_In_Place_Iface_Call_In_Anonymous_Context): + New subprogram. + (Make_Build_In_Place_Iface_Call_In_Object_Declaration): New + subprogram. + (Unqual_BIP_Iface_Function_Call): New subprogram. + * exp_ch3.adb (Expand_N_Object_Declaration): Invoke the new + subprogram Make_Build_In_Place_Iface_Call_In_Object_Declaration. + * exp_attr.adb (Expand_N_Attribute_Reference): Invoke the new + subprogram Make_Build_In_Place_Iface_Call_In_Anonymous_Context. + * exp_ch4.adb (Expand_Allocator_Expression): Invoke the new + subprogram Make_Build_In_Place_Iface_Call_In_Allocator. + (Expand_N_Indexed_Component): Invoke the new subprogram + Make_Build_In_Place_Iface_Call_In_Anonymous_Context. + (Expand_N_Selected_Component): Invoke the new subprogram + Make_Build_In_Place_Iface_Call_In_Anonymous_Context. + (Expand_N_Slice): Invoke the new subprogram + Make_Build_In_Place_Iface_Call_In_Anonymous_Context. + * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): + Invoke the new subprogram + Make_Build_In_Place_Iface_Call_In_Anonymous_Context. + +2017-09-08 Javier Miranda + + * exp_disp.adb (Expand_Interface_Conversion): Fix handling of + access to interface types. Remove also the accessibility check. + +2017-09-08 Eric Botcazou + + * sem_ch6.adb (Freeze_Expr_Types): Really freeze + all the types that are referenced by the expression. + (Analyze_Expression_Function): Call Freeze_Expr_Types for + a completion instead of manually freezing the type of the + expression. + (Analyze_Subprogram_Body_Helper): Do not call Freeze_Expr_Types here. + +2017-09-08 Ed Schonberg + + * exp_prag.adb (Replace_Discriminals_Of_Protected_Op): + New procedure, auxiliary to Expand_Pragma_Check, to handle + references to the discriminants of a protected type within a + precondition of a protected operation. This is needed because + the original precondition has been analyzed in the context of + the protected declaration, but in the body of the operation + references to the discriminants have been replaved by references + to the discriminants of the target object, and these references + are only created when expanding the protected body. + +2017-09-08 Yannick Moy + + * sem_prag.adb (Analyze_Pragma): Issue more precise error messages on + Loop_Variant. + +2017-09-08 Ed Schonberg + + * exp_attr.adb (Build_Record_VS_Func): If the record is an + unchecked union, do not emit checks for its (non-existent) + discriminants, or for variant parts that depend on them. + +2017-09-08 Justin Squirek + + * sem_ch4.adb (Find_Equality_Types.Try_One_Interp, + Find_Comparison_Type.Try_One_Interp): Add check for generic + instances. + +2017-09-08 Arnaud Charlet + + * sem_ch3.adb, layout.adb, layout.ads, exp_attr.adb, debug.adb, + exp_pakd.adb, sem_prag.adb, gnat1drv.adb, targparm.adb, targparm.ads, + repinfo.adb, exp_ch6.adb, exp_aggr.adb, sem_eval.adb, sem_ch13.adb, + exp_ch3.adb: Remove references to Frontend_Layout_On_Target and + remaining references to AAMP_On_Target. + +2017-09-08 Ed Schonberg + + * style.adb: Fix typo. + +2017-09-08 Javier Miranda + + * einfo.adb (Underlying_Type): Add missing support for class-wide + types that come from the limited view. + * exp_attr.adb (Attribute_Address): Check class-wide type + interfaces using the underlying type to handle limited-withed + types. + (Attribute_Tag): Check class-wide type interfaces using + the underlying type to handle limited-withed types. + +2017-09-08 Ed Schonberg + + * exp_ch5.adb (Expand_Predicated_Loop): Handle properly a loop + over a subtype of a type with a static predicate, taking into + account the predicate function of the parent type and the bounds + given in the loop specification. + * sem_ch3.adb (Inherit_Predicate_Flags): For qn Itype created for + a loop specification that is a subtype indication whose type mark + is a type with a static predicate, inherit predicate function, + used to build case statement for rewritten loop. + +2017-09-08 Justin Squirek + + * lib-load.adb: Modify printing of error message to exclude file + line number. + +2017-09-08 Arnaud Charlet + + * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): + don't inline subprograms declared in both visible and private + parts of a package. + (In_Package_Spec): previously In_Package_Visible_Spec; now + detects subprograms declared both in visible and private parts + of a package spec. + +2017-09-08 Ed Schonberg + + * exp_util.adb (Build_Invariant_Procedure_Declaration): If + the type is an anonymous array in an object declaration, whose + component type has an invariant, use the object declaration + as the insertion point for the invariant procedure, given that + there is no explicit type declaration for an anonymous array type. + +2017-09-08 Bob Duff + + * a-cbprqu.ads, a-cbdlli.adb: Suppress warnings. + +2017-09-08 Bob Duff + + * a-strfix.adb (Trim): Compute Low and High only if needed. + +2017-09-08 Justin Squirek + + * lib-load.adb (Load_Main_Source): Add error output in the case a + source file is missing. + +2017-09-08 Bob Duff + +PR ada/80888 + * a-textio.adb, a-witeio.adb, a-ztexio.adb (Set_WCEM): Use + Default_WCEM by default (i.e. if the encoding is not specified + by the Form string). + +2017-09-08 Bob Duff + + * s-trasym.ads (Hexa_Traceback): If + Suppress_Hex is True, print "..." instead of a hexadecimal + address. + * s-trasym.adb: Ignore No_Hex in this version. + Misc cleanup. + +2017-09-08 Bob Duff + + * debug.adb: Minor reformatting. + +2017-09-08 Bob Duff + + * a-cbdlli.adb, a-cohama.adb, a-cohase.adb (Copy): Rewrite the + code so it doesn't trigger an "uninit var" warning. + +2017-09-08 Nicolas Roche + + * s-hibaen.ads: Remove obsolete file. + +2017-09-08 Arnaud Charlet + + * a-locale.ads: Add comment explaining the state of this package. + +2017-09-08 Arnaud Charlet + + * sem_util.adb (Is_CCT_Instance): Allow calls in the context + of packages. + * sem_prag.ads, sem_prag.adb (Find_Related_Declaration_Or_Body): + allow calls in the context of package spec (for pragma + Initializes) and bodies (for pragma Refined_State). + +2017-09-08 Bob Duff + + * checks.adb (Insert_Valid_Check): Copy the Do_Range_Check flag to the + new Exp. + +2017-09-08 Eric Botcazou + + * debug.adb (dA): Adjust comment. + * gnat1drv.adb (Gnat1drv): Likewise. + * opt.ads (List_Representation_Info_Extended): New variable. + * repinfo.adb (List_Record_Info): Split implementation into... + (Compute_Max_Length): ...this. Recurse on records if requested. + (List_Record_Layout): Likewise. + * switch-c.adb (Scan_Front_End_Switches) <'R'>: Use case + statement, accept '0' and set List_Representation_Info_Extended + on 'e'. + * usage.adb (Usage): Document new -gnatRe variant. + +2017-09-08 Ed Schonberg + + * sem_prag.adb (Analyze_Pragma, case Default_Storage_Pool): + Do not save the given entity in the global variable Default_Pool + if the pragma appears within a generic unit. + +2017-09-08 Bob Duff + + * errout.adb (Delete_Warning): Do not + decrement Warnings_Treated_As_Errors. This is called before + Warnings_Treated_As_Errors has been incremented to account for + this warning. Decrementing it here can lead to negative values + of Warnings_Treated_As_Errors, raising Constraint_Error in + checks-on builds, and causing the compiler to return an error + code in checks-off builds. + +2017-09-08 Arnaud Charlet + + * sem_util.ads, sem_util.adb (Is_CCT_Instance): Only expect + entities of named concurrent types as Ref_Id and not of anonymous + concurrent objects (because callers already know when a conversion + is necessary and can easily do it); also, do not expect protected + types or protected objects as Context_Id (because no flow-related + SPARK pragmas are attached there); reflect these changes in a + more precise comment. + +2017-09-08 Olivier Hainque + + * g-altive.ads: Add documentation. + +2017-09-08 Bob Duff + + * sem_util.ads, debug.adb: Minor comment fix. + * erroutc.ads: Comment fix. + +2017-09-08 Ed Schonberg + + * sem_ch12.adb (Validate_Array_Type_Instance): Suppress check + for compatibility of component types of formal and actual in an + instantiation of a child unit, when the component type of the + formal is itself a formal of an enclosing generic. + +2017-09-08 Arnaud Charlet + + * sem_util.ads, sem_util.adb (Is_CCT_Instance): moved from + sem_prag.adb to make it available for GNATprove; for concurrent + types replace custom scope climbing with Scope_Same_Or_Within; for + single concurrent objects add scope climbing (with Scope_Within), + which was not there (that's the primary semantic change of this + commit); also, when comparing a single concurrent object with + its corresponding concurrent type rely on equality of types, + not of objects (because that's simpler to code). + * sem_prag.adb (Is_CCT_Instance): lifted to sem_util.ads. + (Analyze_Global_Item): adjust special-casing of references to the + current instance of a concurrent unit in the Global contracts + of task types and single tasks objects; similar for references + in the protected operations and entries of protected types and + single protected objects (in all these cases the current instance + behaves as an implicit parameter and must not be mentioned in + the Global contract). + +2017-09-08 Arnaud Charlet + + * exp_ch6.adb (Expand_Call_Helper): Introduce temporary for + function calls returning a record within a subprogram call, + for C generation. + +2017-09-08 Ed Schonberg + + * sem_ch8.adb (Find_Expanded_Name): Handle properly an expanded + name that designates the current instance of a child unit in its + own body and appears as the prefix of a reference to an entity + local to the child unit. + * exp_ch6.adb, freeze.adb, sem_ch3.adb, sem_prag.adb, sem_util.adb: + Minor reformatting. + +2017-09-08 Yannick Moy + + * sem_res.adb (Resolve_Equality_Op): Do not warn on comparisons that + may be intentional. + +2017-09-08 Tristan Gingold + + * sem_warn.adb (Check_Unused_Withs): Remove test that disabled + warnings on internal units in configurable run time mode. + +2017-09-08 Bob Duff + + * sem_ch3.adb (Build_Derived_Private_Type): Inherit + representation items from interfaces that the derived type + implements, not just from the parent type. + * sem_util.ads, sem_util.adb (Abstract_Interface_List): Change + this to return an empty list when there are no interfaces. + * einfo.ads, sem_ch13.adb: Minor comment fixes. + * sem_attr.adb: Minor comment fix. + +2017-09-08 Doug Rupp + + * sigtramp-vxworks.c [i386]: Adjust the kernel context for + x86-vx7. + +2017-09-08 Hristian Kirtchev + + * exp_ch4.adb (Expand_N_Allocator): Generate a + call to Allocate_Any_Controlled when the allocation does not + require any initialization. + +2017-09-08 Hristian Kirtchev + + * sem_util.adb (Copy_Node_With_Replacement): + Update the Renamed_Object field of a replicated object renaming + declaration. + +2017-09-08 Patrick Bernardi + + * exp_ch9.adb (Is_Pure_Barrier): Allow type + conversions and components of objects. Simplified the detection + of the Count attribute by identifying the corresponding run-time + calls. + +2017-09-08 Yannick Moy + + * exp_ch9.adb, exp_disp.adb, repinfo.adb, sem_ch12.adb, sem_dim.adb, + sem_type.adb, sinfo.ads: Minor reformatting. + +2017-09-08 Ed Schonberg + + * freeze.adb (Has_Incomplete_Compoent): New predicate, subsidiary + of Freeze_Profile, used to inhibit the freezing of the profile + of an expression function declared within a nested package, when + some type in the profile depends on a private type declared in + an enclosing package. + +2017-09-08 Bob Duff + + * gnat1drv.adb (Gnat1drv): Do not set the Force_ALI_Tree_File flag in + the subunit case. It's still OK to set it in the "missing subunits" + case, because that won't cause the obsolete .ali files that cause + confusion. + +2017-09-08 Bob Duff + + * sinput-l.adb: Remove unused "with Unchecked_Conversion;". It's + unclear why this didn't cause a warning. + * a-uncdea.ads, a-unccon.ads: Add "Ada." to names in the + pragmas. It's unclear why this didn't cause an error. + +2017-09-08 Hristian Kirtchev + + * exp_spark.adb (Expand_SPARK_N_Object_Renaming_Declaration): + Reimplemented. + (Expand_SPARK_Potential_Renaming): Code clean up. + * sem_prag.adb (Analyze_Initialization_Item): Add a guard in case + the item does not have a proper entity. + (Analyze_Input_Item): Add a guard in case the item does not have a + proper entity. + (Collect_States_And_Objects): Include object renamings in the + items being collected. + (Resolve_State): Update the documentation of this routine. + * sem_util.adb (Entity_Of): Add circuitry to handle + renamings of function results. + (Remove_Entity): New routine. + (Remove_Overloaded_Entity): Take advantage of factorization. + * sem_util.ads (Entity_Of): Update the documentation + of this routine. + (Remove_Entity): New routine. + (Remove_Overloaded_Entity): Update the documentation of this + routine. + +2017-09-08 Eric Botcazou + + * repinfo.adb (List_Record_Info): During first loop, + do not override the normalized position and first bit + if they have already been set. Move fallback code + for the packed case to the case where it belongs. + * sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): + Also adjust the normalized position of components. + (Adjust_Record_For_Reverse_Bit_Order_Ada_95): Likewise. + +2017-09-08 Ed Schonberg + + * exp_disp.adb (Make_DT, Set_All_DT_Position): Handle properly + the placement of a primitive operation O that renames an operation + R declared in an inner package, and which is thus not a primitive + of the dispatching type of O. In this case O is a new primitive + and does not inherit its dispatch table position from R (which + has none). + +2017-09-08 Ed Schonberg + + * sem_dim.adb (Analyze_Dimension_If_Expression, + Analyze_Dimension_Case_Expression): new subprograms to verify + the dimensional correctness of Ada2012 conditional expressions, + and set properly the dimensions of the construct. + * sem_res.adb (Resolve_If_Expression, Resolve_Case_Expression)): + call Analyze_Dimension. + +2017-09-08 Ed Schonberg + + * sem_type.adb (Expand_Interface_Conversion): Prevent an infinite + loop on an interface declared as a private extension of another + synchronized interface. + +2017-09-08 Ed Schonberg + + * sem_ch12.adb (Check_Generic_Parent): New procedure within + Analyze_Associations, to handle actual packages that depend on + previous instances. If a package IAP that is an instantiation is + used as an actual in a subsequent instantiation SI in the same + scope, and IAP has a body, IAP must be frozen before SI. If + the generic parent of IAP is itself declared in a previous + instantiation in the same scope, that instantiation must also + be frozen before SI. + (Install_Body): Prevent double insertion of freeze node for + instance. + +2017-09-08 Hristian Kirtchev + + * sem_prag.adb (Resolve_State): Update the + comment on documentation. Generate a reference to the state once + resolution takes place. + +2017-09-08 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specifications, case + Linker_Section): If the aspect applies to an object declaration + with explicit initialization, do not delay the freezing of the + object, to prevent access-before-elaboration in the generated + initialization code. + +2017-09-08 Ed Schonberg + + * a-wtdeio.adb (Put, all versions): Use Long_Long_Integer + (Integer_Value (Item)) when the size of the fixed decimal type + is larger than Integer. + +2017-09-07 Eric Botcazou + + PR ada/82127 + * gcc-interface/decl.c (copy_and_substitute_in_layout): Put the fields + in order of increasing position in more cases. + +2017-09-07 Yannick Moy + + * a-exetim-mingw.ads: Add contract Global=>null + on all operations that are modeled as having no read or write + of global variables in SPARK. + +2017-09-07 Raphael Amiard + + * a-chtgop.adb, a-chtgop.ads (Generic_Iteration_With_Position): Added + to Hmaps.Generic_Ops. + * a-cohama.adb (Ada.Containers.Hmaps.Iterate): Pass proper position in + cursors. + * a-cihama.adb (Ada.Containers.Indefinite_Hmaps.Iterate): Pass pos in + cursors. + * a-cohase.adb (Ada.Containers.Hashed_Sets.Iterate): Pass proper + position in cursors. + +2017-09-07 Javier Miranda + + * sem_elab.adb (Check_Task_Activation): Adding switch -gnatd.y to + allow disabling the generation of implicit pragma Elaborate_All + on task bodies. + +2017-09-07 Javier Miranda + + * exp_disp.adb (Make_Tags): Avoid suffix counter + in the external name of the elaboration flag. Required to fix + the regressions introduced by the initial version of this patch. + +2017-09-07 Bob Duff + + * sem_ch6.adb (Analyze_Function_Return): Do not + insert an explicit conversion to force the displacement of the + "this" pointer to reference the secondary dispatch table in the + case where the return statement is returning a raise expression, + as in "return raise ...". + +2017-09-07 Arnaud Charlet + + * sem_disp.adb (Is_User_Defined_Equality): Removed procedure. + * sem_util.ads, sem_util.adb (Is_User_Defined_Equality): Copied + procedure from sem_disp.adb. + * sem_ch12.ads (Get_Unit_Instantiation_Node): rename Package + with Unit. + * sem_ch12.adb (Get_Unit_Instantiation_Node): function extended to + return the instantiation node for subprograms. Update references + to Get_Unit_Instantiation_Node. + * sem_ch7.adb (Install_Parent_Private_Declarations): update + reference to Get_Unit_Instantiation_Node. + * exp_dist.adb (Build_Package_Stubs): update reference to + Get_Unit_Instantiation_Node. + * sem_ch9.adb: minor typo in comment. + * lib-xref-spark_specific.adb + (Traverse_Declaration_Or_Statement): traverse into task type + definition. + +2017-09-07 Ed Schonberg + + * sem_dim.adb (Analyze_Dimension_Type_Conversion): New procedure + to handle properly various cases of type conversions where the + target type and/or the expression carry dimension information. + (Dimension_System_Root); If a subtype carries dimension + information, obtain the source parent type that carries the + Dimension aspect. + +2017-09-07 Dmitriy Anisimkov + + * g-socket.adb, g-socket.ads (GNAT.Sockets.To_Ada): New routine. + +2017-09-07 Ed Schonberg + + * exp_attr.adb (Expand_N_Attribute_Reference, case 'Constrained): + If the prefix is a reference to an object, rewrite it as an + explicit dereference, as required by 3.7.2 (2) and as is done + with most other attributes whose prefix is an access value. + +2017-09-07 Bob Duff + + * par-ch13.adb: Set the Inside_Depends flag if we are inside a + Refined_Depends aspect. + * par-ch2.adb: Set the Inside_Depends flag if we are inside a + Refined_Depends pragma. + * scans.ads: Fix documentation of Inside_Depends flag. + * styleg.adb, styleg.ads: Minor reformatting and comment fixes. + +2017-09-07 Hristian Kirtchev + + * exp_ch7.adb (Insert_Actions_In_Scope_Around): + Account for the case where the are no lists to insert, but the + secondary stack still requires management. + * a-chtgop.adb, a-cihama.adb, a-cohama.adb, a-cohase.adb, a-tags.adb, + comperr.adb, einfo.adb, exp_aggr.adb, exp_ch3.adb, exp_disp.adb, + lib-xref.adb, lib-xref-spark_specific.adb, sem_ch12.adb, sem_ch13.adb, + sem_ch6.adb, sem_dim.adb, sem_dim.ads, sem_elab.adb, sem_prag.adb: + Minor reformatting. + +2017-09-07 Vincent Celier + + * clean.adb: Do not get the target parameters before calling + gprclean. + +2017-09-07 Nicolas Roche + + * s-osinte-solaris-posix.ads: Removed. + +2017-09-07 Arnaud Charlet + + * sem_prag.adb (Collect_States_And_Objects): Detect also instances of + single concurrent objects. + +2017-09-07 Javier Miranda + + * s-regexp.ads: Fix documentation of the globbing grammar. + +2017-09-07 Gary Dismukes + + * a-tags.ads, einfo.ads, exp_disp.ads: Minor reformatting. + +2017-09-07 Arnaud Charlet + + * gnat1drv.adb (Gnat1drv): Enable pragma Ignore_Pragma (Global) + in CodePeer mode, to support more legacy code automatically. + +2017-09-07 Ed Schonberg + + * exp_disp.adb (Replace_Formals): If thr formal is classwide, + and thus not a controlling argument, preserve its type after + rewriting because it may appear in an nested call with a classwide + parameter. + +2017-09-07 Arnaud Charlet + + * comperr.adb (Delete_SCIL_Files): Handle case of + N_Package_Instantiation. + +2017-09-07 Ed Schonberg + + * sem_ch10.adb (Remove_Private_With_Clause): If a private with + clause for a unit U appears in a context that includes a regular + with_clause on U, rewrite the redundant private clause into a null + statement, rather than removing it altogether from the context, + so that ASIS tools can reconstruct the original source. + +2017-09-07 Ed Schonberg + + * sem_ch13.adb (Check_Aspect_At_Freeze_Point): The expression + for aspect Small can be of any real type (not only a universal + real literal) as long as it is a static constant. + +2017-09-07 Thomas Quinot + + * par_sco.adb: Minor reformatting. + +2017-09-07 Arnaud Charlet + + * s-parame-ae653.ads: Removed. + +2017-09-07 Nicolas Roche + + * s-traces-default.adb, s-trafor-default.adb, s-trafor-default.ads, + s-traces.adb, s-traces.ads, s-tratas-default.adb, s-tfsetr-default.adb, + s-tfsetr-vxworks.adb, s-tratas.adb, s-tratas.ads, s-tasuti.adb, + s-parame-hpux.ads, s-tassta.adb, s-taasde.adb, s-tasren.adb, + s-taprob.adb, a-caldel.adb, s-parame.ads, Makefile.rtl, s-tpobop.adb, + s-taenca.adb, s-parame-vxworks.ads: Remove support for System.Traces. + +2017-09-07 Yannick Moy + + * a-ngelfu.ads Add preconditions to all functions + listed in Ada RM A.5.1(19-33) as having constraints on inputs. + +2017-09-07 Arnaud Charlet + + * lib-xref.adb (Generate_Reference): ignore + references to entities which are Part_Of single concurrent + objects. + +2017-09-07 Eric Botcazou + + * sem_ch7.adb (Hide_Public_Entities): Add paragraph to main + comment. + +2017-09-07 Arnaud Charlet + + * a-taside.adb (Activation_Is_Complete): Raise Program_Error if + Null_Task_Id is passed. + +2017-09-07 Javier Miranda + + * einfo.ads, einfo.adb (Access_Disp_Table_Elab_Flag): New + attribute. Defined for record types and subtypes. + * exp_ch3.ads (Init_Secondary_Tags): Adding new formal + (Init_Tags_List) to facilitate generating separate code in the + IP routine to initialize the object components and for completing + the elaboration of dispatch tables. + * exp_ch3.adb (Build_Init_Procedure): Improve the code + generated in the IP routines by means of keeping separate + the initialization of the object components from the + initialization of its dispatch tables. (Init_Secondary_Tags): + Adding new formal (Init_Tags_List) and adjusting calls to + Ada.Tags.Set_Dynamic_Offset_To_Top since it has a new formal; + adjusting also calls to Ada.Tags.Register_Interface_Offset + because the type of one of its formals has been changed. + * a-tags.ads, a-tags.adb (Register_Interface_Offset): Profile + modified. Instead of receiving a pointer to an object this + routine receives now a primary tag. + (Set_Dyanic_Offset_To_Top): Profile modified. This routine receives an + additional formal: the tag of the primary dispatch table. + * exp_disp.ads (Elab_Flag_Needed): New subprogram. + * exp_disp.adb (Elab_Flag_Needed): New subprogram. + (Make_Tags): Adding the declaration of the elaboration flag (if needed). + * exp_aggr.adb (Build_Record_Aggr_Code): Adding actual of new + formal in calls to Init_Secondary_Tags. + +2017-09-07 Javier Miranda + + * ghost.adb (Mark_And_Set_Ghost_Instantiation.Check_Ghost_Actuals): New + subprogram. + * sem_prag.adb (Pragma_Ghost): Add missing support for ghost + applied to generic subprograms. + +2017-09-07 Arnaud Charlet + + * sem_util.adb (Check_Part_Of_Reference): rename Conc_Typ to Conc_Obj + (because it refers to the anonymous concurrent object, not its type); + fix condition for emitting error message about task/protected type, + +2017-09-07 Bob Duff + + * binde.adb (Debug_Flag_Old): If both -do and -dp + are specified, behave as if just -do was specified, rather than + using a mixture. + +2017-09-07 Nicolas Roche + + * system-vxworks-sparcv9.ads, s-vxwork-m68k.ads, s-vxwork-mips.ads, + system-vxworks-m68k.ads, system-vxworks-mips.ads: Removed. + +2017-09-07 Arnaud Charlet + + * sem_prag.adb (Find_Role): The Global_Seen flag + is now consulted not only for abstract states and variables, + but for all kinds of items. + (Collect_Subprogram_Inputs_Outputs): Do not process formal + generic parameters, because unlike ordinary formal parameters, + generic formals only act as input/ outputs if they are explicitly + mentioned in a Global contract. + +2017-09-07 Yannick Moy + + * ghost.adb (Check_Ghost_Context): Do not err on ghost code inside + predicate procedure. Check predicate pragma/aspect with Ghost entity. + * exp_ch6.adb, par-ch6.adb, sem_ch13.adb, sem_prag.adb; Minor + reformatting. + +2017-09-07 Ed Schonberg + + * sem_aggr.adb: Move New_Copy_Tree_And_Dimensions to sem_dim + (code cleanup); + * sem_ch3.adb (Build_Derived_Record_Type):i Call + Copy_Dimensions_Of_Components after creating the copy of the + record declaration. + * sem_dim.ads, sem_dim.adb (Copy_Dimensions_Of_Components): For a + derived recor type, copy the dikensions if any of each component + of the parent record to the corresponding component declarations + of the derived record. These expressions are used among other + things as default values in aggregates with box associations. + * a-dirval-mingw.adb, g-cgi.adb, gnatcmd.adb, lib-xref.adb, + repinfo.adb, sem_attr.adb, sem_ch10.adb, sem_ch6.adb, sem_prag.adb: + Minor reformatting. + +2017-09-07 Arnaud Charlet + + * sem_util.adb: Remove extra space after THEN. + +2017-09-07 Eric Botcazou + + * sem_ch7.adb (Has_Referencer): For a subprogram renaming, + also mark the renamed subprogram as referenced. + +2017-09-07 Ed Schonberg + + * par-ch6.adb (P_Subprogram): Improve error message on null + procedure with misplaced aspect specification, which the parser + first attempts to interpret as a malformed expression function. + +2017-09-07 Gary Dismukes + + * sem_attr.adb (Analyze_Attribute_Old_Result): + Allow attributes Result and Old in the case of an expression + function. + +2017-09-07 Justin Squirek + + * sem_prag.adb (Process_Atomic_Independent_Shared_Volatile): Propagate + Volatile to subcomponents. + +2017-09-07 Bob Duff + + * exp_ch7.adb (Find_Last_Init): Check for the + case where a build-in-place function call has been replaced by a + 'Reference attribute reference. + +2017-09-07 Eric Botcazou + + * sem_ch7.adb (Has_Referencer): Recurse on Actions of freeze + nodes. + +2017-09-07 Bob Duff + + * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration, + Make_Build_In_Place_Call_In_Anonymous_Context): Do not use the + secondary stack for all functions that return limited tagged + types -- just do it for dispatching calls. Misc cleanup. + * sem_util.ads, sem_util.adb (Unqual_Conv): New function to + remove qualifications and type conversions. Fix various bugs + where only a single level of qualification or conversion was + removed, so e.g. "T1'(T2'(X))" would incorrectly return "T2'(X)" + instead of "X". + * checks.adb, exp_util.ads, exp_util.adb, sem_res.adb: Misc related + cleanup. + +2017-09-07 Ed Schonberg + + * sem_ch6.adb (setr_Actual_Subtypes): Within a predicate function + do not create actual subtypes that may generate further predicate + functions. + * sem_ch13.adb (Build_Predicate_Functions): Indicate that entity + of body is a predicate function as well. + (Resolve_Aspect_Expressions, Resolve_Name): For a component + association, only the expression needs resolution, not the name. + (Resolve_Aspect_Expressions, case Predicates): Construct and + analyze the predicate function declaration in the scope of the + type, before making the type and its discriminants visible. + +2017-09-06 Eric Botcazou + + * gcc-interface/decl.c (warn_on_field_placement): Issue the warning + only if the record type itself comes from source. + +2017-09-06 Gary Dismukes + + * sem_ch5.adb: Minor reformatting and a typo fix + +2017-09-06 Arnaud Charlet + + * sinput-l.ads: minor remove extra period at the end of comment + +2017-09-06 Arnaud Charlet + + * sem_prag.adb (Add_Item_To_Name_Buffer): remove support for + E_Discriminant. + (Find_Role): remove support for E_Discriminant. + +2017-09-06 Javier Miranda + + * exp_ch6.adb (Expand_Simple_Function_Return): + Add missing implicit type conversion to force displacement of the + "this" pointer. + +2017-09-06 Hristian Kirtchev + + * sem_ch3.adb, sem_aux.adb, sem_res.adb: Minor reformatting. + +2017-09-06 Yannick Moy + + * sem_ch12.adb (Analyze_Instance_And_Renamings): Refactor to set + global variable Ignore_SPARK_Mode_Pragmas_In_Instance only once. + +2017-09-06 Bob Duff + + * sem_ch8.adb: Change Assert to be consistent with + other similar ones. + +2017-09-06 Bob Duff + + * binde.adb (Find_Elab_Order): Do not run Elab_Old unless + requested. Previously, the -do switch meant "run Elab_New and + Elab_Old and use the order chosen by Elab_Old, possibly with + debugging printouts comparing the two orders." Now it means + "do not run Elab_New." This is of use if there are bugs that + cause Elab_New to crash. + (Elab_Position, Num_Chosen): Change type to Nat, to avoid various + type conversions. + * ali.ads (Elab_Position): Change type to Nat, to avoid various + type conversions. + +2017-09-06 Arnaud Charlet + + * sem_prag.adb (Check_Mode_Restriction_In_Enclosing_Context): Fix + reference to SPARK RM. + +2017-09-06 Eric Botcazou + + * layout.adb: Use SSU short hand consistently throughout the file. + +2017-09-06 Eric Botcazou + + * freeze.adb (Freeze_Record_Type) + : New local variable to + accumulate the rounded RM_Size of components. Update it for + every component whose RM_Size is statically known. Add missing + guard to check that bit packing is really required before issuing + the error about packing. Swap condition for clarity's sake. + * sem_prag.adb (Usage_Error): Fix reference to SPARK RM in comment. + +2017-09-06 Fedor Rybin + + * makeutl.adb, makeutl.ads, mlib.adb, mlib.ads, mlib-fil.adb, + mlib-fil.ads, mlib-prj.adb, mlib-prj.ads, mlib-tgt.adb, mlib-tgt.ads, + mlib-tgt-specific.adb, mlib-tgt-specific.ads, + mlib-tgt-specific-aix.adb, mlib-tgt-specific-darwin.adb, + mlib-tgt-specific-hpux.adb, mlib-tgt-specific-linux.adb, + mlib-tgt-specific-mingw.adb, mlib-tgt-specific-solaris.adb, + mlib-tgt-specific-vxworks.adb, mlib-tgt-specific-xi.adb, mlib-utl.adb, + mlib-utl.ads, prj.adb, prj.ads, prj-attr.adb, prj-attr.ads, + prj-attr-pm.adb, prj-attr-pm.ads, prj-com.ads, prj-conf.adb, + prj-conf.ads, prj-dect.adb, prj-dect.ads, prj-env.adb, prj-env.ads, + prj-err.adb, prj-err.ads, prj-ext.adb, prj-ext.ads, prj-makr.adb, + prj-makr.ads, prj-nmsc.adb, prj-nmsc.ads, prj-pars.adb, prj-pars.ads, + prj-part.adb, prj-part.ads, prj-pp.adb, prj-pp.ads, prj-proc.adb, + prj-proc.ads, prj-strt.adb, prj-strt.ads, prj-tree.adb, prj-tree.ads, + prj-util.adb, prj-util.ads, sinput-p.adb, sinput-p.ads: Remove obsolete + project manager sources. + +2017-09-06 Ed Schonberg + + * sem_ch5.adb (Analyze_Assigment): If the left-hand side is an + entity of a mutable type and the right-hand side is a conditional + expression, resolve the alternatives of the conditional using + the base type of the target entity, because the alternatives + may have distinct subtypes. This is particularly relevant if + the alternatives are aggregates. + +2017-09-06 Ed Schonberg + + * checks.adb (Apply_Predicate_Check): If the expression is an + aggregate that is the RHS of an assignment, apply the check to + the LHS after the assignment, rather than to the aggregate. This + is more efficient than creating a temporary for the aggregate, + and prevents back-end crashes when the aggregate includes a + dynamic "others' association. + +2017-09-06 Yannick Moy + + * sem_ch12.adb (Analyze_Instance_And_Renamings): + Set variable to ignore SPARK_Mode in instance before the analysis + of the generated package declaration. + +2017-09-06 Yannick Moy + + * sem_res.adb (Resolve_Call): Do not issue a + message for calls inside expression function, unless body was + seen and is candidate for inlining. + +2017-09-06 Ed Schonberg + + * sem_aux.adb (Is_Generic_Formal): Handle properly formal packages. + * sem_ch3.adb (Analyze_Declarations): In a generic subprogram + body. do not freeze the formals of the generic unit. + +2017-09-06 Gary Dismukes + + * errout.adb (Error_Msg): Separate the + treatment for warning vs. style messages in inlinings and + instantiations. Prevents blowups on calls to Warn_Insertion for + style messages, which should not be called in that case because + Warning_Msg_Char is not set. + +2017-09-06 Justin Squirek + + * sem_prag.adb (Check_VFA_Conflicts): Created + to group all Volatile_Full_Access checks relating to other + representation pragmas (Mark_Component_Or_Object): Created + to centeralize the flagging of attributes for the record type + component case, a pragma applied individually to a component, and + the object case. + (Process_Atomic_Independent_Shared_Volatile): + Add propagation of certain pragmas to record components and move + evaluation of VFA checks + +2017-09-06 Ed Schonberg + + * sem_prag.adb (Check_Postcondition_Use_In_Inlined_Subprogram): + Do not warn on conditions that are not obeyed for Inline_Always + subprograms, when assertions are not enabled. + +2017-09-06 Arnaud Charlet + + * sem_util.adb (Unique_Entity): For abstract states return their + non-limited view. + +2017-09-06 Bob Duff + + * sem_ch12.adb (Copy_Generic_Node): When we copy a node + that is a proper body corresponding to a stub, we defer the + adjustment of the sloc until after the correct adjustment has + been computed. Otherwise, Adjust_Instantiation_Sloc will ignore + the adjustment, because it will be outside the range in (the old, + incorrect) S_Adjustment. + * inline.adb: Use named notation for readability and uniformity. + * sinput-l.adb: Minor improvements to debugging output printed + for Debug_Flag_L. + * sinput-l.ads (Create_Instantiation_Source): Minor comment + correction. + +2017-09-06 Vincent Celier + + * make.adb: Do not invoke gprbuild for -bargs -P. + +2017-09-06 Sylvain Dailler + + * sem_eval.adb (Compile_Time_Known_Value_Or_Aggr): Adding a + case when Op is of kind N_Qualified_Expression. In this case, + the function is called recursively on the subexpression like in + other cases. + * make.adb: Minor reformatting + +2017-09-06 Justin Squirek + + * einfo.adb (Set_Linker_Section_Pragma): Modify + Set_Linker_Section_Pragma to be consistant with the "getter" + Linker_Section_Pragma. + * exp_ch5.adb (Expand_Formal_Container_Loop): Add proper error + checking for container loops so that the index cursor is not + directly changable by the user with the use of E_Loop_Parameter. + * sem_ch5.adb (Analyze_Block_Statement): Revert previous change. + * sem_warn.adb (Check_References): Revert previous change. + +2017-09-06 Bob Duff + + * exp_util.adb (Is_Displace_Call): Make sure it works for indirect + calls and the like. + +2017-09-06 Yannick Moy + + * sem_prag.adb (Analyze_Depends_Global): Reinforce test on object + declarations to only consider valid uses of Global/Depends those on + single concurrent objects. + +2017-09-06 Eric Botcazou + + * sem_ch13.adb (Check_Record_Representation_Clause): Give an + error as soon as one of the specified components overlaps the + parent field. + +2017-09-06 Arnaud Charlet + + * sem_prag.ads: minor fix typo in comment. + +2017-09-06 Justin Squirek + + * sem_ch5.adb (Analyze_Block_Statement): Verify a block comes + from source before checking source references. + * sem_warn.adb (Check_References): Add check for internal block + before recursing. + +2017-09-06 Vincent Celier + + * make.adb, makeusg.adb, switch-m.adb, switch-m.ads, make_util.adb, + make_util.ads, sinput.adb, sinput.ads, clean.adb, gnatls.adb, + gnatname.adb: Remove the Project Manager from the GNAT tools. + * gcc-interface/Makefile.in: ditto. + +2017-09-06 Bob Duff + + * sem_util.ads: Minor comment fix. + +2017-09-06 Ed Schonberg + + * sem_ch12.adb (Analyze_Associations, case of Formal_Package): + Generate a freeze node for the actual of a formal package, if + the actual is declared in the same unit and has a corresponding + body, to prevent the current instance from being frozen before + the actual is. + +2017-09-06 Eric Botcazou + + * sem_ch7.adb (Entity_Table_Size): Change to nearest prime number. + +2017-09-06 Yannick Moy + + * sem_warn.adb: Minor refactoring. + +2017-09-06 Ed Schonberg + + * einfo.ads, einfo.adb (Get_Classwwide_Pragma): New utility, + to retrieve the inherited classwide precondition/postcondition + of a subprogram. + * freeze.adb (Freeze_Entity): Use Get_Classwide_Pragma when + freezing a subprogram, to complete the generation of the + corresponding checking code. + +2017-09-06 Hristian Kirtchev + + * exp_util.adb (Is_Controlled_Indexing): New routine. + (Is_Displace_Call): Use routine Strip to remove indirections. + (Is_Displacement_Of_Object_Or_Function_Result): Code clean up. Add a + missing case of controlled generalized indexing. + (Is_Source_Object): Use routine Strip to remove indirections. + (Strip): New routine. + +2017-09-06 Bob Duff + + * sysdep.c (__gnat_has_cap_sys_nice): If HAVE_CAPABILITY is defined, + we include the proper header. Otherwise, we just declare the necessary + things from the capabilities library. This is so we can build on + machines without that library, while still enabling that library. + At run time, we're using weak symbols, so __gnat_has_cap_sys_nice will + simply return 0 if the library is not present, or not included + in the link. + +2017-09-06 Pierre-Marie de Rodat + + * exp_dbug.adb (Debug_Renaming_Declaration): Do not create an encoding + for renamings that involve function calls in prefix form. + +2017-09-06 Bob Duff + + * sem_ch3.adb (Analyze_Subtype_Declaration): + Set Has_Delayed_Freeze on a subtype of an incomplete type. + +2017-09-06 Pierre-Marie de Rodat + + * par_sco.adb (Extend_Statement_Sequence): When the accept statement + has no parameter specification and no entry index, use the entry name + as the end of the generated SCO statement. + +2017-09-06 Steve Baird + + * exp_util.adb (Side_Effect_Free): For CodePeer (only) treat + uses of 'Image and related attributes as having side effects in + order to avoid replicating such uses. + * pprint.ads (Expression_Image) Add new generic formal flag + Hide_Temp_Derefs. The flag defaults to False; CodePeer will + (eventually) override the default. + * pprint.adb (Expression_Image) If the new flag is set, then + suppress the ".all" suffix when displaying a dereference whose + prefix is a use of a value-capturing compiler temp of the sort + generated by Expr_Util.Remove_Side_Effects . + * exp_attr.adb, g-catiio.adb, inline.adb, sem_attr.adb, sem_ch13.adb, + sem_ch7.adb, sem_dim.adb, sem_util.adb, sem_util.ads, sem_warn.adb: + Minor reformatting. + * inline.adb: Minor wording change. + +2017-09-06 Eric Botcazou + + * sem_ch7.adb: Update comment. + +2017-09-06 Yannick Moy + + * einfo.adb, einfo.ads (Is_Subprogram_Or_Entry): New predicate. + * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Use new function. + * sem_util.adb, sem_util.ads (Within_Protected_Type): Renaming + with slight modification from Is_Subp_Or_Entry_Inside_Protected, + so that applies to any entity. + +2017-09-06 Yannick Moy + + * sem_ch3.adb (Derived_Type_Declaration): Use + Incomplete_Or_Partial_View rather than local Find_Partial_View. + +2017-09-06 Javier Miranda + + * g-catiio.ads, g-catiio.adb (Value): Extended to parse an UTC time + following ISO-8861. + +2017-09-06 Ed Schonberg + + * sem_dim.adb (Analyze_Dimension): In an instance, a type + conversion takes its dimensions from the expression, not from + the context type. + (Dimensions_Of_Operand): Ditto. + +2017-09-06 Ed Schonberg + + * exp_ch6.adb (Expand_Call_Helper): Do not optimize calls to + null procedures when GNAT coverage is used, so that their (empty) + bodies are properly covered. + +2017-09-06 Bob Duff + + * sem_ch13.adb (Resolve_Aspect_Expressions): If + the entity is a type with discriminants, make the discriminants + directly visible in aspect clauses. + +2017-09-06 Ed Schonberg + + * sem_res.adb (Resolve_Arithmentic_Op): If both operands are + Universal_Real and the context is a floating-point type, resolve + both operands to the target type. + +2017-09-06 Hristian Kirtchev + + * a-comlin.adb, exp_aggr.adb, exp_ch6.adb, frontend.adb, gnatbind.adb, + sem_ch3.adb, sem_util.adb: Minor reformatting. + +2017-09-06 Yannick Moy + + * freeze.adb (Check_Inherited_Conditions): Rewriting + of inherited preconditions and postconditions should only occur + in GNATprove mode, that is, when GNATprove_Mode is True, not to + be confused with SPARK_Mode being On. + +2017-09-06 Yannick Moy + + * sem_warn.adb (Check_References): Take into + account possibility of attribute reference as original node. + +2017-09-06 Yannick Moy + + * exp_attr.adb (Expand_N_Attribute_Reference): Protect against invalid + use of attribute. + +2017-09-06 Eric Botcazou + + * inline.adb (Split_Unconstrained_Function): Also set Is_Inlined + on the procedure created to encapsulate the body. + * sem_ch7.adb: Add with clause for GNAT.HTable. + (Entity_Table_Size): New constant. + (Entity_Hash): New function. + (Subprogram_Table): New instantiation of GNAT.Htable.Simple_HTable. + (Is_Subprogram_Ref): Rename into... + (Scan_Subprogram_Ref): ...this. Record references to subprograms in + the table instead of bailing out on them. Scan the value of constants + if it is not known at compile time. + (Contains_Subprograms_Refs): Rename into... + (Scan_Subprogram_Refs): ...this. + (Has_Referencer): Scan the body of all inlined subprograms. Reset the + Is_Public flag on subprograms if they are not actually referenced. + (Hide_Public_Entities): Beef up comment on the algorithm. + Reset the table of subprograms on entry. + +2017-09-06 Yannick Moy + + * inline.adb: Add comments to Can_Be_Inlined_In_GNATprove_Mode. + +2017-09-06 Javier Miranda + + * exp_aggr.adb (Component_Not_OK_For_Backend): The C backend + cannot handle a type conversion of an array as an aggregate + component. + +2017-09-06 Bob Duff + + * g-comlin.adb (Try_Help): Remove ".exe" so we + get the same results on windows and unix. + +2017-09-06 Justin Squirek + + * exp_imgv.adb (Expand_Image_Attribute), + (Expand_Wide_Image_Attribute), (Expand_Wide_Wide_Image_Attribute): + Added case to handle new-style 'Image expansion + (Rewrite_Object_Image): Moved from exp_attr.adb + * exp_attr.adb (Expand_N_Attribute_Reference): Modified Image + attribute cases so that the relevant subprograms in exp_imgv.adb + handle all expansion. + (Rewrite_Object_Reference_Image): Moved to exp_imgv.adb + * sem_attr.adb (Analyze_Attribute): Modified Image attribute + cases to call common function Analyze_Image_Attribute. + (Analyze_Image_Attribute): Created as a common path for all + image attributes (Check_Object_Reference_Image): Removed + * sem_util.ads, sem_util.adb (Is_Image_Applied_To_Object): + Removed and refactored into Is_Object_Image (Is_Object_Image): + Created as a replacement for Is_Image_Applied_To_Object + +2017-09-06 Yannick Moy + + * sem_prag.adb (Analyze_Depends_In_Decl_Part): Add continuation + message for missing input. + +2017-09-06 Yannick Moy + + * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Prevent inlining + of protected subprograms and entries. + * sem_util.adb, sem_util.ads (Is_Subp_Or_Entry_Inside_Protected): + New function to detect when a subprogram of entry is defined + inside a protected object. + +2017-09-06 Bob Duff + + * sysdep.c (__gnat_has_cap_sys_nice): New function to determine + whether the current process has the CAP_SYS_NICE capability. + * s-taprop-linux.adb (Get_Ceiling_Support): Update this to allow + ceiling priorities if the current process has the CAP_SYS_NICE + capability. + +2017-09-06 Bob Duff + + * a-comlin.ads, a-comlin.adb (Argument): Move the constraint + check back to the body, because SPARK is not yet ready for + "or else raise Constraint_Error". + +2017-09-06 Ed Schonberg + + * exp_ch6.adb (Expand_Call_Helper): Replace call to null + procedure by a single null statement, after evaluating the + actuals that require it. + +2017-09-06 Javier Miranda + + * exp_aggr.adb (Backend_Processing_Possible.Component_Check): + Generating C code improve the code that checks the use of nested + aggregates to initialize object declarations. + +2017-09-06 Yannick Moy + + * sem_ch3.adb (Derived_Type_Declaration): Detect + violations of new rule SPARK RM 3.4(1). Also refactor existing + check to use the new function Find_Partial_View. + +2017-09-06 Vincent Celier + + * gnatcmd.adb: gnat ls -V -P... invokes gprls -V -P... The code + from the Prj hierarchy has been removed from the GNAT driver. + +2017-09-06 Ed Schonberg + + * sem_type.adb (Interface_Present_In_Ancestor): Within an + expression function, or within a spec expression (default value, + etc) a reference to an incomplete type is legal: legality of + the operation will be checked when some related entity (type, + object or subprogram) is frozen. + +2017-09-06 Gary Dismukes + + * exp_ch5.adb, s-diinio.ads, sem_ch4.adb, s-diflio.ads: Minor spelling + adjustments and a typo fix. + +2017-09-06 Yannick Moy + + * sem_res.adb (Resolve_Call): Do not issue info + message about inlining of calls to functions in assertions, + for functions whose body has not been seen yet. + +2017-09-06 Bob Duff + + * a-comlin.ads, a-comlin.adb (Argument): Simplify the code, now that + we can use modern Ada in this package. + * s-resfil.ads, s-resfil.adb, a-clrefi.ads, a-clrefi.adb: + Move Ada.Command_Line.Response_File to System.Response_File, + and make Ada.Command_Line.Response_File into a rename of + System.Response_File. This is to avoid having gnatbind depend + Ada.Command_Line, which would damage the bootstrap process now + that Ada.Command_Line contains modern Ada (the raise expression). + * gnatbind.adb: Avoid dependence on + Ada.Command_Line. Depend on System.Response_File instead + of Ada.Command_Line.Response_File. Change one call to + Ada.Command_Line.Command_Name to use Fill_Arg. Change one call + to Ada.Command_Line.Argument_Count to use Arg_Count. + * gcc-interface/Make-lang.in, Makefile.rtl: Take note of the new files. + +2017-09-06 Bob Duff + + * frontend.adb (Frontend): Skip -gnatec=gnat.adc + switch, because we've already read gnat.adc by default. + +2017-09-06 Bob Duff + + * exp_ch5.adb (Get_Default_Iterator): Replace + "Assert(False)" with "return Iter", because if an iterable + type is derived from a noniterable one, then we won't find an + overriding or inherited default iterator. + +2017-09-06 Yannick Moy + + * sem_warn.adb (Warn_On_Suspicious_Index): Improve warning when the + literal index used to access a string is null or negative. + +2017-09-06 Hristian Kirtchev + + * einfo.adb (Status_Flag_Or_Transient_Decl): The attribute is now + allowed on loop parameters. + (Set_Status_Flag_Or_Transient_Decl): The attribute is now allowed + on loop parameters. + (Write_Field15_Name): Update the output for + Status_Flag_Or_Transient_Decl. + * einfo.ads: Attribute Status_Flag_Or_Transient_Decl now applies + to loop parameters. Update the documentation of the attribute + and the E_Loop_Parameter entity. + * exp_ch7.adb (Process_Declarations): Remove the bogus guard + which assumes that cursors can never be controlled. + * exp_util.adb (Requires_Cleanup_Actions): Remove the bogus + guard which assumes that cursors can never be controlled. + +2017-09-06 Hristian Kirtchev + + * exp_attr.adb, sem_util.adb, sem_attr.adb, sem_ch6.adb, sem_ch8.adb, + sem_warn.adb: Minor reformatting. + +2017-09-06 Ed Schonberg + + * sem_warn.adb (Warn_On_Overlapping_Actuals): Refine previous + fix and preserve older GNAT warning on overlapping actuals that + are not elementary types. + +2017-09-06 Justin Squirek + + * sem_attr.adb: Comment correction. + +2017-09-06 Gary Dismukes + + * sem_util.adb: Minor reformatting. + +2017-09-06 Yannick Moy + + * a-comlin.ads (Argument): Add precondition for analysis. + +2017-09-06 Yannick Moy + + * sem_res.adb (Resolve): Update message for function call as statement. + +2017-09-06 Ed Schonberg + + * sem_ch6.adb (Check_Returns): Clean up warnings coming from + generated bodies for renamings that are completions, when renamed + procedure is No_Return. + * sem_ch8.adb (Analyze_Subprogram_Renaming): Implement legality + rule in 6.5.1 (7/2): if a renaming is a completion of a subprogram + with No_Return, the renamed entity must be No_Return as well. + +2017-09-06 Hristian Kirtchev + + * exp_ch5.adb, freeze.adb, exp_ch4.adb, exp_ch6.adb, lib-xref.adb: + Minor reformatting. + +2017-09-06 Justin Squirek + + * exp_attr.adb (Expand_N_Attribute_Reference): Modified Image + attribute cases (Rewrite_Object_Reference_Image): Created to + aid the rewriting of new-style 'Image attributes. + * sem_attr.adb (Analyze_Attribute): Modified Image attribute cases + (Check_Object_Reference_Image): Created to handle verification of + 'Image with object-references as prefixes. + * sem_util.ads, sem_util.adb (Is_Image_Applied_To_Object): + Create predicate to identify cases where an 'Image attribute's + prefix applies to an object reference. + +2017-09-06 Ed Schonberg + + * freeze.adb (Freeze_Entity): Do not generate a freeze + node for a generic unit, even if it includes delayed aspect + specifications. Freeze nodes for generic entities must never + appear in the tree that reaches the back-end of the compiler. + +2017-09-06 Yannick Moy + + * treepr.adb (Print_Entity_Info): Do not print empty Elist. + +2017-09-06 Yannick Moy + + * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Do not consider calls + to subprograms in other units as possibly inlined. + +2017-09-06 Ed Schonberg + + * freeze.adb (Freeze_Entity): For a derived type that has no + explicit delayed aspects but may inherit delayed aspects from its + parent type, analyze aspect at freeze point for proper capture + of an inherited aspect. + +2017-09-06 Arnaud Charlet + + * lib-xref.adb (Get_Through_Renamings): Get through subprogram + renamings; also, avoid repeated calls to Renamed_Object when getting + through object renamings. + +2017-09-06 Ed Schonberg + + * sem_ch3.adb (Array_Type_Declaration): Handle properly an + array type declaration in a private part, when an index is a + subtype indication of a discrete type with a private partial view. + +2017-09-06 Javier Miranda + + * exp_ch4.adb (Expand_Modular_Op): Force generating + temporary to improve the generated code. + +2017-09-06 Tristan Gingold + + * s-fatgen.adb: Minor typo fix in comment. + +2017-09-06 Ed Schonberg + + * exp_ch5.adb (Make_Field_Assign): If the type + of the right-hand side has stored constraint, use its values + (except for those that are renamings of parent discriminants) + to produce additional assignments for the discriminants of the + left-hand side, which are invisible in the righ-hand side and + not retrievable as selected components. + +2017-09-06 Ed Schonberg + + * sem_util.adb (Needs_One_Formal): The first formal of such a + function must be a controlling formal, so that Obj.F (X, Y) + can have the interpretation F(Obj)(X, Y). + * sem_util.ads: Clarify documentation. + +2017-09-06 Eric Botcazou + + * table.ads, table.adb: Restore original implementation. + * namet.h (Names_Ptr): Adjust back. + (Name_Chars_Ptr): Likewise. + * uintp.h (Uints_Ptr): Likewise. + (Udigits_Ptr): Likewise. + * g-table.ads: Remove pragma Compiler_Unit_Warning. + * par_sco.adb: Do not with GNAT.Table and use Table consistently. + * scos.ads: Replace GNAT.Table with Table and adjust instantiations. + * spark_xrefs.ads: Likewise. + * scos.h: Undo latest changes. + +2017-09-06 Ed Schonberg + + * sem_ch12.adb (Analyze_Subprogram_Instantiation): Propagate + No_Return flag to instance if pragma applies to generic unit. This + must be done explicitly because the pragma does not appear + directly in the generic declaration (unlike the corresponding + aspect specification). + +2017-09-06 Eric Botcazou + + * sem_ch7.adb (Has_Referencer): Move up and expand comment + explaining the test used to detect inlining. Use same test + in second occurrence. + (Analyze_Package_Body_Helper): Minor formatting fixes. + +2017-09-06 Ed Schonberg + + * exp_ch4.adb (Handle_Changed_Representation): For an untagged + derived type with a mixture of renamed and constrained parent + discriminants, the constraint for the target must obtain the + discriminant values from both the operand and from the stored + constraint for it, given that the constrained discriminants are + not visible in the object. + * exp_ch5.adb (Make_Field_Assign): The type of the right-hand + side may be derived from that of the left-hand side (as in the + case of an assignment with a change of representation) so the + discriminant to be used in the retrieval of the value of the + component must be the entity in the type of the right-hand side. + +2017-09-06 Hristian Kirtchev + + * sem_ch3.adb, sem_ch7.adb, sem_util.adb, g-debpoo.adb, sem_ch4.adb, + sem_ch6.adb, sem_ch8.adb: Minor reformatting. + * exp_util.adb (Is_Source_Object): Account for + the cases where the source object may appear as a dereference + or within a type conversion. + * exp_ch6.adb: Fix missing space in error message. + +2017-09-06 Ed Schonberg + + * sem_prag.adb: Update description of Eliminate. + +2017-09-06 Ed Schonberg + + * sem_attr.adb (Analyze_Attribute, case 'Loop_Entry): Handle + properly an attribute reference 'Loop_Entry that appears in the + list of indices of an indexed expression, to prevent an infinite + loop in the compiler. + +2017-09-06 Bob Duff + + * s-fileio.adb (Name): Do not raise Use_Error for temp files. + +2017-09-06 Ed Schonberg + + * sem_ch4.adb (Analyze_Set_Membership): If an alternative + in a set membership is an overloaded enumeration literal, and + the type of the alternative is resolved from a previous one, + replace the entity of the alternative as well as the type, + to prevent inconsistencies between the entity and the type. + +2017-09-06 Eric Botcazou + + * ali.ads (ALIs_Record): Add No_Component_Reordering component. + (No_Component_Reordering_Specified): New switch. + * ali.adb (Initialize_ALI): Set No_Component_Reordering_Specified. + (Scan_ALI): Set No_Component_Reordering and deal with NC marker. + * bcheck.adb (Check_Consistent_No_Component_Reordering): + New check. + (Check_Configuration_Consistency): Invoke it. + * debug.adb (d.r): Toggle the effect of the switch. + (d.v): Change to no-op. + * einfo.ads (Has_Complex_Representation): + Restrict to record types. + (No_Reordering): New alias for Flag239. + (OK_To_Reorder_Components): Delete. + (No_Reordering): Declare. + (Set_No_Reordering): Likewise. + (OK_To_Reorder_Components): Delete. + (Set_OK_To_Reorder_Components): Likewise. + * einfo.adb (Has_Complex_Representation): Expect record types. + (No_Reordering): New function. + (OK_To_Reorder_Components): Delete. + (Set_Has_Complex_Representation): Expect base record types. + (Set_No_Reordering): New procedure. + (Set_OK_To_Reorder_Components): Delete. + (Write_Entity_Flags): Adjust to above change. + * fe.h (Debug_Flag_Dot_R): New macro and declaration. + * freeze.adb (Freeze_Record_Type): Remove conditional code setting + OK_To_Reorder_Components on record types with convention Ada. + * lib-writ.adb (Write_ALI): Deal with NC marker. + * opt.ads (No_Component_Reordering): New flag. + (No_Component_Reordering_Config): Likewise. + (Config_Switches_Type): Add No_Component_Reordering component. + * opt.adb (Register_Opt_Config_Switches): Copy + No_Component_Reordering onto No_Component_Reordering_Config. + (Restore_Opt_Config_Switches): Restore No_Component_Reordering. + (Save_Opt_Config_Switches): Save No_Component_Reordering. + (Set_Opt_Config_Switches): Set No_Component_Reordering. + * par-prag.adb (Prag): Deal with Pragma_No_Component_Reordering. + * sem_ch3.adb (Analyze_Private_Extension_Declaration): Also set the + No_Reordering flag from the default. + (Build_Derived_Private_Type): Likewise. + (Build_Derived_Record_Type): Likewise. Then inherit it + for untagged types and clean up handling of similar flags. + (Record_Type_Declaration): Likewise. + * sem_ch13.adb (Same_Representation): Deal with No_Reordering and + remove redundant test on Is_Tagged_Type. + * sem_prag.adb (Analyze_Pragma): Handle No_Component_Reordering. + (Sig_Flags): Likewise. + * snames.ads-tmpl (Name_No_Component_Reordering): New name. + (Pragma_Id): Add Pragma_No_Component_Reordering value. + * warnsw.adb (Set_GNAT_Mode_Warnings): Enable -gnatw.q as well. + * gcc-interface/decl.c (gnat_to_gnu_entity) : + Copy the layout of the parent type only if the No_Reordering + settings match. + (components_to_record): Reorder record types with + convention Ada by default unless No_Reordering is set or -gnatd.r + is specified and do not warn if No_Reordering is set in GNAT mode. + +2017-09-06 Ed Schonberg + + * sem_util.ads, sem_util.adb (Check_Previous_Null_Procedure): + new predicate to reject declarations that can be completions, + when there is a visible prior homograph that is a null procedure. + * sem_ch6.adb (Analyze_Null_Procedure): use it. + * sem_ch8.adb (Analyze_Subprogram_Renaming): ditto. + +2017-09-06 Thomas Quinot + + * s-regpat.adb (Compile.Parse_Literal): Fix handling of literal + run of 253 characters or more. + +2017-09-06 Ed Schonberg + + * einfo.adb (Designated_Type): Use Is_Incomplete_Type to handle + properly incomplete subtypes that may be created by explicit or + implicit declarations. + (Is_Base_Type): Take E_Incomplete_Subtype into account. + (Subtype_Kind): Ditto. + * sem_ch3.adb (Build_Discriminated_Subtype): Set properly the + Ekind of a subtype of a discriminated incomplete type. + (Fixup_Bad_Constraint): Use Subtype_Kind in all cases, including + incomplete types, to preserve error reporting. + (Process_Incomplete_Dependents): Do not create a subtype + declaration for an incomplete subtype that is created internally. + * sem_ch7.adb (Analyze_Package_Specification): Handle properly + incomplete subtypes that do not require a completion, either + because they are limited views, of they are generic actuals. + +2017-09-06 Hristian Kirtchev + + * checks.adb (Insert_Valid_Check): Remove the + suspicious manipulation of the Do_Range_Check flag as ths is + no linger needed. Suppress validity check when analysing the + validation variable. + +2017-09-06 Philippe Gil + + * g-debpoo.adb: adapt GNAT.Debug_Pools to allow safe thread + GNATCOLL.Memory + +2017-09-06 Bob Duff + + * sem_elim.adb: Minor comment fix. + +2017-09-06 Ed Schonberg + + * sem_util.adb (Is_Object_Reference): A function call is an + object reference, and thus attribute references for attributes + that are functions (such as Pred and Succ) as well as predefined + operators are legal in contexts that require an object, such as + the prefix of attribute Img and the Ada2020 version of 'Image. + +2017-09-06 Hristian Kirtchev + + * exp_util.adb, einfo.adb, sem_attr.adb, exp_ch4.adb, gnatls.adb, + exp_ch3.adb, xoscons.adb: Minor reformatting. + +2017-09-06 Raphael Amiard + + * a-chtgop.ads, a-chtgop.adb: Add versions of First and Next with + Position parameter. If supplied, use it to provide efficient iteration. + * a-cohase.ads, a-cohase.adb, a-cihama.ads, a-cihama.adb, + a-cohama.ads, a-cohama.adb: Add/Use Position to provide efficient + iteration. + +2017-09-06 Ed Schonberg + + * exp_util.adb (Build_Allocate_Deallocate_Proc): If the + designated type is class-wide and the expression is an unchecked + conversion, preserve the conversion when checking the tag of the + designated object, to prevent spurious semantic errors when the + expression in the conversion has an untagged type (for example + an address attribute). + +2017-09-06 Ed Schonberg + + * sem_res.adb (Resolve_Entry_Call): Check whether a protected + operation is subject to a pragma Eliminate. + +2017-09-06 Ed Schonberg + + * sem_elim.ads, exp_ch4.adb: Minor reformatting. + +2017-09-06 Eric Botcazou + + * fe.h (Eliminate_Error_Msg): Remove. + +2017-09-05 Richard Sandiford + + * gcc-interface/utils.c (make_packable_type): Update call to + mode_for_size_tree. + +2017-09-05 Richard Sandiford + + * gcc-interface/utils2.c (build_load_modify_store): + Use int_mode_for_size. + +2017-09-05 Eric Botcazou + + PR ada/62235 + * gcc-interface/decl.c (gnat_to_gnu_entity): Skip regular processing + for Itypes that are E_Record_Subtype with a cloned subtype. + : Use the DECL of the cloned type directly, if any. + +2017-09-05 Eric Botcazou + + * gcc-interface/trans.c (convert_with_check): Use a custom base type + if the base type of the expression has a different machine mode. + Rename a couple of parameters and local variable. + +2017-09-05 Eric Botcazou + + * gcc-interface/trans.c (Attribute_to_gnu) : Do not strip + conversions around prefixes that are not references. + +2017-09-05 Eric Botcazou + + * gcc-interface/utils.c (unchecked_convert): When the result type is a + non-biased integral type with size 0, set the result to 0 directly. + +2017-09-05 Eric Botcazou + + * gcc-interface/gigi.h (renaming_from_generic_instantiation_p): Turn to + (renaming_from_instantiation_p): ...this. + * gcc-interface/decl.c (gnat_to_gnu_entity): Use inline predicate + instead of explicit tests on kind of entities. Adjust for renaming. + (gnat_to_gnu_profile_type): Likewise. + (gnat_to_gnu_subprog_type): Likewise. + * gcc-interface/trans.c (Identifier_to_gnu): Likewise. + (Case_Statement_to_gnu): Likewise. + (gnat_to_gnu): Likewise. + (process_freeze_entity): Likewise. + (process_type): Likewise. + (add_stmt_with_node): Adjust for renaming. + * gcc-interface/utils.c (gnat_pushdecl): Adjust for renaming. + (renaming_from_generic_instantiation_p): Rename to... + (renaming_from_instantiation_p): ...this. Use inline predicate. + (pad_type_hasher::keep_cache_entry): Fold. + +2017-09-05 Eric Botcazou + + * gcc-interface/trans.c (adjust_for_implicit_deref): New function. + (gnat_to_gnu) : Translate result type first. + (N_Indexed_Component): Invoke adjust_for_implicit_deref on the prefix. + (N_Slice): Likewise. + (N_Selected_Component): Likewise. Do not try again to translate it. + (N_Free_Statement): Invoke adjust_for_implicit_deref on the expression. + +2017-09-05 Eric Botcazou + + * repinfo.ads: Document new treatment of dynamic values. + (TCode): Bump upper bound to 29. + (Dynamic_Val): New constant set to 29. + * repinfo.adb (Print_Expr) : New case. + (Rep_Value) : Likewise. + * repinfo.h (Dynamic_Val): New macro. + * gcc-interface/decl.c (annotate_value): Tidy up and cache result for + DECL_P nodes too. + : Set TCODE instead of recursing. + : Set TCODE instead of calling Create_Node manually. + : New case. + : Fold conversions into inner operations. + : Adjust. + : Do not fall through. + +2017-09-05 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): If this is a function call and + there is no target, do not create a temporary for the return value for + an allocator either. + +2017-09-05 Eric Botcazou + + * gcc-interface/trans.c (pos_to_constructor): Skip conversions to an + unconstrained array type. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * gcc-interface/decl.c (validate_size): Use NARROWEST_INT_MODE + instead of GET_CLASS_NARROWEST_MODE (MODE_INT). + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * gcc-interface/decl.c (check_ok_for_atomic_type): Use + is_a . + * gcc-interface/trans.c (Pragma_to_gnu): Likewise. + * gcc-interface/utils.c (gnat_type_for_mode): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * gcc-interface/decl.c (gnat_to_gnu_entity): Use int_mode_for_size + instead of mode_for_size. + (gnat_to_gnu_subprog_type): Likewise. + * gcc-interface/utils.c (make_type_from_size): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * gcc-interface/misc.c (fp_prec_to_size): Use opt_scalar_float_mode. + (fp_size_to_prec): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * gcc-interface/utils.c (gnat_type_for_mode): Use is_a + instead of SCALAR_FLOAT_MODE_P. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * gcc-interface/decl.c (validate_size): Update use of + GET_MODE_WIDER_MODE, forcing a wider mode to exist. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * gcc-interface/misc.c (fp_prec_to_size): Use new mode iterators. + (fp_size_to_prec): Likewise. + +2017-08-29 Martin Liska + + PR other/39851 + * gcc-interface/trans.c (Pragma_to_gnu): Set argument to NULL. + +2017-08-08 Martin Liska + + * gcc-interface/trans.c: Include header files. + +2017-07-29 Jakub Jelinek + + * gcc-interface/utils.c (gnat_write_global_declarations): Pass false + as new argument to the imported_module_or_decl debug hook. + +2017-07-25 Javier Miranda + + * checks.adb (Apply_Divide_Checks): Ensure that operands are not + evaluated twice. + +2017-07-19 Jakub Jelinek + + * gcc-interface/ada-tree.h (TYPE_OBJECT_RECORD_TYPE, + TYPE_GCC_MIN_VALUE): Use TYPE_MIN_VALUE_RAW instead of TYPE_MINVAL. + (TYPE_GCC_MAX_VALUE): Use TYPE_MAX_VALUE_RAW instead of TYPE_MAXVAL. + +2017-07-18 Mike Frysinger + + * gcc-interface/Makefile.in (../../gnatmake$(exeext)): Delete $(P). + (../../gnatlink$(exeext)): Likewise. + +2017-07-15 John Paul Adrian Glaubitz + + PR ada/81446 + * system-linux-m68k.ads: Add pragma No_Elaboration_Code_All. + (Backend_Overflow_Checks): Set to True. + +2017-06-23 Jakub Jelinek + + * gcc-interface/trans.c (gnat_to_gnu): Initialize sync to false. + +2017-06-21 Pierre-Marie de Rodat + + * gcc-interface/ada-tree.h (DECL_FUNCTION_IS_DEF): Update copyright + notice. New macro. + * gcc-interface/trans.c (Subprogram_Body_to_gnu): Tag the subprogram + as a definition. + (Compilation_Unit_to_gnu): Tag the elaboration procedure as a + definition. + * gcc-interface/decl.c (gnat_to_gnu_entity): Tag declarations of + imported subprograms for the current compilation unit as + definitions. Disable debug info for references to variables. + * gcc-interface/gigi.h (create_subprog_decl): Update declaration. + * gcc-interface/utils.c (gnat_pushdecl): Add external DECLs that are + not built-in functions to their binding scope. + (create_subprog_decl): Add a DEFINITION parameter. If it is true, tag + the function as a definition. Update all callers. + (gnat_write_global_declarations): Emit debug info for imported + functions. Filter out external variables for which debug info + is disabled. + +2017-06-15 Nicolas Boulenguez + + PR ada/81105 + * gcc-interface/Makefile.in (x86 kfreebsd): Adjust system.ads setting. + (i[3456]86-pc-gnu): Likewise. + (x86_64 kfreebsd): Likewise. + +2017-06-12 Eric Botcazou + + PR bootstrap/80897 + * exp_ch3.adb (Make_Predefined_Primitive_Specs): Use Positive index. + +2017-06-12 Eric Botcazou + + PR ada/81070 + * s-interr-hwint.adb: Reinstate. + * gcc-interface/Makefile.in (RTEMS): Use it again. + +2017-06-08 Olivier Hainque + + * vx_crtbegin_auto.c: Update year in copyright notice. + * vx_crtbegin.c: Likewise. + * vx_crtbegin.inc: Likewise. + * vx_crtend.c: Likewise. + +2017-06-07 Sebastian Huber + + * Makefile.in (rtems): Use TLS implementation for s-tpopsp.adb. + * s-tpopsp-rtems.adb: Delete. + +2017-06-02 Olivier Hainque + + * vx_crtbegin_auto.c: New file. + * vx_crtbegin.c: New file. + * vx_crtbegin.inc: New file. + * vx_crtend.c: New file. + +2017-05-25 Jonathan Wakely + + * gcc-interface/utils2.c (compare_elmt_bitpos): Remove redundant + const qualifiers that cause -Wignored-qualifiers warnings. + +2017-05-22 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Skip regular processing + for Itypes that are E_Access_Subtype. + : Use the DECL of the base type directly. + +2017-05-22 Ed Schonberg + Eric Botcazou + + * sem_ch4.adb (Analyze_Call): In Ada2012 an incomplete type from a + limited view may appear in the profile of a function, and a call to + that function in another unit in which the full view is available must + use this full view to spurious type errors at the point of call. + * inline.adb (Analyze_Inlined_Bodies): Remove restriction on loading + of parent body with a with clause for the main unit. + * gcc-interface/decl.c (defer_limited_with_list): Document new usage. + (gnat_to_gnu_entity) : Handle completed Taft Amendment + types declared in external units like types from limited with clauses. + Adjust final processing of defer_limited_with_list accordingly. + * gcc-interface/trans.c (gnat_to_gnu) < N_Selected_Component>: Try + again to translate the prefix after the field if it is incomplete. + +2017-05-22 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_field): Do not enforce strict + alignment for simple volatile fields and remove associated errors. + +2017-05-15 Eric Botcazou + + * gcc-interface/gigi.h (get_elaboration_procedure): Delete. + * gcc-interface/trans.c (get_elaboration_procedure): Make static. + +2017-05-15 Pierre-Marie de Rodat + + * gcc-interface/utils.c (can_materialize_object_renaming_p): + Synchronize with GNAT's Exp_Dbug.Debug_Renaming_Declaration: + process Original_Node instead of expanded names. + +2017-05-15 Eric Botcazou + + * gcc-interface/trans.c (return_value_ok_for_nrv_p): Only apply the + addressability check in the constrained case. + +2017-05-15 Eric Botcazou + + * gcc-interface/trans.c (Identifier_to_gnu): Also accept incomplete + types not coming from a limited context. + +2017-05-15 Eric Botcazou + + * gcc-interface/trans.c (Compilation_Unit_to_gnu): Skip subprograms on + the inlined list that are not public. + * gcc-interface/utils.c (create_subprog_decl): Clear TREE_PUBLIC if + there is a pragma Inline_Always on the subprogram. + +2017-05-15 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu) : Fix formatting. + : Use properly typed constants. + (extract_values): Move around. + (pos_to_constructor): Minor tweaks. + (Sloc_to_locus): Fix formatting. + * gcc-interface/utils.c (process_deferred_decl_context): Minor tweaks. + * gcc-interface/gigi.h (MARK_VISITED): Remove blank line. + (Gigi_Equivalent_Type): Adjust head comment. + * gcc-interface/decl.c (Gigi_Equivalent_Type): Likewise. + +2017-05-15 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : When there + is a representation clause on an extension, propagate the alignment of + the parent type only if the platform requires strict alignment. + +2017-05-12 Eric Botcazou + + * system-linux-arm.ads (Memory_Size): Use Long_Integer'Size + instead of Word_Size. + + Revert + 2017-03-28 Andreas Schwab + + PR ada/80117 + * system-linux-aarch64-ilp32.ads: New file. + * gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS_COMMON): Rename + from LIBGNAT_TARGET_PAIRS. + (LIBGNAT_TARGET_PAIRS_32, LIBGNAT_TARGET_PAIRS_64): Define. + (LIBGNAT_TARGET_PAIRS): Use LIBGNAT_TARGET_PAIRS_COMMON, and + LIBGNAT_TARGET_PAIRS_64 or LIBGNAT_TARGET_PAIRS_32 for -mabi=lp64 + or -mabi=ilp32, resp. + +2017-05-10 H.J. Lu + + PR ada/80626 + * system-linux-x86.ads (Memory_Size): Use Long_Integer'Size + instead of Word_Size. + +2017-05-10 Bernd Edlinger + + * raise-gcc.c (exception_class_eq): Make ec parameter const. + +2017-05-02 Richard Biener + + * gcc-interface/misc.c (gnat_post_options): Do not set + -fstrict-overflow. + +2017-05-02 Eric Botcazou + + * gcc-interface/trans.c (assoc_to_constructor): Make sure + Corresponding_Discriminant is only called on discriminants. + Skip the saving of the result only for them. + (gnat_to_gnu) : Likewise. + : Translate the result type first. + (gigi): Set TREE_NOTHROW on Begin_Handler. + (stmt_list_cannot_raise_p): New predicate. + (Exception_Handler_to_gnu_gcc): Emit a simple final call instead of + a cleanup if the statements of the handler cannot raise. + (process_freeze_entity): Use Is_Record_Type. + (process_type): Likewise. + +2017-05-02 Eric Botcazou + + * einfo.ads (Corresponding_Record_Component): New alias + for Node21 used for E_Component and E_Discriminant. + * einfo.adb (Corresponding_Record_Component): New function. + (Set_Corresponding_Record_Component): New procedure. + (Write_Field21_Name): Handle Corresponding_Record_Component. + * sem_ch3.adb (Inherit_Component): Set + Corresponding_Record_Component for every component in + the untagged case. Clear it afterwards for non-girder + discriminants. + * gcc-interface/decl.c (gnat_to_gnu_entity) + : For a derived untagged type with discriminants + and constraints, apply the constraints to the layout of the + parent type to deduce the layout. + (field_is_aliased): Delete. + (components_to_record): Test DECL_ALIASED_P directly. + (annotate_rep): Check that fields are present except for + an extension. + (create_field_decl_from): Add DEBUG_INFO_P + parameter and pass it in recursive and other calls. Add guard + for the manual CSE on the size. + (is_stored_discriminant): New predicate. + (copy_and_substitute_in_layout): Consider only + stored discriminants and check that original fields are present + in the old type. Deal with derived types. Adjust call to + create_variant_part_from. + +2017-05-02 Ed Schonberg + + * exp_ch6.adb (Expand_Call_Helper): When locating the + accessibility entity created for an access parameter, handle + properly a reference to a formal of an enclosing subprogram. if + the reference appears in an inherited class-wide condition, it + is the rewriting of the reference in the ancestor expression, + but the accessibility entity must be that of the current formal. + +2017-05-02 Javier Miranda + + * exp_ch4.adb (Expand_Non_Binary_Modular_Op): New subprogram. + (Expand_N_Op_Add, Expand_N_Op_Divide, Expand_N_Op_Minus, + Expand_N_Op_Multiply, Expand_N_Op_Or, Expand_N_Op_Subtract): + Call Expand_Non_Binary_Modular_Op. + +2017-05-02 Eric Botcazou + + * sem_ch3.adb (Build_Derived_Private_Type): If the parent type + has discriminants, do not override the Stored_Constraint list of + the full view of the derived type with that of the derived type. + +2017-05-02 Bob Duff + + * sem_attr.adb (Attribute_Enum_Rep): Disallow T'Enum_Rep. + +2017-05-02 Vasiliy Fofanov + + * s-os_lib.ads: Minor typo fix. + +2017-05-02 Vasiliy Fofanov + + * gnatls.adb: Merge and refactor code from Prj.Env and remove + this deprecated dependency. + +2017-05-02 Ed Schonberg + + * exp_util.ads: minor comment addition. + +2017-05-02 Eric Botcazou + + * sem_ch3.adb (Build_Derived_Record_Type): Fix a few typos and + pastos in part #3 of the head comment. + +2017-05-02 Ed Schonberg + + * exp_ch3.adb (Freeze_Type): Do not generate an invariant + procedure body for a local (sub)type declaration within a + predicate function. Invariant checks do not apply to these, and + the expansion of the procedure will happen in the wrong scope, + leading to misplaced freeze nodes. + +2017-05-02 Ed Schonberg + + * exp_util.adb (Insert_Library_Level_Action): Use proper scope + to analyze generated actions. If the main unit is a body, + the required scope is that of the corresponding unit declaration. + +2017-05-02 Arnaud Charlet + + * einfo.adb (Declaration_Node): flip branches of + an IF statement to avoid repeated negations in its condition; + no change in semantics, only to improve readability. + +2017-05-02 Arnaud Charlet + + * sem_case.adb: Remove extra spaces in parameter declarations. + +2017-05-02 Justin Squirek + + * usage.adb: Replace space with hyphen ("run time" -> "run-time") + in usage line for new -gnatwE switch. + +2017-05-02 Claire Dross + + * a-cofuve.ads (Remove): Remove unnecessary + conditions in precondition. + +2017-05-02 Vasiliy Fofanov + + * a-stream.ads, exp_imgv.adb, sem_ch10.adb, + sem_attr.adb, s-finmas.ads, osint.adb: Minor typo fix. + +2017-05-02 Justin Squirek + + * sem_ch4.adb (Analyze_Case_Expression): Add check for valid + alternative expression. + * sem_res.adb (Resolve_Case_Expression): Ditto. + +2017-05-02 Ed Schonberg + + * exp_disp.adb (Set_All_DT_Position, In_Predef_Prim_DT): + Refine predicate for the case where the primitive operation + is a renaming of equality. An overriding operation that is + a user-defined renaming of predefined equality inherits its + slot from the overridden operation. Otherwise it is treated + as a predefined op and occupies the same predefined slot as + equality. A call to it is transformed into a call to its alias, + which is the predefined equality. A dispatching call thus uses + the proper slot if operation is further inherited and called + with class-wide arguments. + +2017-05-02 Justin Squirek + + * errout.adb (Set_Msg_Text): Add a case to switch the message + type when the character '[' is detected signifying a warning + about a run-time exception. + * opt.ads Add a new Warning_Mode value for new switch + * switch-b.adb (Scan_Binder_Switches): Add case for the binder + to handle new warning mode + * usage.adb (Usage): Add usage entry for -gnatwE + * warnsw.adb (Set_Warning_Switch): Add case for the new switch + +2017-05-02 Ed Schonberg + + * sem_prag.adb (Process_Conversion): Reject an intrinsic operator + declaration that operates on some fixed point type. + +2017-05-02 Justin Squirek + + * a-crbtgo.adb, s-taasde.adb: Remove unused use-type clauses. + +2017-05-02 Hristian Kirtchev + + * sem_ch6.adb (Analyze_Null_Procedure): Revert previous change. + +2017-05-02 Justin Squirek + + * sem_ch4.adb (Analyze_Case_Expression): Add check for valid + expression (Analyze_If_Expression): Add check for valid condition + * sem_eval.adb (Eval_Case_Expression): Add check for error posted + on case-expression + * sem_res.adb (Resolve_If_Expression): Add check for valid + condition and then-expression. + +2017-05-02 Ed Schonberg + + * exp_ch3.adb (Build_Initialization_Call): Generate a null + statement if the initialization call is a null procedure, as + can happen with a controlled type with no explicit Initialize + procedure, or an array of such. + * exp_ch7.adb (Process_Object_Declaration): For a type with + controlled components that has a trivial Initialize procedure, + insert declaration for finalization counter after object + declaration itself. + (Make_Deep_Array_Body, Build_Initialize_statements): Do not create + finalization block and attendant declarations if component has + a trivial Initialize procedure. + (Make_Init_Call): Do not generate a call if controlled type has + a trivial Initialize procedure. + +2017-05-02 Eric Botcazou + + * g-forstr.ads (Data): Move Format component last. + * g-forstr.adb ("+"): Adjust for above change. + * g-rewdat.ads (Buffer): Move Buffer, Current, Pattern and Value last. + * g-sechas.ads (Context): Move Key last. + * g-socket.ads (Service_Entry_Type): Move Aliases last. + * s-fileio.adb (Temp_File_Record): Move Name last. + * s-regexp.adb (Regexp_Value): Move Case_Sensitive last. + * xr_tabls.ads (Project_File): Move Src_Dir and Obj_Dir last. + +2017-05-02 Jerome Lambourg + + * bindusg.adb, bindgen.adb, gnatbind.adb, opt.ads: Remove the -nognarl + switch introduced recently. finally not needed. + +2017-05-02 Hristian Kirtchev + + * sem_ch6.adb (Analyze_Null_Procedure): Set the + Corresponding_Body link for a null procedure declaration. + +2017-05-02 Eric Botcazou + + * atree.h (Flag290): Add missing terminating parenthesis. + * einfo.adb (Is_Class_Wide_Clone): Use Flag290. + (Set_Is_Class_Wide_Clone): Likewise. + * einfo.ads (Is_Class_Wide_Clone): Likewise. + +2017-05-02 Gary Dismukes + + * checks.ads (Null_Exclusion_Static_Checks): Add Boolean + parameter Array_Comp to indicate the case of an array object + with null-excluding components. + * checks.adb (Null_Exclusion_Static_Checks): + Call Compile_Time_Constraint_Error instead of + Apply_Compile_Time_Constraint_Error in the component case. Also + call that when Array_Comp is True, with an appropriate warning for + the array component case. Only create an explicit initialization + by null in the case of an object of a null-excluding access type + (and no longer do that in the component case). + * sem_ch3.adb (Check_Component): Add a Boolean parameter + Array_Comp defaulted to False. Pass Empty for the Comp + actual when calling Null_Exclusion_Static_Checks in the case + where Comp_Decl matches Object_Decl, because we don't have a + component in that case. In the case of an object or component + of an array type, pass True for Array_Comp on the recursive call + to Check_Component. + +2017-05-02 Bob Duff + + * s-taprop-linux.adb (Prio_To_Linux_Prio): New function to correctly + compute the linux priority from the Ada priority. Call this everywhere + required. In particular, the previous version was not doing this + computation when setting the ceiling priority in various places. It + was just converting to C.int, which results in a ceiling that is off + by 1. + +2017-05-02 Ed Schonberg + + * sem_ch3.adb: Comment predicate inheritance. + +2017-05-02 Tristan Gingold + + * s-trasym.ads: Add comment. + +2017-05-02 Bob Duff + + * sem_elab.adb, sem_elab.ads: Minor comment fixes. + * sem_ch4.adb: Minor reformatting. + * s-taprop-linux.adb, s-taspri-posix.ads: Code refactoring. + * s-taspri-posix-noaltstack.ads: Minor refactoring. + * sinput.ads: Minor typo fix. + +2017-05-02 Ed Schonberg + + * exp_ch9.adb (Discriminated_Size): Moved to sem_util. + * sem_util.ads, sem_util.adb (Discriminated_Size): Predicate moved + here from exp_ch9, to recognize objects whose creation requires + dynamic allocation, so that the proper warning can be emitted + when restriction No_Implicit_Heap_Allocation is in effect. + * sem_ch3.adb (Analyze_Object_Declaration): Use Discriminated_Size + to emit proper warning when an object that requires dynamic + allocation is declared. + +2017-05-02 Tristan Gingold + + * s-trasym.ads, s-trasym.adb (Enable_Cache): New. + +2017-05-02 Ed Schonberg + + * sem_ch4.adb (Find_Equality_Types, Try_One_Interp): The same relaxed + visibility rules for equality operators that apply within an + instantiation apply within an inlined body. + * sem_type.adb (Add_One_Interp): ditto. + +2017-05-02 Hristian Kirtchev + + * sem_prag.adb (Analyze_Pragma): Forbid pragma Contract_Cases on null + procedures. + +2017-05-02 Eric Botcazou + + * snames.ads-tmpl + (Name_Assume, Name_Attribute_Definition, Name_Loop_Optimize, + Name_No_Tagged_Streams): Move to regular pragmas. Add + placeholders for Default_Scalar_Storage_Order, Dispatching_Domain, + and Secondary_Stack_Size. + (Pragma_Id): Move Pragma_Assume, + Pragma_Attribute_Definition, Pragma_Loop_Optimize and + Pragma_No_Tagged_Streams to second part. + +2017-05-02 Hristian Kirtchev + + * exp_attr.adb: Minor reformatting. + +2017-05-02 Ed Schonberg + + * sem_ch4.adb (Analyze_Selected_Component): Improve error + detection for illegal references to private components or + operations of a protected type in the body of the type. + +2017-05-02 Eric Botcazou + + * opt.ads: Add missing GNAT markers in comments. + * opt.adb (Set_Opt_Config_Switches): Do not override earlier + settings of Optimize_Alignment at the end. + +2017-05-02 Hristian Kirtchev + + * checks.adb (Apply_Constraint_Check): Do not apply + a discriminant check when the associated type is a constrained + subtype created for an unconstrained nominal type. + * exp_attr.adb: Minor reformatting. + +2017-05-02 Bob Duff + + * sem_ch3.adb (OK_For_Limited_Init_In_05): Handle correctly + the N_Raise_Expression case. + * sem_ch6.adb (Check_Limited_Return): Minor: clarify comment, + and add assertions. + +2017-05-02 Yannick Moy + + * exp_ch4.adb (Expand_N_Op_Ne): Do not bump parenthese level and + optimize length comparison in GNATprove mode. + * exp_spark.adb (Expand_SPARK_Op_Ne): New function to rewrite + operator /= into negation of operator = when needed. + (Expand_SPARK): Call new + function to expand operator /=. + +2017-05-02 Ed Schonberg + + * exp_fixd.adb (Expand_Divide_Fixed_By_Fixed_Giving_Fixed): + Simplify the expression for a fixed-fixed division to remove + divisions by constants whenever possible, as an optimization + for restricted targets. + +2017-05-02 Hristian Kirtchev + + * checks.adb, sem_ch3.adb, sem_ch6.adb: Minor reformatting. + +2017-05-02 Bob Duff + + * exp_attr.adb (Callable, Identity, Terminated): Use Find_Prim_Op + to find primitive ops, instead of using an Identifier that will + later be looked up. This is necessary because these ops are not + necessarily visible at all places where we need to call them. + * exp_util.ads: Minor comment fix. + +2017-05-02 Ed Schonberg + + * sem_ch6.adb (Fully_Conformant_Expressions): Two entity + references are fully conformant if they are both expansions + of the discriminant of a protected type, within one of the + protected operations. One occurrence may be expanded into a + constant declaration while the other is an input parameter to + the corresponding generated subprogram. + +2017-05-02 Justin Squirek + + * sem_ch3.adb (Check_For_Null_Excluding_Components): Created for + recursivly searching composite-types for null-excluding access + types and verifying them. + (Analyze_Object_Declaration): Add a + call to Check_Null_Excluding_Components for static verification + of non-initialized objects. + * checks.adb, checks.ads (Null_Exclusion_Static_Checks): Added + a parameter for a composite-type's component and an extra case + for printing component information. + +2017-05-02 Yannick Moy + + * sem_ch10.adb (Analyze_Subunit): Take + configuration pragma into account when restoring appropriate + pragma for analysis of subunit. + +2017-05-02 Justin Squirek + + * s-tasren.adb, s-tasini.adb, s-taprop-linux.adb, + s-mudido-affinity.adb,, a-exetim-posix.adb, a-direio.adb, + g-socket.adb, s-taenca.adb, s-fileio.adb: Remove unused use-type + clauses from the runtime. + +2017-05-02 Eric Botcazou + + * freeze.adb (Check_Component_Storage_Order): Do not treat bit-packed + array components specially. + +2017-05-02 Ed Schonberg + + * sem_ch8.adb (Premature_Usage): If the premature usage of + an entity is as the expression in its own object decaration, + rewrite the reference as Any_Id to prevent cascaded errors or + compiler loops when such an entity is used in an address clause. + +2017-05-01 Eric Botcazou + + * gcc-interface/decl.c (components_to_record): Add missing guard. + +2017-05-01 Eric Botcazou + + * gcc-interface/decl.c (components_to_record): Add more comments. + Put back pending fields onto the regular list if the misalignment + happens to cancel itself. + +2017-04-28 Ed Schonberg + + * sem_ch4.adb (Complete_Object_Operation): When rewriting the + controlling actual in a prefixed call, preserve the original node + information if the prefix itself has been rewritten, for ASIS use. + +2017-04-28 Hristian Kirtchev + + * exp_ch6.adb (Insert_Post_Call_Actions): + Code clean up. Insert the post-call actions after an enclosing + procedure call when N denotes a function call and appears as an + actual parameter in the procedure call. + +2017-04-28 Eric Botcazou + + * freeze.adb (Check_Component_Storage_Order): If there is a clause + for the component, also reject the attribute if the component + doesn't end on a byte boundary and its scalar storage order is + different from that of the enclosing record type. + +2017-04-28 Javier Miranda + + * atree.ads (Info_Messages): Removed. + (Warning_Info_Messages): New counter. + (Report_Info_Messages): New counter. + * err_vars.ads Update documentation. + * errout.adb (Delete_Warning_And_Continuations): Update + Info_Message occurrences. + (Error_Msg_Internal): Update Info_Message occurrences. + (Delete_Warning): Update Info_Message occurrences. + (Write_Error_Summary): Update Info_Message occurrences. + (Output_Messages): Update Info_Message occurrences. + (To_Be_Removed): Update Info_Message occurrences. + (Reset_Warnings): Update Info_Message occurrences. + * errutil.adb (Error_Msg): Update Info_Message occurrences. + (Finalize): Update Info_Message occurrences. + (Initialize): Update Info_Message occurrences. + * erroutc.adb (Delete_Msg): Update Info_Message occurrences. + (Compilation_Errors): Update Info_Message_Occurences. + +2017-04-28 Eric Botcazou + + * exp_ch3.adb (Build_Init_Statements): Likewise on Nam. + * freeze.adb (Check_Component_Storage_Order): And on Comp_Byte_Aligned. + * sem_aggr.adb (Resolve_Record_Aggregate): Initialize Box_Node. + * sem_attr.adb (Loop_Entry): Initialize Encl_Loop. + * sem_ch12.adb (Build_Operator_Wrapper): Add pragma Warnings on Expr. + * sem_ch13.adb (Validate_Address_Clauses): Initialize Y_Alignment and + Y_Size. + * sem_eval.adb (Why_Not_Static): Initialize Typ. + * sem_prag.adb (Analyze_Pragma): Add pragma Warnings on Str. + +2017-04-28 Bob Duff + + * sem_util.ads, sem_util.adb (Might_Raise): New function + that replaces Is_Exception_Safe, but has the opposite + sense. Is_Exception_Safe was missing various cases -- calls inside + a pragma Debug, calls inside an 'if' or assignment statement, + etc. Might_Raise now walks the entire subtree looking for things + that can raise. + * exp_ch9.adb (Is_Exception_Safe): Remove. + (Build_Protected_Subprogram_Body): Replace call to + Is_Exception_Safe with "not Might_Raise". Misc cleanup (use + constants where possible). + * exp_ch7.adb: Rename Is_Protected_Body --> + Is_Protected_Subp_Body. A protected_body is something different + in the grammar. + +2017-04-28 Eric Botcazou + + * inline.adb (Expand_Inlined_Call): Initialize Targ1 variable. + * par-ch3.adb (P_Component_Items): Initialize Decl_Node variable. + (P_Discrete_Choice_List): Initialize Expr_Node variable. + * par-ch9.adb (P_Task): Initialize Aspect_Sloc variable. + (P_Protected): Likewise. + * sem_case.adb (Check_Duplicates): + Add pragma Warnings on variable. + * sem_ch12.adb (Preanalyze_Actuals): Initialize Vis variable. + * sem_ch4.adb (List_Operand_Interps): Add pragma Warnings on variable. + * sem_ch5.adb (Analyze_Assignment): Initialize Save_Full_Analysis. + (Analyze_Exit_Statement): Initialize Scope_Id variable. + (Analyze_Iterator_Specification): Initialize Bas variable. + * sem_ch9.adb (Allows_Lock_Free_Implementation): Initialize + Error_Count (Satisfies_Lock_Free_Requirements): Likewise. + (Analyze_Accept_Statement): Initialize Task_Nam. + +2017-04-28 Hristian Kirtchev + + * checks.adb (Install_Primitive_Elaboration_Check): + Do not generate an elaboration check if all checks have been + suppressed. + +2017-04-28 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specifications, case + Interrupt_Handler and Attach_Handler): Generate reference + to protected operation to prevent spurious warnings about + unreferenced entities. Previous scheme failed with style checks + enabled. + +2017-04-28 Ed Schonberg + + * sem_prag.adb (Relocate_Pragmas_To_Body): A pragma Warnings + that follows an expression function must not be relocated to + the generated body, because it applies to the code that follows. + +2017-04-28 Gary Dismukes + + * sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Test + Relaxed_RM_Semantics to avoid having CodePeer issue errors on + code that might violate the more stringent checking for 'Access + introduced in Ada 2005. + +2017-04-28 Arnaud Charlet + + * a-cforse.adb: minor style fix in comment. + +2017-04-28 Eric Botcazou + + * exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body): Also + initialize Block_Decls variable. + (Expand_Entry_Barrier): Add pragma Warnings on Func_Body variable. + (Build_Dispatching_Requeue): Add pragma Warnings on Op variable. + * exp_disp.adb (Expand_Interface_Actuals): Initialize + Formal_DDT and Actual_DDT variables. + (Expand_Interface_Thunk): Initialize Iface_Formal. + (Make_DT): Initialize Size_Comp. + (Make_Select_Specific_Data_Table): Initialize Decls. + * exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies): + Also initialize more RPC_Receiver_* variables. + (Build_To_Any_Function): Initialize Cstr_Formal. + * exp_prag.adb (Expand_Pragma_Contract_Cases): Initialize Msg_Str. + +2017-04-28 Ed Schonberg + + * sem_ch6.adb (Freeze_Type_Refs): For an interface conversion + node between access types, freeze the designated type as well, + so that dispatch table pointers are created in the proper scope, + and not in the constructed body of the expression function. + +2017-04-28 Bob Duff + + * alloc.ads (Nodes_Initial): Go back to previous value. The large + value makes large compilations faster, but small compilations slower. + +2017-04-28 Arnaud Charlet + + * sem_util.adb: minor typos in Is_Child_Or_Sibling. + +2017-04-28 Hristian Kirtchev + + * erroutc.adb (Compilation_Errors): Do not consider info messages + as suitable warnings when warnings must be treated as errors. + * sem_ch7.adb (Analyze_Package_Specification): Do not consider + internally-generated packages when outputting completion + information. + * errout.adb (Output_Messages): Do not consider info messages as + suitable warnings when warnings must be treated as errors. + * errutil.adb (Finalize): Do not consider info messages as + suitable warnings when warnings must be treated as errors. + +2017-04-28 Eric Botcazou + + * warnsw.ads: Minor fix for incorrect wording in comment. + +2017-04-28 Ed Schonberg + + * sem_res.adb (In_Instance_Code): New predicate in + Valid_Conversion, to determine whether a type conversion appears + as (or within) an actual for a formal object. Type conversions + in instances are not rechecked in Valid_Conversion because + visibility changes between generic location andi instance may + lead to spurious errors, but conversions within an actual must be + fully checked, and they are not fully resolved when pre-analyzing + the actuals. + +2017-04-28 Hristian Kirtchev + + * exp_ch6.adb (Expand_N_Extended_Return_Statement): Use + New_Copy_Tree instead of Relocate_Node as any subsequent copies + of the relocated node will have mangled Parent pointers. + * sem_util.adb (Build_NCT_Hash_Tables): Reset both hash + tables used in conjunction with entity and itype replication. + (Visit_Entity): Rewrite the restriction on which entities + require duplication. The restriction now includes all types. + +2017-04-28 Hristian Kirtchev + + * a-cofuse.ads, a-cfdlli.ads, a-cfhase.adb, a-cfhase.ads, a-cfinve.adb, + a-cfinve.ads, a-cforma.adb, a-cforma.ads, a-cofuma.adb, a-cofuma.ads, + a-cfhama.adb, a-cfhama.ads, a-cforse.adb: Minor reformatting and code + cleanups. + +2017-04-28 Hristian Kirtchev + + * exp_util.adb, g-dyntab.adb, par-ch4.adb, sem_util.adb, sem_attr.adb, + gnat1drv.adb, exp_disp.adb, namet.adb, alloc.ads: Minor reformatting. + +2017-04-28 Gary Dismukes + + * exp_util.adb: Minor reformatting. + +2017-04-28 Ed Schonberg + + * sem_ch4.adb: Fix copy/pasto. + +2017-04-27 Tristan Gingold + + * gcc-interface/Make-lang.in: Define EH_MECHANISM while building + raise-gcc.c. Fix include search path for raise-gcc.c + +2017-04-27 Eric Botcazou + + * fe.h (Warn_On_Questionable_Layout): Declare. + * warnsw.ads (Warn_On_Record_Holes): Move down. + (Warn_On_Questionable_Layout): New boolean variable. + (Warning_Record): Add Warn_On_Questionable_Layout field. + * warnsw.adb (All_Warnings): Set Warn_On_Questionable_Layout. + (Restore_Warnings): Likewise. + (Save_Warnings): Likewise. + (Set_Dot_Warning_Switch): Handle 'q' and 'Q' letters. + * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust call to + components_to_record. + (gnu_field_to_gnat): New function. + (warn_on_field_placement): Likewise. + (components_to_record): Add GNAT_RECORD_TYPE and remove REORDER + parameters. Rename local variables and adjust recursive call. + Rework final scan of the field list and implement warnings on the + problematic placement of specific sorts of fields. + +2017-04-27 Bob Duff + + * errout.adb, exp_aggr.adb, exp_attr.adb, exp_code.adb, fname.adb, + * fname.ads, freeze.adb, inline.adb, lib.adb, lib.ads, lib-list.adb, + * lib-load.adb, lib-writ.adb, par.adb, restrict.adb, rtsfind.adb, + * sem.adb, sem_cat.adb, sem_ch10.adb, sem_ch12.adb, sem_ch3.adb, + * sem_ch4.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb, sem_elab.adb, + * sem_intr.adb, sem_res.adb, sem_util.adb, sem_warn.adb, sprint.adb: + For efficiency, cache results of Is_Internal_File_Name and + Is_Predefined_File_Name in the Units table. This avoids a lot + of repeated text processing. + +2017-04-27 Emmanuel Briot + + * g-comlin.adb (Sort_Sections): remove useless test. + +2017-04-27 Claire Dross + + * a-cfhase.adb, a-cfhase.ads (=): Generic parameter removed to + allow the use of regular equality over elements in contracts. + (Formal_Model): Ghost package containing model functions that are + used in subprogram contracts. + (Current_To_Last): Removed, model functions should be used instead. + (First_To_Previous): Removed, model functions should be used instead. + (Strict_Equal): Removed, model functions should be used instead. + (No_Overlap): Removed, model functions should be used instead. + (Equivalent_Keys): Functions over cursors are removed. They were + awkward with explicit container parameters. + * a-cforse.adb, a-cforse.ads (=): Generic parameter removed to + allow the use of regular equality over elements in contracts. + (Formal_Model): Ghost package containing model functions that + are used in subprogram contracts. + (Current_To_Last): Removed, model functions should be used instead. + (First_To_Previous): Removed, model functions should be used instead. + (Strict_Equal): Removed, model functions should be used instead. + (No_Overlap): Removed, model functions should be used instead. + +2017-04-27 Yannick Moy + + * gnat1drv.adb: Code cleanup. + +2017-04-27 Ed Schonberg + + * exp_util.adb (Replace_Entity): The prefix of a 'Result + attribute reference in a post- condition is the subprogram to + which the condition applies. If the condition is inherited + by a type extension, the prefix becomes a reference to the + inherited operation, but there is no need to create a wrapper + for this operation, because 'Result is expanded independently + when elaborating the postconditions. + +2017-04-27 Bob Duff + + * sinput.adb: Minor code cleanup. + * namet.adb (Append): Create faster versions of + Append(String) and Append(Name_Id) by using slice assignment + instead of loops. + * sem_util.adb (In_Instance): Speed this up by removing + unnecessary tests; Is_Generic_Instance is defined for all + entities. + * sem_util.ads, sem_util.adb (In_Parameter_Specification): + Remove unused function. + * alloc.ads (Nodes_Initial): Use a much larger value, because + the compiler was spending a lot of time copying the nodes table + when it grows. This number was chosen in 1996, so is rather out + of date with current memory sizes. Anyway, it's virtual memory. + Get rid of Orig_Nodes_...; use Node_... instead. + * atree.adb (Lock): Do not release the Nodes tables; it's a + waste of time. + Orig_Nodes_ ==> Nodes_ + * nlists.adb: Orig_Nodes_ ==> Nodes_ + * g-table.adb: Remove unused "with" clause. + * g-table.ads, table.ads: Remove Big_Table_Type, which should + not be used by clients. + * g-dyntab.adb (Last_Allocated): New function + to encapsulate T.P.Last_Allocated, which I'm thinking of changing. + +2017-04-27 Hristian Kirtchev + + * sem_eval.adb (Subtypes_Statically_Compatible): Remove duplicated + check. + (Subtypes_Statically_Match): Remove duplicate check. + * sem_prag.adb (Check_Arg_Is_External_Name): Remove duplicate check. + +2017-04-27 Hristian Kirtchev + + * exp_aggr.adb (Replace_Type): Remove the special processing + for selected components. + * exp_attr.adb (Expand_N_Attribute_Reference): Merge the + processing for attributes Fixed_Value and Integer_Value. + * exp_util.adb (Side_Effect_Free): Merge the processing for + qualified expressions, type conversions, and unchecked type + conversions. + * g-comlin.adb (Is_In_Config): Merge the processing for No_Space + and Optional. + * par-ch3.adb (P_Declarative_Items): Merge the processing for + tokens function, not, overriding, and procedure. + * sem_ch6.adb (Fully_Conformant_Expressions): Merge the processing + for qualified expressions, type conversions, and unchecked + type conversions. + * sem_util.adb (Compile_Time_Constraint_Error): Merge the + processing for Ada 83 and instances. + (Object_Access_Level): Merge the processing for indexed components + and selected components. + * uname.adb (Add_Node_Name): Merge the processing for stubs. + +2017-04-27 Hristian Kirtchev + + * checks.adb (Install_Primitive_Elaboration_Check): + Do not generate the check when restriction No_Elaboration_Code + is in effect. + +2017-04-27 Ed Schonberg + + * exp_disp.adb (Build_Class_Wide_Check): New subsidiary + of Expand_Dispatching_Call. If the denoted subprogram has a + class-wide precondition, this is the only precondition that + applies to the call, rather that the class-wide preconditions + that may apply to the body that is executed. (This is specified + in AI12-0195). + +2017-04-27 Yannick Moy + + * gnat1drv.adb (Adjust_Global_Switches): Issue + a warning in GNATprove mode if the runtime library does not + support IEEE-754 floats. + +2017-04-27 Ed Schonberg + + * sem_prag.adb (Inherit_Class_Wide_Pre): If the parent operation + is itself inherited it does not carry any contract information, + so examine its parent operation which is its Alias. + +2017-04-27 Ed Schonberg + + * sem_attr.adb (Analyze_Attribute, case 'Image): In Ada2012 the + prefix can be an object reference in which case Obj'Image (X) + can only be interpreted as an indexing of the parameterless + version of the attribute. + * par-ch4.adb (P_Name): An attribute reference can be the prefix of + an indexing or a slice operation if the attribute does not require + parameters. In Ada2012 'Image also belongs in this category, + and A'Image (lo .. hi) is legal and must be parsed as a slice. + +2017-04-27 Yannick Moy + + * exp_ch4.adb: Minor reformatting. + * gnat1drv.adb (Adjust_Global_Switches): When in GNATprove mode, + disable the CodePeer and C generation modes. Similar to the + opposite actions done in CodePeer mode. + +2017-04-27 Yannick Moy + + * sem_res.adb: Remove duplicate code. + * sem_attr.adb: Delete duplicate code. + +2017-04-27 Bob Duff + + * g-dyntab.adb: Reduce the amount of copying in + Release. No need to copy items past Last. + +2017-04-27 Hristian Kirtchev + + * checks.adb Add with and use clauses for Sem_Disp. + (Install_Primitive_Elaboration_Check): New routine. + * checks.ads (Install_Primitive_Elaboration_Check): New routine. + * exp_attr.adb (Expand_N_Attribute_Reference): Clean up the + processing of 'Elaborated. + * exp_ch6.adb (Expand_N_Subprogram_Body): Install a primitive + elaboration check. + +2017-04-27 Bob Duff + + * g-dyntab.ads, g-dyntab.adb, g-table.ads: Remove incorrect assertion. + If the table grows and then shrinks back to empty, we won't necessarily + point back to the empty array. Code cleanups. + * sinput.ads: Add 'Base to Size clause to match the declared + component subtypes. + +2017-04-27 Claire Dross + + * a-cforma.adb, a-cforma.ads (=): Generic parameter removed to + allow the use of regular equality over elements in contracts. + (Formal_Model): Ghost package containing model functions that + are used in subprogram contracts. + (Current_To_Last): Removed, model functions should be used instead. + (First_To_Previous): Removed, model functions should be used instead. + (Strict_Equal): Removed, model functions should be used instead. + (No_Overlap): Removed, model functions should be used instead. + * a-cofuma.adb, a-cofuma.ads (Enable_Handling_Of_Equivalence) + Boolean generic parameter to disable contracts for equivalence + between keys. + (Witness): Create a witness of a key that is used for handling of + equivalence between keys. + (Has_Witness): Check whether a witness is contained in a map. + (W_Get): Get the element associated to a witness. + (Lift_Equivalent_Keys): Removed, equivalence between keys is handled + directly. + * a-cofuse.adb, a-cofuse.ads (Enable_Handling_Of_Equivalence) + Boolean generic parameter to disable contracts for equivalence + between keys. + * a-cfhama.adb, a-cfhama.ads (Formal_Model.P) Disable handling + of equivalence on functional maps. + * a-cfdlli.adb, a-cfdlli.ads (Formal_Model.P) Disable handling + of equivalence on functional maps. + +2017-04-27 Hristian Kirtchev + + * exp_ch9.adb (Expand_Entry_Barrier): Code + cleanup. Do not perform the optimization which removes the + declarations of the discriminant and component renamings when + validity checks on operands and attributes are in effect. + +2017-04-27 Hristian Kirtchev + + * exp_spark.adb, exp_util.adb, sem_ch7.adb, g-dyntab.adb, g-dyntab.ads, + freeze.adb, a-cfinve.ads, a-cofuma.adb, a-cofuma.ads, a-cfhama.adb, + a-cfhama.ads, a-cofove.ads: Minor reformatting. + +2017-04-27 Hristian Kirtchev + + * g-debpoo.adb (Dump_Gnatmem): Protect against a possible null + pointer dereference. + * g-spipat.adb (Dump): Code clean up. Protect against a possible + null pointer dereference. + +2017-04-27 Bob Duff + + * g-dyntab.ads, g-dyntab.adb: Default for Table_Low_Bound. + Rename Empty --> Empty_Table_Ptr, and don't duplicate code for it. + Free renames Init, since they do the same thing. + * g-table.ads: Default for Table_Low_Bound. + * table.ads: Default for Table_Low_Bound, Table_Initial, and + Table_Increment. + +2017-04-27 Bob Duff + + * g-dyntab.ads, g-dyntab.adb: Add assertions to subprograms that + can reallocate. + * atree.adb, elists.adb, fname-uf.adb, ghost.adb, inline.adb, + * lib.adb, namet.adb, nlists.adb, sem.adb, sinput.adb, stringt.adb: + Reorder code so that above assertions do not fail. + * table.ads: Remove obsolete comment on Locked. + +2017-04-27 Claire Dross + + * a-cfdlli.ads: Code cleanup. + +2017-04-27 Yannick Moy + + * exp_spark.adb (Expand_SPARK_Freeze_Type): Build a DIC procedure + when needed for proof. (Expand_SPARK): Call the new procedure. + * exp_util.ads Fix typo. + +2017-04-27 Gary Dismukes + + * a-cofuma.ads, a-cfhama.ads: Minor reformatting, grammar, and typo + fixes. + +2017-04-27 Hristian Kirtchev + + * sem_elab.adb Add new type Visited_Element + and update the contents of table Elab_Visited. Various code clean up. + (Check_Elab_Call): Determine whether a prior call to + the same subprogram was already examined within the same context. + (Check_Internal_Call_Continue): Register the subprogram being + called as examined within a particular context. Do not suppress + elaboration warnings. + +2017-04-27 Gary Dismukes + + * xoscons.adb, osint.ads: Minor reformatting. + +2017-04-27 Bob Duff + + * g-dyntab.ads, g-dyntab.adb: Misc cleanup. Rename + Table_Count_Type --> Table_Last_Type, because the name + was confusing (a "count" usually starts at zero). Add + functionality supported or needed by other tables packages + (Move, Release_Threshold). + * g-table.ads, g-table.adb: This is now just a thin wrapper + around g-dyntab.ads/g-dyntab.adb. Add functionality supported + or needed by other tables packages (Save, Restore). + * table.ads, table.adb: This is now just a thin wrapper around + * g-table.ads/g-table.adb. + * namet.h, scos.h, uintp.h: These files are reaching into the + private data of some instances of g-table, whose names changed, + so the above change requires some adjustment here. It now uses + public interfaces. + +2017-04-27 Bob Duff + + * namet.adb, namet.ads: Minor: remove unused procedures. + +2017-04-27 Eric Botcazou + + * checks.adb (Apply_Scalar_Range_Check): Initialize Ok variable too. + (Minimize_Eliminate_Overflows): Initialize Llo and Lhi. + Add pragma Warnings on Rtype variable in nested block. * + * exp_ch3.adb (Build_Init_Statements): Initialize VAR_LOC. + * exp_ch4.adb (Expand_Concatenate): Initialize 3 variables. + (Size_In_Storage_Elements): Add pragma Warnings on Res variable. + * exp_ch7.adb (Build_Adjust_Statements): Initialize Bod_Stmts. + (Process_Component_List_For_Finalize): Initialize Counter_Id. + (Build_Finalize_Statements): Initialize Bod_Stmts. + * exp_disp.adb (Expand_Dispatching_Call): Initialize SCIL_Node. + +2017-04-27 Claire Dross + + * a-cfhama.adb, a-cfhamai.ads (=): Generic parameter removed to + allow the use of regular equality over elements in contracts. + (Formal_Model): Ghost package containing model functions that are + used in subprogram contracts. + (Current_To_Last): Removed, model + functions should be used instead. + (First_To_Previous): Removed, model functions should be used instead. + (Strict_Equal): Removed, model functions should be used instead. + (No_Overlap): Removed, model functions should be used instead. + (Equivalent_Keys): Functions over cursors are removed. They were + awkward with explicit container parameters. + * a-cofuma.adb, a-cofuma.ads (Lift_Equivalent_Keys): New lemma + (proof only) procedure to help GNATprove when equivalence over + keys is not equality. + +2017-04-27 Hristian Kirtchev + + * exp_util.adb, a-cfdlli.adb, a-cfdlli.ads, exp_ch9.adb, g-dyntab.adb, + sem_dim.adb, a-cfinve.adb, a-cfinve.ads, a-cofove.adb, a-cofove.ads: + Minor reformatting and code cleanups. + +2017-04-27 Ed Schonberg + + * freeze.adb (Build_Inherited_Condition_Pragmas): New procedure, + subsidiary of Check_Inherited_Conditions, to build pragmas for an + operation whose ancestor has classwide pre/postconditions. This + is used both to check the legality of the inheritance in Ada + and in SPARK, and to determine whether a wrapper is needed for + an inherited operation. + * exp_util.adb (Build_Class_Wide_Expression, Replace_Entity): + Improve placement of error message for inherited classwide + conditions that become illegal on type derivation. + +2017-04-27 Yannick Moy + + * sem_ch12.adb (Analyze_Generic_Package_Declaration): Set + SPARK_Mode from context on generic package. + * sem_ch7.adb (Analyze_Package_Declaration): Simplify code to remove + useless test. + +2017-04-27 Claire Dross + + * a-cofuve.ads (Range_Shifted): Rewrite precondition to avoid + overflows in computations. + * a-cofove.ads (Capacity_Range): Rewrite last bound to avoid + overflows in computations. + (Insert): Rewrite precondition to avoid overflows in computations. + * a-cfinve.ads (Capacity_Range): Rewrite last bound to avoid + overflows in computations. + (Insert): Rewrite precondition to avoid overflows in computations. + +2017-04-27 Steve Baird + + * exp_ch9.adb (Expand_N_Asynchronous_Select): Initialize the Cancel + flag when it is declared in order to avoid confusing CodePeer about + the possibility of an uninitialized variable read. + +2017-04-27 Ed Schonberg + + * sem_dim.adb (Analyze_Dimension_Object_Declaration): There is + no dimensionality error if the subtype of the expression is + identical to the nominal subtype in the declaration, even though + the expression itself may have been constant-folded and lack a + dimension vector. + * sem_dim.ads: Add comments on setting of dimension vectors and + its interaction with node rewritings and side-effect removal. + +2017-04-27 Bob Duff + + * debug.adb: Minor comment correction. + * sem_dim.ads: Minor reformatting and typo fixes. + +2017-04-27 Bob Duff + + * g-table.adb, g-table.adsa, scos.h: From the C side, access First and + Last of the tables via function calls, rather than relying on layout + of data structures. + +2017-04-27 Ed Schonberg + + * exp_util.adb: No wrapper in GNATprove mode. + +2017-04-27 Yannick Moy + + * sem_res.adb (Resolve_Comparison_Op): Always + evaluate comparisons between values of universal types. + +2017-04-27 Hristian Kirtchev + + * sem_elab.adb (Check_Internal_Call_Continue): Do not generate + an elaboration counter nor a check when in GNATprove mode. + * sem_util.adb (Build_Elaboration_Entity): Do not create an + elaboration counter when in GNATprove mode. + +2017-04-27 Ed Schonberg + + * freeze.adb: copy-paste typo. + +2017-04-27 Yannick Moy + + * sem_prag.adb (Analyze_Pre_Post_In_Decl_Part): + Use correct test to detect call in GNATprove mode instead of + compilation. + +2017-04-27 Claire Dross + + * a-cfdlli.adb, a-cfdlli.ads (Formal_Model.M_Elements_In_Union): + New property function expressing that the element of a + sequence are contained in the union of two sequences. + (Formal_Model.M_Elements_Included): New property function + expressing that the element of a sequence are another sequence. + (Generic_Sorting): Use new property functions to state that + elements are preserved by Sort and Merge. + * a-cofove.adb, a-cofove.ads (=): Generic parameter removed to + allow the use of regular equality over elements in contracts. + (Formal_Model): Ghost package containing model functions + that are used in subprogram contracts. (Capacity): + On unbounded containers, return the maximal capacity. + (Current_To_Last): Removed, model functions should be used instead. + (First_To_Previous): Removed, model functions should be used instead. + (Append): Default parameter value replaced + by new wrapper to allow more precise contracts. + (Insert): Subprogram restored, it seems it was useful to users even if + it is inefficient. + (Delete): Subprogram restored, it seems it was useful to users even if + it is inefficient. + (Prepend): Subprogram restored, it seems it was useful to users even + if it is inefficient. + (Delete_First): Subprogram restored, it seems it + was useful to users even if it is inefficient. (Delete_Last): + Default parameter value replaced by new wrapper to allow more + precise contracts. + (Generic_Sorting.Merge): Subprogram restored. + * a-cfinve.adb, a-cfinve.ads (=): Generic parameter removed to + allow the use of regular equality over elements in contracts. + (Formal_Model): Ghost package containing model functions + that are used in subprogram contracts. (Capacity): + On unbounded containers, return the maximal capacity. + (Current_To_Last): Removed, model functions should be used + instead. + (First_To_Previous): Removed, model functions should be used instead. + (Append): Default parameter value replaced + by new wrapper to allow more precise contracts. + (Insert): Subprogram restored, it seems it was useful to users even if + it is inefficient. + (Delete): Subprogram restored, it seems it was useful to users even if + it is inefficient. + (Prepend): Subprogram restored, it seems it was useful to users even + if it is inefficient. + (Delete_First): Subprogram restored, it seems it + was useful to users even if it is inefficient. (Delete_Last): + Default parameter value replaced by new wrapper to allow more + precise contracts. + (Generic_Sorting.Merge): Subprogram restored. + (Vector): Do not reuse formal vectors, as it is no longer possible + to supply them with an equality function over elements. + +2017-04-27 Bob Duff + + * g-dyntab.adb (Release): When allocating the new + table, use the correct slice of the old table to initialize it. + +2017-04-27 Eric Botcazou + + * einfo.ads: Minor fixes in comments. + +2017-04-27 Ed Schonberg + + * sem_prag.adb: disable clones in SPARK_Mode. + +2017-04-27 Gary Dismukes + + * sem_util.ads, contracts.adb: Minor reformatting. + +2017-04-27 Ed Schonberg + + * sem_util.adb, sem_util.ads (Build_Class_Wide_Clone_Body): + Build body of subprogram that has a class-wide condition that + contains calls to other primitives. + (Build_Class_Wide_Clone_Call); Build a call to the common + class-wide clone of a subprogram with classwide conditions. The + body of the subprogram becomes a wrapper for a call to the + clone. The inherited operation becomes a similar wrapper to which + modified conditions apply, and the call to the clone includes + the proper conversion in a call the parent operation. + (Build_Class_Wide_Clone_Decl (Spec_Id : Entity_Id): For a + subprogram that has a classwide condition that contains calls to + other primitives, build an internal subprogram that is invoked + through a type-specific wrapper for all inherited subprograms + that may have a modified condition. + * sem_prag.adb (Check_References): If subprogram has a classwide + condition, create entity for corresponding clone, to be invoked + through wrapper subprograns. + (Analyze_Pre_Post_Condition_In_Decl_Part): Do not emit error + message about placement if pragma isi internally generated. + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): If subprogram has + a classwide clone, build body of clone as copy of original body, + and rewrite original body as a wrapper as a wrapper for a call to + the clone, so that it incorporates the original pre/postconditions + of the subprogram. + * freeze.adb (Check_Inherited_Conditions): For an inherited + subprogram that inherits a classwide condition, build spec and + body of corresponding wrapper so that call to inherited operation + gets the modified conditions. + * contracts.adb (Analyze_Contracts): If analysis of classwide + condition has created a clone for a primitive operation, analyze + declaration of clone. + +2017-04-27 Steve Baird + + * exp_util.adb (Build_Allocate_Deallocate_Proc): + Add "Suppress => All_Checks" to avoid generating unnecessary + checks. + +2017-04-27 Yannick Moy + + * debug.adb: Reserve debug flag 'm' for no inlining in GNATprove. + * sem_ch6.adb (Anayze_Subprogram_Body_Helper): Skip creation of + inlining body in GNATprove mode when switch -gnatdm used. + * sem_res.adb (Resolve_Call): Skip detection of lack of inlining + in GNATprove mode when switch -gnatdm used. + +2017-04-27 Arnaud Charlet + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause + [Attribute_Address]): Call Set_Address_Taken when ignoring rep + clauses, so that we keep an indication of the address clause + before removing it from the tree. + +2017-04-27 Yannick Moy + + * exp_util.ads, exp_util.adb (Evaluate_Name): Force evaluation + of expression being qualified, when not an object name, or else + evaluate the underlying name. + +2017-04-27 Jerome Lambourg + + * bindusg.adb, bindgen.adb, gnatbind.adb, opt.ads: add -nognarl switch. + +2017-04-27 Justin Squirek + + * exp_ch7.adb (Build_Finalize_Statements): Move Num_Comps to + Process_Component_List_For_Finalization as a local variable. + (Process_Component_For_Finalize): Add an extra parameter to avoid + global references. + (Process_Component_List_For_Finalization): Correct calls to + Process_Component_For_Finalize to take Num_Comps as a parameter. + +2017-04-27 Hristian Kirtchev + + * sem_ch8.adb (Find_Direct_Name): Account for the case where + a use-visible entity is defined within a nested scope of an + instance when giving priority to entities which were visible in + the original generic. + * sem_util.ads, sem_util.adb (Nearest_Enclosing_Instance): New routine. + +2017-04-27 Tristan Gingold + + * raise-gcc.c: Don't use unwind.h while compiling + for the frontend, but mimic host behavior. + +2017-04-27 Javier Miranda + + * sem_ch3.adb (Build_Discriminated_Subtype): + Propagate Has_Pragma_Unreferenced_Objects to the built subtype. + +2017-04-27 Hristian Kirtchev + + * sem_prag.adb (Analyze_Global_Item): + Do not consider discriminants because they are not "entire + objects". Remove the discriminant-related checks because they are + obsolete. + (Analyze_Input_Output): Do not consider discriminants + because they are not "entire objects". + +2017-04-27 Ed Schonberg + + * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Do not + perform check if the current scope does not come from source, + as is the case for a rewritten task body, because check has + been performed already, and may not be doable because of changed + visibility. + +2017-04-27 Hristian Kirtchev + + * a-cofuse.adb, a-cfdlli.adb, a-cofuse.ads, a-cfdlli.ads, a-cofuve.adb, + a-cofuve.ads, a-cofuma.adb, a-cofuma.ads, sem_eval.adb, a-cofuba.adb: + Minor reformatting. + +2017-04-27 Ed Schonberg + + * sem_ch4.adb (Analyze_Call): If the return type of a function + is incomplete in an context in which the full view is available, + replace the type of the call by the full view, to prevent spurious + type errors. + * exp_disp.adb (Check_Premature_Freezing): Disable check on an + abstract subprogram so that compiler does not reject a parameter + of a primitive operation of a tagged type being frozen, when + the untagged type of that parameter cannot be frozen. + +2017-04-27 Bob Duff + + * sem_attr.adb (Compute_Type_Key): Don't walk + representation items for irrelevant types, which could be in a + different source file. + +2017-04-27 Steve Baird + + * exp_attr.adb (Expand_N_Attribute_Reference): + Don't expand Image, Wide_Image, Wide_Wide_Image attributes + for CodePeer. + +2017-04-27 Yannick Moy + + * exp_unst.ads: Fix typos in comments. + +2017-04-27 Ed Schonberg + + * sem_eval.adb (Choice_Matches): Handle properly a real literal + whose type has a defined static predicate. + +2017-04-27 Hristian Kirtchev + + * exp_ch4.adb (Insert_Dereference_Action): + Do not adjust the address of a controlled object when the + associated access type is subject to pragma No_Heap_Finalization. + Code reformatting. + +2017-04-27 Pierre-Marie de Rodat + + * gcc-interface/utils.c (gnat_type_for_size): Set + TYPE_ARTIFICIAL on created types. + +2017-04-27 Claire Dross + + * a-cfdlli.adb, a-cfdlli.ads (Formal_Model): Adapt to + modifications in functional containers. + * a-cofuba.ads, a-cofuma.ads, a-cofuse.ads, a-cofuve.ads Reformat + to improve readablity. Subprograms are separated between basic + operations, constructors and properties. Universally quantified + formulas in contracts are factorized in independant functions + with a name and a comment. Names of parameters are improved. + +2017-04-27 Gary Dismukes + + * exp_spark.adb, sem_elab.adb: Minor reformatting and typo fix. + +2017-04-27 Hristian Kirtchev + + * sem_res.adb (Resolve_Type_Conversion): Do not + install a predicate check here since this is already done during + the expansion phase. Verify whether the operand satisfies the + static predicate (if any) of the target type. + * sem_ch3.adb (Analyze_Object_Declaration): Do + not install a predicate check if the object is initialized by + means of a type conversion because the conversion is subjected + to the same check. + +2017-04-27 Tristan Gingold + + * raise.c (__gnat_builtin_longjmp): Remove. + (__gnat_bracktrace): + Add a dummy definition for the compiler (__gnat_eh_personality, + __gnat_rcheck_04, __gnat_rcheck_10) (__gnat_rcheck_19, + __gnat_rcheck_20, __gnat_rcheck_21) (__gnat_rcheck_30, + __gnat_rcheck_31, __gnat_rcheck_32): Likewise. + * a-exexpr.adb: Renamed from a-exexpr-gcc.adb + * a-except.ads, a-except.adb: Renamed from a-except-2005.ads + and a-except-2005.adb. + * raise-gcc.c: Allow build in compiler, compiled as a C++ + file. + (__gnat_Unwind_ForcedUnwind): Adjust prototype. + (db): Constify msg_format. + (get_call_site_action_for): Don't use void arithmetic. + * system.ads (Frontend_Exceptions): Set to False. + (ZCX_By_Default): Set to True. + (GCC_ZC_Support): Set to True. + * gcc-interface/Makefile.in: No more variants for a-exexpr.adb and + a-except.ad[sb]. + * gcc-interface/Make-lang.in: Add support for backend zcx exceptions + in gnat1 and gnatbind. + * gnat1, gnatbind: link with raise-gcc.o, a-exctra.o, s-addima.o, + s-excmac.o, s-imgint.o, s-traceb.o, s-trasym.o, s-wchstw.o + * s-excmac.ads, s-excmac.adb: Copy of variants. + * a-except.o: Adjust preequisites. + Add handling of s-excmac-arm.adb and s-excmac-gcc.adb. + +2017-04-27 Claire Dross + + * a-cfdlli.adb, a-cfdlli.ads (Formal_Model): Adapt to + modifications in functional containers. + * a-cofuba.ads, a-cofuma.ads, a-cofuse.ads, a-cofuve.ads Reformat + to improve readablity. Subprograms are separated between basic + operations, constructors and properties. Universally quantified + formulas in contracts are factorized in independant functions + with a name and a comment. Names of parameters are improved. + +2017-04-27 Gary Dismukes + + * exp_spark.adb, sem_elab.adb: Minor reformatting and typo fix. + +2017-04-27 Hristian Kirtchev + + * sem_res.adb (Resolve_Type_Conversion): Do not + install a predicate check here since this is already done during + the expansion phase. Verify whether the operand satisfies the + static predicate (if any) of the target type. + * sem_ch3.adb (Analyze_Object_Declaration): Do + not install a predicate check if the object is initialized by + means of a type conversion because the conversion is subjected + to the same check. + +2017-04-27 Tristan Gingold + + * a-except.ads, a-except.adb, a-exexpr.adb: Removed (will be + replaced by their variants). + +2017-04-27 Hristian Kirtchev + + * exp_prag.adb, a-cofuse.adb, a-cofuse.ads, einfo.adb, sem_prag.adb, + cstand.adb, par-prag.adb, a-cofuve.adb, a-cofuve.ads, a-cofuma.adb, + a-cofuma.ads, a-cofuba.adb, a-cofuba.ads: Minor reformatting. + +2017-04-27 Tristan Gingold + + * s-excmac-gcc.ads, s-excmac-gcc.adb, + s-excmac-arm.ads, s-excmac-arm.adb (New_Occurrence): Rewrite it in + Ada95. + +2017-04-27 Hristian Kirtchev + + * exp_ch7.adb (Establish_Transient_Scope): Rewrite + the loop which detects potential enclosing transient scopes. The + loop now terminates much earlier as transient scopes are bounded + by packages and subprograms. + +2017-04-27 Claire Dross + + * a-cfdlli.adb, a-cfdlli.ads (=): Generic parameter removed to + allow the use of regular equality over elements in contracts. + (Cursor): Type is now public so that it can be used in + model functions. + (Formal_Model): Ghost package containing + model functions that are used in subprogram contracts. + (Current_To_Last): Removed, model functions should be used + instead. + (First_To_Previous): Removed, model functions should + be used instead. + (Strict_Equal): Removed, model functions + should be used instead. + (Append): Default parameter value + replaced by new wrapper to allow more precise contracts. + (Insert): Default parameter value replaced by new wrapper to + allow more precise contracts. + (Delete): Default parameter + value replaced by new wrapper to allow more precise contracts. + (Prepend): Default parameter value replaced by new wrapper to + allow more precise contracts. + (Delete_First): Default parameter + value replaced by new wrapper to allow more precise contracts. + (Delete_Last): Default parameter value replaced by new wrapper + to allow more precise contracts. + +2017-04-27 Hristian Kirtchev + + * exp_spark.adb (Expand_SPARK): Perform specialized expansion + for object declarations. + (Expand_SPARK_N_Object_Declaration): New routine. + * sem_elab.adb (Check_A_Call): Include calls to the + Default_Initial_Condition procedure of a type under the SPARK + elaboration checks umbrella. + +2017-04-27 Hristian Kirtchev + + * sem.adb (Analyze): Diagnose an illegal iterated component + association. + * sem_util.ads, sem_util.adb + (Diagnose_Iterated_Component_Association): New routine. + +2017-04-27 Bob Duff + + * adaint.c (__gnat_get_current_dir): Return 0 in length if + getcwd fails. + * a-direct.adb, g-dirope.adb, osint.adb, s-os_lib.adb: Raise + exception if getcwd failed. + +2017-04-27 Yannick Moy + + * exp_dbug.adb, exp_dbug.ads (Get_External_Name): Prefix ghost + entities with special prefix. + +2017-04-27 Hristian Kirtchev + + * debug.adb Change the documentation of switch -gnatd.s. + * exp_ch7.adb (Make_Transient_Block): Transient blocks do not need + to manage the secondary stack when an enclosing scope already + performs this functionality (aka relaxed management). Switch + -gnatd.s may be used to force strict management in which case + the block will manage the secondary stack unconditionally. Add + a guard to stop the traversal when encountering a package or a + subprogram scope. + +2017-04-27 Ed Schonberg + + * sem_res.adb (Resolve_Call): Refine further the handling of + limited views of return types in function calls. If the function + that returns a limited view appears in the current unit, + we do not replace its type by the non-limited view because + this transformation is performed int the back-end. However, + the type of the call itself must be the non-limited view, to + prevent spurious resolution errors. + +2017-04-27 Ed Schonberg + + * einfo,ads, einfo.adb (Class_Wide_Preconds, Class_Wide_Postconds): + Removed, proposed implementation using generics for class-wide + preconditions proved impractical. + (Class_Wide_Clone): New attribute of subprogram. Designates + subprogram created for primitive operations with class-wide + pre/postconditions that contain calls to other primitives. The + clone holds the body of the original primitive, but the + pre/postonditions do not apply to it. The original body is + rewritten as a wrapper for a call to the clone. + (Is_Class_Wide_Clone): New flag to identify a Class_Wide_Clone. If + the flag is set, no code for the corresponding pre/postconditions + is inserted into its body. + +2017-04-27 Bob Duff + + * exp_prag.adb, par-prag.adb, sem_ch13.adb: Ignore + Scalar_Storage_Order if -gnatI is given. + * sem_prag.adb (Analyze_Pragma): Ignore + Default_Scalar_Storage_Order if -gnatI is given. + +2017-04-27 Claire Dross + + * a-cofuba.ads (Add): Take as an additional input parameter + the position where the element should be inserted. + (Remove): New function that removes an element from the container. + * a-cofuma.ads (Add): Adapt to the new API of Base.Add. + * a-cofuse.ads (Add): Adapt to the new API of Base.Add. + (Remove): New function that removes an element from a set. + * a-cofuve.ads (Add): Adapt to the new API of Base.Add. + (Remove): New function that removes an element from a sequence. + (Insert): New function that adds anywhere in a sequence. + +2017-04-27 Hristian Kirtchev + + * checks.adb (Generate_Range_Check): Revert previous change. + +2017-04-27 Gary Dismukes + + * sem_util.adb: Minor reformatting/rewording. + +2017-04-27 Hristian Kirtchev + + * lib-xref.adb (Generate_Reference): The use + of attribute 'Result is not considered a violation of pragma + Unreferenced. + +2017-04-27 Justin Squirek + + * cstand.adb (Create_Standard): Correctly set + Directly_Designated_Type for Any_Access. + * sem_type.adb (Covers): Minor grammar fixes. + +2017-04-27 Bob Duff + + * sem_attr.adb: Minor cleanup. + +2017-04-27 Claire Dross + + * a-cofuba.ads, a-cofuba.adb (Ada.Containers.Functional_Base): New + private child of Ada.Containers used to implement all functional + containers. + * a-cofuma.ads, a-cofuma.adb (Ada.Containers.Functional_Maps): New + child of Ada.Containers. It provides functional indefinite unbounded + maps which can be used as high level models for specification + of data structures. + * a-cofuse.ads, a-cofuse.adb (Ada.Containers.Functional_Sets): New + child of Ada.Containers. It provides functional indefinite unbounded + sets which can be used as high level models for specification + of data structures. + * a-cofuve.ads, a-cofuve.adb (Ada.Containers.Functional_Vectors): New + child of Ada.Containers. It provides functional indefinite unbounded + vectors which can be used as high level models for specification + of data structures. + * Makefile.rtl: Add new packages. + * impunit.adb: Add new packages. + +2017-04-27 Gary Dismukes + + * sem_ch4.adb: Minor reformatting. + +2017-04-27 Ed Schonberg + + * sem_ch12.adb (Analyze_Associations): minor reformatting. + (Check_Fixed_Point_Actual): Do not emit a warning on a fixed + point type actual that has user-defined arithmetic primitives, + when there is a previous actual for a formal package that defines + a fixed-point type with the parent user-defined operator. + +2017-04-27 Hristian Kirtchev + + * checks.adb (Generate_Range_Check): Reinstate part of previous change. + * sem_attr.adb (Resolve_Attribute): Generate a range check when + the component type allows range checks. + +2017-04-27 Ed Schonberg + + * sem_aux.adb (Is_Generic_Formal): Use original node to locate + corresponding declaration, because formal derived types are + rewritten as private extensions. + +2017-04-27 Ed Schonberg + + * sem_dim.adb (Analyze_Dimension_Binary_Op): Do not check + dimensions of operands if node has been analyzed already, because + previous analysis and dimension checking will have removed the + dimension information from the operands. + +2017-04-27 Hristian Kirtchev + + * debug.adb: Document the use of switch -gnatd.s. + * einfo.ads Update the documentation on attribute + Sec_Stack_Needed_For_Return and attribute Uses_Sec_Stack. Remove + the uses of these attributes from certain entities. + * exp_ch7.adb (Make_Transient_Block): Reimplement the circuitry + which determines whether the block should continue to manage + the secondary stack. + (Manages_Sec_Stack): New routine. + +2017-04-27 Bob Duff + + * atree.ads: Minor edit. + +2017-04-27 Hristian Kirtchev + + * sinfo.ads: Update the section on Ghost mode. Add + a section on SPARK mode. Update the placement of section on + expression functions. + +2017-04-27 Bob Duff + + * sinput.adb (Get_Source_File_Index): Don't + assert that S is in the right range in the case where this is + a .dg file under construction. + +2017-04-27 Yannick Moy + + * sem_util.adb (Check_Result_And_Post_State): + Handle more precisely each conjunct in expressions formed by + and'ing sub-expressions. + +2017-04-27 Gary Dismukes + + * exp_ch4.adb, sem_ch4.adb: Minor typo fix and reformatting. + +2017-04-25 Arnaud Charlet + + * gnat_rm.texi, gnat_ugn.texi, + doc/gnat_ugn/building_executable_programs_with_gnat.rst, + doc/gnat_ugn/platform_specific_information.rst, + doc/gnat_ugn/gnat_and_program_execution.rst, + doc/gnat_ugn/gnat_utility_programs.rst, + doc/gnat_ugn/the_gnat_compilation_model.rst, + doc/gnat_rm/implementation_defined_attributes.rst, + doc/gnat_rm/the_gnat_library.rst, + doc/gnat_rm/implementation_defined_pragmas.rst, + doc/gnat_rm/representation_clauses_and_pragmas.rst, + doc/gnat_rm/implementation_of_specific_ada_features.rst, + doc/gnat_rm/implementation_defined_aspects.rst, + doc/gnat_rm/implementation_defined_characteristics.rst: Update + documentation. + +2017-04-25 Arnaud Charlet + + * exp_ch4.adb (Expand_N_Case_Expression): Emit error message when + generating C code on complex case expressions. + +2017-04-25 Arnaud Charlet + + * sem_prag.adb (Analyze_Pragma): Generate a warning instead + of silently ignoring pragma Ada_xxx in Latest_Ada_Only mode. + * directio.ads, ioexcept.ads, sequenio.ads, text_io.ads: Use + Ada_2012 instead of Ada_2005 to be compatible with the above + change. + * bindgen.adb: Silence new warning on pragma Ada_95. + +2017-04-25 Hristian Kirtchev + + * checks.adb (Generate_Range_Check): Revert part of previous change. + +2017-04-25 Ed Schonberg + + * sem_ch4.adb (Try_Container_Indexing): Handle properly a + container indexing operation that appears as a an actual in a + parameter association in a procedure call. + +2017-04-25 Olivier Ramonat + + * prj-proc.adb, sem_util.adb, s-stposu.adb, sem_attr.adb, prj-conf.ads: + Fix spelling mistakes. + +2017-04-25 Bob Duff + + * types.ads, osint.adb, sinput-c.adb, sinput-d.adb, sinput-l.adb, + * sinput-p.adb: Use regular fat pointers, with bounds checking, + for source buffers. Fix misc obscure bugs. + * sinput.ads, sinput.adb: Use regular fat pointers, with bounds + checking, for source buffers. Modify representation clause for + Source_File_Record as appropriate. Move Source_File_Index_Table + from spec to body, because it is not used outside the body. + Move Set_Source_File_Index_Table into the private part, because + it is used only in the body and in children. Use trickery to + modify the dope in the generic instantiation case. It's ugly, + but not as ugly as the previous method. Fix documentation. + Remove obsolete code. + * fname-sf.adb, targparm.adb: Fix misc out-of-bounds + indexing in source buffers. + * fmap.adb: Avoid conversions from one string type to another. + Remove a use of global name buffer. + * osint.ads, sfn_scan.ads, sfn_scan.adb, sinput-c.ads: Comment + fixes. + +2017-04-25 Gary Dismukes + + * exp_util.adb, exp_ch4.adb: Minor reformatting. + +2017-04-25 Hristian Kirtchev + + * checks.adb: Code clean up in various routines. + (Generate_Range_Check): Do not generate a range check when the + expander is not active or when index/range checks are suppressed + on the target type. + (Insert_List_After_And_Analyze, Insert_List_Before_And_Analyze): + Remove variants that include a Supress parameter. These routines + are never used, and were introduced before the current scope-based + check suppression method. + +2017-04-25 Vasiliy Fofanov + + * prj-part.adb, cstreams.c, osint.adb, osint.ads: Remove VMS specific + code and some subprogram calls that are now noop. + +2017-04-25 Arnaud Charlet + + * exp_ch4.adb (Expand_N_Case_Expression): Take + Minimize_Expression_With_Actions into account when possible. + +2017-04-25 Hristian Kirtchev + + * exp_util.adb (Known_Non_Null): Moved to Sem_Util. + (Known_Null): Moved to Sem_Util. + * exp_util.ads (Known_Non_Null): Moved to Sem_Util. + (Known_Null): Moved to Sem_Util. + * sem_util.adb Add new enumeration type Null_Status_Kind. + (Known_Non_Null): Moved from Exp_Util. Most of the logic in + this routine is now carried out by Null_Status. + (Known_Null): Moved from Exp_Util. Most of the logic in this routine + is now carried out by Null_Status. + (Null_Status): New routine. + * sem_util.ads (Known_Non_Null): Moved from Exp_Util. + (Known_Null): Moved from Exp_Util. + +2017-04-25 Ed Schonberg + + * sem_ch6.adb (Analyze_Expression_Function): Do not report an + error on the return type of an expression function that is a + completion, if the type is derived from a generic formal type. + +2017-04-25 Ed Schonberg + + * sem_dim.adb (Dimensions_Of_Operand): The dimensions of a type + conversion are those of the target type. + +2017-04-25 Bob Duff + + * a-clrefi.adb: Minor cleanup. + +2017-04-25 Gary Dismukes + + * exp_util.adb, exp_util.ads, types.ads: Minor reformatting. + +2017-04-25 Bob Duff + + * err_vars.ads, fmap.adb, fmap.ads, comperr.adb, fname-sf.adb, + types.adb, types.ads, types.h, sinput-l.adb, targparm.adb, + errout.adb, sinput.adb, sinput.ads, cstand.adb, scn.adb, + scn.ads, gnatls.adb: Eliminate the vestigial Internal_Source_File and + the Internal_Source buffer. This removes the incorrect call to "=" + the customer noticed. + Wrap remaining calls to "=" in Null_Source_Buffer_Ptr. We + eventually need to eliminate them altogether. Or else get rid + of zero-origin addressing. + +2017-04-25 Claire Dross + + * exp_util.ads (Expression_Contains_Primitives_Calls_Of): New + function used in GNATprove to know if an expression contains + non-dispatching calls on primitives of a tagged type. + +2017-04-25 Bob Duff + + * rtsfind.adb (Initialize): Initialize + First_Implicit_With. Building the compiler with Normalize_Scalars + and validity checking finds this being used as an uninitialized + variable. + +2017-04-25 Hristian Kirtchev + + * contracts.adb (Analyze_Entry_Or_Subprogram_Body_Contract): + Add a warning about SPARK mode management. The routine now + saves and restores both the mode and associated pragma. + (Analyze_Entry_Or_Subprogram_Contract): Add a warning about + SPARK mode management. The routine now saves and restores both + the mode and associated pragma. + (Analyze_Object_Contract): + Add a warning about SPARK mode management. The routine + now saves and restores both the mode and associated pragma. + (Analyze_Package_Body_Contract): Add a warning about SPARK mode + management. The routine now saves and restores both the mode + and associated pragma. (Analyze_Package_Contract): Add a warning + about SPARK mode management. The routine now saves and restores + both the mode and associated pragma. + (Analyze_Task_Contract): + Add a warning about SPARK mode management. The routine now saves + and restores both the mode and associated pragma. + * expander.adb (Expand): Change the way the Ghost mode is saved + and restored. + * exp_ch3.adb (Freeze_Type): Change the way the Ghost mode is + saved and restored. + * exp_disp.adb (Make_DT): Change the way the Ghost mode is saved + and restored. + * exp_util.adb (Build_DIC_Procedure_Body): + Change the way the Ghost mode is saved and restored. + (Build_DIC_Procedure_Declaration): Change the way the Ghost + mode is saved and restored. + (Build_Invariant_Procedure_Body): + Change the way the Ghost mode is saved and restored. + (Build_Invariant_Procedure_Declaration): Change the way the Ghost + mode is saved and restored. + (Make_Predicate_Call): Change the + way the Ghost mode is saved and restored. + * freeze.adb (Freeze_Entity): Change the way the Ghost mode is + saved and restored. + * ghost.adb (Mark_And_Set_Ghost_Assignment): Remove parameter Mode + and its assignment. + (Mark_And_Set_Ghost_Body): Remove parameter + Mode and its assignment. + (Mark_And_Set_Ghost_Completion): + Remove parameter Mode and its assignment. + (Mark_And_Set_Ghost_Declaration): Remove parameter Mode and its + assignment. + (Mark_And_Set_Ghost_Instantiation): Remove parameter + Mode and its assignment. + (Mark_And_Set_Ghost_Procedure_Call): + Remove parameter Mode and its assignment. + (Set_Ghost_Mode): + Remove parameter Mode and its assignment. + * ghost.ads (Mark_And_Set_Ghost_Assignment): Remove parameter Mode + and update the comment on usage. + (Mark_And_Set_Ghost_Body): + Remove parameter Mode and update the comment on usage. + (Mark_And_Set_Ghost_Completion): Remove parameter Mode and + update the comment on usage. + (Mark_And_Set_Ghost_Declaration): + Remove parameter Mode and update the comment on usage. + (Mark_And_Set_Ghost_Instantiation): Remove parameter Mode and + update the comment on usage. + (Mark_And_Set_Ghost_Procedure_Call): + Remove parameter Mode and update the comment on usage. + (Set_Ghost_Mode): Remove parameter Mode and update the comment + on usage. + * lib.ads Remove obsolete fields SPARK_Mode_Pragma from various + types. + * lib-load.adb (Create_Dummy_Package_Unit): Remove the assignment + of obsolete field SPARK_Mode_Pragma. + (Load_Main_Source): Remove + the assignment of obsolete field SPARK_Mode_Pragma. + (Load_Unit): Remove the assignment of obsolete field SPARK_Mode_Pragma. + * lib-writ.adb (Add_Preprocessing_Dependency): Remove + the assignment of obsolete field SPARK_Mode_Pragma. + (Ensure_System_Dependency): Remove the assignment of obsolete + field SPARK_Mode_Pragma. + * rtsfind.adb (Load_RTU): Add a warning about Ghost and SPARK + mode management. Change the way Ghost and SPARK modes are saved + and restored. + * sem.adb (Analyze): Change the way the Ghost mode is saved + and restored. + * sem_ch3.adb (Analyze_Object_Declaration): Change the way the + Ghost mode is saved and restored. + (Process_Full_View): Change + the way the Ghost mode is saved and restored. + * sem_ch5.adb (Analyze_Assignment): Change the way the Ghost + mode is saved and restored. + * sem_ch6.adb (Analyze_Procedure_Call): Change the way the Ghost + mode is saved and restored. + (Analyze_Subprogram_Body_Helper): + Change the way the Ghost mode is saved and restored. + * sem_ch7.adb (Analyze_Package_Body_Helper): Change the way the + Ghost mode is saved and restored. + * sem_ch10.adb (Analyze_Subunit): Add a warning about SPARK mode + management. Save the SPARK mode-related data prior to any changes + to the scope stack and contexts. The mode is then reinstalled + before the subunit is analyzed in order to restore the original + view of the subunit. + * sem_ch12.adb (Analyze_Package_Instantiation): Update the + warning on region management. Change the way the Ghost and + SPARK modes are saved and restored. + (Inline_Instance_Body): + Add a warning about SPARK mode management. Code clean up. + (Analyze_Subprogram_Instantiation): Update the warning on region + management. Change the way the Ghost and SPARK modes are saved + and restored. + (Instantiate_Package_Body): Update the warning + on region management. Change the way the Ghost and SPARK modes + are saved and restored. + (Instantiate_Subprogram_Body): Update + the warning on region management. Change the way the Ghost and + SPARK modes are saved and restored. + (Set_Instance_Env): Add a + warning about SPARK mode management. Change the way SPARK mode + is saved and restored. + * sem_ch13.adb (Build_Predicate_Functions): + Change the way the Ghost mode is saved and restored. + (Build_Predicate_Function_Declaration): Change the way the Ghost + mode is saved and restored. + * sem_elab.adb (Check_Elab_Calls): Add a warning about SPARK + mode management. Change the way SPARK mode is saved and restored. + * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): + Change the way the Ghost mode is saved and restored. + (Analyze_Initial_Condition_In_Decl_Part): Change the way + the Ghost mode is saved and restored. + (Analyze_Pragma): + Change the way the Ghost mode is saved and restored. + (Analyze_Pre_Post_Condition_In_Decl_Part): Change the way the + Ghost mode is saved and restored. + * sem_util.adb (Install_SPARK_Mode): New routine. + (Restore_SPARK_Mode): New routine. + (Save_SPARK_Mode_And_Set): Removed. + (Set_SPARK_Mode): New routine. + * sem_util.ads (Install_SPARK_Mode): New routine. + (Restore_SPARK_Mode): New routine. + (Save_SPARK_Mode_And_Set): Removed. + (Set_SPARK_Mode): New routine. + +2017-04-25 Ed Schonberg + + * sem_util.adb, sem_util.ads (From_Nested_Package): New predicate + to determine whether a type is declared in a local package that + has not yet been frozen. + * freeze.adb (Freeze_Before): Use new predicate to determine + whether a local package must be installed on the scope stack + in order to evaluate in the proper scope actions generated by + aspect specifications, such as Predicate + * sem_ch13.adb: Simplify code in Analyze_Aspects_At_Freeze_Point + using new predicate. + +2017-04-25 Hristian Kirtchev + + * sem_warn.adb (Warn_On_Constant_Valid_Condition): Do not consider + comparisons between non- scalar expressions expressions because + their values cannot be invalidated. + * sem_warn.ads (Warn_On_Constant_Valid_Condition): Update the + comment on usage. + +2017-04-25 Hristian Kirtchev + + * par_sco.adb: Minor reformatting. + +2017-04-25 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): If entity + is a type from an unfrozen local package, install package to + complete the analysis of delayed aspects of the type. + +2017-04-25 Tristan Gingold + + * bingen.adb (System_Version_Control_Used): New variable. + (Resolve_Binder_Options): Set the above variable. + (Gen_Output_File_Ada): Conditionally call Gen_Versions. + (Gen_Elab_Order): Emit blank line before. + +2017-04-25 Justin Squirek + + * sem_cat.adb (Validate_RT_RAT_Component): Added + an extra check to ignore incomplete types. + +2017-04-25 Thomas Quinot + + * sem_prag.adb (Analyze_Pragma, case Pragma_Check): Remove + bogus circuitry for the case where Name is Predicate. + +2017-04-25 Thomas Quinot + + * par_sco.adb(Traverse_Declarations_Or_Statements.Traverse_Aspects): + Create SCOs for Predicate aspects in disabled + state initially, to be enabled later on by... + * sem_ch13.adb (Build_Predicate_Functions.Add_Predicates): Mark + SCO for predicate as enabled. + +2017-04-25 Hristian Kirtchev + + * comperr.adb (Compiler_Abort): Remove now obsolete pair of + pragmas Warnings Off / On. + * namet.adb (Finalize): Remove now obsolete pair of pragmas + Warnings Off / On. + * output.adb: Remove now obsolete pair of pragmas Warnings Off / On. + * sem_warn.adb (Warn_On_Constant_Valid_Condition): Do not + consider comparisons between static expressions because their + values cannot be invalidated. + * urealp.adb (Tree_Read): Remove now obsolete pair of pragmas + Warnings Off / On. + (Tree_Write): Remove now obsolete pair of pragmas Warnings Off / On. + * usage.adb Remove now obsolete pair of pragmas Warnings Off / On. + +2017-04-25 Bob Duff + + * sem_elab.adb (In_Task_Activation): Trace internal calls in + task bodies. + +2017-04-25 Gary Dismukes + + * sem_prag.adb, sem_warn.adb, sem_eval.adb: Minor reformatting and + typo fixes. + +2017-04-25 Hristian Kirtchev + + * comperr.adb (Compiler_Abort): Add a pair of pragma Warnings + On/Off to defend against a spurious warning in conditional + compilation. + * exp_ch4.adb (Rewrite_Comparison): Reimplemented. + * namet.adb (Finalize): Add a pair of pragma Warnings On/Off to + defend against a spurious warning in conditional compilation. + * output.adb Add a pair of pragma Warnings On/Off to defend + against a spurious warning in conditional compilation. + * sem_eval.adb (Eval_Relational_Op): Major code clean up. + (Fold_General_Op): New routine. + (Fold_Static_Real_Op): New routine. + (Test_Comparison): New routine. + * sem_eval.ads (Test_Comparison): New routine. + * sem_warn.adb (Is_Attribute_Constant_Comparison): New routine. + (Warn_On_Constant_Valid_Condition): New routine. + (Warn_On_Known_Condition): Use Is_Attribute_Constant_Comparison + to detect a specific case. + * sem_warn.adb (Warn_On_Constant_Valid_Condition): New routine. + * urealp.adb (Tree_Read): Add a pair of pragma Warnings On/Off + to defend against a spurious warning in conditional compilation. + (Tree_Write): Add a pair of pragma Warnings On/Off to defend + against a spurious warning in conditional compilation. + * usage.adb Add a pair of pragma Warnings On/Off to defend + against a spurious warning in conditional compilation. + +2017-04-25 Arnaud Charlet + + * sinfo.ads, sem_ch13.adb: Update comment. + +2017-04-25 Hristian Kirtchev + + * sem_util.adb (Is_Post_State): A reference to a + generic in out parameter is considered a change in the post-state + of a subprogram. + +2017-04-25 Ed Schonberg + + * sem_ch12.adb (Load_Parent_Of_Generic); When retrieving the + declaration of a subprogram instance within its wrapper package, + skip over null statements that may result from the rewriting of + ignored pragmas. + +2017-04-25 Ed Schonberg + + * exp_attr.adb (Expand_Attribute_Reference, case 'Read): + If the type is an unchecked_union, replace the attribute with + a Raise_Program_Error (rather than inserting such before the + attribute reference) to handle properly the case where we are + processing a component of a larger record, and we need to prevent + further expansion for the unchecked union. + (Expand_Attribute_Reference, case 'Write): If the type is + an unchecked_union, check whether enclosing scope is a Write + subprogram. Replace attribute with a Raise_Program_Error if the + discriminants of the unchecked_union type have not default values + because such a use is erroneous.. + +2017-04-25 Tristan Gingold + + * exp_ch9.adb (Expand_N_Task_Type_Declaration): + Add relative_deadline to task record on edf profile. + (Make_Initialize_Protection): Pass deadline_floor value on edf profile. + (Make_Task_Create_Call): Pass relative_deadline value. + * par-prag.adb (Prag): Handle Pragma_Deadline_Floor. + * s-rident.ads (Profile_Name): Add GNAT_Ravenscar_EDF. + (Profile_Info): Add info for GNAT_Ravenscar_EDF. + * sem_prag.adb (Set_Ravenscar_Profile): Handle + GNAT_Ravenscar_EDF (set scheduling policy). + (Analyze_Pragma): Handle GNAT_Ravenscar_EDF profile and Deadline_Floor + pragma. + (Sig_Flags): Add choice for Pragma_Deadline_Floor. + * snames.ads-tmpl (Name_Deadline_Floor, Name_Gnat_Ravenscar_EDF): + New names. + (Pragma_Deadline_Floor): New pragma. + * targparm.adb (Get_Target_Parameters): Recognize + GNAT_Ravenscar_EDF profile. + +2017-04-25 Arnaud Charlet + + * gnatvsn.ads (Library_Version): Bump to 8. Update comment. + +2017-04-25 Ed Schonberg + + * sem_aux.adb (Nearest_Ancestor): Use original node of type + declaration to locate nearest ancestor, because derived + type declarations for record types are rewritten as record + declarations. + * sem_ch13.adb (Add_Call): Use an unchecked conversion to handle + properly derivations that are completions of private types. + (Add_Predicates): If type is private, examine rep. items of full + view, which may include inherited predicates. + (Build_Predicate_Functions): Ditto. + +2017-04-25 Javier Miranda + + * sem_util.adb (New_Copy_Tree.Visit_Entity): Extend previous change + to generate new entities for subtype declarations located in + Expression_With_Action nodes. + +2017-04-25 Hristian Kirtchev + + * sem_elab.adb (Check_A_Call): Remove + local variables Is_DIC_Proc and Issue_In_SPARK. Verify the + need for Elaborate_All when SPARK elaboration checks are + required. Update the checks for instances, variables, and calls + to Default_Initial_Condition procedures. + +2017-04-25 Ed Schonberg + + * aspects.ads, aspects.adb: Make the GNAT-specific pragma No_Inline + into a boolean aspect, in analogy with the Ada aspect No_Return. + +2017-04-25 Hristian Kirtchev + + * exp_ch6.adb, sem_ch13.adb, sem_ch6.adb: Minor reformatting. + +2017-04-25 Bob Duff + + * sem_res.adb (Resolve_Actuals): Under -gnatd.q, reset + Is_True_Constant for an array variable that is passed to a + foreign function as an 'in' parameter. + * debug.adb: Document -gnatd.q. + +2017-04-25 Ed Schonberg + + * sem_ch6.adb (Analyze_Expression_Function): If expression function + is completion and return type is an access type do not freeze + designated type: this will be done in the process of freezing + the expression if needed. + (Freeze_Expr_Types): Check whether type is complete before + creating freeze node, to provide a better error message if + reference is premature. + * sem_ch13.adb (Check_Indexing_Functions): Ignore inherited + functions created by type derivations. + +2017-04-25 Pascal Obry + + * g-sercom.ads: Add simple usage of GNAT.Serial_Communication. + +2017-04-25 Hristian Kirtchev + + * sem_res.adb (Resolve_Type_Conversion): + When resolving against any fixed type, set the type of the + operand as universal real when the operand is a multiplication + or a division where both operands are of any fixed type. + (Unique_Fixed_Point_Type): Add local variable ErrN. Improve the + placement of an error message by pointing to the operand of a + type conversion rather than the conversion itself. + +2017-04-25 Thomas Quinot + + * sem_ch13.adb (Build_Predicate_Function_Declaration): Set + Needs_Debug_Info when producing SCOs. + +2017-04-25 Thomas Quinot + + * exp_ch6.adb (Add_Finalization_Master_Actual_To_Build_In_Place_Call): + Always pass a null finalization master for a library level named access + type to which a pragme No_Heap_Finalization applies. + +2017-04-25 Arnaud Charlet + + PR ada/78845 + + * a-ngcoar.adb, a-ngrear.adb (Inverse): call Unit_Matrix with First_1 + set to A'First(2) and vice versa. + +2017-04-25 Yannick Moy + + * freeze.adb (Freeze_Record_Type): Remove obsolete + rule on volatile tagged record restriction on SPARK code. + +2017-04-25 Yannick Moy + + * sem_prag.adb (minor) Fix SPARK RM reference. + +2017-04-25 Yannick Moy + + * sem_util.adb, sem_util.ads (Unique_Defining_Entity): Update + comment to reflect which entity is chosen as unique entity. + (Unique_Entity): Return full view instead of private spec for + protected type or task type. Fix possible incorrect access when + called on entry. + +2017-04-25 Eric Botcazou + + * sem_res.adb (Set_Slice_Subtype): Treat specially bit-packed + array types only instead of all packed array types. + +2017-04-25 Ed Schonberg + + * sem_ch6.adb (Conforming_Types): If type of formal as a specified + dimension system, verify that dimensions of both match. + (Check_Conformance): Add error message in case of dimension + mismatch. + * sem_dim.ads, sem_dim.adb (Dimensions_Match): New utility + predicate. + +2017-04-25 Arnaud Charlet + + * gnatxref.adb, gnatfind.adb: Avoid using the term project file, + confusing. + +2017-04-25 Yannick Moy + + * sem_util.adb: Minor refactoring. + * freeze.adb (Freeze_Record_Type): Fix checking of SPARK RM 7.1.3(5). + +2017-04-25 Claire Dross + + * sem_prag.adb (Collect_Inherited_Class_Wide_Conditions): Go to + ultimate alias when accessing overridden operation. Indeed, if the + overridden operation is itself inherited, it won't have any explicit + contract. + +2017-04-25 Ed Schonberg + + * sem_warn.adb (Warn_On_Overlapping_Actuals): There can be no + overlap if the two formals have different types, because formally + the corresponding actuals cannot designate the same objects. + +2017-04-25 Ed Schonberg + + * sem_dim.adb (Dimensions_Of_Operand): minot cleanups: a) If + dimensions are present from context, use them. b) If operand is + a static constant rewritten as a literal, obtain the dimensions + from the original declaration, otherwise use dimensions of type + established from context. + +2017-04-25 Yannick Moy + + * sem_util.adb (Is_Effectively_Volatile): Protect against base type + of array that is private. + +2017-04-25 Gary Dismukes + + * sem_ch3.adb, exp_util.adb, sem_prag.adb, exp_ch4.adb: Minor + reformatting. + +2017-04-25 Yannick Moy + + * a-ngelfu.adb, a-ngelfu.ads: Add SPARK_Mode On on spec, Off + on body. + +2017-04-25 Ed Schonberg + + * sem_disp.adb (Check_Dispatching_Context): Add guard to refine + the check that recognizes a call to a private overridding and + replaces the called subprogram with its alias. + +2017-04-25 Hristian Kirtchev + + * exp_util.adb: Minor reformatting. + +2017-04-25 Justin Squirek + + * exp_ch3.adb (Freeze_Type): Add condition to always treat + interface types as a partial view of a private type for the + generation of invariant procedure bodies. + * exp_util.adb, exp_util.ads (Add_Inherited_Invariants): + Add a condition to get the Corresponding_Record_Type for + concurrent types, add condition to return in the absence of a + class in the pragma, remove call to Replace_Type_References, + and add call to Replace_References. + (Add_Interface_Invariatns), + (Add_Parent_Invariants): Modify call to Add_Inherited_Invariants + to including the working type T. + (Add_Own_Invariants): Remove + legacy condition for separate units, remove dispatching for ASIS + and save a copy of the expression in the pragma expression. + (Build_Invariant_Procedure_Body): Default initalize vars, + remove return condition on interfaces, always use the + private type for interfaces, and move the processing of types + until after the processing of invariants for the full view. + (Build_Invariant_Procedure_Declaration): Remove condition + to return if an interface type is encountered and add + condition to convert the formal parameter to its class-wide + counterpart if Work_Typ is abstract. + (Replace_Type): Add call to Remove_Controlling_Arguments. + (Replace_Type_Ref): Remove class-wide dispatching for the current + instance of the type. + (Replace_Type_References): Remove parameter "Derived" + (Remove_Controlling_Arguments): Created in order to removing + the controlliong argument from calls to primitives in the case + of the formal parameter being an class-wide abstract type. + * sem_ch3.adb (Build_Assertion_Bodies_For_Type): Almost identical + to the change made to Freeze_Type in exp_ch3. Add a condition + to treat interface types as a partial view. + * sem_prag.adb (Analyze_Pragma): Modify parameters in the call + to Build_Invariant_Procedure_Declaration to properly generate a + "partial" invariant procedure when Typ is an interface. + +2017-04-25 Bob Duff + + * a-numeri.ads: Go back to using brackets encoding for the Greek + letter pi. + +2017-04-25 Ed Schonberg + + * sem_ch3.adb (Derive_Subprogram): Implement rule in RM 6.1.1 + (10-15): if derived type T with progenitors is abstract, + and primitive P of this type inherits non-trivial classwide + preconditions from both a parent operation and from an interface + operation, then the inherited operation is abstract if the parent + operation is not null. + * sem_disp.ads, sem_disp.adb: replace function Covers_Some_Interface + with Covered_Interface_Op to yield the actual interface operation + that is implemented by a given inherited operation. + +2017-04-25 Javier Miranda + + * exp_ch4.adb (Expand_N_Op_Expon): Relocate left + and right operands after performing the validity checks. Required + because validity checks may remove side effects from the operands. + +2017-04-25 Javier Miranda + + * exp_attr.adb (Attribute_Unrestricted_Access): + Do not disable implicit type conversion. Required to generate + code that displaces the pointer to reference the secondary + dispatch table. + +2017-04-25 Pascal Obry + + * prj-attr.adb, snames.ads-tmpl: Add package Install's + Required_Artifacts attribute. + +2017-04-25 Ed Schonberg + + * sem_util.adb (Same_Value): String literals are compile-time + values, and comparing them must use Expr_Value_S. + +2017-04-25 Ed Schonberg + + * sem_ch4.adb (Complete_Object_Interpretation): If an explicit + dereference is introduced for the object, and the object is + overloaded, do not check whether it is aliased, because it may + include an implicit dereference. + * sem_type.adb (Disambiguate): If two interpretations are access + attribute types with the same designated type keep either of + them and do not report an ambiguity. A true ambiguity will be + reported elsewhere. + +2017-04-25 Bob Duff + + * a-numeri.ads: Change the encoding of Greek letter Pi from + brackets encoding to UTF-8. Use pragma Wide_Character_Encoding + to indicate the encoding. We considered using a byte order mark + (BOM), but that causes various trouble (misc software eats the + BOM, if you have a patch with a BOM, then it's not at the start + of the patch, so it's not a BOM, the BOM affects with-ing files, + etc.). + * scng.adb, s-wchcnv.adb: Minor. + +2017-04-25 Hristian Kirtchev + + * sem_ch3.adb, sem_ch8.adb, sem_disp.adb: Minor reformatting. +2017-04-25 Ed Schonberg + + * sem_ch3.adb (Add_Internal_Interface_Entities): Move + Has_Non_Trivial_Precondition to sem_util. for use elsewhere. + Improve error message on operations that inherit non-conforming + classwide preconditions from ancestor and progenitor. + * sem_util.ads, sem_util.adb (Has_Non_Trivial_Precondition): + moved here from sem_ch3. + * sem_ch8.adb (Analyze_Subprogram_Renaming): Implement legality + check given in RM 6.1.1 (17) concerning renamings of overriding + operations that inherits class-wide preconditions from ancestor + or progenitor. + +2017-04-25 Hristian Kirtchev + + * exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Code cleanup. + (Build_Adjust_Statements): Code cleanup. + (Build_Finalizer): Update the initialization of + Exceptions_OK. + (Build_Finalize_Statements): Code cleanup. + (Build_Initialize_Statements): Code cleanup. + (Make_Deep_Array_Body): Update the initialization of + Exceptions_OK. + (Make_Deep_Record_Body): Update the initialization of Exceptions_OK. + (Process_Object_Declaration): Generate a null exception handler only + when exceptions are allowed. + (Process_Transients_In_Scope): Update the initialization of + Exceptions_OK. + * exp_util.ads, exp_util.adb (Exceptions_In_Finalization_OK): New + routine. + * sem_ch11.adb (Analyze_Exception_Handlers): Do not check any + restrictions when the handler is internally generated and the + mode is warnings. + +2017-04-25 Ed Schonberg + + * sem_ch3.adb (Has_Non_Trivial_Precondition): New predicate to + enforce legality rule on classwide preconditions inherited from + both an ancestor and a progenitor (RM 6.1.1 (10-13). + * sem_disp.adb (Check_Dispatching_Context): A call to an abstract + subprogram need not be dispatching if it appears in a precondition + for an abstract or null subprogram. + +2017-04-25 Gary Dismukes + + * sem_ch10.adb: Minor typo fix. + +2017-04-25 Arnaud Charlet + + * gcc-interface/Makefile.in: Cleanup VxWorks targets. + +2017-04-25 Eric Botcazou + + * fname.adb (Is_Internal_File_Name): Arrange for the slices to + have a length which is a power of 2. + (Is_Predefined_File_Name): Likewise. Adjust comment. + +2017-04-25 Bob Duff + + * exp_aggr.adb (Component_Count): Protect the + arithmetic from attempting to convert a value >= 2**31 to Int, + which would otherwise raise Constraint_Error. + +2017-04-25 Bob Duff + + * opt.ads (Locking_Policy): Fix incorrect documentation. The + first character of the policy name is not unique. + +2017-04-25 Bob Duff + + * s-fileio.adb (Name): Raise Use_Error if the file is a temp file. + * s-ficobl.ads (Is_Temporary_File): Remove incorrect comment + about this flag not being used. It was already used, and it is + now used more. + +2017-04-25 Hristian Kirtchev + + * einfo.adb Flag301 is now known as Ignore_SPARK_Mode_Pragmas. + (Ignore_SPARK_Mode_Pragmas): New routine. + (Set_Ignore_SPARK_Mode_Pragmas): New routine. + (Write_Entity_Flags): Add an entry for Ignore_SPARK_Mode_Pragmas. + * einfo.ads Add new attribute Ignore_SPARK_Mode_Pragmas and update + related entities. + (Ignore_SPARK_Mode_Pragmas): New routine + along with pragma Inline. + (Set_Ignore_SPARK_Mode_Pragmas): New routine along with pragma Inline. + * opt.ads Rename flag Ignore_Pragma_SPARK_Mode to + Ignore_SPARK_Mode_Pragmas_In_Instance. + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): + Save and restore the value of global flag + Ignore_SPARK_Mode_Pragmas_In_Instance. Set or reinstate the value + of global flag Ignore_SPARK_Mode_Pragmas_In_Instance when either + the corresponding spec or the body must ignore all SPARK_Mode + pragmas found within. + (Analyze_Subprogram_Declaration): Mark + the spec when it needs to ignore all SPARK_Mode pragmas found + within to allow the body to infer this property in case it is + instantiated or inlined later. + * sem_ch7.adb (Analyze_Package_Body_Helper): Save and restore the + value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set + the value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance + when the corresponding spec also ignored all SPARK_Mode pragmas + found within. + (Analyze_Package_Declaration): Mark the spec when + it needs to ignore all SPARK_Mode pragmas found within to allow + the body to infer this property in case it is instantiated or + inlined later. + * sem_ch12.adb (Analyze_Formal_Package_Declaration): + Save and restore the value of flag + Ignore_SPARK_Mode_Pragmas_In_Instance. Mark the + formal spec when it needs to ignore all SPARK_Mode + pragmas found within to allow the body to infer this + property in case it is instantiated or inlined later. + (Analyze_Package_Instantiation): Save and restore the value + of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Mark + the instance spec when it needs to ignore all SPARK_Mode + pragmas found within to allow the body to infer this + property in case it is instantiated or inlined later. + (Analyze_Subprogram_Instantiation): Save and restore the value + of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Mark the + instance spec and anonymous package when they need to ignore + all SPARK_Mode pragmas found within to allow the body to infer + this property in case it is instantiated or inlined later. + (Instantiate_Package_Body): Save and restore the value of global + flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set the value of + global flag Ignore_SPARK_Mode_Pragmas_In_Instance when the + corresponding instance spec also ignored all SPARK_Mode pragmas + found within. + (Instantiate_Subprogram_Body): Save and restore the + value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set + the value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance + when the corresponding instance spec also ignored all SPARK_Mode + pragmas found within. + * sem_prag.adb (Analyze_Pragma): Update the reference to + Ignore_Pragma_SPARK_Mode. + * sem_util.adb (SPARK_Mode_Is_Off): A construct which ignored + all SPARK_Mode pragmas defined within yields mode "off". + +2017-04-25 Hristian Kirtchev + + * bindgen.adb, exp_dbug.adb, errout.adb, fname.adb: Minor reformatting. + +2017-04-25 Bob Duff + + * exp_atag.adb (Build_CW_Membership): Add "Suppress => + All_Checks" to avoid generating unnecessary checks. + * exp_ch4.adb (Expand_N_In, Make_Tag_Check): Add "Suppress => + All_Checks". + * sem.ads: Fix comment. + * expander.ads: Fix comment. + * exp_atag.ads: Fix comment: "Index = 0" should be + "Index >= 0". + +2017-04-25 Gary Dismukes + + * s-taprop-linux.adb: Minor editorial fixes. + +2017-04-25 Eric Botcazou + + * sem_util.adb (New_Copy_Tree): Put back the declarations of the + hash tables at library level. Reinstate the NCT_Hash_Tables_Used + variable and set it to True whenever the main hash table is + populated. Short- circuit the Assoc function if it is false + and add associated guards. + +2017-04-25 Olivier Hainque + + * bindgen.adb (Gen_Elab_Calls): Also update counter of lone + specs without elaboration code that have an elaboration counter + nevertheless, e.g. when compiled with -fpreserve-control-flow. + * sem_ch10.adb (Analyze_Compilation_Unit): + Set_Elaboration_Entity_Required when requested to preserve + control flow, to ensure the unit elaboration is materialized at + bind time, resulting in the inclusion of the unit object file + in the executable closure at link time. + +2017-04-25 Pierre-Marie de Rodat + + * exp_dbug.adb: In Debug_Renaming_Declaration, + when dealing with indexed component, accept to produce a renaming + symbol when the index is an IN parameter or when it is a name + defined in an outer scope. + +2017-04-25 Yannick Moy + + * errout.adb (Error_Msg): Adapt continuation + message in instantiations and inlined bodies for info messages. + +2017-04-25 Eric Botcazou + + * fname.adb (Has_Internal_Extension): Add pragma Inline. + Use direct 4-character slice comparisons. + (Has_Prefix): Add + pragma Inline. (Has_Suffix): Delete. + (Is_Internal_File_Name): + Test Is_Predefined_File_Name first. + (Is_Predefined_File_Name): + Use direct slice comparisons as much as possible and limit all + comparisons to at most 8 characters. + +2017-04-25 Hristian Kirtchev + + * checks.adb (Insert_Valid_Check): Code cleanup. + * exp_ch6.adb (Add_Validation_Call_By_Copy_Code): New routine. + (Expand_Actuals): Generate proper copy-back for a validation + variable when it acts as the argument of a type conversion. + * sem_util.adb (Is_Validation_Variable_Reference): Augment the + predicate to operate on type qualifications. + +2017-04-25 Hristian Kirtchev + + * sem_prag.adb, exp_ch6.adb, binde.adb, sem_disp.adb, s-fileio.adb: + Minor reformatting. + +2017-04-25 Bob Duff + + * sem_prag.adb (No_Return): Give an error if the pragma applies + to a body. Specialize the error for the specless body case, + as is done for (e.g.) pragma Convention. + * debug.adb: Add switch -gnatd.J to disable the above legality + checks. This is mainly for use in our test suite, to avoid + rewriting a lot of illegal (but working) code. It might also + be useful to customers. Under this switch, if a pragma No_Return + applies to a body, and the procedure raises an exception (as it + should), the pragma has no effect. If the procedure does return, + execution is erroneous. + +2017-04-25 Bob Duff + + * exp_ch6.adb (Expand_Actuals): This is the + root of the problem. It took N as an 'in out' parameter, and in + some cases, rewrote N, but then set N to Original_Node(N). So + the node returned in N had no Parent. The caller continued + processing of this orphaned node. In some cases that caused a + crash (e.g. Remove_Side_Effects climbs up Parents in a loop, + and trips over the Empty Parent). The solution is to make N an + 'in' parameter. Instead of rewriting it, return the list of + post-call actions, so the caller can do the rewriting later, + after N has been fully processed. + (Expand_Call_Helper): Move most of Expand_Call here. It has + too many premature 'return' statements, and we want to do the + rewriting on return. + (Insert_Post_Call_Actions): New procedure to insert the post-call + actions in the appropriate place. In the problematic case, + that involves rewriting N as an Expression_With_Actions. + (Expand_Call): Call the new procedures Expand_Call_Helper and + Insert_Post_Call_Actions. + +2017-04-25 Ed Schonberg + + * sem_prag.adb (Inherits_Class_Wide_Pre): Cleanup code, handle + properly type derived from generic formal types, to handle + properly modified version of ACATS 4.1B B611017. + +2017-04-25 Javier Miranda + + * exp_unst.adb (Subp_Index): Adding missing + support for renamings and functions that return a constrained + array type (i.e. functions for which the frontend built a + procedure with an extra out parameter). + +2017-04-25 Pascal Obry + + * s-string.adb: Minor code clean-up. + +2017-04-25 Bob Duff + + * s-os_lib.ads, s-os_lib.adb (Non_Blocking_Wait_Process): New + procedure. + * adaint.h, adaint.c (__gnat_portable_no_block_wait): C support + function for Non_Blocking_Wait_Process. + +2017-04-25 Bob Duff + + * prep.adb (Preprocess): Remove incorrect + Assert. Current character can be ASCII.CR. + +2017-04-25 Ed Schonberg + + * sem_prag.adb (Set_Convention_From_Pragma): Cleanup code for + convention Stdcall, which has a number of exceptions. Convention + is legal on a component declaration whose type is an anonymous + access to subprogram. + +2017-04-25 Hristian Kirtchev + + * sem_ch4.adb: sem_ch4.adb Various reformattings. + (Try_One_Prefix_Interpretation): Use the base type when dealing + with a subtype created for purposes of constraining a private + type with discriminants. + +2017-04-25 Javier Miranda + + * einfo.ads, einfo.adb (Has_Private_Extension): new attribute. + * warnsw.ads, warnsw.adb (All_Warnings): Set warning on late + dispatching primitives (Restore_Warnings): Restore warning on + late dispatching primitives (Save_Warnings): Save warning on late + dispatching primitives (Do_Warning_Switch): Use -gnatw.j/-gnatw.J + to enable/disable this warning. + (WA_Warnings): Set warning on late dispatching primitives. + * sem_ch3.adb (Analyze_Private_Extension_Declaration): Remember + that its parent type has a private extension. + * sem_disp.adb (Warn_On_Late_Primitive_After_Private_Extension): + New subprogram. + * usage.adb: Document -gnatw.j and -gnatw.J. + +2017-04-25 Hristian Kirtchev + + * exp_ch7.adb, checks.adb, sem_prag.adb, eval_fat.adb: Minor + reformatting. + +2017-04-25 Bob Duff + + * binde.adb (Validate): Do not pass dynamic strings + to pragma Assert, because older compilers do not support that. + +2017-04-25 Bob Duff + + * s-fileio.adb (Close): When a temp file is + closed, delete it and clean up its Temp_File_Record immediately, + rather than waiting until later. + (Temp_File_Record): Add File + component, so Close can know which Temp_File_Record corresponds + to the file being closed. + (Delete): Don't delete temp files, + because they are deleted by Close. + (Open): Set the File component + of Temp_File_Record. This requires moving the creation of the + Temp_File_Record to the end, after the AFCB has been created. + +2017-04-25 Hristian Kirtchev + + * checks.adb (Insert_Valid_Check): Do not generate + a validity check when inside a generic. + +2017-04-25 Yannick Moy + + * sem_res.adb (Resolve_Type_Conversion): Fix bad logic. + +2017-04-25 Arnaud Charlet + + * snames.ads-tmpl (Snames): More names for detecting predefined + potentially blocking subprograms. + +2017-04-25 Ed Schonberg + + * sem_prag.adb (Analyze_Pre_Post_Condition): The rules + concerning inheritance of class-wide preconditions do not apply + to postconditions. + +2017-04-25 Bob Duff + + * s-ficobl.ads: Minor comment fix. + +2017-04-25 Yannick Moy + + * checks.adb (Apply_Scalar_Range_Check): Analyze precisely + conversions from float to integer in GNATprove mode. + (Apply_Type_Conversion_Checks): Make sure in GNATprove mode + to call Apply_Type_Conversion_Checks, so that range checks + are properly positioned when needed on conversions, including + when converting from float to integer. (Determine_Range): In + GNATprove mode, take into account the possibility of conversion + from float to integer. + * sem_res.adb (Resolve_Type_Conversion): Only enforce range + check on conversions from fixed-point to integer, not anymore + on conversions from floating-point to integer, when in GNATprove + mode. + +2017-04-25 Yannick Moy + + * checks.adb (Determine_Range_R): Special case type conversions + from integer to float in order to get bounds in that case too. + * eval_fat.adb (Machine): Avoid issuing warnings in GNATprove + mode, for computations involved in interval checking. + +2017-04-25 Hristian Kirtchev + + * checks.adb (Insert_Valid_Check): Partially reimplement validity + checks. + * einfo.adb Node36 is now used as Validated_Object. + (Validated_Object): New routine. + (Set_Validated_Object): New routine. + (Write_Field36_Name): Add an entry for Validated_Object. + * einfo.ads Add new attribute Validated_Object along with + usage in entities. + (Validated_Object): New routine along with pragma Inline. + (Set_Validated_Object): New routine along with pragma Inline. + * exp_attr.adb (Make_Range_Test): Add processing for validation + variables to avoid extra reads and copies of the prefix. + * exp_ch6.adb (Expand_Actuals): Add copy-back for validation + variables in order to reflect any changes done in the variable + back into the original object. + * sem_util.adb (Is_Validation_Variable_Reference): New routine. + * sem_util.ads (Is_Validation_Variable_Reference): New routine. + +2017-04-25 Steve Baird + + * exp_ch7.adb (Build_Array_Deep_Procs, + Build_Record_Deep_Procs, Make_Finalize_Address_Body): Don't + generate Finalize_Address routines for CodePeer. + +2017-04-25 Ed Schonberg + + * sem_prag.adb (Inherits_Class_Wide_Pre): subsidiary of + Analyze_Pre_Post_Condition, to implement the legality checks + mandated by AI12-0131: Pre'Class shall not be specified for an + overriding primitive subprogram of a tagged type T unless the + Pre'Class aspect is specified for the corresponding primitive + subprogram of some ancestor of T. + +2017-04-25 Bob Duff + + * sem_ch8.adb (Use_One_Type): If a use_type_clause + is redundant, set its Used_Operations to empty. This is only + necessary for use clauses that appear in the parent of a generic + child unit, because those use clauses get reanalyzed when we + instantiate the generic, and we don't want the Used_Operations + carried over from the original context (where it was probably + not redundant). + +2017-04-25 Hristian Kirtchev + + * exp_ch6.adb: Minor reformatting. + +2017-04-25 Bob Duff + + * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): + Use Source_Index (Current_Sem_Unit) to find the correct casing. + * exp_prag.adb (Expand_Pragma_Check): Use Source_Index + (Current_Sem_Unit) to find the correct casing. + * par.adb (Par): Null out Current_Source_File, to ensure that + the above bugs won't rear their ugly heads again. + +2017-04-25 Ed Schonberg + + * sem_ch8.adb (Find_Type): For an attribute reference + 'Class, if prefix type is synchronized and previous errors + have suppressed the creation of the corresponding record type, + create a spurious class-wide for the synchonized type itself, + to catch other misuses of the attribute + +2017-04-25 Steve Baird + + * exp_ch6.adb (Expand_Simple_Function_Return): if CodePeer_Mode + is True, then don't generate the accessibility check for the + tag of a tagged result. + * exp_intr.adb (Expand_Dispatching_Constructor_Call): + if CodePeer_Mode is True, then don't generate the + tag checks for the result of call to an instance of + Ada.Tags.Generic_Dispatching_Constructor (i.e., both the "is a + descendant of" check and the accessibility check). + +2017-04-25 Ed Schonberg + + * sem_ch13.adb: Code cleanups. + * a-strbou.ads: minor whitespace fix in Trim for bounded strings. + * sem_ch8.ads: Minor comment fix. + +2017-04-25 Eric Botcazou + + * exp_ch4.adb (Library_Level_Target): New function. + (Expand_Concatenate): When optimization is enabled, also expand + the operation out-of-line if the concatenation is present within + the expression of the declaration of a library-level object and + not only if it is the expression of the declaration. + +2017-04-25 Bob Duff + + * freeze.adb (Freeze_Object_Declaration): Do + not Remove_Side_Effects if there is a pragma Linker_Section, + because in that case we want static initialization in the + appropriate section. + +2017-04-25 Gary Dismukes + + * exp_dbug.adb: Minor rewording and reformatting. + +2017-04-25 Ed Schonberg + + * sem_attr.adb (Statically_Denotes_Object): New predicate, to + handle the proposed changes to rules concerning potentially + unevaluated expressions, to include selected components that + do not depend on discriminants, and indexed components with + static indices. + * sem_util.adb (Is_Potentially_Unevaluated): Add check for + predicate in quantified expression, and fix bugs in the handling + of case expressions and membership test. + (Analyze_Attribute_Old_Result): use new predicate. + (Analyze_Attribute, case Loop_Entry): ditto. + +2017-04-25 Bob Duff + + * s-secsta.adb (SS_Info): Add a comment + explaining why we don't need to walk all the chunks in order to + compute the total size. + +2017-04-25 Bob Duff + + * namet.ads, namet.adb (Global_Name_Buffer): Increase the length + of the global name buffer to 4*Max_Line_Length. + +2017-04-25 Javier Miranda + + * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): When creating a + renaming entity for debug information, mark the entity as needing debug + info if it comes from sources. + +2017-04-25 Hristian Kirtchev + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Remove the + restriction converning the use of 'Address where the prefix is + of a controlled type. + +2017-04-25 Pierre-Marie de Rodat + + * exp_dbug.adb: In Debug_Renaming_Declaration, + skip slices that are made redundant by an indexed component + access. + * atree.h: New definition for Original_Node. + +2017-04-25 Hristian Kirtchev + + * sem_prag.adb, sem_prag.ads: Minor reformatting. + +2017-04-25 Ed Schonberg + + * sem_ch3.adb (Check_Entry_Contract): Call + Preanalyze_Spec_Expression so that resolution takes place as well. + * sem_util.adb (Check_Internal_Protected_Use): Reject properly + internal calls that appear in preconditions of protected + operations, in default values for same, and in contract guards + for contract cases in SPARK. + +2017-04-25 Eric Botcazou + + * a-numaux.ads: Fix description of a-numaux-darwin + and a-numaux-x86. + (Double): Define to Long_Float. + * a-numaux-vxworks.ads (Double): Likewise. + * a-numaux-darwin.ads + (Double): Likewise. + * a-numaux-libc-x86.ads (Double): Define to Long_Long_Float. + * a-numaux-x86.ads: Fix package description. + * a-numaux-x86.adb (Is_Nan): Minor tweak. + (Reduce): Adjust and complete description. Call Is_Nan instead of + testing manually. Use an integer temporary to hold rounded value. + * a-numaux-darwin.adb (Reduce): Likewise. + (Is_Nan): New function. + +2017-04-25 Ed Schonberg + + * sem_ch4.adb (Analyze_Selected_Component): Additional refinement + on analysis of prefix whose type is a current instance of a + synchronized type, but where the prefix itself is an entity that + is an object. + +2017-04-25 Ed Schonberg + + * exp_ch5.adb (Replace_Target): When rewriting the RHS, preserve + the identity of callable entities therein, because they have been + properly resolved, and prefixed calls may have been rewritten + as normal calls. + +2017-04-25 Patrick Bernardi + + * exp_ch3.adb (Build_Init_Statements): Convert + the expression of the pragma/aspect Secondary_Stack_Size to + internal type System.Parameters.Size_Type before assigning + it to the Secondary_Stack_Size component of the task type's + corresponding record. + +2017-04-25 Eric Botcazou + + * sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal + (etc) optimizations when the type is modular and the offsets + are equal. + +2017-04-25 Eric Botcazou + + * s-osinte-freebsd.ads: Minor comment tweaks + +2017-04-25 Javier Miranda + + * urealp.adb (UR_Write): Reverse previous patch + adding documentation on why we generate multiplications instead + of divisions (needed to avoid expressions whose computation with + large numbers may cause division by 0). + +2017-04-25 Bob Duff + + * erroutc.adb (Set_Specific_Warning_Off, + Set_Warnings_Mode_Off): Use the correct source file for + Stop. Was using Current_Source_File, which is only valid during + parsing. Current_Source_File will have a leftover value from + whatever file happened to be parsed last, because of a with_clause + or something. + +2017-04-25 Bob Duff + + * lib.ads, lib.adb (In_Internal_Unit): New functions similar + to In_Predefined_Unit, but including GNAT units. + * sem_util.ads, sem_util.adb (Should_Ignore_Pragma): Replace + with Should_Ignore_Pragma_Par and Should_Ignore_Pragma_Sem, + because Should_Ignore_Pragma was not working reliably outside + the parser, because Current_Source_File is not valid. + * sem_prag.adb, exp_prag.adb: Call Should_Ignore_Pragma_Sem. + * par-prag.adb: Call Should_Ignore_Pragma_Par. + +2017-04-25 Arnaud Charlet + + * gnat1drv.adb (Gnat1Drv): Disable Generate_Processed_File in + codepeer mode. + +2017-04-25 Javier Miranda + + * urealp.adb (UR_Write): Fix output of constants with a base other + that 10. + +2017-04-25 Justin Squirek + + * sem_ch13.adb (Get_Interfacing_Aspects): Moved to sem_util.adb. + * sem_prag.adb (Analyze_Pragma, Process_Import_Or_Interface): + Add extra parameter for Process_Interface_Name. + (Process_Interface_Name): Add parameter for pragma to analyze + corresponding aspect. + * sem_util.ads, sem_util.adb (Get_Interfacing_Aspects): Added + from sem_ch13.adb + +2017-04-25 Gary Dismukes + + * exp_ch7.adb, einfo.ads, sem_prag.adb: Minor reformatting and typo + correction. + +2017-04-25 Yannick Moy + + * sem_res.adb (Resolve_Comparison_Op): Do not + attempt evaluation of relational operations inside assertions. + +2017-04-25 Justin Squirek + + * exp_util.adb (Add_Interface_Invariants): + Restored, code moved back from Build_Invariant_Procedure_Body. + (Add_Parent_Invariants): Restored, code moved back from + Build_Invariant_Procedure_Body. + (Build_Invariant_Procedure_Body): + Remove refactored calls and integrated code from + Add_Parent_Invariants and Add_Interface_Invariants. + +2017-04-25 Johannes Kanig + + * errout.adb (Output_Messages): Adjust computation of total + errors + * erroutc.adb (Error_Msg): In statistics counts, deal + correctly with informational messages that are not warnings. + * errutil.adb (Finalize): adjust computation of total errors. + +2017-04-25 Arnaud Charlet + + * terminals.c (__gnat_terminate_pid): New. + * g-exptty.ads (Terminate_Process): New. Update comments. + +2017-04-25 Arnaud Charlet + + * a-cfinve.ads, a-cofove.ads (Empty_Vector): add Global contract. + +2017-04-25 Justin Squirek + + * sem_ch3.adb (Analyze_Declarations): Minor + correction to comments, move out large conditional and scope + traversal into a predicate. + (Uses_Unseen_Lib_Unit_Priv): Predicate function made from extracted + logic. + +2017-04-25 Ed Schonberg + + * sem_ch4.adb (Analyze_Selected_Component): Refine analysis + of prefix whose type is a current instance of a synchronized + type. If the prefix is an object this is an external call (or + requeue) that can only access public operations of the object. The + previous predicate was too restrictive, and did not allow public + protected operations, only task entries. + +2017-04-25 Hristian Kirtchev + + * sem_ch5.adb, fname.adb: Minor reformatting. + +2017-04-25 Hristian Kirtchev + + * einfo.adb (Is_Anonymous_Access_Type): New routine. + * einfo.ads Update the placement of + E_Anonymous_Access_Subprogram_Type along with all subtypes that + mention the ekind. + (Is_Anonymous_Access_Type): New routine. + * exp_ch7.adb (Allows_Finalization_Master): Do not generate a + master for an access type subject to pragma No_Heap_Finalization. + * exp_util.adb (Build_Allocate_Deallocate_Proc): An object being + allocated or deallocated does not finalization actions if the + associated access type is subject to pragma No_Heap_Finalization. + * opt.ads Add new global variable No_Heap_Finalization_Pragma. + * par-prag.adb Pragma No_Heap_Finalization does not need special + processing from the parser. + * sem_ch6.adb (Check_Return_Subtype_Indication): Remove ancient + ??? comments. Use the new predicate Is_Anonymous_Access_Type. + * sem_prag.adb Add an entry in table Sig_Flags for pragma + No_Heap_Finalization. + (Analyze_Pragma): Add processing for + pragma No_Heap_Finalization. Update various error messages to + use Duplication_Error. + * sem_util.ads, sem_util.adb (No_Heap_Finalization): New routine. + * snames.ads-tmpl: Add new predefined name No_Heap_Finalization + and corresponding pragma id. + +2017-04-25 Bob Duff + + * freeze.adb (Freeze_Record_Type): Use the + underlying type of the component type to determine whether it's + elementary. For representation clause purposes, a private type + should behave the same as its full type. + * fname.ads, fname.adb (Is_Predefined_File_Name): + Make sure things like "system.ali" are recognized as predefined. + +2017-04-25 Javier Miranda + + * debug.adb: Update documentation of -gnatd.6. + +2017-04-25 Ed Schonberg + + * sem_ch5.adb (Preanalyze_Range): Handle properly an Ada2012 + element iterator when the name is an overloaded function call, + one of whose interpretations yields an array. + +2017-04-25 Bob Duff + + * uname.ads, uname.adb (Is_Predefined_Unit_Name, + Is_Internal_Unit_Name): New functions for operating on unit + names, as opposed to file names. There's some duplicated code + with fname.adb, which is unfortunate, but it seems like we don't + want to add dependencies here. + * fname-uf.adb (Get_File_Name): Change Is_Predefined_File_Name + to Is_Predefined_Unit_Name; the former was wrong, because Uname + is not a file name at all. + * fname.ads, fname.adb: Document the fact that + Is_Predefined_File_Name and Is_Internal_File_Name can be called + for ALI files, and fix the code so it works properly for ALI + files. E.g. these should return True for "system.ali". + +2017-04-25 Justin Squirek + + * exp_util.adb (Add_Invariant): Removed, + code moved to Add_Invariant_Check, Add_Inherited_Invariant, + and Add_Own_Invariant. (Add_Invariant_Check): Used + for adding runtime checks from any kind of invariant. + (Add_Inherited_Invariant): Generates invariant checks for + class-wide invariants (Add_Interface_Invariants): Removed, code + moved to Build_Invariant_Procedure_Body (Add_Own_Invariant): + Create a types own invariant procedure (Add_Parent_Invariants): + Removed, code moved to Build_Invariant_Procedure_Body + (Build_Invariant_Procedure_Body): Add refactored calls + and integrated code from Add_Parent_Invariants and + Add_Interface_Invariants. + (Process_Type): Removed, the + relavant code was inlined into both Add_Own_Invariant and + Add_Inherited_Invariant. + +2017-04-25 Hristian Kirtchev + + * make.adb, par-ch2.adb, sem_util.adb, scans.ads, sem_ch8.adb, + scn.adb, osint.adb, fname.adb: Minor reformatting. + +2017-04-25 Pascal Obry + + * s-taprop-mingw.adb: Do not check for CloseHandle in + Finalize_TCB. + +2017-04-25 Hristian Kirtchev + + * sem_util.adb (Check_Part_Of_Reference): + Continue to examine the context if the reference appears within + an expression function. + +2017-04-25 Justin Squirek + + * exp_ch7.adb, exp_ch7.ads Remove Build_Invariant_Procedure_Body + and Build_Invariant_Procedure_Declaration. + * exp_util.ads, exp_util.adb Add Build_Invariant_Procedure_Body + and Build_Invariant_Procedure_Declaration from exp_ch7 + and break-out Is_Untagged_Private_Derivation from + Build_Invariant_Procedure_Body. + (Replace_Type_References): + Append an extra parameter to allow for dispatching replacements + and add the corrasponding logic. + (Type_Invariant): Remove + Replace_Typ_Refs and replace its references with calls to + Replace_Type_References. + * sem_ch3.adb, sem_prag.adb: Remove with and use of exp_ch7. + +2017-04-25 Bob Duff + + * sem_util.ads, sem_util.adb (Should_Ignore_Pragma): New function + that returns True when appropriate. + * par-prag.adb, exp_prag.adb, sem_prag.adb: Do not ignore pragmas + when compiling predefined files. + * fname.ads, fname.adb (Is_Predefined_File_Name): Fix bug: + "gnat.adc" should not be considered a predefined file name. + That required (or at least encouraged) a lot of cleanup of global + variable usage. We shouldn't be communicating information via + the global name buffer. + * bindgen.adb, errout.adb, fname-uf.adb, lib-load.adb, make.adb, + * restrict.adb, sem_ch10.adb, sem_ch6.adb, sem_ch8.adb: Changes + required by the above-mentioned cleanup. + +2017-04-25 Ed Schonberg + + * osint.adb (Find_File): Handle properly a request for a + configuration file whose name is a directory. + +2017-04-25 Hristian Kirtchev + + * sem_attr.adb, sem_ch5.adb: Minor reformatting. + +2017-04-25 Bob Duff + + * types.ads: Minor: Fix '???' comment. + * sem_ch8.adb: Minor comment fix. + +2017-04-25 Bob Duff + + * sem_prag.adb: Remove suspicious uses of Name_Buf. + * stringt.ads, stringt.adb, exp_dbug.adb, sem_dim.adb: Remove + Add_String_To_Name_Buffer, to avoid using the global Name_Buf. + Add String_To_Name with no side effects. + +2017-04-25 Justin Squirek + + * sem_ch3.adb (Analyze_Declarations): Add + additional condition for edge case. + +2017-04-25 Bob Duff + + * par-ch2.adb, scans.ads, scn.adb: Do not give an error for + reserved words inside pragmas. This is necessary to allow the + pragma name Interface to be used in pragma Ignore_Pragma. + * par.adb: Minor comment fix. + +2017-04-25 Javier Miranda + + * a-tags.ads, a-tags.adb (Type_Is_Abstract): Renamed as Is_Abstract. + * rtsfind.ads (RE_Type_Is_Abstract): Renamed as Is_Abstract. + * exp_disp.adb (Make_DT): Update occurrences of RE_Type_Is_Abstract. + * exp_intr.adb (Expand_Dispatching_Constructor_Call): Update + occurrences of RE_Type_Is_Abstract + +2017-04-25 Hristian Kirtchev + + * exp_util.adb (Build_Chain): Account for ancestor + subtypes while traversing the derivation chain. + +2017-04-25 Ed Schonberg + + * sem_attr.adb: minor reformatting. + +2017-04-25 Doug Rupp + + * sigtramp-vxworks-target.inc [PPC64]: Add a .localentry pseudo-op. + +2017-04-25 Ed Schonberg + + * sem_ch5.adb (Analyze_Assignment): Reset Full_Analysis flag on + the first pass over an assignment statement with target names, + to prevent the generation of subtypes (such as discriminated + record components)that may carry the target name outside of the + tree for the assignment. The subtypes will be generated when + the assignment is reanalyzed in full. + (Analyze_Target_Name): Handle properly class-wide types. + +2017-04-25 Hristian Kirtchev + + * elists.ads, elists.adb (Prepend_Unique_Elmt): New routine. + * exp_ch3.adb (Freeze_Type): Signal the DIC body is created for + the purposes of freezing. + * exp_util.adb Update the documentation and structure of the + type map used in class-wide semantics of assertion expressions. + (Add_Inherited_Tagged_DIC): There is really no need to preanalyze + and resolve the triaged expression because all substitutions + refer to the proper entities. Update the replacement of + references. + (Build_DIC_Procedure_Body): Add formal parameter + For_Freeze. Add local variable Build_Body. Inherited DIC pragmas + are now only processed when freezing occurs. Build a body only + when one is needed. + (Entity_Hash): Removed. + (Map_Types): New routine. + (Replace_Object_And_Primitive_References): Removed. + (Replace_References): New routine. + (Replace_Type_References): Moved to the library level of Exp_Util. + (Type_Map_Hash): New routine. + (Update_Primitives_Mapping): Update the mapping call. + (Update_Primitives_Mapping_Of_Types): Removed. + * exp_util.ads (Build_DIC_Procedure_Body): Add formal + parameter For_Freeze and update the comment on usage. + (Map_Types): New routine. + (Replace_References): New routine. + (Replace_Type_References): Moved to the library level of Exp_Util. + (Update_Primitives_Mapping_Of_Types): Removed. + * sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC + properties of the private type to the full view in case the full + view derives from a parent type and inherits a DIC pragma. + * sem_prag.adb (Analyze_Pragma): Guard against a case where a + DIC pragma is placed at the top of a declarative region. + +2017-04-25 Arnaud Charlet + + * a-tasatt.adb: Complete previous change and use an unsigned + int to avoid overflow checks. + +2017-04-25 Ed Schonberg + + * sem_attr.adb (Analyze_Attribute, case 'Access): Specialize + the error message when the attribute reference is an actual in + a call to a subprogram inherited from a generic formal type with + unknown discriminants, which makes the subprogram and its formal + parameters intrinsic (see RM 6.3.1 (8) and (13)). + +2017-04-25 Hristian Kirtchev + + * sem_aggr.adb, inline.adb, einfo.adb, einfo.ads, scng.adb, + sem_prag.adb: Minor reformatting. + +2017-04-25 Bob Duff + + * sem_attr.adb (Type_Key): Add code in the + recursive Compute_Type_Key to protect against fetching the source + code for Standard, in case a component of the type is declared + in Standard. There was already code to do this for the original + type, but not for its components. + +2017-04-25 Javier Miranda + + * exp_ch3.adb (Build_Initialization_Call): Handle + subtypes of private types when searching for the underlying full + view of a private type. + +2017-04-25 Javier Miranda + + * sem_res.adb (Set_Mixed_Mode_Operand): A universal + real conditional expression can appear in a fixed-type context + and must be resolved with that context to facilitate the code + generation to the backend. + +2017-04-25 Ed Schonberg + + * einfo.adb, einfo.ads (Body_Needed_For_Inlining): New flag, + to indicate whether during inline processing, when some unit U1 + appears in the context of a unit U2 compiled for instantiation + or inlining purposes, the body of U1 needs to be compiled as well. + * sem_prag.adb (Process_Inline): Set Body_Needed_For_Inlining if + context is a package declaration. + * sem_ch12.adb (Analyze_Generic_Subprogram_Declaration, + Analyze_Generic_Package_Declaration): ditto. + * inline.adb (Analyze_Inlined_Bodies): Check + Body_Needed_For_Inlining. + +2017-04-25 Ed Schonberg + + * par.adb (Current_Assign_Node): Global variable use to record + the presence of a target_name in the right hand side of the + assignment being parsed. + * par-ch4.adb (P_Name): If the name is a target_name, mark the + enclosing assignment node accordingly. + * par-ch5.adb (P_Assignment_Statement): Set Current_Assign_Node + appropriately. + * sem_ch5.adb (Analyze_Assignment): Disable expansion before + analyzing RHS if the statement has target_names. + * sem_aggr.adb (Resolve_Iterated_Component_Association): Handle + properly choices that are subtype marks. + * exp_ch5.adb: Code cleanup. + +2017-04-25 Bob Duff + + * s-memory.adb: Add a comment regarding efficiency. + * atree.adb: Fix the assertion, and combine 2 assertions into one, + "the source has an extension if and only if the destination does." + * sem_ch3.adb, sem_ch13.adb: Address ??? comments. + +2017-04-25 Arnaud Charlet + + * a-tasatt.adb (Set_Value): Fix handling of 32bits -> 64bits + conversion. + +2017-04-25 Doug Rupp + + * init.c (__gnat_error_handler) [vxworks]: Turn on sigtramp + handling for ppc64-vx7. + * sigtramp-vxworks-target.inc + [SIGTRAMP_BODY]: Add section for ppc64-vx7. + +2017-04-25 Arnaud Charlet + + * ada_get_targ.adb: New file. + +2017-04-25 Bob Duff + + * uintp.adb (Most_Sig_2_Digits): In case Direct (Right), fetch + Direct_Val (Right), instead of the incorrect Direct_Val (Left). + (UI_GCD): Remove ??? comment involving possible efficiency + improvements. This just isn't important after all these years. + Also minor cleanup. + * uintp.ads: Minor cleanup. + +2017-04-25 Hristian Kirtchev + + * exp_util.adb, exp_util.ads, sem_ch7.adb, sem_prag.adb, exp_ch3.adb: + Revert previous changes. + * scng.adb: Minor reformatting. + * s-stratt.ads: Fix unbalanced parens in comment. + +2017-04-25 Hristian Kirtchev + + * sem_ch3.adb, exp_util.adb, sem_prag.adb, freeze.adb, sem_util.adb: + Minor reformatting. + +2017-04-25 Ed Schonberg + + * scng.adb (Scan): Handle '@' appropriately. + * sem_ch5.adb: Code cleanup. + +2017-04-25 Ed Schonberg + + * freeze.adb (Check_Expression_Function): Do not check for the + use of deferred constants if the freezing of the expression + function is triggered by its generated body, rather than a + premature use. + +2017-04-25 Javier Miranda + + * exp_attr.adb (Rewrite_Stream_Proc_Call): Handle + subtypes of private types when performing the view conversion. + +2017-04-25 Hristian Kirtchev + + * exp_ch3.adb (Freeze_Type): Signal the DIC body is created for + the purposes of freezing. + * exp_util.adb Update the documentation and structure of the + type map used in class-wide semantics of assertion expressions. + (Add_Inherited_Tagged_DIC): There is really no need to preanalyze + and resolve the triaged expression because all substitutions + refer to the proper entities. Update the replacement of + references. + (Build_DIC_Procedure_Body): Add formal parameter + For_Freeze. Add local variable Build_Body. Inherited DIC pragmas + are now only processed when freezing occurs. Build a body only + when one is needed. + (Entity_Hash): Removed. + (Map_Types): New routine. + (Replace_Object_And_Primitive_References): Removed. + (Replace_References): New routine. + (Replace_Type_References): Moved to the library level of Exp_Util. + (Type_Map_Hash): New routine. + (Update_Primitives_Mapping): Update the mapping call. + (Update_Primitives_Mapping_Of_Types): Removed. + * exp_util.ads (Build_DIC_Procedure_Body): Add formal + parameter For_Freeze and update the comment on usage. + (Map_Types): New routine. + (Replace_References): New routine. + (Replace_Type_References): Moved to the library level of Exp_Util. + (Update_Primitives_Mapping_Of_Types): Removed. + * sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC + properties of the private type to the full view in case the full + view derives from a parent type and inherits a DIC pragma. + * sem_prag.adb (Analyze_Pragma): Guard against a case where a + DIC pragma is placed at the top of a declarative region. + +2017-04-25 Tristan Gingold + + * s-mmap.ads (Data): Add pragma Inline. + +2017-04-25 Hristian Kirtchev + + * checks.adb (Insert_Valid_Check): Do not use + a renaming to alias a volatile name because this will lead to + multiple evaluations of the volatile name. Use a constant to + capture the value instead. + +2017-04-25 Doug Rupp + + * init.c [VxWorks Section]: Disable sigtramp for ppc64-vx7. + +2017-04-25 Ed Schonberg + + * exp_util.adb, exp_util.ads (Build_Class_Wide_Expression): + Add out parameter to indicate to caller that a wrapper must + be constructed for an inherited primitive whose inherited + pre/postcondition has called to overridden primitives. + * freeze.adb (Check_Inherited_Conditions): Build wrapper body + for inherited primitive that requires it. + * sem_disp.adb (Check_Dispatching_Operation): Such wrappers are + legal primitive operations and belong to the list of bodies + generated after the freeze point of a type. + * sem_prag.adb (Build_Pragma_Check_Equivalent): Use new signature + of Build_Class_Wide_Expression. + * sem_util.adb, sem_util.ads (Build_Overriding_Spec): New procedure + to construct the specification of the wrapper subprogram created + for an inherited operation. + +2017-04-25 Bob Duff + + * s-osinte-linux.ads (pthread_mutexattr_setprotocol, + pthread_mutexattr_setprioceiling): Add new interfaces for these + pthread operations. + * s-taprop-linux.adb (Initialize_Lock, Initialize_TCB): Set + protocols as appropriate for Locking_Policy 'C' and 'I'. + * s-taprop-posix.adb: Minor reformatting to make it more similar + to s-taprop-linux.adb. + +2017-04-25 Ed Schonberg + + * sem_ch3.adb (Get_Discriminant_Value, Search_Derivation_Levels): + Handle properly a multi- level derivation involving both renamed + and constrained parent discriminants, when the type to be + constrained has fewer discriminants that the ultimate ancestor. + +2017-04-25 Bob Duff + + * sem_util.adb (Is_Object_Reference): In the + case of N_Explicit_Dereference, return False if it came from a + conditional expression. + +2017-04-25 Bob Duff + + * par-ch4.adb (P_Case_Expression): If a semicolon + is followed by "when", assume that ";" was meant to be ",". + +2017-04-25 Gary Dismukes + + * sem_ch9.adb, sem_ch10.adb, sem_util.adb: Minor reformatting and typo + fixes. + +2017-04-25 Arnaud Charlet + + * rtsfind.ads (SPARK_Implicit_Load): New procedure for forced + loading of an entity. + * rtsfind.adb (SPARK_Implicit_Load): Body with a pattern + previously repeated in the analysis. + * sem_ch9.adb (Analyze_Protected_Type_Declaration): use new + procedure SPARK_Implicit_Load. (Analyze_Task_Type_Declaration): + use new procedure SPARK_Implicit_Load. + * sem_ch10.adb (Analyze_Compilation_Unit): Use new procedure + SPARK_Implicit_Load. + +2017-04-25 Javier Miranda + + * sem_util.adb (New_Copy_Tree): By default + copying of defining identifiers is prohibited because + this would introduce an entirely new entity into the + tree. This patch introduces an exception to this general + rule: the declaration of constants and variables located in + Expression_With_Action nodes. + (Copy_Itype_With_Replacement): Renamed as Copy_Entity_With_Replacement. + (In_Map): New subprogram. + (Visit_Entity): New subprogram. + (Visit_Node): Handle EWA_Level, + EWA_Inner_Scope_Level, and take care of defining entities defined + in Expression_With_Action nodes. + +2017-04-25 Thomas Quinot + + * exp_ch6.adb: minor comment edit. + * sinfo.ads, sinfo.adb: New Null_Statement attribute for null + procedure specifications that come from source. + * par-ch6.adb (P_Subprogram, case of a null procedure): Set new + Null_Statement attribute. + * par_sco.adb (Traverse_Declarations_Or_Statements): For a null + procedure, generate statement SCO for the generated NULL statement. + * sem_ch6.adb (Analyze_Null_Procedure): Use null statement from + parser, if available. + +2017-04-04 Andreas Krebbel + + * system-linux-s390.ads: Use Long_Integer'Size to define + Memory_Size. + +2017-04-04 Eric Botcazou + + * sem_ch3.adb (Build_Derived_Record_Type): Fix long line. + +2017-04-03 Jonathan Wakely + + * doc/gnat_ugn/gnat_and_program_execution.rst: Fix typo. + * g-socket.adb (To_Host_Entry): Fix typo in comment. + * gnat_ugn.texi: Fix typo. + * raise.c (_gnat_builtin_longjmp): Fix capitalization in comment. + * s-stposu.adb (Allocate_Any_Controlled): Fix typo in comment. + * sem_ch3.adb (Build_Derived_Record_Type): Likewise. + * sem_util.adb (Mark_Coextensions): Likewise. + * sem_util.ads (Available_Full_View_Of_Component): Likewise. + +2017-03-28 Andreas Schwab + + PR ada/80117 + * system-linux-aarch64-ilp32.ads: New file. + * gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS_COMMON): Rename + from LIBGNAT_TARGET_PAIRS. + (LIBGNAT_TARGET_PAIRS_32, LIBGNAT_TARGET_PAIRS_64): Define. + (LIBGNAT_TARGET_PAIRS): Use LIBGNAT_TARGET_PAIRS_COMMON, and + LIBGNAT_TARGET_PAIRS_64 or LIBGNAT_TARGET_PAIRS_32 for -mabi=lp64 + or -mabi=ilp32, resp. + +2017-03-14 James Cowgill + + * s-osinte-linux.ads (struct_sigaction): Use correct type for sa_flags. + +2017-03-08 Thanassis Tsiodras + + PR ada/79903 + * socket.c (__gnat_gethostbyaddr): Add missing test for __rtems__. + +2017-03-08 Eric Botcazou + + PR ada/79945 + * system-linux-ppc.ads (Default_Bit_Order): Use Standard's setting. + + * system-linux-arm.ads (Default_Bit_Order): Likewise. + * system-linux-mips.ads (Default_Bit_Order): Likewise. + * system-linux-armeb.ads: Delete. + * system-linux-mipsel.ads: Likewise. + * gcc-interface/Makefile.in (MIPS/Linux): Adjust. + (ARM/Linux): Likewise. + +2017-02-24 Jakub Jelinek + + PR c/79677 + * gcc-interface/misc.c (gnat_handle_option): Pass true to + handle_generated_option GENERATED_P. + +2017-02-24 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_field): Do not remove the wrapper + around a justified modular type if it doesn't have the same scalar + storage order as the enclosing record type. + +2017-02-24 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu): Do not apply special handling + of boolean rvalues to function calls. + +2017-02-24 Eric Botcazou + + * gcc-interface/utils.c (fold_bit_position): New function. + (rest_of_record_type_compilation): Call it instead of bit_position to + compute the field position and remove the call to remove_conversions. + (compute_related_constant): Factor out the multiplication in both + operands, if any, and streamline the final test. + +2017-02-24 Eric Botcazou + + * gcc-interface/trans.c (return_value_ok_for_nrv_p): Add sanity check. + +2017-02-24 Eric Botcazou + + * gcc-interface/decl.c: Include demangle.h. + (is_cplusplus_method): Return again true for a primitive operation + only if it is dispatching. For a subprogram with an interface name, + call the demangler to get the number of C++ parameters and compare it + with the number of Ada parameters. + +2017-02-24 Eric Botcazou + + * gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): If + there is no end label, put the location of the At_End procedure on + the call to the procedure. + +2017-02-24 Eric Botcazou + + * gcc-interface/misc.c (gnat_type_max_size): Try to return a meaningful + value for array types with TYPE_INDEX_TYPE set on their domain type. + * gcc-interface/utils.c (max_size): For operations and expressions, do + not build a new node if the operands have not changed or are missing. + +2017-02-24 Eric Botcazou + + * gcc-interface/utils.c (max_size) : Flip the second + argument when recursing on TRUTH_NOT_EXPR. + +2017-02-12 John Marino + + * system-freebsd-x86.ads: Rename into... + * system-freebsd.ads: ...this. + (Default_Bit_Order): Define using Standard'Default_Bit_Order. + * gcc-interface/Makefile.in: Support aarch64-freebsd. + (x86-64/FreeBSD): Adjust to above renaming. + (i386/FreeBSD): Likewise. + +2017-02-09 Gerald Pfeifer + + * comperr.adb: Update FSF bug reporting URL. + +2017-02-01 Eric Botcazou + Jakub Jelinek + + PR ada/79309 + * adaint.c (__gnat_killprocesstree): Fix broken string handling. + +2017-01-25 Maxim Ostapenko + + PR lto/79061 + * gcc-interface/utils.c (get_global_context): Pass main_input_filename + to build_translation_unit_decl. + +2017-01-23 Javier Miranda + + * sem_util.adb (New_Copy_Tree): Code cleanup: + removal of the internal map (ie. variable Actual_Map, its + associated local variables, and all the code handling it). + * sem_ch9.adb (Analyze_Task_Type_Declaration): in GNATprove mode + force loading of the System package when processing a task type. + (Analyze_Protected_Type_Declaration): in GNATprove mode force + loading of the System package when processing a protected type. + * sem_ch10.adb (Analyze_Compilation_Unit): in GNATprove mode + force loading of the System package when processing compilation + unit with a main-like subprogram. + * frontend.adb (Frontend): remove forced loading of the System + package. + +2017-01-23 Ed Schonberg + + * sem_prag.adb (Default_Initial_Condition): If the desired type + declaration is a derived type declaration with discriminants, + it is rewritten as a private type declaration. + * sem_ch13.adb (Replace_Type_References_Generic, + Visible_Component): A discriminated private type with descriminnts + has components that must be rewritten as selected components + if they appear as identifiers in an aspect expression such as + a Default_Initial_Condition. + * sem_util.adb (Defining_Entity): support N_Iterator_Specification + nodes. + +2017-01-23 Hristian Kirtchev + + * ghost.ads, ghost.adb (Is_Ignored_Ghost_Unit): New routine. + * gnat1drv.adb Generate an empty object file for an ignored + Ghost compilation unit. + * inline.adb, sem_util.adb, sem_ch4.adb: Minor reformatting. + +2017-01-23 Yannick Moy + + * sem_ch4.adb (Analyze_Indexed_Component_Form): + Adapt to inlined prefix with string literal subtype. + * inline.adb (Expand_Inlined_Call): Keep unchecked + conversion inside inlined call when formal type is constrained. + +2017-01-23 Javier Miranda + + * sem_util.adb (New_Copy_Tree): Code cleanup: + removal of global variables. All the global variables, global + functions and tables of this subprogram are now declared locally. + +2017-01-23 Gary Dismukes + + * exp_strm.ads: Minor reformatting and typo fixes. + +2017-01-23 Hristian Kirtchev + + * sem_aggr.adb, par_sco.adb, exp_util.adb, sem.adb, sem_ch4.adb, + exp_aggr.adb: Minor reformatting. + * g-diopit.adb: minor grammar/punctuation fix in comment. + * g-byorma.ads: minor fix of unbalanced parens in comment. + +2017-01-23 Hristian Kirtchev + + * par.adb: Update the documentation of component Labl. + * par-ch6.adb (P_Return_Statement): Set the expected label of + an extended return statement to Error. + +2017-01-23 Tristan Gingold + + * s-boustr.ads, s-boustr.adb (Is_Full): New function. + +2017-01-23 Ed Schonberg + + * expander.adb: Handle N_Delta_Aggregate. + +2017-01-23 Javier Miranda + + * exp_ch6.adb (Expand_Call): Improve the code that + checks if some formal of the called subprogram is a class-wide + interface, to handle subtypes of class-wide interfaces. + +2017-01-23 Javier Miranda + + * checks.adb (Apply_Parameter_Aliasing_Checks): + Remove side effects of the actuals before generating the overlap + check. + +2017-01-23 Justin Squirek + + * exp_strm.ads, exp_strm.ads + (Build_Record_Or_Elementary_Input_Function): Add an extra parameter so + as to avoid getting the underlying type by default. + * exp_attr.adb (Expand_N_Attribute_Reference): Remove use of + underlying type in the Iiput and output attribute cases when + building their respective functions. + +2017-01-23 Gary Dismukes + + * scng.adb: Minor reformatting of error message. + +2017-01-23 Ed Schonberg + + * sem_ch6.adb (Analyze_Expression_Function): Do not attempt + to freeze the return type of an expression funxtion that is a + completion, if the type is a limited view and the non-limited + view is available. + +2017-01-23 Ed Schonberg + + * par-ch4.adb (P_Aggregate_Or_Parent_Expr): Recognize delta + aggregate construct. + (P_Record_Or_Array_Component_Association): An array aggregate + can start with an Iterated_Component_Association. + * scng.adb: Modify error message on improper use of @ in earlier + versions of the language. + * sinfo.ads: New node kind N_Delta_Aggregate. + * sinfo.adb: An N_Delta_Aggregate has component associations and + an expression. + * sem_res.adb (Resolve): Call Resolve_Delta_Aggregate. + * sem_aggr.ads, sem_aggr.adb (Resolve_Iterated_Component_Association): + Create a new index for each one of the choices in the association, + to prevent spurious homonyms in the scope. + (Resolve_Delta_Aggregate): New. + * sem.adb: An N_Delta_Aggregate is analyzed like an aggregate. + * exp_util.adb (Insert_Actions): Take into account + N_Delta_Aggregate. + * exp_aggr.ads: New procedure Expand_N_Delta_Aggregate. + * exp_aggr.adb: New procedure Expand_N_Delta_Aggregate, + and local procedures Expand_Delta_Array_Aggregate and + expand_Delta_Record_Aggregate. + * sprint.adb: Handle N_Delta_Aggregate. + +2017-01-23 Hristian Kirtchev + + * exp_ch11.adb (Expand_N_Exception_Declaration): Generate an + empty name when the exception declaration is subject to pragma + Discard_Names. + (Null_String): New routine. + +2017-01-23 Hristian Kirtchev + + * par-ch9.adb (P_Protected_Definition): Parse + any optional and potentially illegal pragmas which appear in + a protected operation declaration list. + (P_Task_Items): Parse + any optional and potentially illegal pragmas which appear in a + task item list. + +2017-01-23 Pascal Obry + + * s-taprop-mingw.adb (Enter_Task): Initialize the Thread handle which + is needed when a foreign thread call a Win32 API using a thread handle + like GetThreadTimes() for example. + +2017-01-23 Hristian Kirtchev + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not + allow an 'Address clause to be specified on a prefix of a + class-wide type. + +2017-01-23 Hristian Kirtchev + + * checks.adb (Insert_Valid_Check): Ensure that the prefix of + attribute 'Valid is a renaming of the original expression when + the expression denotes a name. For all other kinds of expression, + use a constant to capture the value. + * exp_util.adb (Is_Name_Reference): Moved to Sem_Util. + * sem_util.ads, sem_util.adb (Is_Name_Reference): Moved from Exp_Util. + +2017-01-23 Justin Squirek + + * sem_eval.adb (Eval_Integer_Literal): Add special + case to avoid optimizing out check if the literal appears in + an if-expression. + +2017-01-23 Hristian Kirtchev + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not + allow an 'Address clause to be specified on a prefix of a + class-wide type. + +2017-01-23 Hristian Kirtchev + + * checks.adb (Insert_Valid_Check): Ensure that the prefix of + attribute 'Valid is a renaming of the original expression when + the expression denotes a name. For all other kinds of expression, + use a constant to capture the value. + * exp_util.adb (Is_Name_Reference): Moved to Sem_Util. + * sem_util.ads, sem_util.adb (Is_Name_Reference): Moved from Exp_Util. + +2017-01-23 Justin Squirek + + * sem_eval.adb (Eval_Integer_Literal): Add special + case to avoid optimizing out check if the literal appears in + an if-expression. + +2017-01-23 Ed Schonberg + + * sem_ch4.adb (Try_Primitive_Operations, + Is_Valid_First_Argument_Of): argument is valid if it is a derived + type with unknown discriminants that matches its underlying + record view. + * exp_util.adb (Expand_Subtype_From_Expr): Do not expand + expression if its type is derived from a limited type with + unknown discriminants, because the expansion (which is a call) + must be expanded in the enclosing context to add the proper build- + in-place parameters to the call. + * lib.ads, exp_ch9.adb: Minor fixes in comments. + +2017-01-23 Yannick Moy + + * frontend.adb (Frontend): Do not load runtime + unit for GNATprove when parsing failed. + * exp_ch9.adb: minor removal of extra whitespace + * exp_ch6.adb: minor typo in comment + * sem_util.adb: Code cleanup. + * exp_ch9.ads, par-ch2.adb: minor style fixes in whitespace and comment + * a-ngcefu.adb: minor style fix in whitespace + +2017-01-23 Thomas Quinot + + * scos.ads: Document usage of 'd' as default SCO kind for + declarations. + * par_sco.adb (Traverse_Declarations_Or_Statements. + Traverse_Degenerate_Subprogram): New supporting routine for expression + functions and null procedures. + (Traverse_Declarations_Or_Statements.Traverse_One): Add + N_Expression_Function to the subprogram case; add required + support for null procedures and expression functions. + +2017-01-23 Bob Duff + + * namet.ads (Bounded_String): Decrease the size of type + Bounded_String to avoid running out of stack space. + * namet.ads (Append): Don't ignore buffer overflow; raise + Program_Error instead. + +2017-01-23 Hristian Kirtchev + + * exp_ch5.adb, freeze.adb, par-ch4.adb, scng.adb, sem_ch13.adb, + sem_ch3.adb, sem_ch5.adb, sem_ch5.ads, sem_util.adb, sinfo.ads: Minor + reformatting. + * exp_ch9.adb: minor style fix in comment. + +2017-01-23 Ed Schonberg + + * sem_ch4.adb (Analyze_Allocator): Handle properly a type derived + for a limited record extension with unknown discriminants whose + full view has no discriminants. + +2017-01-23 Yannick Moy + + * exp_spark.adb: Alphabetize with clauses. + +2017-01-23 Yannick Moy + + * sem_util.adb (Has_Enabled_Property): Treat + protected objects and variables differently from other variables. + +2017-01-23 Thomas Quinot + + * sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): + Split original Ada 95 part off into new subprogram + below. Call that subprogram (instead of proceeding with + AI95-0133 behaviour) if debug switch -gnatd.p is in use. + (Adjust_Record_For_Reverse_Bit_Order_Ada_95): ... new subprogram + * debug.adb Document new switch -gnatd.p + * freeze.adb (Freeze_Entity.Freeze_Record_Type): Do not adjust + record for reverse bit order if an error has already been posted + on the record type. This avoids generating extraneous "info:" + messages for illegal code. + +2017-01-23 Justin Squirek + + * sem_ch3.adb (Analyze_Declarations): Correct comments + * freeze.adb (Find_Constant): Add detection of deferred constants + so they are not incorrectly flagged as premature. + +2017-01-23 Ed Schonberg + + * scans.ads: New token At_Sign. Remove '@' from list of illegal + characters for future version of the language. '@' is legal name. + * scng.ads, scng.adb (Scan): Handle '@' appropriately. + * scn.adb (Scan_Reserved_Identifier): An occurrence of '@' + denotes a Target_Name. + * par-ch4.adb (P_Name, P_Primary): Handle Target_Name. + * sinfo.ads, sinfo.adb (N_Target_Name): New non-terminal node. + (Has_Target_Names): New flag on N_Assignment_Statement, to + indicate that RHS has occurrences of N_Target_Name. + * sem.adb: Call Analyze_Target_Name. + * sem_ch5.ads, sem_ch5.adb (Analyze_Target_Name): New subpogram. + (urrent_LHS): Global variable that denotes LHS of assignment, + used in the analysis of Target_Name nodes. + * sem_res.adb (Resolve_Target_Name): New procedure. + * exp_ch5.adb (Expand_Assign_With_Target_Names): (AI12-0125): + N is an assignment statement whose RHS contains occurences of @ + that designate the value of the LHS of the assignment. If the + LHS is side-effect free the target names can be replaced with + a copy of the LHS; otherwise the semantics of the assignment + is described in terms of a procedure with an in-out parameter, + and expanded as such. + (Expand_N_Assignment_Statement): Call + Expand_Assign_With_Target_Names when needed. + * exp_util.adb (Insert_Actions): Take into account N_Target_Name. + * sprint.adb: Handle N_Target_Name. + +2017-01-23 Eric Botcazou + + * checks.adb: Minor fix in comment. + +2017-01-23 Philippe Gil + + * g-debpoo.adb (Do_Report) remove freed chunks from chunks + count in Sort = Memory_Usage or Allocations_Count + +2017-01-23 Justin Squirek + + * sem_ch3.adb: Code cleanup. + +2017-01-23 Hristian Kirtchev + + * sem_prag.adb (Analyze_Refined_Depends_In_Decl_Part): Move all global + variables to the local variable section. Update the profile + of various nested routine that previously had visibility + of those globals. One the matching phase has completed, + remove certain classes of clauses which are considered noise. + (Check_Dependency_Clause): Properly detect a match between two + 'Result attributes. Update the various post-match cases to use + Is_Already_Matched as this routine now automatically recognizes + a previously matched 'Result attribute. + (Is_Already_Matched): New routine. + (Remove_Extra_Clauses): New routine. + (Report_Extra_Clauses): Remove the detection of ... => null + clauses as this is now done in Remove_Extra_Clauses. + +2017-01-23 Ed Schonberg + + * sem_aggr.adb (Resolve_Array_Aggregate): In ASIS mode do not + report on spurious overlaps between values involving a subtype + with a static predicate, because the expansion of such a subtype + into individual ranges in inhibited in ASIS mode. + +2017-01-23 Justin Squirek + + * sem_ch3.adb (Analyze_Declarations): Add detection + of an edge case and delay freezing if it is present. + +2017-01-23 Hristian Kirtchev + + * sem_ch3.adb, exp_spark.adb, exp_attr.adb, sem_ch9.adb, sem_prag.adb, + sem_util.adb, sem_warn.adb, exp_ch3.adb: Minor reformatting. + +2017-01-23 Hristian Kirtchev + + * freeze.adb (Freeze_Subprogram): Ensure that all anonymous + access-to-subprogram types inherit the convention of the + associated subprogram. (Set_Profile_Convention): New routine. + * sem_ch6.adb (Check_Conformance): Do not compare the conventions + of the two entities directly, use Conventions_Match to account + for anonymous access-to-subprogram and subprogram types. + (Conventions_Match): New routine. + +2017-01-23 Claire Dross + + * exp_spark.adb (Expand_SPARK_Attribute_Reference): For attributes + which return Universal_Integer, force the overflow check flag for + Length and Range_Length for types as big as Long_Long_Integer. + +2017-01-23 Claire Dross + + * exp_spark.adb (Expand_SPARK_Attribute_Reference): For + attributes which return Universal_Integer, introduce a conversion + to the expected type with the appropriate check flags set. + * sem_res.adb (Resolve_Range): The higher bound can be in Typ's + base type if the range is null. It may still be invalid if it + is higher than the lower bound. This is checked later in the + context in which the range appears. + +2017-01-23 Pierre-Marie de Rodat + + * scos.ads: Introduce a constant to represent ignored + dependencies in SCO_Unit_Table_Entry. + +2017-01-23 Hristian Kirtchev + + * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Remove extra + spaces from error messages. + +2017-01-23 Ed Schonberg + + * exp_ch3.adb (Check_Large_Modular_Array): New procedure, + subsidiary to Expand_N_Object_ Declaration, to compute a guard on + an object declaration for an array type with a modular index type + with the size of Long_Long_Integer. Special processing is needed + in this case to compute reliably the size of the object, and + eventually to raise Storage_Error, when wrap-around arithmetic + might compute a meangingless size for the object. + +2017-01-23 Justin Squirek + + * a-wtenau.adb, par-endh.adb, sem_prag.adb, + sem_type.adb: Code cleanups. + +2017-01-23 Bob Duff + + * sem_res.adb (Resolve_Call): In the part of the code where + it is deciding whether to turn the call into an indexed + component, avoid doing so if the call is to an instance of + Unchecked_Conversion. Otherwise, the compiler turns it into an + indexed component, and resolution of that turns it back into a + function call, and so on, resulting in infinite recursion. + * sem_util.adb (Needs_One_Actual): If the first formal has a + default, then return False. + +2017-01-21 Eric Botcazou + + * sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal (etc) + optimizations when the type is modular and the offsets are equal. + +2017-01-20 Thomas Quinot + + * sem_warn.adb (Warn_On_Useless_Assignment): Adjust wording of warning + message. + +2017-01-20 Nicolas Roche + + * terminals.c: Ignore failures on setpgid and tcsetpgrp commands. + +2017-01-20 Bob Duff + + * sem_eval.adb (Compile_Time_Compare): Disable the expr+literal + (etc) optimizations when the type is modular. + +2017-01-20 Yannick Moy + + * sem_ch6.adb (Move_Pragmas): move some pragmas, + but copy the SPARK_Mode pragma instead of moving it. + (Build_Subprogram_Declaration): Ensure that the generated spec + and original body share the same SPARK_Pragma aspect/pragma. + * sem_util.adb, sem_util.ads (Copy_SPARK_Mode_Aspect): New + procedure to copy SPARK_Mode aspect. + +2017-01-20 Bob Duff + + * sem_ch3.adb (Analyze_Declarations): Disable Resolve_Aspects + even in ASIS mode. + * sem_ch13.adb (Resolve_Name): Enable setting the entity to + Empty even in ASIS mode. + +2017-01-20 Hristian Kirtchev + + * exp_ch9.adb: minor style fixes in comments. + * sem_ch9.adb (Analyze_Delay_Relative): in GNATprove mode a delay + relative statement introduces an implicit dependency on + Ada.Real_Time.Clock_Time. + * sem_util.adb: Minor reformatting. + +2017-01-20 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Alignment + must be treated as delayed aspect even if the expression is + a literal, because the aspect affects the freezing and the + elaboration of the object to which it applies. + +2017-01-20 Tristan Gingold + + * s-osinte-vxworks.ads (Interrup_Range): New subtype. + +2017-01-20 Ed Schonberg + + * lib-xref.adb (Generate_Reference): Do not warn about the + presence of a pragma Unreferenced if the entity appears as the + actual in a procedure call that does not come from source. + +2017-01-20 Pascal Obry + + * expect.c, terminals.c: Fix some warnings about unused variables. + * gsocket.h, adaint.c, adaint.h: Fix some more warnings in the C part + of the runtime. + +2017-01-20 Bob Duff + + * exp_attr.adb (Constrained): Apply an access check (check that + the prefix is not null) when the prefix denotes an object of an + access type; that is, when there is an implicit dereference. + +2017-01-20 Gary Dismukes + + * s-rident.ads (constant Profile_Info): Remove + No_Calendar from GNAT_Extended_Ravenscar restrictions. + +2017-01-20 Tristan Gingold + + * s-maccod.ads: Add pragma No_Elaboration_Code_All + +2017-01-20 Hristian Kirtchev + + * ghost.adb (Mark_Ghost_Clause): New routine. + (Prune_Node): Do not prune compilation unit nodes. + (Remove_Ignored_Ghost_Code): Prune the compilation unit node directly. + This does not touch the node itself, but does prune all its fields. + * ghost.ads (Mark_Ghost_Clause): New routine. + * sem_ch8.adb (Analyze_Use_Package): Emit an error when a use + package clause mentions Ghost and non-Ghost packages. Mark a + use package clause as Ghost when it mentions a Ghost package. + (Analyze_Use_Type): Emit an error when a use type clause mentions + Ghost and non-Ghost types. Mark a use type clause as Ghost when + it mentions a Ghost type. + * sem_ch10.adb (Analyze_With_Clause): Mark a with clause as + Ghost when it withs a Ghost unit. + +2017-01-20 Javier Miranda + + * sem_res.adb (Resolve_Call): If a function call + returns a limited view of a type and at the point of the call the + function is not declared in the extended main unit then replace + it with the non-limited view, which must be available. If the + called function is in the extended main unit then no action is + needed since the back-end handles this case. + +2017-01-20 Eric Botcazou + + * sem_ch7.adb (Contains_Subp_Or_Const_Refs): Rename into... + (Contains_Subprograms_Refs): ...this. Adjust comment + for constants. (Is_Subp_Or_Const_Ref): Rename into... + (Is_Subprogram_Ref): ...this. + (Has_Referencer): Rename Has_Non_Subp_Const_Referencer variable into + Has_Non_Subprograms_Referencer and adjust comment. Remove + incorrect shortcut for package declarations and bodies. + +2017-01-20 Ed Schonberg + + * sem_ch3.adb (Complete_Private_Subtype): If the scope of the + base type differs from that of the completion and the private + subtype is an itype (created for a constraint on an access + type e.g.), set Delayed_Freeze on both to prevent out-of-scope + anomalies in gigi. + +2017-01-20 Hristian Kirtchev + + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): + When inheriting the SPARK_Mode of a prior expression function, + look at the properly resolved entity rather than the initial + candidate which may denote a homonym. + +2017-01-20 Ed Schonberg + + * sem_prag.adb (Rewrite_Assertion_Kind): If the name is + Precondition or Postcondition, and the context is pragma + Check_Policy, indicate that this Pre-Ada2012 usage is deprecated + and suggest the standard names Assertion_Policy /Pre /Post + instead. + +2017-01-20 Hristian Kirtchev + + * sem_ch10.adb, sem_cat.adb: Minor reformatting. + +2017-01-20 Javier Miranda + + * sem_ch3.adb (Access_Type_Declaration): Protect access to the + Entity attribute. + * sem_ch10.adb (Install_Siblings): Skip processing malformed trees. + * sem_cat.adb (Validate_Categoriztion_Dependency): Skip processing + malformed trees. + +2017-01-20 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specification, case + Dynamic_Predicate): If the entity E is a subtype that inherits + a static predicate for its parent P,, the inherited and the + new predicate combine in the generated predicate function, + and E only has a dynamic predicate. + +2017-01-20 Tristan Gingold + + * s-boustr.ads, s-boustr.adb: New package. + * Makefile.rtl: Add s-boustr. + +2017-01-20 Hristian Kirtchev + + * inline.adb (Process_Formals): Qualify the + expression of a return statement when it yields a universal type. + +2017-01-20 Hristian Kirtchev + + * freeze.adb (Freeze_All): Freeze the default + expressions of all eligible formal parameters that appear in + entries, entry families, and protected subprograms. + +2017-01-20 Ed Schonberg + + * sem_ch3.adb (Check_Nonoverridable_Aspects); Refine check + for illegal inherited Implicit_Dereference aspects with renamed + discriminants. + +2017-01-20 Javier Miranda + + * debug.adb (switch d.6): do not avoid declaring unreferenced itypes. + * nlists.ads (Lock_Lists, Unlock_Lists): New subprograms. + * nlists.adb (Lock_Lists, Unlock_Lists): New subprograms. + (Set_First, Set_Last, Set_List_Link, Set_Next, Set_Parent, + Set_Prev, Tree_Read): Adding assertion. + * atree.ads (Lock_Nodes, Unlock_Nodes): New subprograms. + * atree.adb (Lock_Nodes, Unlock_Nodes): New subprograms. + (Set_Analyzed, Set_Check_Actuals, Set_Comes_From_Source, + Set_Ekind, Set_Error_Posted, Set_Has_Aspects, + Set_Is_Ignored_Ghost_Node, Set_Original_Node, Set_Paren_Count, + Set_Parent, Set_Sloc, Set_Nkind, Set_FieldNN, Set_NodeNN, + Set_ListNN, Set_ElistNN, Set_NameN, Set_StrN, Set_UintNN, + Set_UrealNN, Set_FlagNNN, Set_NodeN_With_Parent, + Set_ListN_With_Parent): Adding assertion. + +2017-01-20 Ed Schonberg + + * sem_prag.adb (Process_Convention): Diagnose properly a pragma + import that applies to several homograph subprograms. when one + of them is declared by a subprogram body. + +2017-01-20 Justin Squirek + + * exp_ch6.adb (Expand_Call): Remove optimization + that nulls out calls to null procedures. + +2017-01-20 Yannick Moy + + * inline.adb (Expand_Inlined_Call): Keep more + precise type of actual for inlining whenever possible. In + particular, do not switch to the formal type in GNATprove mode in + some case where the GNAT backend might require it for visibility. + +2017-01-20 Ed Schonberg + + * sem_ch3.adb (Check_Non_Overridable_Aspects): An inherited + aspect Implicit_Dereference can be inherited by a full view if + the partial view has no discriminants, because there is no way + to apply the aspect to the partial view. + (Build_Derived_Record_Type): If derived type renames discriminants + of the parent, the new discriminant inherits the aspect from + the old one. + * sem_ch4.adb (Analyze_Call): Handle properly a parameterless + call through an access discriminant designating a subprogram. + * sem_ch5.adb (Analyze_Assignment): (Analyze_Call): Handle + properly a parameterless call through an access discriminant on + the left-hand side of an assignment. + * sem_res.adb (resolve): If an interpreation involves a + discriminant with an implicit dereference and the expression is an + entity, resolution takes place later in the appropriate routine. + * sem_ch13.adb (Analyze_Aspect_Implicit_Dereference): Recognize + access discriminants that designate a subprogram type. + +2017-01-20 Pascal Obry + + * a-locale.adb, a-locale.ads: Update Ada.Locales for RM 2012 COR:1:2016 + +2017-01-20 Yannick Moy + + * sem_ch10.adb (Check_No_Elab_Code_All): Do not issue an error + on implicitly with'ed units in GNATprove mode. + * sinfo.ads (Implicit_With): Document use of flag for implicitly + with'ed units in GNATprove mode. + +2017-01-20 Ed Schonberg + + * sem_cat.adb (Validate_Static_Object_Name): In a preelaborated + unit Do not report an error on a non-static entity that appears + in the context of a spec expression, such as an aspect expression. + +2017-01-20 Hristian Kirtchev + + * einfo.adb: Flag298 now denotes Is_Underlying_Full_View. + (Is_Underlying_Full_View): New routine. + (Set_Is_Underlying_Full_View): New routine. + (Write_Entity_Flags): Add an entry for Is_Underlying_Full_View. + * einfo.ads Add new attribute Is_Underlying_Full_View. + (Is_Underlying_Full_View): New routine along with pragma Inline. + (Set_Is_Underlying_Full_View): New routine along with pragma Inline. + * exp_util.adb (Build_DIC_Procedure_Body): Do not consider + class-wide types and underlying full views. The first subtype + is used as the working type for all Itypes, not just array base types. + (Build_DIC_Procedure_Declaration): Do not consider + class-wide types and underlying full views. The first subtype + is used as the working type for all Itypes, not just array + base types. + * freeze.adb (Freeze_Entity): Inherit the freeze node of a full + view or an underlying full view without clobbering the attributes + of a previous freeze node. + (Inherit_Freeze_Node): New routine. + * sem_ch3.adb (Build_Derived_Private_Type): Mark an underlying + full view as such. + (Build_Underlying_Full_View): Mark an underlying full view as such. + * sem_ch7.adb (Install_Private_Declarations): Mark an underlying + full view as such. + +2017-01-20 Yannick Moy + + * sinfo.ads: Document lack of Do_Division_Check flag + on float exponentiation. + +2017-01-19 Javier Miranda + + * ghost.adb (Propagate_Ignored_Ghost_Code): Protect access to the + identifier attribute of a block-statement node. Required to avoid + assertion failure when building the new containers library. + +2017-01-19 Bob Duff + + * exp_ch3.adb: Update comment. + +2017-01-19 Vincent Celier + + * gprep.adb (Gnatprep): Parse the definition file without + "replace in comments" even when switch -C is used. + +2017-01-19 Justin Squirek + + * exp_ch9.adb (Is_Pure_Barrier): Create function + Is_Count_Attribute to identify an expansion of the 'Count + attribute. + +2017-01-19 Ed Schonberg + + * sem_ch5.adb (Analyze_Loop_Statement): In GNATprove mode the + statements within an element iterator loop are only analyzed + agter the loop is rewritten. Within a generic the analysis must + be performed in any case to complete name capture. + +2017-01-19 Bob Duff + + * sem_prag.adb (Analyze_Pragma): Check for ignored pragmas first, + before checking for unrecognized pragmas. + Initialize Pname on its declarations; that's always good style. + +2017-01-19 Claire Dross + + * exp_ch7.adb (Build_Invariant_Procedure_Body): Semi-insert the + body into the tree for GNATprove by setting its Parent field. The + components invariants of composite types are not checked by + the composite type's invariant procedure in GNATprove mode. + (Build_Invariant_Procedure_Declaration): Semi-insert the + declaration into the tree for GNATprove by setting its Parent + field. + * freeze.adb (Freeze_Arry_Type):In GNATprove mode, do not add + the component invariants to the array type invariant procedure + so that the procedure can be used to check the array type + invariants if any. + (Freeze_Record_Type): In GNATprove mode, do + not add the component invariants to the record type invariant + procedure so that the procedure can be used to check the record + type invariants if any. + +2017-01-19 Hristian Kirtchev + + * lib-xref-spark_specific.adb: Minor reformatting. + * exp_ch7.adb (Add_Parent_Invariants): Do not process array types. + +2017-01-19 Javier Miranda + + * exp_aggr.adb (Pass_Aggregate_To_Back_End): Renamed as + Build_Back_End_Aggregate. + (Generate_Aggregate_For_Derived_Type): Code cleanup. + (Prepend_Stored_Values): Code cleanup. + +2017-01-19 Ed Schonberg + + * sem_ch6.adb (Analyze_Expression_Function): Check for an + incomplete return type after attempting to freeze it, so that + other freeze actiona are generated in the proper order. + +2017-01-19 Ed Schonberg + + * sem_aggr.adb (Resolve_Aggregate): If the type is a string + type, ie. a type whose component is a character type, and the + aggregate is positional, do not convert into a string literal + if the index type is not an integer type, because the original + type may be required in an enclosing operation. + +2017-01-19 Bob Duff + + * binde.adb, debug.adb: Enable new elaboration order algorithm + by default. -dp switch reverts to the old algorithm. + +2017-01-19 Hristian Kirtchev + + * sem_ch3.adb Add with and use clauses for Exp_Ch7. + (Analyze_Declarations): Create the DIC and Invariant + procedure bodies s after all freezing has taken place. + (Build_Assertion_Bodies): New routine. + * sem_ch7.adb Remove the with and use clauses for Exp_Ch7 + and Exp_Util. + (Analyze_Package_Specification): Remove the + generation of the DIC and Invariant procedure bodies. This is + now done by Analyze_Declarations. + * sem_disp.adb (Check_Dispatching_Operation): DIC and Invariant + procedures are never treated as primitives. + +2017-01-19 Yannick Moy + + * frontend.adb: Analyze inlined bodies and check elaboration + rules in GNATprove mode too. + * sem_elab.adb (Delay_Element): Add Boolean component to save + indication that call is in SPARK code. (Check_Elab_Calls): + Check elaboration rules in GNATprove mode, and correctly set + the current value of SPARK_Mode. + * lib-xref-spark_specific.adb + (Add_SPARK_Xrefs): Simplify iteration over dereferences. + +2017-01-19 Ed Schonberg + + * exp_ch4.adb (Expand_Concatenate): Do no enable overflow + checks on the expression for the high bound of concatenation + when checks are disabled, to suppress warnings about potential + constraint errors in restricted runtimes. + +2017-01-19 Hristian Kirtchev + + * exp_ch3.adb (Expand_Freeze_Enumeration_Type): Mark the + representation-to-position function as inlined. + * sem_cat.adb (Set_Categorization_From_Scope): Do not modify + the purity of an internally generated entity if it has been + explicitly marked as pure for optimization purposes. + * exp_aggr.adb: Minor reformatting. + +2017-01-19 Javier Miranda + + * exp_ch6.adb (Expand_Call): Remove side effects on + actuals that are allocators with qualified expression since the + initialization of the object is performed by means of individual + statements (and hence it must be done before the call). + +2017-01-19 Ed Schonberg + + * sem_ch3.adb (Analyze_Declarations): Minor reformatting. + (Build_Derived_Enumeration_Type): If the derived type inherits a + dynamic predicate from its parent, the bounds of the type must + freeze because an explicit constraint is constructed for the + type and the corresponding range is elaborated now. + +2017-01-19 Arnaud Charlet + + * sem_attr.ads: minor fix of inconsistent casing in comment + * lib-writ.ads: minor align comments in columns + * sem_ch3.adb: Minor reformatting. + * spark_xrefs.ads: minor fix typo in SPARK-related comment + * table.ads: minor style fix in comment + * lib-xref-spark_specific.adb + (Add_SPARK_Xrefs): simplify processing of SPARK cross-references. + * sem_ch12.adb: minor whitespace fix + * freeze.adb: Add comment. + * sem_util.adb (Unique_Name): for instances of + generic subprograms ignore the name of the wrapper package. + +2017-01-19 Javier Miranda + + * exp_aggr.adb (Resolve_Record_Aggregate): + Factorize code needed for aggregates of limited and unlimited + types in a new routine. + (Pass_Aggregate_To_Back_End): New subprogram. + +2017-01-19 Yannick Moy + + * sinfo.adb (Pragma_Name): Only access up to Last_Pair of Pragma_Map. + +2017-01-19 Ed Schonberg + + * sem_ch4.ads, sem_ch4.adb (Try_Object_Operation): Make subprogram + public, for use elsewhere. + * sem_ch6.adb (Analyze_Procedure_Call): In SPARK_Mode and within + an Inlined_body, recognize a call that uses object notation + and has not been rewritten as a regular call because regular + expansion has not taken place. + +2017-01-19 Bob Duff + + * checks.adb (Apply_Type_Conversion_Checks): Disable small optimization + in case of generic formal discrete types, because it causes crashes in + the compiler when built with assertions on. + +2017-01-19 Hristian Kirtchev + + * lib-xref-spark_specific.adb, sem_util.adb, sem_util.ads, + sem_ch4.adb, sem_ch8.adb, lib-xref.ads: Minor reformatting. + +2017-01-19 Bob Duff + + * bcheck.adb (Check_Consistent_Dynamic_Elaboration_Checking): + Increment Warnings_Detected. It was decrementing, which is + wrong since we just issued a warning message. + * binderr.ads (Errors_Detected, Warnings_Detected): Declare + these variables to be of subtype Nat instead of Int, because + they should never be negative. + +2017-01-19 Javier Miranda + + * contracts.adb (Build_Postconditions_Procedure): Replace + Generate_C_Code by Modify_Tree_For_C. + * exp_aggr.adb (Build_Record_Aggr_Code, Expand_Array_Aggregate): + Replace Generate_C_Code by Modify_Tree_For_C. + * exp_attr.adb (Float_Valid, Is_GCC_Target): Replace Generate_C_Code by + Modify_Tree_For_C. + * exp_ch11.adb (Expand_N_Exception_Declaration): Replace + Generate_C_Code by Modify_Tree_For_C. + * exp_ch4.adb (Expand_Allocator_Expression): Replace + Generate_C_Code by Modify_Tree_For_C. + * exp_dbug.adb (Qualify_Entity_Name): Replace Generate_C_Code + by Modify_Tree_For_C. + * exp_util.adb (Remove_Side_Effects, Side_Effect_Free): Replace + Generate_C_Code by Modify_Tree_For_C. + * sem_res.adb (Resolve_Type_Conversion): Replace Generate_C_Code + by Modify_Tree_For_C. + * sinfo.ads (Modify_Tree_For_C): Adding documentation. + +2017-01-19 Javier Miranda + + * sem_util.ads, sem_util.adb (Expression_Of_Expression_Function): New + subprogram. + (Is_Inlinable_Expression_Function): New subprogram. + * exp_ch6.ads, exp_ch6.adb (Expression_Of_Expression_Function): Moved + to Sem_Util. + (Is_Inlinable_Expression_Function): Moved to Sem_Util. + +2017-01-19 Ed Schonberg + + * sem_ch4.adb (Diagnose_Call): Improve error message when a + selected component has a prefix that might be interpreted + as a parameterless function call, but none of the candidate + interpretations is parameterless, and there is a hidden homonym + of the prefix that is a package. + * sem_ch8.adb (Find_Selected_Component): If the prefix might be + interpreted as a parameterless function call and its analysis + fails, do not call Analyze_Selected_Component. + +2017-01-19 Steve Baird + + * sem_util.ads: Add new Use_Full_View Boolean parameter to + Get_Index_Bounds. + * sem_util.adb (Get_Index_Bounds): replace calls to Scalar_Range with + calls to a newly-defined Scalar_Range_Of_Right_View function. + +2017-01-19 Arnaud Charlet + + * gnat1drv.adb: minor fix of unbalanced parens in comment + * lib-xref.ads (Traverse_Compilation_Unit): declaration moved + to visible part of the package to allow re-use in GNATprove. + * lib-xref-spark_specific.adb (Traverse_Stub): routine refactored + from repeated code of Traverse_Compilation_Unit. + (Traverse_Declaration_Or_Statement): fixed detection of + generic subprograms and packages; also, iteration over case + statement alternatives rewritten to avoid testing if the first + alternative is present (since it must be present due to Ada + syntax restrictions). + +2017-01-19 Hristian Kirtchev + + * exp_ch6.adb (Expand_N_Subprogram_Body): Mark the spec as + returning by reference not just for subprogram body stubs, + but for all subprogram cases. + * sem_util.adb: Code reformatting. + (Requires_Transient_Scope): Update the call to Results_Differ. + (Results_Differ): Update the parameter profile and the associated + comment on usage. + +2017-01-19 Ed Schonberg + + * sem_dim.adb (Analyze_Dimension): Analyze object declaration and + identifier nodes that do not come from source, to handle properly + dimensionality check within an inlined body which inclddes both + original operands and rewritten operands. This removes spurious + dimensionality errors in the presence of front-end inlining, + as well as in SPARK mode. + +2017-01-16 Jakub Jelinek + + PR driver/49726 + * gcc-interface/lang.opt (gant, gnatO, gnat): Add Driver flag. + +2017-01-13 Rainer Orth + + * gcc-interface/Makefile.in (SPARC/Solaris): Fix typo. + +2017-01-13 Arnaud Charlet + + * doc/gnat_ugn/getting_started_with_gnat.rst, + doc/gnat_ugn/inline_assembler.rst, + doc/gnat_ugn/building_executable_programs_with_gnat.rst, + doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, + doc/gnat_ugn/about_this_guide.rst, + doc/gnat_ugn/platform_specific_information.rst, + doc/gnat_ugn/example_of_binder_output.rst, + doc/gnat_ugn/gnat_and_program_execution.rst, + doc/gnat_ugn/gnat_utility_programs.rst, + doc/gnat_ugn/the_gnat_compilation_model.rst, + doc/gnat_rm/implementation_defined_attributes.rst, + doc/gnat_rm/compatibility_and_porting_guide.rst, + doc/gnat_rm/standard_library_routines.rst, + doc/gnat_rm/standard_and_implementation_defined_restrictions.rst, + doc/gnat_rm/implementation_defined_pragmas.rst, + doc/gnat_rm/the_gnat_library.rst, + doc/gnat_rm/obsolescent_features.rst, + doc/gnat_rm/about_this_guide.rst, + doc/gnat_rm/the_implementation_of_standard_i_o.rst, + doc/gnat_rm/implementation_of_ada_2012_features.rst, + doc/gnat_rm/interfacing_to_other_languages.rst, + doc/gnat_rm/implementation_defined_aspects.rst, + doc/gnat_rm.rst: Update documentation. + * gnat_rm.texi, gnat_ugn.texi: Regenerated. + +2017-01-13 Ed Schonberg + + * einfo.ads: minor grammar fixes in comment of Normalized_Position_Max. + * scil_ll.adb: Minor style fix in comment. + * sem_ch8.adb (Analyze_Expanded_Name): Perform dimension analysis + even if entity is already set, because the node may be renalyzed + after inlining transformations. + +2017-01-13 Javier Miranda + + * sem_res.adb (Resolve_Call): Do not establish a transient scope + for a call to inlinable expression function (since the call will + be replaced by its returned object). + * exp_ch6.ads (Is_Inlinable_Expression_Function): New subprogram. + * exp_ch6.adb (Expression_Of_Expression_Function): New subprogram. + (Expand_Call): For inlinable expression function call replace the + call by its returned object. + (Is_Inlinable_Expression_Function): New subprogram. + +2017-01-13 Gary Dismukes + + * checks.adb: Minor typo fix and reformatting. + +2017-01-13 Javier Miranda + + * contracts.adb (Contract_Only_Subprograms): Remove formal. + (Copy_Original_Specification): Removed. + (Skip_Contract_Only_Subprogram): Move here checks previously + located in the caller of this routine (to leave the code more clean). + (Build_Contract_Only_Subprogram): Code cleanup. + * scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): Removed. + (Get_Contract_Only_Missing_Body_Name): Removed. + +2017-01-13 Javier Miranda + + * sem_ch6.adb (Cloned_Expression): New subprogram. + (Freeze_Expr_Types): Complete previous patch since the expression + of an expression-function may have iterators and loops with + defining identifiers which, as part of the preanalysis of the + expression, may be left decorated with itypes that will not be + available in the tree passed to the backend. + +2017-01-13 Ed Schonberg + + * checks.adb (Apply_Type_Conversion_Checks): Optimize a type + conversion to Integer of an expression that is an attribute + reference 'Pos on an enumeration type. + +2017-01-13 Bob Duff + + * atree.ads: Minor comment fix. + +2017-01-13 Justin Squirek + + * sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function + calls in accessibility check on return statement. + +2017-01-13 Hristian Kirtchev + + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): + Ensure that the input body is a subprogram body before trying to + determine whether it denoted an expression function. Note that + subprogram body stubs cannot denote expression functions. + +2017-01-13 Gary Dismukes + + * bindgen.adb, sem_ch6.adb, binde.adb, exp_ch3.adb: Minor reformatting + and typo fixes. + +2017-01-13 Javier Miranda + + * einfo.ads (Component_Bit_Offset): Fix documentation. + * sem_ch13.adb (Check_Record_Representation_Clause): Skip check + on record holes for components with unknown compile-time offsets. + +2017-01-13 Bob Duff + + * ali.ads, ali.adb (Static_Elaboration_Model_Used): Remove unused flag. + * g-locfil.ads: Minor comment fix. + +2017-01-13 Bob Duff + + * binde.adb (Elab_New): New elaboration order algorithm + that is expected to cause fewer ABE issues. This is a work in + progress. The new algorithm is currently disabled, and can be + enable by the -dp switch, or by modifying the Do_Old and Do_New + etc. flags and rebuilding. Experimental code is included to + compare the results of the old and new algorithms. + * binde.ads: Use GNAT.Dynamic_Tables instead of Table, so we + can have multiple of these tables, so the old and new algorithms + can coexist. + * bindgen.ads (Gen_Output_File): Pass Elab_Order as an 'in' + parameter of type array. This avoids the global variable, and + allows bounds checking (which is normally defeated by the tables + packages). It also ensures that the Elab_Order is read-only + to Bindgen. + * bindgen.adb: Pass Elab_Order as an 'in' parameter to all + subprograms that need it, as above. + * debug.adb: Document new -dp switch. Modify doc of old -do + switch. + * gnatbind.adb (Gnatbind): Make use of new interfaces to Binde + and Bindgen. Move writing of closure (-R and -Ra switches) + to Binde; that's more convenient. + +2017-01-13 Ed Schonberg + + * sem_ch6.adb (Analyze_Expression_Function): If the expression + function is a completion, all entities referenced in the + expression are frozen. As a consequence, a reference to an + uncompleted private type from an enclosing scope is illegal. + +2017-01-13 Javier Miranda + + * sem_ch6.adb (Freeze_Expr_Types): New subprogram. + (Analyze_Subprogram_Body_Helper): At the occurrence of an + expression function declaration that is a completion, its + expression causes freezing (AI12-0103). + +2017-01-13 Vadim Godunko + + * a-coinho-shared.adb: Fix memory leaks in Constant_Reference and + Reference functions of Ada.Containers.Indefinite_Holders. + +2017-01-13 Bob Duff + + * s-os_lib.ads: Minor comment fixes. + +2017-01-13 Hristian Kirtchev + + * exp_ch3.adb (Default_Initialize_Object): Do not default + initialize an object when it is of a task type and restriction + No_Tasking is in effect because the initialization is obsolete. + * exp_ch9.adb (Build_Master_Entity): Do not generate a master when + restriction No_Tasking is in effect. + (Build_Master_Renaming): Do not rename a master when restriction + No_Tasking is in effect. + +2017-01-13 Ed Schonberg + + * sem_aggr.adb (Resolve_Array_Aggregate): The code that verifies + the legality of An others clause applies as well to a choice in + an Iterated_component_ association. + (Resolve_Iterated_Component_Association): An others choice + is legal. + * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): An + Iterated_Component_Association is not static. + +2017-01-13 Hristian Kirtchev + + * exp_ch3.adb (Freeze_Type): Mark the Ghost mode as set in case + control is passed to the expresion handler before the new mode + is set. + * sem_ch12.adb (Analyze_Package_Instantiation, + Analyze_Subprogram_Instantiation): Mark the Ghost mode as set + in case control is passed to the expresion handler before the + new mode is set. + +2017-01-13 Hristian Kirtchev + + * sem_aggr.adb, sem_ch3.adb, inline.adb, sem_util.adb, exp_ch4.adb, + exp_aggr.adb: Minor reformatting. + +2017-01-13 Gary Dismukes + + * inline.adb: Minor reformatting and typo fix. + +2017-01-13 Ed Schonberg + + * sem_util.ads, sem_util.adb (Choice_List): Move function here + from sem_aggr.adb, for use elsewhere. + * sem_ch3.adb (Analyze_Object_Declaration): Use Choice_List. + * sem_aggr.adb (Resolve_Array_Aggregate): Remove + Iterated_Component_Present. + * exp_aggr.adb: Use Choice_List throughout, to handle + Iterated_Component_Associations. + (Gen_Loop): Generate proper loop for an + Iterated_Component_Association: loop variable has the identifier + of the original association. Generate a loop even for a single + component choice, in order to make loop parameter visible in + expression. + (Flatten): An Iterated_Component_Association is not static. + +2017-01-13 Yannick Moy + + * exp_ch4.adb (Expand_N_Op_Expon): Ensure that the value of + float exponentiation for statically known small negative values + is the reciprocal of the exponentiation for the opposite value + of the exponent. + * s-exnllf.adb (Exn_Float, Exn_Long_Float, Exn_Long_Long_Float): + Ensure that the value of float exponentiation for negative values + is the reciprocal of the exponentiation for the opposite value + of the exponent. + * inline.adb (Expand_Inlined_Call): Fix the count + for the number of generated gotos. + +2017-01-13 Yannick Moy + + * inline.adb: Code cleanup. + * sem_util.adb (Is_OK_Volatile_Context): Add + expression in delay statement as OK for volatile context. + +2017-01-13 Ed Schonberg + + * sem_aggr.adb (Resolve_Array_Aggregate): In normal compilation + mode a choice that is a subtype with a static predicate is + replaced by the values it covers. This transformation must not + be performed in ASIS mode, to preserve the source for analysis. + +2017-01-13 Justin Squirek + + * nlists.ads: Correct minor typo. + +2017-01-13 Gary Dismukes + + * sem_ch13.adb: Minor reformatting and typo fix. + +2017-01-13 Ed Schonberg + + * par-ch4.adb (P_Aggregate_Or_Parent_Expr): An + Iterated_Component_Association is a named association in an + array aggregate. + * sem_aggr.adb (Resolve_Iterated_Component_Association): New + procedure, subsidiary of Resolve_Array_Aggregate, to analyze + and resolve the discrete choices and the expression of the + new construct. + * sinfo.adb, sinfo.ads: In analogy with N_Component_Association, + Loop_Actions and Box_Present are attributes of + N_Iterated_Component_Association nodes. Box_Present is always + False in this case. + * sprint.adb (Sprint_Node): An Iterated_Component_Association + has a Discrete_Choices list, as specified in the RM. A + Component_Association for aggregate uses instead a Choices list. + We have to live with this small inconsistency because the new + construct also has a defining identifier, and there is no way + to merge the two node structures. + +2017-01-13 Yannick Moy + + * inline.adb (Remove_Aspects_And_Pragmas): Add Unused to the + list of pragmas to remove. Remove pragmas from the list of + statements in the body to inline. + * namet.adb, namet.ads (Nam_In): New version with 12 parameters. + +2017-01-13 Ed Schonberg + + * sem_ch3.adb (Resolve_Aspects): New procedure, subsidiary of + Analyze_Declarations, to analyze and resolve the expressions of + aspect specifications in the current declarative list, so that + the expressions have proper entity and type info. This is needed + for ASIS when there is no subsequent expansion to generate this + semantic information. + * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Use Etype of + original expression, to suppress cascaded errors when expression + has been constant-folded. + (Resolve_Aspect_Expressions, Resolve_Name): Preserve entities in + ASIS mode, because there is no subsequent expansion to decorate + the tree. + +2017-01-13 Yannick Moy + + * inline.adb, inline.ads (Call_Can_Be_Inlined_In_GNATprove_Mode): + New function to detect when a call may be inlined or not in + GNATprove mode. + (Expand_Inlined_Call): Ensure that a temporary + is always created in the cases where a type conversion may be + needed on an input parameter in GNATprove mode, so that GNATprove + sees the check to perform. + * sem_res.adb (Resolve_Call): In GNATprove mode, skip inlining + when not applicable due to actual requiring type conversion + with possible check but no temporary value can be copied for + GNATprove to see the check. + +2017-01-13 Hristian Kirtchev + + * sem_aggr.adb, par_sco.adb, s-osprim-mingw.adb, exp_ch5.adb, + exp_prag.adb, sem_ch3.adb, xr_tabls.adb, lib-xref-spark_specific.adb, + layout.adb, sem_dist.adb, exp_spark.adb, exp_ch7.adb, gnatcmd.adb, + exp_util.adb, prj-proc.adb, sem_aux.adb, comperr.adb, g-memdum.adb, + exp_attr.adb, s-intman-solaris.adb, exp_ch9.adb, make.adb, live.adb, + g-sercom-linux.adb, sem_dim.adb, mlib-prj.adb, s-intman-posix.adb, + sem_ch9.adb, sem_ch10.adb, prep.adb, einfo.adb, scng.adb, checks.adb, + prj-strt.adb, sem_prag.adb, eval_fat.adb, sem_ch12.adb, sem.adb, + a-numaux-x86.adb, a-stwifi.adb, i-cobol.adb, prj.adb, + get_spark_xrefs.adb, s-tasini.adb, rtsfind.adb, freeze.adb, + g-arrspl.adb, par-ch4.adb, sem_util.adb, sem_res.adb, expander.adb, + sem_attr.adb, exp_dbug.adb, prj-pp.adb, a-stzfix.adb, s-interr.adb, + s-wchcnv.adb, switch-m.adb, gnat1drv.adb, sinput-l.adb, stylesw.adb, + contracts.adb, s-intman-android.adb, g-expect.adb, exp_ch4.adb, + g-comlin.adb, errout.adb, sinput.adb, s-exctra.adb, repinfo.adb, + g-spipat.adb, g-debpoo.adb, exp_ch6.adb, sem_ch4.adb, exp_ch13.adb, + a-wtedit.adb, validsw.adb, pprint.adb, widechar.adb, makeutl.adb, + ali.adb, set_targ.adb, sem_mech.adb, sem_ch6.adb, gnatdll.adb, + get_scos.adb, g-pehage.adb, s-tratas-default.adb, gnatbind.adb, + prj-dect.adb, g-socthi-mingw.adb, par-prag.adb, prj-nmsc.adb, + exp_disp.adb, par-ch12.adb, binde.adb, sem_ch8.adb, + s-tfsetr-default.adb, s-regexp.adb, gprep.adb, s-tpobop.adb, + a-teioed.adb, sem_warn.adb, sem_eval.adb, g-awk.adb, s-io.adb, + a-ztedit.adb, xoscons.adb, exp_intr.adb, sem_cat.adb, sprint.adb, + g-socket.adb, exp_dist.adb, sem_ch13.adb, s-tfsetr-vxworks.adb, + par-ch3.adb, treepr.adb, g-forstr.adb, g-catiio.adb, par-ch5.adb, + uname.adb, osint.adb, exp_ch3.adb, prj-env.adb, a-strfix.adb, + a-stzsup.adb, prj-tree.adb, s-fileio.adb: Update all eligible case + statements to reflect the new style for case alternatives. Various + code clean up and reformatting. + +2017-01-13 Gary Dismukes + + * exp_util.adb: Minor reformatting. + +2017-01-13 Yannick Moy + + * exp_spark.adb: Code cleanup. + * sem_ch9.adb (Analyze_Delay_Until): Resolve + expression so that calls are identified as such inside delay + until. + +2017-01-13 Ed Schonberg + + * exp_util.adb (Insert_Actions): Handle Iterated_Component_Association. + * par-ch3.adb (P_Discrete_Choice_List): An + Iterated_Component_Association is an array aggregate component. + * par-ch4.adb (P_Iterated_Component_Association): New procedure. + (Is_Quantified_Expression): New function that performs a lookahead + to distinguish quantified expressions from iterated component + associations. + (P_Aggregate_Or_Paren_Expr): Recognize iterated component + associations. + (P_Unparen_Cond_Case_Quant_Expression, P_Primary): Ditto. + * sem.adb (Analyze): Handle Iterated_Component_Association. + * sem_aggr.adb (Resolve_Array_Aggregate): Dummy handling of iterated + component associations. + * sinfo.ads, sinfo.adb: Entries for for + N_Iterated_Component_Association and its fields. + * sprint.adb (Sprint_Node_Actual): Handle + N_Iterated_Component_Association. + +2017-01-13 Justin Squirek + + * sem_ch12.adb (Analyze_Package_Instantiation): Move disabiling + of the style check until after preanalysis of acutals. + +2017-01-13 Yannick Moy + + * sem_ch13.adb: Minor reformatting. + * par-ch11.adb: minor style fix in whitespace + * gnatbind.adb (Gnatbind): Scope of Std_Lib_File + reduced to Add_Artificial_ALI_File; style fix in declaration of + Text; grammar fix in comment. + * osint-c.adb (Read_Library_Info): strip trailing NUL from result. + * freeze.adb: Cleanup to pass pragma instead of + expression to call. + * exp_spark.adb (Expand_SPARK_Attribute_Reference): New procedure to + replace System'To_Address by equivalent call. + +2017-01-13 Arnaud Charlet + + * bindusg.adb: Improve usage output for -f switch. + +2017-01-13 Hristian Kirtchev + + * frontend.adb, freeze.adb, sem_res.adb, sem_attr.adb, sem_ch8.adb: + Minor reformatting. + +2017-01-13 Ed Schonberg + + * sem_ch13.adb (Is_Predicate_Static): Following the intent of the RM, + treat comparisons on strings as legal in a Static_Predicate. + (Is_Predicate_Static, Is_Type_Ref): Predicate also returns true on + a function call that is the expansion of a string comparison.The + function call is built when compiling the corresponding predicate + function, but the expression has been found legal as a static + predicate during earlier analysis. + * sem_eval.adb (Real_Or_String_Static_Predicate_Matches): Handle + properly a function call that is the expansion of a string + comparison operation, in order to recover the Static_Predicate + expression and apply it to a static argument when needed. + +2017-01-13 Tristan Gingold + + * s-mmap.adb, s-mmap.ads (Open_Read_No_Exception): New function. + (Open_Read): Re-implement using Open_Read_No_Exception. + (Open_Write): Raise exception in case of error. + * s-mmosin-mingw.adb (Open_Common): Do not raise exception. + * s-mmosin-unix.adb (Open_Read, Open_Write): Do not + reaise exception. + * s-mmosin-mingw.ads, s-mmosin-unix.ads (Open_Read): Adjust comment. + +2017-01-13 Yannick Moy + + * checks.adb: Code cleanup. + +2017-01-13 Yannick Moy + + * freeze.adb (Check_Inherited_Conditions): Use analyzed pragma + expression instead of unanalyzed aspect expression for checking + the validity of inheriting an operation. Also copy the expression + being passing it to Build_Class_Wide_Expression, as this call + modifies its argument. + * sem_util.ads Fix comment to reference correct function name + New_Copy_Tree. + +2017-01-13 Javier Miranda + + * sem_res.adb (Resolve_Generalized_Indexing): Compiling in ASIS mode, + when we propagate information about the indexes back to the original + indexing mode and the prefix of the index is a function call, do not + remove any parameter from such call. + +2017-01-13 Gary Dismukes + + * exp_ch6.ads (Needs_BIP_Finalization_Master): Update comment. + * exp_ch6.adb (Needs_BIP_Finalization_Master): Return True for + a build-in-place function whose result type is tagged. + +2017-01-13 Yannick Moy + + * sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper): + Do not generate a wrapper when the only candidate is a class-wide + subprogram. + (Analyze_Subprogram_Renaming): Do not freeze the renaming or renamed + inside a generic context. + +2017-01-13 Hristian Kirtchev + + * exp_util.adb (Add_Inherited_Tagged_DIC): + Pass the object parameters of both the parent and the derived + type DIC procedure to the reference replacement circuitry. + (Find_DIC_Type): Modify the circuitry to present the partial + view of a private type in case the private type defines its own + DIC pragma. + (Replace_Object_And_Primitive_References): Add two + optional formal parameters. Update the comment on usage. Update + the replacement of references to object parameters. + +2017-01-13 Gary Dismukes + + * einfo.adb, sem_ch6.adb, atree.adb: Minor reformatting and typo fix. + +2017-01-13 Ed Schonberg + + * sem_res.adb (Resolve_Actuals): Apply Scalar_Range_Check to + an out parameter that is a type conversion, independently of th + range check that may apply to the expression of the conversion, + for use in GNATProve. + +2017-01-13 Yannick Moy + + * gnat1drv.adb (Gnat1drv): Move the implicit with for System in + GNATprove_Mode here to Frontend. + * frontend.adb (Frontend): Move the implicit with for System + in GNATprove_Mode here as it ismore correct this way; the old + place only worked by chance, since there were no overloaded names. + * rtsfind.ads (RE_Id, RE_Unit_Table): Add RE_Tasking_State. + * sem_attr.adb (Analyze_Attribute): In GNATprove_Mode, for the + four attributes identified in SRM 9(18), add an implicit with + to Ada.Task_Identification. + * sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper): + Deal specially with the wrapper introduced for AI05-0071 in GNATprove + mode. + * checks.adb (Apply_Discriminant_Check, + Apply_Selected_Length_Checks, Apply_Selected_Range_Checks): + In GNATprove mode, we do not apply the checks, but we still + analyze the expression to possibly issue errors on SPARK + code when a run-time error can be detected at compile time. + (Selected_Length_Checks, Selected_Range_Checks): Perform analysis + in GNATprove mode. + +2017-01-13 Hristian Kirtchev + + * expander.adb (Expand): Add a warning about using return + statements in Ghost management code. + * exp_ch3.adb (Freeze_Type): Add a warning about using return + statements in Ghost management code. + * exp_ch7.adb (Build_Invariant_Procedure_Body, + Build_Invariant_Procedure_Declaration): Add a warning about + using return statements in Ghost management code. + * exp_disp.adb (Make_DT): Add a warning about using return + statements in Ghost management code. + * exp_util.adb (Build_DIC_Procedure_Body, + Build_DIC_Procedure_Declaration, Make_Predicated_Call): Add a + warning about using return statements in Ghost management code. + * freeze.adb (Freeze_Entity): Add a warning about using return + statements in Ghost management code. + * sem.adb (Analyze, Do_Analyze): Add a warning about using return + statements in Ghost management code. + * sem_ch3.adb (Analyze_Object_Declaration, Process_Full_View): Add + a warning about using return statements in Ghost management code. + * sem_ch5.adb (Analyze_Assignment): Add a warning about using + return statements in Ghost management code. + * sem_ch6.adb (Analyze_Procedure_Call, + Analyze_Subprogram_Body_Helper): Add a warning about using return + statements in Ghost management code. + * sem_ch7.adb (Analyze_Package_Body_Helper): Add a warning about + using return statements in Ghost management code. + * sem_ch12.adb (Analyze_Package_Instantiation, + Analyze_Subprogram_Instantiation, Instantiate_Package_Body, + Instantiate_Subprogram_Body): Add a warning about using return + statements in Ghost management code. + * sem_ch13.adb (Build_Predicate_Functions, + Build_Predicate_Function_Declarations): Add a warning about + using return statements in Ghost management code. + * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part, + Analyze_Initial_Condition_In_Decl_Part, Analyze_Pragma, + Analyze_Pre_Post_Condition_In_Decl_Part): Add a warning about + using return statements in Ghost management code. + +2017-01-13 Tristan Gingold + + * s-mmosin-mingw.adb: Fix pragma import. + +2017-01-13 Arnaud Charlet + + * gnat1drv.adb (Adjust_Global_Switches): Ignore -gnateE in + codepeer mode. + +2017-01-13 Hristian Kirtchev + + * atree.adb (Allocate_Initialize_Node): A newly created node is + no longer marked as Ghost at this level. + (Mark_New_Ghost_Node): New routine. + (New_Copy): Mark the copy as Ghost. + (New_Entity): Mark the entity as Ghost. + (New_Node): Mark the node as Ghost. + * einfo.adb (Is_Checked_Ghost_Entity): This attribute can now + apply to unanalyzed entities. + (Is_Ignored_Ghost_Entity): This attribute can now apply to unanalyzed + entities. + (Set_Is_Checked_Ghost_Entity): This attribute now + applies to all entities as well as unanalyzed entities. + (Set_Is_Ignored_Ghost_Entity): This attribute now applies to + all entities as well as unanalyzed entities. + * expander.adb Add with and use clauses for Ghost. + (Expand): Install and revert the Ghost region associated with the node + being expanded. + * exp_ch3.adb (Expand_Freeze_Array_Type): Remove all Ghost-related code. + (Expand_Freeze_Class_Wide_Type): Remoe all Ghost-related code. + (Expand_Freeze_Enumeration_Type): Remove all Ghost-related code. + (Expand_Freeze_Record_Type): Remove all Ghost-related code. + (Freeze_Type): Install and revert the Ghost region associated + with the type being frozen. + * exp_ch5.adb Remove with and use clauses for Ghost. + (Expand_N_Assignment_Statement): Remove all Ghost-related code. + * exp_ch6.adb Remove with and use clauses for Ghost. + (Expand_N_Procedure_Call_Statement): Remove all Ghost-relatd code. + (Expand_N_Subprogram_Body): Remove all Ghost-related code. + * exp_ch7.adb (Build_Invariant_Procedure_Body): Install and revert the + Ghost region of the working type. + (Build_Invariant_Procedure_Declaration): Install and revert + the Ghost region of the working type. + (Expand_N_Package_Body): Remove all Ghost-related code. + * exp_ch8.adb Remove with and use clauses for Ghost. + (Expand_N_Exception_Renaming_Declaration): Remove all Ghost-related + code. + (Expand_N_Object_Renaming_Declaration): Remove all Ghost-related code. + (Expand_N_Package_Renaming_Declaration): Remove all Ghost-related code. + (Expand_N_Subprogram_Renaming_Declaration): Remove all Ghost-related + code. + * exp_ch13.adb Remove with and use clauses for Ghost. + (Expand_N_Freeze_Entity): Remove all Ghost-related code. + * exp_disp.adb (Make_DT): Install and revert the Ghost region of + the tagged type. Move the generation of various entities within + the Ghost region of the type. + * exp_prag.adb Remove with and use clauses for Ghost. + (Expand_Pragma_Check): Remove all Ghost-related code. + (Expand_Pragma_Contract_Cases): Remove all Ghost-related code. + (Expand_Pragma_Initial_Condition): Remove all Ghost-related code. + (Expand_Pragma_Loop_Variant): Remove all Ghost-related code. + * exp_util.adb (Build_DIC_Procedure_Body): Install + and revert the Ghost region of the working types. + (Build_DIC_Procedure_Declaration): Install and revert the + Ghost region of the working type. + (Make_Invariant_Call): Install and revert the Ghost region of the + associated type. + (Make_Predicate_Call): Reimplemented. Install and revert the + Ghost region of the associated type. + * freeze.adb (Freeze_Entity): Install and revert the Ghost region + of the entity being frozen. + (New_Freeze_Node): Removed. + * ghost.adb Remove with and use clauses for Opt. + (Check_Ghost_Completion): Update the parameter profile + and all references to formal parameters. + (Ghost_Entity): Update the comment on usage. + (Install_Ghost_Mode): New routines. + (Is_Ghost_Assignment): New routine. + (Is_Ghost_Declaration): New routine. + (Is_Ghost_Pragma): New routine. + (Is_Ghost_Procedure_Call): New routine. + (Is_Ghost_Renaming): Removed. + (Is_OK_Declaration): Reimplemented. + (Is_OK_Pragma): Reimplemented. + (Is_OK_Statement): Reimplemented. + (Is_Subject_To_Ghost): Update the comment on usage. + (Mark_And_Set_Ghost_Assignment): New routine. + (Mark_And_Set_Ghost_Body): New routine. + (Mark_And_Set_Ghost_Completion): New routine. + (Mark_And_Set_Ghost_Declaration): New routine. + (Mark_And_Set_Ghost_Instantiation): New routine. + (Mark_And_Set_Ghost_Procedure_Call): New routine. + (Mark_Full_View_As_Ghost): Removed. + (Mark_Ghost_Declaration_Or_Body): New routine. + (Mark_Ghost_Pragma): New routine. + (Mark_Ghost_Renaming): New routine. + (Mark_Pragma_As_Ghost): Removed. + (Mark_Renaming_As_Ghost): Removed. + (Propagate_Ignored_Ghost_Code): Update the comment on usage. + (Prune_Node): Freeze nodes no longer need special pruning, they + are processed by the general ignored Ghost code mechanism. + (Restore_Ghost_Mode): New routine. + (Set_Ghost_Mode): Reimplemented. + (Set_Ghost_Mode_From_Entity): Removed. + * ghost.ads Add with and use clauses for Ghost. + (Check_Ghost_Completion): Update the parameter profile + along with the comment on usage. + (Install_Ghost_Mode): New routine. + (Is_Ghost_Assignment): New routine. + (Is_Ghost_Declaration): New routine. + (Is_Ghost_Pragma): New routine. + (Is_Ghost_Procedure_Call): New routine. + (Mark_And_Set_Ghost_Assignment): New routine. + (Mark_And_Set_Ghost_Body): New routine. + (Mark_And_Set_Ghost_Completion): New routine. + (Mark_And_Set_Ghost_Declaration): New routine. + (Mark_And_Set_Ghost_Instantiation): New routine. + (Mark_And_Set_Ghost_Procedure_Call): New routine. + (Mark_Full_View_As_Ghost): Removed. + (Mark_Ghost_Pragma): New routine. + (Mark_Ghost_Renaming): New routine. + (Mark_Pragma_As_Ghost): Removed. + (Mark_Renaming_As_Ghost): Removed. + (Restore_Ghost_Mode): New routine. + (Set_Ghost_Mode): Redefined. + (Set_Ghost_Mode_From_Entity): Removed. + * sem.adb (Analyze): Install and revert the Ghost region of the + node being analyzed. + (Do_Analyze): Change the way a clean Ghost + region is installed and reverted. + * sem_ch3.adb (Analyze_Full_Type_Declaration): Remove + all Ghost-related code. + (Analyze_Incomplete_Type_Decl): Remove all Ghost-related code. + (Analyze_Number_Declaration): Remove all Ghost-related code. + (Analyze_Object_Declaration): Install and revert the Ghost region of + a deferred object declaration's completion. + (Array_Type_Declaration): Remove all Ghost-related code. + (Build_Derived_Type): Update the comment on + the propagation of Ghost attributes from a parent to a derived type. + (Derive_Subprogram): Remove all Ghost-related code. + (Make_Class_Wide_Type): Remove all Ghost-related code. + (Make_Implicit_Base): Remove all Ghost-related code. + (Process_Full_View): Install and revert the Ghost region of + the partial view. There is no longer need to check the Ghost + completion here. + * sem_ch5.adb (Analyze_Assignment): Install and revert the Ghost + region of the left hand side. + * sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Remove + all Ghost-related code. + (Analyze_Expression_Function): Remove all Ghost-related code. + (Analyze_Generic_Subprogram_Body): Remove all Ghost-related code. + (Analyze_Procedure_Call): Install and revert the Ghost region of + the procedure being called. + (Analyze_Subprogram_Body_Helper): Install and revert the Ghost + region of the spec or body. + (Analyze_Subprogram_Declaration): Remove all Ghost-related code. + (Build_Subprogram_Declaration): Remove all Ghost-related code. + (Find_Corresponding_Spec): Remove all Ghost-related code. + (Process_Formals): Remove all Ghost-related code. + * sem_ch7.adb (Analyze_Package_Body_Helper): Install and revert + the Ghost region of the spec. + (Analyze_Package_Declaration): Remove all Ghost-related code. + * sem_ch8.adb (Analyze_Exception_Renaming): Mark a renaming as + Ghost when it aliases a Ghost entity. + (Analyze_Generic_Renaming): Mark a renaming as Ghost when it aliases + a Ghost entity. + (Analyze_Object_Renaming): Mark a renaming as Ghost when + it aliases a Ghost entity. + (Analyze_Package_Renaming): Mark a renaming as Ghost when it aliases + a Ghost entity. + (Analyze_Subprogram_Renaming): Mark a renaming as Ghost when it + aliases a Ghost entity. + * sem_ch11.adb Remove with and use clauses for Ghost. + (Analyze_Exception_Declaration): Remove all Ghost-related code. + * sem_ch12.adb (Analyze_Generic_Package_Declaration): Remove all + Ghost-related code. + (Analyze_Generic_Subprogram_Declaration): Remove all Ghost-related + code. + (Analyze_Package_Instantiation): Install and revert the Ghost region + of the package instantiation. + (Analyze_Subprogram_Instantiation): Install + and revert the Ghost region of the subprogram instantiation. + (Instantiate_Package_Body): Code clean up. Install and revert the + Ghost region of the package body. + (Instantiate_Subprogram_Body): Code clean up. Install and revert the + Ghost region of the subprogram body. + * sem_ch13.adb (Build_Predicate_Functions): Install + and revert the Ghost region of the related type. + (Build_Predicate_Function_Declaration): Code clean up. Install + and rever the Ghost region of the related type. + * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): + Install and revert the Ghost region of the pragma. + (Analyze_Initial_Condition_In_Decl_Part): Install and revert the + Ghost region of the pragma. + (Analyze_Pragma): Install and revert the Ghost region of various + pragmas. Mark a pragma as Ghost when it is related to a Ghost entity + or encloses a Ghost entity. + (Analyze_Pre_Post_Condition): Install and revert the Ghost + region of the pragma. + (Analyze_Pre_Post_Condition_In_Decl_Part): Install and revert the + Ghost region of the pragma. + * sem_res.adb (Resolve): Remove all Ghost-related code. + * sem_util.adb (Is_Declaration): Reimplemented. + (Is_Declaration_Other_Than_Renaming): New routine. + * sem_util.ads (Is_Declaration_Other_Than_Renaming): New routine. + * sinfo.adb (Is_Checked_Ghost_Pragma): New routine. + (Is_Ghost_Pragma): Removed. + (Is_Ignored_Ghost_Pragma): New routine. + (Set_Is_Checked_Ghost_Pragma): New routine. + (Set_Is_Ghost_Pragma): Removed. + (Set_Is_Ignored_Ghost_Pragma): New routine. + * sinfo.ads: Update the documentation on Ghost mode and + Ghost regions. New attributes Is_Checked_Ghost_Pragma + and Is_Ignored_Ghost_Pragma along with usages in nodes. + Remove attribute Is_Ghost_Pragma along with usages in nodes. + (Is_Checked_Ghost_Pragma): New routine along with pragma Inline. + (Is_Ghost_Pragma): Removed along with pragma Inline. + (Is_Ignored_Ghost_Pragma): New routine along with pragma Inline. + (Set_Is_Checked_Ghost_Pragma): New routine along with pragma Inline. + (Set_Is_Ghost_Pragma): Removed along with pragma Inline. + (Set_Is_Ignored_Ghost_Pragma): New routine along with pragma Inline. + +2017-01-12 Tristan Gingold + + * s-mmap.ads, s-mmap.adb, s-mmosin-unix.ads, s-mmosin-unix.adb, + s-mmauni-long.ads, s-mmosin-mingw.ads, s-mmosin-mingw.adb: New files. + +2017-01-12 Yannick Moy + + * errout.adb, errout.ads (Initialize): Factor common treatment + in Reset_Warnings. + (Reset_Warnings): New procedure to reset counts related to warnings. + (Record_Compilation_Errors): New variable to store the presence of an + error, used in gnat2why to allow changing the Warning_Mode. + (Compilation_Errors): Use new variable Record_Compilation_Errors to + store the presence of an error. + +2017-01-12 Javier Miranda + + * sem_ch13.adb (Analyze_Aspect_Specifications): + For Interrupt_Handler and Attach_ Handler aspects, decorate the + internally built reference to the protected procedure as coming + from sources and force its analysis. + +2017-01-12 Ed Schonberg + + * sem_ch3.adb (Build_Derived_Type): For a scalar derived type, + inherit predicates if any from the first_subtype of the parent, + not from the anonymous parent type. + * sem_eval.adb (Is_Static_Subtype): A type that inherits a dynamic + predicate is not a static subtype. + +2017-01-12 Gary Dismukes + + * freeze.adb (Check_Suspicious_Convention): New procedure + performing a warning check on discriminated record types with + convention C or C++. Factored out of procedure Freeze_Record_Type, + and changed to only apply to base types (to avoid spurious + warnings on subtypes). Minor improvement of warning messages + to refer to discriminated rather than variant record types. + (Freeze_Record_Type): Remove code for performing a suspicious + convention check. + (Freeze_Entity): Only call Freeze_Record_Type + on types that aren't declared within any enclosing generic units + (rather than just excluding the type when the innermost scope + is generic). Call Check_Suspicious_Convention whether or not + the type is declared within a generic unit. + * sem_ch8.adb (In_Generic_Scope): Move this function to Sem_Util. + * sem_util.ads, sem_util.adb (In_Generic_Scope): New function (moved + from Sem_Ch8). + +2017-01-12 Tristan Gingold + + * sysdep.c, adaint.c, rtinit.c, ming32.h: + (__gnat_current_codepage): Renamed from CurrentCodePage + (__gnat_current_ccs_encoding): Renamed from CurrentCCSEncoding + +2017-01-12 Ed Schonberg + + * sem_ch6.adb (Fully_Conformant_Expressions): Handle properly + quantified expressions, following AI12-050: the loop parameters + of two quantified expressions are conformant if they have the + same identifier. + +2017-01-12 Arnaud Charlet + + * gcc-interface/Makefile.in: Clean up VxWorks targets. + +2017-01-12 Ed Schonberg + + * sem_attr.adb (Analyze_Attribute_Reference, case Loop_Entry): + Hnadle properly the attribute reference when it appears as part + of an expression in another loop aspect. + +2017-01-12 Ed Schonberg + + * exp_ch3.adb (Check_Predicated_Discriminant): New procedure, + subsidiary of Build_Initialization_Call, to complete generation + of predicate checks on discriminants whose (sub)types have + predicates, and to add checks on variants that do not have an + others clause. + * sem_util.adb (Gather_Components): A missing Others alternative is + not an error when the type of the discriminant is a static predicate + (and coverage has been checked when analyzing the case statement). A + runtime check is generated to verify that a given discriminant + satisfies the predicate (RM 3.8.1. (21.1/2)). + +2017-01-12 Yannick Moy + + * gnat1drv.adb (Adjust_Global_Switches): Only + perform checking of exception mechanism when generating code. + +2017-01-12 Justin Squirek + + * exp_ch7.adb (Add_Type_Invariants, Process_Array_Component): + Remove handling of access component with invariant. + (Build_Invariant_Procedure_Declaration): Remove return on class + wide type. + * freeze.adb (Freeze_Array_Type, Freeze_Record_Type): Remove + conditional exception for component or array so Has_Own_Invariants + flag is not falsly set. + * sem_ch3.adb (Make_Class_Wide_Type): Initialize copy of class + wide type to have no invariant flags. + +2017-01-12 Hristian Kirtchev + + * exp_ch9.adb, sem_prag.adb, s-tassta.adb, sem_util.adb, s-tarest.adb, + sem_ch13.adb: Minor reformatting. + +2017-01-12 Hristian Kirtchev + + * exp_aggr.adb (Build_Record_Aggr_Code): Guard against a missing + adjustment primitive when the ancestor type was not properly frozen. + (Gen_Assign): Guard against a missing initialization + primitive when the component type was not properly frozen. + (Initialize_Array_Component): Guard against a missing adjustment + primitive when the component type was not properly frozen. + (Initialize_Record_Component): Guard against a missing adjustment + primitive when the component type was not properly frozen. + (Process_Transient_Component_Completion): The transient object may + not be finalized when its associated type was not properly frozen. + * exp_ch3.adb (Build_Assignment): Guard against a missing + adjustment primitive when the component type was not properly frozen. + (Build_Initialization_Call): Guard against a missing + initialization primitive when the associated type was not properly + frozen. + (Expand_N_Object_Declaration): Guard against a missing + adjustment primitive when the base type was not properly frozen. + (Predefined_Primitive_Bodies): Create an empty Deep_Adjust + body when there is no adjustment primitive available. Create an + empty Deep_Finalize body when there is no finalization primitive + available. + * exp_ch4.adb (Apply_Accessibility_Check): Guard against a + missing finalization primitive when the designated type was + not properly frozen. + (Expand_N_Allocator): Guard against a missing initialization primitive + when the designated type was not properly frozen. + * exp_ch5.adb (Make_Tag_Ctrl_Assignment): Add the adjustment call + only when the corresponding adjustment primitive is available. + * exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Generate the + adjustment/finalization statements only when there is an available + primitive to carry out the action. + (Build_Initialize_Statements): Generate the initialization/finalization + statements only when there is an available primitive to carry out the + action. + (Make_Adjust_Call): Do not generate a call when the underlying + type is not present due to a possible missing full view. + (Make_Final_Call): Do not generate a call when the underlying + type is not present due to a possible missing full view. + (Make_Finalize_Address_Stmts): Generate an empty body when the + designated type lacks a finalization primitive. + (Make_Init_Call): Do not generate a call when the underlying type is + not present due to a possible missing full view. + (Process_Component_For_Adjust): Add the adjustment call only when the + corresponding adjustment primitive is available. + (Process_Component_For_Finalize): Add the finalization call only when + the corresponding finalization primitive is available. + (Process_Object_Declaration): Use a null statement to emulate a + missing call to the finalization primitive of the object type. + * exp_ch7.ads (Make_Adjust_Call): Update the comment on usage. + (Make_Final_Call): Update the comment on usage. + (Make_Init_Call): Update the comment on usage. + * exp_util.adb (Build_Transient_Object_Statements): Code reformatting. + +2017-01-12 Arnaud Charlet + + * einfo.ads: Update documentation of Address_Taken. + * sem_attr.adb (Analyze_Access_Attribute, Resolve_Attribute + [Access_Attribute]): Only consider 'Access/'Unchecked_Access + for subprograms when setting Address_Taken flag. + +2017-01-12 Patrick Bernardi + + * sem_ch10.adb (Analyze_With_Clause): Removed code that turned + Configurable_Run_Time_Mode off when analysing with'ed predefined + libraries. + +2017-01-12 Gary Dismukes + + * sem_prag.adb: Minor reformatting. + * sem_util.adb (Unique_Entity): fix result for + bodies of entry families. + +2017-01-12 Justin Squirek + + * sem_prag.adb (Analyze_Pragma): Add appropriate calls to + Resolve_Suppressible in the pragma Assertion_Policy case. + (Resolve_Suppressible): Created this function to factor out + common code used to resolve Suppress to either Ignore or Check + * snames.ads-tmpl: Add name for Suppressible. + +2017-01-12 Gary Dismukes + + * exp_ch9.adb, s-secsta.adb, snames.ads-tmpl, exp_ch3.adb: Minor + reformatting. + * debug.adb: Minor comment fixes. + +2017-01-12 Arnaud Charlet + + * sem_util.adb (Unique_Entity): For concurrent + bodies that are defined with stubs and complete a declaration + of a single concurrent object return the entity of an implicit + concurrent type, not the entity of the anonymous concurrent + object. + * debug.adb: -gnatd.J is no longer used. + * make.adb (Globalize): Removed, no longer used. + * sem_ch9.adb: minor typo in comment for entry index + +2017-01-12 Patrick Bernardi + + * aspect.adb, aspect.ads: Added new aspect Secondary_Stack_Size. + * exp_ch3.adb (Build_Init_Statements): As part of initialising + the value record of a task, set its _Secondary_Stack_Size field + if present. + * exp_ch9.adb (Expand_N_Task_Type_Declaration): Create + a _Secondary_Stack_Size field in the value record of + the task if a Secondary_Stack_Size rep item is present. + (Make_Task_Create_Call): Include secondary stack size + parameter. If No_Secondary_Stack restriction is in place, passes + stack size of 0. + * par-prag.adb, sem_prag.adb, sem_prag.ads: Added new pragma + Secondary_Stack_Size. + * s-secsta.adb, s-secsta.ads (Minimum_Secondary_Stack_Size): New + function to define the overhead of the secondary stack. + * s-tarest.adb (Create_Restricted_Task, + Create_Restricted_Task_Sequential): Functions now include + Secondary_Stack_Size parameter to pass to Initialize_ATCB. + * s-tarest.adb (Create_Restricted_Task, + Create_Restricted_Task_Sequential): Calls to Initialize_ATCB now + include Secondary_Stack_Size parameter. + (Task_Wrapper): Secondary stack now allocated to the size specified by + the Secondary_Stack_Size parameter in the task's ATCB. + * s-taskin.adb, s-taskin.adb (Common_ATCB, Initialize_ATCB): New + Secondary_Stack_Size component. + * s-tassta.adb, s-tassta.ads (Create_Restricted_Task, + Create_Restricted_Task_Sequential): Function now include + Secondary_Stack_Size parameter. + (Task_Wrapper): Secondary stack now allocated to the size + specified by the Secondary_Stack_Size parameter in the task's + ATCB. + * s-tproft.adb (Register_Foreign_Thread): Amended Initialize_ATCB call + to include Secondary_Stack_Size parameter. + * sem_ch13.adb (Analyze_Aspect_Specification): Add support for + Secondary_Stack_Size aspect, turning the aspect into its corresponding + internal attribute. + (Analyze_Attribute_Definition): Process Secondary_Stack_Size attribute. + * snames.adb-tmpl, snames.ads-tmpl: Added names + Name_Secondary_Stack_Size, Name_uSecondary_Stack_Size, + Attribute_Secondary_Stack_Size and Pragma_Secondary_Stack_Size. + +2017-01-12 Yannick Moy + + * exp_spark.adb (Expand_SPARK_Potential_Renaming): Fix sloc of copied + subtree. + +2017-01-12 Justin Squirek + + * exp_attr.adb (Expand_N_Attribute_Reference): + Fix Finalization_Size case by properly resolving the type after + rewritting the node. + +2017-01-12 Hristian Kirtchev + + * exp_util.adb (Build_DIC_Procedure_Body): Semi-insert the body into + the tree. + (Build_DIC_Procedure_Declaration): Semi-insert the body into the tree. + * binde.adb, exp_ch5.adb, sem_type.adb, sem.ads, sem_res.adb, + exp_sel.ads: Minor reformatting. + +2017-01-12 Justin Squirek + + * exp_ch6.adb (Expand_Call): Add guard to prevent + invariant checks from being created for internally generated + subprograms. + +2017-01-12 Bob Duff + + * lib-writ.ads: Remove incorrect comment. + +2017-01-12 Javier Miranda + + * debug.adb (-gnatd.K): Enable generation of contract-only + procedures in CodePeer mode. + * contracts.adb (Build_And_Analyze_Contract_Only_Subprograms): + New subprogram. + (Analyze_Contracts): Generate contract-only procedures if -gnatdK is + set. + * scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): New + subprogram. + (Get_Contract_Only_Missing_Body_Name): New subprogram. + (Get_Contract_Only_Body): New subprogram. + (Set_Contract_Only_Body): New subprogram. + (Is_Contract_Only_Body): New subprogram. + (Set_Is_Contract_Only_Body): New subprogram. + (SCIL_Nodes): Replace table by hash-table. + +2017-01-12 Hristian Kirtchev + + * exp_ch6.adb: Minor reformatting. + * spark_xrefs.ads: minor cleanup of comments for SPARK xrefs + +2017-01-12 Bob Duff + + * binde.adb (Forced): New reason for a dependence. + (Force_Elab_Order): Implementation of the new switch. + * binde.ads: Minor comment fixes. + * bindusg.adb: Add -f switch. Apparently, there was an -f switch + long ago that is no longer supported; removed comment about that. + * opt.ads (Force_Elab_Order_File): Name of file specified for + -f switch. + * switch-b.adb: Parse -f switch. + +2017-01-12 Justin Squirek + + * exp_ch6.adb (Check_View_Conversion): Created this function + to properly chain calls to check type invariants that may be + present in a subprogram call after the subprogram. + (Expand_Call): Add a conditional to identify when a view conversion + needs to be checked. + * nlists.adb, nlists.ads (Prepend_New): New routine. + (Prepend_New_To): New routine. + +2017-01-12 Hristian Kirtchev + + * sinfo.ads: Minor reformatting. + +2017-01-12 Gary Dismukes + + * exp_util.adb, exp_util.ads, einfo.ads: Minor typo fixes and + reformatting. + +2017-01-12 Hristian Kirtchev + + * exp_ch6.adb (Make_Build_In_Place_Call_In_Anonymous_Context): Add new + variable Definite. Create a local object and pass its 'Access to the + BIP function when the result type is either definite or it does not + require any finalization or secondary stack management. + +2017-01-12 Bob Duff + + * contracts.adb, einfo.adb, errout.adb, exp_attr.adb, + exp_ch3.adb, exp_ch7.adb, exp_ch9.adb, exp_prag.adb, freeze.adb, + frontend.adb, ghost.adb, inline.adb, lib-writ.adb, lib-xref.adb, + par.adb, par-ch10.adb, par-ch2.adb, par-prag.adb, par_sco.adb, + sem_attr.adb, sem_aux.adb, sem_ch10.adb, sem_ch12.adb, + sem_ch13.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb, sem_elab.adb, + sem_prag.adb, sem_res.adb, sem_util.adb, sem_util.ads, + sem_warn.adb, sinfo.adb, sinfo.ads, sprint.adb (Pragma_Name): + Change name to Pragma_Name_Unmapped. + (Pragma_Name_Mapped): Change name to Pragma_Name. + This is because the "mapped" version should be the usual case. + +2017-01-09 Hristian Kirtchev + + * einfo.ads, einfo.adb: Remove uses of flags Has_Default_Init_Cond, + Is_Default_Init_Cond_Procedure, and + Has_Inherited_Default_Init_Cond. Add uses of flags + Has_Own_DIC, Is_DIC_Procedure, and Has_Inherited_DIC. + (Default_Init_Cond_Procedure): Removed. + (DIC_Procedure): New routine. + (Has_Default_Init_Cond): Removed. + (Has_DIC): New routine. + (Has_Inheritable_Invariants): The attribute applies to the base type. + (Has_Inherited_Default_Init_Cond): Removed. + (Has_Inherited_DIC): New routine. + (Has_Inherited_Invariants): The attribute applies to the base type. + (Has_Own_DIC): New routine. + (Has_Own_Invariants): The attribute applies to the base type. + (Is_Default_Init_Cond_Procedure): Removed. + (Is_DIC_Procedure): New routine. + (Set_Default_Init_Cond_Procedure): Removed. + (Set_DIC_Procedure): New routine. + (Set_Has_Default_Init_Cond): Removed. + (Set_Has_Inheritable_Invariants): The attribute applies + to the base type. + (Set_Has_Inherited_Default_Init_Cond): Removed. + (Set_Has_Inherited_DIC): New routine. + (Set_Has_Inherited_Invariants): The attribute applies to the base type. + (Set_Has_Own_DIC): New routine. + (Set_Has_Own_Invariants): The attribute applies to the base type. + (Set_Is_Default_Init_Cond_Procedure): Removed. + (Set_Is_DIC_Procedure): New routine. + (Write_Entity_Flags): Update the output of all flags related to + default initial condition. + * exp_ch3.adb (Expand_N_Object_Declaration): Update the generation + of the call to the DIC procedure. + (Freeze_Type): Generate the body of the DIC procedure. + * exp_ch7.adb (Build_Invariant_Procedure_Body): Replace + all occurrences of Create_Append with Append_New_To. Do + not generate an invariant procedure for a class-wide type. + The generated body acts as a freeze action of the working type. + (Build_Invariant_Procedure_Declaration): Do not generate an + invariant procedure for a class-wide type. + (Create_Append): Removed. + * exp_util.adb: Add with and use clauses for Sem_Ch3, sem_ch6, + sem_Ch12, Sem_Disp, and GNAT.HTable. Move the handling of + class-wide pre/postcondition description and data structures from + Sem_Prag. + (Build_Class_Wide_Expression): Moved from Sem_Prag. + (Build_DIC_Call): New routine. + (Build_DIC_Procedure_Body): New routine. + (Build_DIC_Procedure_Declaration): New routine. + (Entity_Hash): Moved from Sem_Prag. + (Find_DIC_Type): New routine. + (Update_Primitives_Mapping): Reimplemented. + (Update_Primitives_Mapping_Of_Types): New routine. + * exp_util.ads (Build_Class_Wide_Expression): Moved from Sem_Prag. + (Build_DIC_Call): New routine. + (Build_DIC_Procedure_Body): New routine. + (Build_DIC_Procedure_Declaration): New routine. + (Update_Primitives_Mapping): Moved from Sem_Prag. + (Update_Primitives_Mapping_Of_Types): New routine. + * nlists.adb (Append_New): New routine. + (Append_New_To): New routine. + * nlists.ads (Append_New): New routine. + (Append_New_To): New routine. + * sem_ch3.adb (Analyze_Declarations): Do not generate the bodies + of DIC procedures here. This is now done at the end of the + visible declarations, private declarations, and at the freeze + point of a type. + (Analyze_Private_Extension_Declaration): + A private extension inherits the DIC pragma of a parent type. + (Analyze_Subtype_Declaration): No need to propagate invariant + attributes to a subtype as those apply to the base type. + (Build_Derived_Record_Type): No need to inherit invariants here + as this is now done in Build_Derived_Type. + (Build_Derived_Type): Inherit both the DIC pragma and invariants from + a parent type. + (Process_Full_View): Update the propagation of DIC attributes. + (Propagate_Default_Init_Cond_Attributes): Removed. + * sem_ch7.adb Add with and use clauses for Exp_Util. + (Analyze_Package_Specification): Create the body of the DIC + procedure at the end of the visible and private declarations. + (Preserve_Full_Attributes): Propagate DIC attributes. + * sem_ch9.adb (Analyze_Protected_Type_Declaration): Propagate + DIC attributes. + (Analyze_Task_Type_Declaration): Propagate DIC attributes. + * sem_elab.adb (Check_A_Call): Update the call to + Is_Nontrivial_Default_Init_Cond_Procedure. + * sem_prag.adb Remove the with and use clauses for + GNAT.HTable. Move the handling of class- wide pre/postcondition + description and data structures to Exp_Util. + (Analyze_Pragma): Create the declaration of the DIC procedure. There + is no need to propagate invariant-related attributes at this point + as this is done in Build_Invariant_Procedure_Declaration. + (Build_Class_Wide_Expression): Moved to Exp_Util. + (Entity_Hash): Moved to Exp_Util. + (Update_Primitives_Mapping): Moved to Exp_Util. + * sem_prag.ads (Build_Class_Wide_Expression): Moved to Exp_Util. + (Update_Primitives_Mapping): Moved to Exp_Util. + * sem_util.adb: Remove with and use clauses for Ghost + and Sem_Ch13. + (Build_Default_Init_Cond_Call): Removed. + (Build_Default_Init_Cond_Procedure_Bodies): Removed. + (Build_Default_Init_Cond_Procedure_Declaration): Removed. + (Get_Views): Reimplemented. + (Has_Full_Default_Initialization): Reimplement the section on DIC. + (Inherit_Default_Init_Cond_Procedure): Removed. + (Is_Nontrivial_Default_Init_Cond_Procedure): Removed. + (Is_Nontrivial_DIC_Procedure): New routine. + (Is_Verifiable_DIC_Pragma): New routine. + (Propagate_DIC_Attributes): New routine. + * sem_util.ads (Build_Default_Init_Cond_Call): Removed. + (Build_Default_Init_Cond_Procedure_Bodies): Removed. + (Build_Default_Init_Cond_Procedure_Declaration): Removed. + (Inherit_Default_Init_Cond_Procedure): Removed. + (Is_Nontrivial_Default_Init_Cond_Procedure): Removed. + (Is_Nontrivial_DIC_Procedure): New routine. + (Is_Verifiable_DIC_Pragma): New routine. + (Propagate_DIC_Attributes): New routine. + * sem_warn.adb (Is_OK_Fully_Initialized): Reimplement the section + on DIC. + * sinfo.ads, sinfo.adb: Add new attribute Expression_Copy along with + usage in nodes. + (Expression_Copy): New routine along with pragma Inline. + (Set_Expression_Copy): New routine along with pragma Inline. + +2017-01-06 Bob Duff + + * bindgen.adb (Gen_Adainit, Gen_Adafinal): Change + "Bind_Main_Program" to "not Bind_For_Library", because otherwise + we won't generate the call to s_stalib_adafinal when the main + is not written in Ada. + +2017-01-06 Bob Duff + + * sem_prag.adb: Minor: remove pragma Warnings. + +2017-01-06 Tristan Gingold + + * Makefile.rtl: Do not compile s-stchop by default. + +2017-01-06 Patrick Bernardi + + * aspects.adb, aspects.ads, exp_ch3.adb, exp_ch9.adb, par-prag.adb, + sem_ch13.adb, sem_prag.adb, sem_prag.ads, snames.adb-tmpl, + snames.ads-tmpl, s-secsta.adb, s-secsta.ads, s-tarest.adb, + s-tarest.ads, s-taskin.adb, s-taskin.ads, s-tassta.adb, s-tassta.ads: + Reverted previous change for now. + +2017-01-06 Ed Schonberg + + * exp_ch3.adb (Build_Initialization_Call): Apply predicate + check to default discriminant value if checks are enabled. + (Build_Assignment): If type of component has static predicate, + apply check to its default value, if any. + +2017-01-06 Patrick Bernardi + + * aspect.adb, aspect.ads: Added new aspect Secondary_Stack_Size. + * exp_ch3.adb (Build_Init_Statements): As part of initialising + the value record of a task, set its _Secondary_Stack_Size field + if present. + * exp_ch9.adb (Expand_N_Task_Type_Declaration): Create + a _Secondary_Stack_Size field in the value record of + the task if a Secondary_Stack_Size rep item is present. + (Make_Task_Create_Call): Include secondary stack size + parameter. If No_Secondary_Stack restriction is in place, passes + stack size of 0. + * par-prag.adb, sem_prag.adb, sem_prag.ads: Added new pragma + Secondary_Stack_Size. + * s-secsta.adb, s-secsta.ads (Minimum_Secondary_Stack_Size): New + function to define the overhead of the secondary stack. + * s-tarest.adb (Create_Restricted_Task, + Create_Restricted_Task_Sequential): Functions now include + Secondary_Stack_Size parameter to pass to Initialize_ATCB. + * s-tarest.adb (Create_Restricted_Task, + Create_Restricted_Task_Sequential): Calls to Initialize_ATCB + now include Secondary_Stack_Size parameter. + (Task_Wrapper): + Secondary stack now allocated to the size specified by the + Secondary_Stack_Size parameter in the task's ATCB. + * s-taskin.adb, s-taskin.adb (Common_ATCB, Initialise_ATCB): New + Secondary_Stack_Size component. + * s-tassta.adb, s-tassta.ads (Create_Restricted_Task, + Create_Restricted_Task_Sequential): Function now include + Secondary_Stack_Size parameter. + (Task_Wrapper): Secondary stack + now allocated to the size specified by the Secondary_Stack_Size + parameter in the task's ATCB. + * sem_ch13.adb (Analyze_Aspect_Specification): Add support + for Secondary_Stack_Size aspect, turning the aspect into its + corresponding internal attribute. + (Analyze_Attribute_Definition): + Process Secondary_Stack_Size attribute. + * snames.adb-tmpl, snames.ads-tmpl: Added names + Name_Secondary_Stack_Size, Name_uSecondary_Stack_Size, + Attribute_Secondary_Stack_Size and Pragma_Secondary_Stack_Size. + +2017-01-06 Pascal Obry + + * a-direio.adb, a-direio.ads, a-sequio.adb, a-sequio.ads: Add Flush to + Sequential_IO and Direct_IO. + +2017-01-06 Bob Duff + + * snames.ads-tmpl (Renamed): New name for the pragma argument. + * par-ch2.adb: Allow the new pragma (with analysis deferred + to Sem_Prag). + * sinfo.ads, sinfo.adb (Map_Pragma_Name, Pragma_Name_Mapped): + Keep a mapping from new pragma names to old names. + * sem_prag.adb: Check legality of pragma Rename_Pragma, and + implement it by calling Map_Pragma_Name. + * checks.adb, contracts.adb, einfo.adb, errout.adb, + * exp_attr.adb, exp_ch3.adb, exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, + * exp_prag.adb, exp_util.adb, freeze.adb, frontend.adb, ghost.adb, + * inline.adb, lib-writ.adb, scans.adb, scans.ads, sem_attr.adb, + * sem_aux.adb, sem_ch10.adb, sem_ch13.adb, sem_ch6.adb, sem_ch9.adb, + * sem_elab.adb, sem_res.adb, sem_util.adb, sem_util.ads, + * sem_warn.adb: Call Pragma_Name_Mapped instead of Pragma_Name + as appropriate. + +2017-01-06 Hristian Kirtchev + + * exp_ch9.adb: Minor reformatting. + +2017-01-06 Tristan Gingold + + * exp_ch9.ads, exp_ch9.adb (Build_Entry_Names): Remove (unused). + * rtsfind.ads (RE_Task_Entry_Names_Array, RO_ST_Set_Entry_Names) + (RE_Protected_Entry_Names_Array, RO_PE_Set_Entry_Names): Remove + (unused). + * s-taskin.ads, s-taskin.adb (Set_Entry_Names, + Task_Entry_Names_Array, Task_Entry_Names_Access): Remove. + * s-tpoben.ads, s-tpoben.adb (Set_Entry_Names, + Protected_Entry_Names_Array, Protected_Entry_Names_Access): Remove. + +2017-01-06 Bob Duff + + * sinfo.ads, sinfo.adb (Map_Pragma_Name): Preparation work, + dummy implementation of Map_Pragma_Name. + +2017-01-06 Tristan Gingold + + * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Make the + entry_body variable constant. + * s-taprob.ads (Entry_Body_Access): Move to s-tposen. + * s-tpoben.ads (Protected_Entry_Body_Access): Now access + to constant. + * s-tposen.ads (Entry_Body_Access): Moved from s-taprob, + now access to constant. + +2017-01-06 Gary Dismukes + + * einfo.ads, sem_res.adb, sem_attr.adb, sem_ch6.adb: Minor + reformatting and typo fixes. + +2017-01-06 Bob Duff + + * snames.ads-tmpl: New names for pragma renaming. + * snames.adb-tmpl (Is_Configuration_Pragma_Name): Minor cleanup. + * par-prag.adb: Add new pragma name to case statement. + * sem_prag.adb (Rename_Pragma): Initial cut at semantic analysis + of the pragma. + * sinfo.ads, sinfo.adb (Pragma_Name_Mapped): Preparation work, + Dummy implementation of Pragma_Name_Mapped. + +2017-01-06 Ed Schonberg + + * exp_ch6.adb (Expand_Protected_Subprogram_Call): Add guard to + better detect call within an entry_wrapper. + * sem_res.adb (Resolve_Call): A protected call within an + entity_wrapper is analyzed in the context of the protected + object but corresponds to a pre-analysis and is not an access + before elaboration. + * sem_attr.adb: Minor reformatting. + +2017-01-06 Justin Squirek + + * sem_attr.adb (Analyze_Attribute): Modify semantic checks for + Finalization_Size to allow a prefix of any non-class-wide type. + * sem_attr.ads Modify comment for Finalization_Size to include + definite type use case. + +2017-01-06 Ed Schonberg + + * einfo.ads, einfo.adb (Is_Entry_Wrapper): New flag, defined + on procedures that are wrappers created for entries that have + preconditions. + * sem_ch6.adb (Analyze_Subrogram_Body_Helper): If the subprogram + body is an entry_wrapper, compile it in the context of the + synchronized type, because a precondition may refer to funtions + of the type. + * exp_ch9.adb (Build_Contract_Wrapper): Set Is_Entry_Wrapper on + body entity. + * exp_ch6.adb (Expand_Protected_Subprogram_Call): if the call is + within an Entry_Wrapper this is an external call whose target + is the synchronized object that is the actual in the call to + the wrapper. + +2017-01-06 Yannick Moy + + * sem_attr.adb (Analyze_Attribute/Attribute_Loop_Entry): Analyze node + in tree, which means not analyzing the previous prefix if the node has + been rewritten into its prefix. + +2017-01-06 Gary Dismukes + + * s-tpobop.adb: Minor reformatting. + +2017-01-06 Ed Schonberg + + * checks.adb (Ensure_Valid): Do not generate a validity check + within a generated predicate function, validity checks will have + been applied earlier when required. + +2017-01-06 Tristan Gingold + + * s-tpoben.ads (Protection_Entries): Add comment and reorder + components for performances. + * s-tpobop.adb (PO_Do_Or_Queue): Implement Max_Queue_Length runtime + semantic. + +2017-01-06 Ed Schonberg + + * sem_eval.adb (Check_Expression_Against_Static_Predicate): + If expression is compile-time known and obeys a static predicate + it must be labelled as static, to prevent spurious warnings and + run-time errors, e.g. in case statements. This is relevant when + the expression is the result of constant-folding a type conversion + whose expression is a variable with a known static value. + +2017-01-06 Hristian Kirtchev + + * exp_attr.adb, sem_attr.ads: Minor reformatting. + +2017-01-06 Justin Squirek + + * exp_attr.adb (Expand_N_Attribute_Reference): Add entry for + expansion of Finalization_Size attribute. + * sem_attr.adb (Analyze_Attribute): Add entry to check the + semantics of Finalization_Size. + (Eval_Attribute): Add null entry for Finalization_Size. + * sem_attr.ads: Add Finalization_Size to the implementation + dependent attribute list. + * snames.ads-tmpl: Add name entry for Finalization_Size attribute. + +2017-01-06 Ed Schonberg + + * sem_ch5.adb (Analyze_Loop_Statement): If the loop includes an + iterator specification with a serious syntactic error, transform + construct into an infinite loop in order to continue analysis + and prevent a compiler abort. + +2017-01-06 Tristan Gingold + + * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Do not generate + max_queue_lengths_array if unused. + +2017-01-06 Bob Duff + + * errout.adb (Set_Msg_Text): Protect against out-of-bounds + array access, in case "\" is at the end of Text. + * stylesw.adb (Set_Style_Check_Options): Don't include input + characters in the error message template, because they could + be control characters such as "\", which Errout will try to + interpret. + +2017-01-06 Ed Schonberg + + * sem_ch4.adb (Find_Indexing_Operations, Inspect_Declarations): + For a private type examine the visible declarations that follow + the partial view, not just the private declarations that follow + the full view. + +2017-01-06 Hristian Kirtchev + + * exp_ch5.adb, sem_ch3.adb, checks.adb: Minor reformatting and + code cleanup. + +2017-01-06 Ed Schonberg + + * exp_ch5.adb (Get_Default_Iterator): For a derived type, the + alias of the inherited op is the parent iterator, no need to + examine dispatch table positions which might not be established + yet if type is not frozen. + * sem_disp.adb (Check_Controlling_Formals): The formal of a + predicate function may be a subtype of a tagged type. + * sem_ch3.adb (Complete_Private_Subtype): Adjust inheritance + of representation items for the completion of a type extension + where a predicate applies to the partial view. + * checks.ads, checks.adb (Apply_Predicate_Check): Add optional + parameter that designates function whose actual receives a + predicate check, to improve warning message when the check will + lead to infinite recursion. + * sem_res.adb (Resolve_Actuals): Pass additional parameter to + Apply_Predicate_Check. + +2017-01-06 Tristan Gingold + + * s-rident.ads (Profile_Info): Remove No_Entry_Queue from + Gnat_Extended_Ravenscar. + * exp_ch9.adb, s-tpoben.adb, s-tpoben.ads: Fix spelling. + +2017-01-06 Gary Dismukes + + * sem_util.ads: Minor typo fix and reformatting. + +2017-01-06 Yannick Moy + + * ghost.adb Minor fixing of references to SPARK RM. + (Check_Ghost_Context): Check whether reference is to a lvalue + before issuing an error about violation of SPARK RM 6.9(13) + when declaration has Ghost policy Check and reference has Ghost + policy Ignore. + * sem_util.adb Minor indentation. + * sem_ch10.adb (Analyze_Package_Body_Stub, Analyze_Protected_Body_Stub, + Analyze_Task_Body_Stub): Set Ekind of the defining identifier. + * sem_util.ads (Unique_Defining_Entity): Document the result + for package body stubs. + +2017-01-06 Tristan Gingold + + * raise-gcc.c (abort): Macro to call Abort_Propagation. + * s-tpoben.ads (Protected_Entry_Queue_Max_Access): Make it access + constant. + * exp_ch9.adb (Expand_N_Protected_Type_Declaration): + Do not generate the Entry_Max_Queue_Lengths_Array if all default + values. + * exp_util.adb (Corresponding_Runtime_Package): Consider + Max_Queue_Length pragma. + +2017-01-06 Justin Squirek + + * exp_ch9.adb (Expand_N_Protected_Type_Declaration): + Remove declaration generation in the case of + System_Tasking_Protected_Objects_Single_Entry being used, + and add a warning message when this is detected to occur. + (Make_Initialize_Protection): Remove reference pass in the case + of System_Tasking_Protected_Objects_Single_Entry. + * rtsfind.ads: Remove RE_Protected_Entry_Queue_Max + * s-tposen.adb (Initialize_Protection_Entry): Remove + Entry_Queue_Max parameter. + * s-tposen.ads: Remove the types use to store the entry queue + maximum. + * sem_prag.adb (Analyze_Pragma): Remove entry families restriction + +2017-01-06 Yannick Moy + + * sem_util.adb, sem_util.ads (Get_Enum_Lit_From_Pos): Strengthen + behavior of function, to also accept out of range positions + and raise Constraint_Error in such case, and to copy sloc from + literal if No_Location passed as location. + * uintp.adb, uintp.ads (UI_To_Int, UI_To_CC): Strengthen behavior + of functions to raise Constraint_Error in case of value not in + appropriate range. + +2017-01-06 Tristan Gingold + + * sem_util.adb, s-taprop-linux.adb (Finalize_TCB): Remove call to + Invalidate_Stack_Cache. + +2017-01-06 Eric Botcazou + + * s-os_lib.adb: Minor fix to the signature of Readlink. + +2017-01-06 Javier Miranda + + * sem_ch6.adb (Conforming_Types): Handle another + confusion between views in a nested instance with an actual + private type whose full view is not in scope. + +2017-01-06 Arnaud Charlet + + * exp_ch5.adb (Expand_N_If_Statement): Obey existing comment and + mark a rewritten if statement as explicit (Comes_From_Source). + +2017-01-06 Gary Dismukes + + * sem_prag.adb, rtsfind.adb, sem_util.adb: Minor typo fixes. + +2017-01-06 Tristan Gingold + + * ada.ads, a-unccon.ads: Add pragma No_Elaboration_Code_All. + +2017-01-06 Hristian Kirtchev + + * sem_case.adb: Minor reformatting. + +2017-01-06 Thomas Quinot + + * g-socthi-mingw.adb: Remove now extraneous USE TYPE clause + +2017-01-06 Justin Squirek + + * aspects.adb: Register aspect in Canonical_Aspect. + * aspects.ads: Associate qualities of Aspect_Max_Queue_Length + into respective tables. + * einfo.ads, einfo.adb: Add a new attribute for + handling the parameters for Pragma_Max_Entry_Queue + (Entry_Max_Queue_Lengths_Array) in E_Protected_Type. Subprograms + for accessing and setting were added as well. + * par-prag.adb (Prag): Register Pramga_Max_Entry_Queue. + * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Emit + declaration for pramga arguments and store them in the protected + type node. + (Make_Initialize_Protection): Pass a reference to + the Entry_Max_Queue_Lengths_Array in the protected type node to + the runtime. + * rtsfind.adb: Minor grammar fix. + * rtsfind.ads: Register new types taken from the + runtime libraries RE_Protected_Entry_Queue_Max and + RE_Protected_Entry_Queue_Max_Array + * s-tposen.adb, s-tpoben.adb + (Initialize_Protection_Entry/Initialize_Protection_Entries): + Add extra parameter and add assignment to local object. + * s-tposen.ads, s-tpoben.ads: Add new types to + store entry queue maximums and a field to the entry object record. + * sem_ch13.adb (Analyze_Aspect_Specifications): Add case statement + for Aspect_Max_Queue_Length. + (Check_Aspect_At_Freeze_Point): + Add aspect to list of aspects that don't require delayed analysis. + * sem_prag.adb (Analyze_Pragma): Add case statement for + Pragma_Max_Queue_Length, check semantics, and register arugments + in the respective entry nodes. + * sem_util.adb, sem_util.ads Add functions Get_Max_Queue_Length + and Has_Max_Queue_Length + * snames.ads-tmpl: Add constant for the new aspect-name + Name_Max_Queue_Length and corrasponding pragma. + +2017-01-06 Hristian Kirtchev + + * exp_util.adb (Is_Controlled_Function_Call): + Reimplemented. Consider any node which has an entity as the + function call may appear in various ways. + +2017-01-06 Hristian Kirtchev + + * exp_attr.adb (Rewrite_Stream_Proc_Call): Use + an unchecked type conversion when performing a view conversion + to/from a private type. In all other cases use a regular type + conversion to ensure that any relevant checks are properly + installed. + +2017-01-06 Hristian Kirtchev + + * sem_prag.adb, sem_ch8.adb: Minor reformatting. + +2017-01-06 Ed Schonberg + + * sem_case.adb (Explain_Non_Static_Bound): Suppress cascaded + error on case expression that is an entity, when coverage is + incomplete and entity has a static value obtained by local + propagation. + (Handle_Static_Predicate): New procedure, subsidiary of + Check_Choices, to handle case alternatives that are either + subtype names or subtype indications involving subtypes that + have static predicates. + +2017-01-06 Thomas Quinot + + * s-oscons-tmplt.c, g-socket.adb, g-socket.ads, g-sothco.ads: + (GNAT.Socket): Add support for Busy_Polling and Generic_Option + +2017-01-06 Bob Duff + + * sem_elab.adb (Activate_Elaborate_All_Desirable): Don't add + Elaborate_All(P) to P itself. That could happen in obscure cases, + and always introduced a cycle (P body must be elaborated before + P body). + * lib-writ.ads: Comment clarification. + * ali-util.ads: Minor comment fix. + * ali.adb: Minor reformatting. + +2017-01-06 Tristan Gingold + + * a-exexpr-gcc.adb: Improve comment. + +2017-01-03 James Cowgill + + * s-linux-mips.ads: Use correct signal and errno constants. + (sa_handler_pos, sa_mask_pos): Fix offsets for 64-bit MIPS. + +2017-01-03 James Cowgill + + * s-linux-mips.ads: Rename from s-linux-mipsel.ads. + * gcc-interface/Makefile.in (MIPS/Linux): Merge mips and mipsel + sections. + +2017-01-01 Eric Botcazou + + * gnatvsn.ads: Bump copyright year. + +2017-01-01 Jakub Jelinek + + * gnat_ugn.texi: Bump @copying's copyright year. + * gnat_rm.texi: Likewise. + +Copyright (C) 2017 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index 0cec92a8880..12b2f42c8a0 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -25,7 +25,7 @@ GNAT Reference Manual , Dec 15, 2017 AdaCore -Copyright @copyright{} 2008-2017, Free Software Foundation +Copyright @copyright{} 2008-2018, Free Software Foundation @end quotation @end copying diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 026bec380cd..63361fce157 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -25,7 +25,7 @@ GNAT User's Guide for Native Platforms , Dec 15, 2017 AdaCore -Copyright @copyright{} 2008-2017, Free Software Foundation +Copyright @copyright{} 2008-2018, Free Software Foundation @end quotation @end copying diff --git a/gcc/doc/cpp.texi b/gcc/doc/cpp.texi index 94437d5403e..ced3e465e73 100644 --- a/gcc/doc/cpp.texi +++ b/gcc/doc/cpp.texi @@ -10,7 +10,7 @@ @copying @c man begin COPYRIGHT -Copyright @copyright{} 1987-2017 Free Software Foundation, Inc. +Copyright @copyright{} 1987-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/cppinternals.texi b/gcc/doc/cppinternals.texi index 94de21b41c9..e31a5e207ab 100644 --- a/gcc/doc/cppinternals.texi +++ b/gcc/doc/cppinternals.texi @@ -18,7 +18,7 @@ @ifinfo This file documents the internals of the GNU C Preprocessor. -Copyright (C) 2000-2017 Free Software Foundation, Inc. +Copyright (C) 2000-2018 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -47,7 +47,7 @@ into another language, under the above conditions for modified versions. @page @vskip 0pt plus 1filll @c man begin COPYRIGHT -Copyright @copyright{} 2000-2017 Free Software Foundation, Inc. +Copyright @copyright{} 2000-2018 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice diff --git a/gcc/doc/gcc.texi b/gcc/doc/gcc.texi index 87df83f0131..2572eb0ab90 100644 --- a/gcc/doc/gcc.texi +++ b/gcc/doc/gcc.texi @@ -40,7 +40,7 @@ @c %**end of header @copying -Copyright @copyright{} 1988-2017 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/gccint.texi b/gcc/doc/gccint.texi index 849c67c787e..1a1af418eb6 100644 --- a/gcc/doc/gccint.texi +++ b/gcc/doc/gccint.texi @@ -26,7 +26,7 @@ @c %**end of header @copying -Copyright @copyright{} 1988-2017 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/gcov.texi b/gcc/doc/gcov.texi index 8bf422e58d8..8f68b0f90e2 100644 --- a/gcc/doc/gcov.texi +++ b/gcc/doc/gcov.texi @@ -4,7 +4,7 @@ @ignore @c man begin COPYRIGHT -Copyright @copyright{} 1996-2017 Free Software Foundation, Inc. +Copyright @copyright{} 1996-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 827d3985e69..943556528f6 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -44,7 +44,7 @@ @settitle Installing GCC: GNU Free Documentation License @end ifset -@c Copyright (C) 1988-2017 Free Software Foundation, Inc. +@c Copyright (C) 1988-2018 Free Software Foundation, Inc. @c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com @c IMPORTANT: whenever you modify this file, run `install.texi2html' to @@ -69,7 +69,7 @@ @c Part 2 Summary Description and Copyright @copying -Copyright @copyright{} 1988-2017 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2018 Free Software Foundation, Inc. @sp 1 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index b15cc447092..620e774e056 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -8,7 +8,7 @@ @c man end @c man begin COPYRIGHT -Copyright @copyright{} 1988-2017 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 23bca56c9b7..bb2083aa66e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2018-01-03 Jakub Jelinek + + * gfortranspec.c (lang_specific_driver): Update copyright notice + dates. + * gfc-internals.texi: Bump @copying's copyright year. + * gfortran.texi: Ditto. + * intrinsic.texi: Ditto. + * invoke.texi: Ditto. + 2017-01-02 Thomas Koenig PR fortran/45689 @@ -39,2298 +48,8 @@ PR fortran/83319 *trans-types.c (gfc_get_array_descriptor_base): Add the token field to the descriptor even when codimen not set. - -2017-12-28 Steven G. Kargl - - PR Fortran/83548 - * match.c (gfc_match_type_spec): Check for LOGICAL conflict in - type-spec versus LOGICAL intrinsic subprogram. - -2017-12-28 Janne Blomqvist - - PR fortran/83344 - * resolve.c (resolve_assoc_var): Don't set the constant value - unless the target is a constant expression. - -2017-12-28 Paul Thomas - - PR fortran/83567 - * trans-expr.c (gfc_trans_assignment_1): Free parameterized - components of the lhs if dealloc is set. - *trans-decl.c (gfc_trans_deferred_vars): Do not free the - parameterized components of function results on leaving scope. - -2017_12_27 Louis Krupp - - PR fortran/83092 - * expr.c (gfc_apply_init): Check that typespec has character type - before using character length field. - -2017-12-26 Thomas Koenig - - PR fortran/83540 - * frontend-passes.c (create_var): If an array to be created - has unknown size and -fno-realloc-lhs is in effect, - return NULL. - -2017-12-22 Bernhard Reutner-Fischer - Eric Botcazou - - * array.c (gfc_copy_iterator): Copy unroll field. - * decl.c (directive_unroll): New global variable. - (gfc_match_gcc_unroll): New function. - * gfortran.h (gfc_iterator]): Add unroll field. - (directive_unroll): Declare: - * match.c (gfc_match_do): Use memset to initialize the iterator. - * match.h (gfc_match_gcc_unroll): New prototype. - * parse.c (decode_gcc_attribute): Match "unroll". - (parse_do_block): Set iterator's unroll. - (parse_executable): Diagnose misplaced unroll directive. - * trans-stmt.c (gfc_trans_simple_do) Annotate loop condition with - annot_expr_unroll_kind. - (gfc_trans_do): Likewise. - * gfortran.texi (GNU Fortran Compiler Directives): Split section into - subections 'ATTRIBUTES directive' and 'UNROLL directive'. - -2017-12-19 Jakub Jelinek - - * scanner.c (preprocessor_line): Replace Yoda conditions with typical - order conditions. - * dependency.c (check_section_vs_section): Likewise. - * trans-array.c (gfc_conv_expr_descriptor): Likewise. - -2017-12-17 Janne Blomqvist - - * decl.c (gfc_match_implicit_none): Use GFC_STD_F2018 instead of - GFC_STD_F2015. - * error.c (gfc_notify_std): Add GFC_STD_F2018{_DEL,_OBS} to - switch. - * gfortran.texi: Document -std=f2018. - * interface.c (compare_parameter): Fix comment. - * invoke.texi: Document -std=f2018. - * lang.opt: Add -std=f2018 argumnet. - * libgfortran.h (GFC_STD_F2015): Rename to GFC_STD_F0218, use - separate flag bit. - (GFC_STD_F2018_DEL): New macro. - (GFC_STD_F2018_OBS): Likewise. - * match.c (gfc_match_stopcode): Use GFC_STD_F2018. - * options.c (set_default_std_flags): Add F2018 flags to defaults. - (gfc_handle_option): Set options for -std=f2018. - -2017-12-15 Jakub Jelinek - - * f95-lang.c (gfc_attribute_table): Swap affects_type_identity - and handler fields, adjust comments. - -2017-12-14 Qing Zhao - - PR middle_end/79538 - * class.c (gfc_build_class_symbol): Replace call to - sprintf with xasprintf to avoid format-overflow warning. - (generate_finalization_wrapper): Likewise. - (gfc_find_derived_vtab): Likewise. - (find_intrinsic_vtab): Likewise. - -2017-12-12 Thomas Koenig - - * intrinsic.texi (MAXLOC): Remove double description - of return value. - (MINLOC): Likewise. - -2017-12-11 Thomas Koenig - - * intrinsic.texi (MAXLOC): Update documentation for - character arrays and KIND argument. - (MINLOC): Likewise. - -2017-12-11 Thomas Koenig - - PR fortran/45689 - * simplify.c (min_max_choose): Add prototype. - (gfc_count): Format correctly. - (simplify_transformation): Pass array argument to init_result_expr. - (gfc_simplify_minval_maxval): Remove. - (gfc_min): New function. - (gfc_simplify_minval): Call simplify_transformation. - (gfc_max): New function. - (gfc_simplify_maxval): Call simplify_transformation. - -2017-12-10 Dominique d'Humieres - - PR fortran/53478 - * gfortran.h (gfc_find_case_gsymbol): New prototype. - * symbol.c (gfc_find_case_gsymbol): New procedure, case - insensistive version of gfc_find_gsymbol. - * resolve.c (resolve_common_blocks): Use it. - Replace %s with %qs where needed. - -2017-12-09 Steven G. Kargl - - PR fortran/82934 - PR fortran/83318 - * match.c (gfc_match_allocate): Enforce F2008:C631. - -2017-12-09 Thomas Koenig - - PR fortran/83316 - * arith.c (gfc_character2character): New function. - * arith.h: Add prototype. - * simplify.c (gfc_convert_constant): Handle character type. - -2017-12-07 Martin Sebor - - PR c/81544 - * f95-lang.c (gfc_attribute_table): Initialize new member of struct - attribute_spec. - -2017-12-03 Thomas Koenig - - PR fortran/36313 - * check.c (gfc_check_minval_maxval): Use - int_orLreal_or_char_check_f2003 for array argument. - * iresolve.c (gfc_resolve_maxval): Insert number in - function name for character arguments. - (gfc_resolve_minval): Likewise. - * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): - Fix comment. - (gfc_conv_intrinsic_minmaxval): Resort arguments and call library - function if dealing with a character function. - -2017-12-01 Qing Zhao - - * decl.c (gfc_get_pdt_instance): Adjust the call to sprintf - to avoid the same buffer being both source and destination. - -2017-12-01 Thomas Koenig - - PR fortran/83224 - * frontend-passes.c (create_var): Also handle - character arrays, handling deferred lenghts. - -2017-12-01 Paul Thomas - - PR fortran/82605 - * resolve.c (get_pdt_constructor): Initialize 'cons' to NULL. - (resolve_pdt): Correct typo in prior comment. Emit an error if - any parameters are deferred and the object is neither pointer - nor allocatable. - - PR fortran/82606 - * decl.c (gfc_get_pdt_instance): Continue if the parameter sym - is not present or has no name. Select the parameter by name - of component, rather than component order. Remove all the other - manipulations of 'tail' when building the pdt instance. - (gfc_match_formal_arglist): Emit and error if a star is picked - up in a PDT decl parameter list. - - PR fortran/82622 - * trans-array.c (set_loop_bounds): If a GFC_SS_COMPONENT has an - info->end, use it rather than falling through to - gcc_unreachable. - (structure_alloc_comps): Check that param->name is non-null - before comparing with the component name. - * trans-decl.c (gfc_get_symbol_decl): Do not use the static - initializer for PDT symbols. - (gfc_init_default_dt): Do nothing for PDT symbols. - * trans-io.c (transfer_array_component): Parameterized array - components use the descriptor ubound since the shape is not - available. - - PR fortran/82719 - PR fortran/82720 - * trans-expr.c (gfc_conv_component_ref): Do not use the charlen - backend_decl of pdt strings. Use the hidden component instead. - * trans-io.c (transfer_expr): Do not do IO on "hidden" string - lengths. Use the hidden string length for pdt string transfers - by adding it to the se structure. When finished nullify the - se string length. - - PR fortran/82866 - * decl.c (gfc_match_formal_arglist): If a name is not found or - star is found, while reading a type parameter list, emit an - immediate error. - (gfc_match_derived_decl): On reading a PDT parameter list, on - failure to match call gfc_error_recovery. - - PR fortran/82978 - * decl.c (build_struct): Character kind defaults to 1, so use - kind_expr whatever is the set value. - (gfc_get_pdt_instance): Ditto. - * trans-array.c (structure_alloc_comps): Copy the expression - for the PDT string length before parameter substitution. Use - this expression for evaluation and free it after use. - -2017-12-01 Jakub Jelinek - - PR c/79153 - * match.c (gfc_match): Add FALLTHRU comment to avoid - -Wimplicit-fallthrough warning. - -2017-12-01 Thomas Koenig - - PR fortran/83224 - * frontend-passes.c (realloc_string_callback): Handle - case for which the RHS is an array expression. - -2017-11-28 Janne Blomqvist - - PR fortran/53796 - * gfortran.texi: Remove mentions of GFORTRAN_DEFAULT_RECL. - -2017-11-28 Paul Thomas - - PR fortran/83021 - * resolve.c (resolve_component): Only escape for use assciated - vtypes if the current namespace has no proc_name and is most - particularly block data. - -2017-11-28 Jakub Jelinek - - * trans-decl.c (gfc_trans_entry_master_switch): Build SWITCH_EXPR - using fold_build2_loc instead of fold_build3_loc. - * trans-io.c (io_result): Likewise. - * trans-stmt.c (gfc_trans_integer_select, gfc_trans_character_select): - Likewise. - -2017-11-24 Jakub Jelinek - - PR fortran/81304 - * trans-openmp.c (gfc_trans_omp_array_reduction_or_udr): Set - attr.implicit_type in intrinsic_sym to avoid undesirable warning. - -2017-11-23 Dirk Broemmel - Jakub Jelinek - - PR fortran/81841 - * parse.c (parse_spec): Allow ST_OMP_THREADPRIVATE inside of - BLOCK DATA. - -2017-11-23 Mike Stump - Eric Botcazou - - * trans-stmt.c (gfc_trans_forall_loop): Pass 3rd operand to - ANNOTATE_EXPR. - -2017-11-23 Paul Thomas - - 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-22 David Malcolm - - PR c++/62170 - * error.c (gfc_notify_std): Convert "quoted" param from bool to - bool *. - -2017-11-22 Thomas Koenig - - 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 Paul Thomas - - PR fortran/79072 - * trans-stmt.c (trans_associate_var): Weaken the over strong - condition for using the fake result decl. - -2017-11-20 Paul Thomas - - PR fortran/79072 - * trans-expr.c (trans_class_vptr_len_assignment): Set from_len - if the temporary is unlimited polymorphic. - * trans-stmt.c (trans_associate_var): Use the fake result decl - to obtain the 'len' field from an explicit function result when - in that function scope. - -2017-11-19 Paul Thomas - - PR fortran/78990 - * expr.c (gfc_is_class_array_function): Renamed from - 'gfc_is_alloc_class_array_function' and modified to return true - for pointers as well as allocatable results. - * gfortran.h : Change of name for prototype of above function. - * trans-array.c (gfc_add_loop_ss_code): Force finalization of - class array results. - (build_class_array_ref): Change assertion into a condition. - (build_class_array_ref): Set the se class_vptr for class array - function results. - (gfc_walk_function_expr): Reference gfc_is_class_array_function - as above. - * trans-decl.c (get_proc_result): Move it up before - gfc_trans_deferred_vars. - (gfc_trans_deferred_vars): Nullify explicit return class arrays - on entry. - * trans-expr.c (gfc_conv_class_to_class): Allow conversion of - class array functions that have an se class_vptr and use it - for the result vptr. - (gfc_conv_subref_array_arg): Rename reference to the above - function. - (gfc_conv_procedure_call): Ditto. Add the se pre block to the - loop pre block before the function is evaluated. Do not - finalize class pointer results. - (arrayfunc_assign_needs_temporary, gfc_trans_assignment_1) More - renamed references. - * trans-intrinsic.c (gfc_conv_intrinsic_size): Ditto. - -2017-11-18 Janne Blomqvist - - PR fortran/83036 - * ioparm.def (IOPARM): Make nextrec a pintio. - -2017-11-18 Janne Blomqvist - - PR fortran/44292 - * ioparm.def (IOPARM): Make recl_in intio, and recl_out pintio. - -2017-11-18 Thomas Koenig - - PR fortran/83012 - * expr.c (gfc_is_simply_contiguous): If a function call through a - class variable is done through a reference, check the function's - interface. - -2017-11-17 Richard Biener - - PR fortran/83017 - * trans-stmt.c (gfc_trans_forall_loop): Annotate DO CONCURRENT - loops with annot_expr_parallel_kind instead of just - annot_expr_ivdep_kind. - -2017-11-15 Martin Liska - - * options.c (gfc_post_options): - Do not set default value of warn_return_type. - * trans-decl.c (gfc_trans_deferred_vars): - Compare warn_return_type for greater than zero. - (generate_local_decl): Likewise - (gfc_generate_function_code): Likewise. - -2017-11-13 Fritz Reese - - PR fortran/78240 - * decl.c (match_clist_expr): Replace gcc_assert with proper - handling of bad result from spec_size(). - * resolve.c (check_data_variable): Avoid NULL dereference when passing - locus to gfc_error. - -2017-11-11 Janus Weil - - PR fortran/82932 - * resolve.c (update_compcall_arglist): Improve error recovery, - remove a gcc_assert. - -2017-11-10 Fritz Reese - - PR fortran/82886 - * gfortran.h (gfc_build_init_expr): New prototype. - * invoke.texi (finit-derived): Update documentation. - * expr.c (gfc_build_init_expr): New, from gfc_build_default_init_expr. - (gfc_build_default_init_expr): Redirect to gfc_build_init_expr(,,false) - (component_initializer): Force building initializers using - gfc_build_init_expr(,,true). - -2017-11-10 Martin Sebor - - PR c/81117 - * gcc/fortran/decl.c (build_sym): Use strcpy instead of strncpy. - -2017-11-10 Paul Thomas - - PR fortran/82934 - * trans-stmt.c (gfc_trans_allocate): Remove the gcc_assert on - null string length for assumed length typespec and set - expr3_esize to NULL_TREE; - -2017-11-09 Paul Thomas - - PR fortran/78619 - * check.c (same_type_check): Introduce a new argument 'assoc' - with default value false. If this is true, use the symbol type - spec of BT_PROCEDURE expressions. - (gfc_check_associated): Set 'assoc' true in the call to - 'same_type_check'. - -2017-11-09 Steven G. Kargl - - PR fortran/78814 - * interface.c (symbol_rank): Check for NULL pointer. - -2017-11-08 Steven G. Kargl - - PR Fortran/82841 - * simplify.c(gfc_simplify_transfer): Do not dereference a NULL pointer. - Unwrap a short line. - -2017-11-08 Steven G. Kargl - - PR fortran/82884 - * arith.c (gfc_hollerith2character): Clear pad. - -2017-11-08 Janne Blomqvist - - PR 82869 - * convert.c (truthvalue_conversion): Use logical_type_node. - * trans-array.c (gfc_trans_allocate_array_storage): Likewise. - (gfc_trans_create_temp_array): Likewise. - (gfc_trans_array_ctor_element): Likewise. - (gfc_trans_array_constructor_value): Likewise. - (trans_array_constructor): Likewise. - (trans_array_bound_check): Likewise. - (gfc_conv_array_ref): Likewise. - (gfc_trans_scalarized_loop_end): Likewise. - (gfc_conv_array_extent_dim): Likewise. - (gfc_array_init_size): Likewise. - (gfc_array_allocate): Likewise. - (gfc_trans_array_bounds): Likewise. - (gfc_trans_dummy_array_bias): Likewise. - (gfc_conv_array_parameter): Likewise. - (duplicate_allocatable): Likewise. - (duplicate_allocatable_coarray): Likewise. - (structure_alloc_comps): Likewise - (get_std_lbound): Likewise - (gfc_alloc_allocatable_for_assignment): Likewise - * trans-decl.c (add_argument_checking): Likewise - (gfc_generate_function_code): Likewise - * trans-expr.c (gfc_copy_class_to_class): Likewise - (gfc_trans_class_array_init_assign): Likewise - (gfc_trans_class_init_assign): Likewise - (gfc_conv_expr_present): Likewise - (gfc_conv_substring): Likewise - (gfc_conv_cst_int_power): Likewise - (gfc_conv_expr_op): Likewise - (gfc_conv_procedure_call): Likewise - (fill_with_spaces): Likewise - (gfc_trans_string_copy): Likewise - (gfc_trans_alloc_subarray_assign): Likewise - (gfc_trans_pointer_assignment): Likewise - (gfc_trans_scalar_assign): Likewise - (fcncall_realloc_result): Likewise - (alloc_scalar_allocatable_for_assignment): Likewise - (trans_class_assignment): Likewise - (gfc_trans_assignment_1): Likewise - * trans-intrinsic.c (build_fixbound_expr): Likewise - (gfc_conv_intrinsic_aint): Likewise - (gfc_trans_same_strlen_check): Likewise - (conv_caf_send): Likewise - (trans_this_image): Likewise - (conv_intrinsic_image_status): Likewise - (trans_image_index): Likewise - (gfc_conv_intrinsic_bound): Likewise - (conv_intrinsic_cobound): Likewise - (gfc_conv_intrinsic_mod): Likewise - (gfc_conv_intrinsic_dshift): Likewise - (gfc_conv_intrinsic_dim): Likewise - (gfc_conv_intrinsic_sign): Likewise - (gfc_conv_intrinsic_ctime): Likewise - (gfc_conv_intrinsic_fdate): Likewise - (gfc_conv_intrinsic_ttynam): Likewise - (gfc_conv_intrinsic_minmax): Likewise - (gfc_conv_intrinsic_minmax_char): Likewise - (gfc_conv_intrinsic_anyall): Likewise - (gfc_conv_intrinsic_arith): Likewise - (gfc_conv_intrinsic_minmaxloc): Likewise - (gfc_conv_intrinsic_minmaxval): Likewise - (gfc_conv_intrinsic_btest): Likewise - (gfc_conv_intrinsic_bitcomp): Likewise - (gfc_conv_intrinsic_shift): Likewise - (gfc_conv_intrinsic_ishft): Likewise - (gfc_conv_intrinsic_ishftc): Likewise - (gfc_conv_intrinsic_leadz): Likewise - (gfc_conv_intrinsic_trailz): Likewise - (gfc_conv_intrinsic_mask): Likewise - (gfc_conv_intrinsic_spacing): Likewise - (gfc_conv_intrinsic_rrspacing): Likewise - (gfc_conv_intrinsic_size): Likewise - (gfc_conv_intrinsic_sizeof): Likewise - (gfc_conv_intrinsic_transfer): Likewise - (gfc_conv_allocated): Likewise - (gfc_conv_associated): Likewise - (gfc_conv_same_type_as): Likewise - (gfc_conv_intrinsic_trim): Likewise - (gfc_conv_intrinsic_repeat): Likewise - (conv_isocbinding_function): Likewise - (conv_intrinsic_ieee_is_normal): Likewise - (conv_intrinsic_ieee_is_negative): Likewise - (conv_intrinsic_ieee_copy_sign): Likewise - (conv_intrinsic_move_alloc): Likewise - * trans-io.c (set_parameter_value_chk): Likewise - (set_parameter_value_inquire): Likewise - (set_string): Likewise - * trans-openmp.c (gfc_walk_alloc_comps): Likewise - (gfc_omp_clause_default_ctor): Likewise - (gfc_omp_clause_copy_ctor): Likewise - (gfc_omp_clause_assign_op): Likewise - (gfc_omp_clause_dtor): Likewise - (gfc_omp_finish_clause): Likewise - (gfc_trans_omp_clauses): Likewise - (gfc_trans_omp_do): Likewise - * trans-stmt.c (gfc_trans_goto): Likewise - (gfc_trans_sync): Likewise - (gfc_trans_arithmetic_if): Likewise - (gfc_trans_simple_do): Likewise - (gfc_trans_do): Likewise - (gfc_trans_forall_loop): Likewise - (gfc_trans_where_2): Likewise - (gfc_trans_allocate): Likewise - (gfc_trans_deallocate): Likewise - * trans-types.c (gfc_init_types): Initialize logical_type_node and - their true/false trees. - (gfc_get_array_descr_info): Use logical_type_node. - * trans-types.h (logical_type_node): New tree. - (logical_true_node): Likewise. - (logical_false_node): Likewise. - * trans.c (gfc_trans_runtime_check): Use logical_type_node. - (gfc_call_malloc): Likewise - (gfc_allocate_using_malloc): Likewise - (gfc_allocate_allocatable): Likewise - (gfc_add_comp_finalizer_call): Likewise - (gfc_add_finalizer_call): Likewise - (gfc_deallocate_with_status): Likewise - (gfc_deallocate_scalar_with_status): Likewise - (gfc_call_realloc): Likewise - -2017-11-06 Paul Thomas - - PR fortran/69739 - * trans-expr.c (gfc_map_intrinsic_function): Return false for - bounds without the DIM argument instead of ICEing. - -2017-11-06 Martin Liska - - PR middle-end/82404 - * options.c (gfc_post_options): Set default value of - -Wreturn-type to false. - -2017-11-05 Thomas Koenig - - PR fortran/82471 - * lang.opt (ffrontend-loop-interchange): New option. - (Wfrontend-loop-interchange): New option. - * options.c (gfc_post_options): Handle ffrontend-loop-interchange. - * frontend-passes.c (gfc_run_passes): Run - optimize_namespace if flag_frontend_optimize or - flag_frontend_loop_interchange are set. - (optimize_namespace): Run functions according to flags set; - also call index_interchange. - (ind_type): New function. - (has_var): New function. - (index_cost): New function. - (loop_comp): New function. - -2017-11-05 Paul Thomas - - PR fortran/78641 - * resolve.c (resolve_ordinary_assign): Do not add the _data - component for class valued array constructors being assigned - to derived type arrays. - * trans-array.c (gfc_trans_array_ctor_element): Take the _data - of class valued elements for assignment to derived type arrays. - -2017-11-05 Paul Thomas - - PR fortran/81447 - PR fortran/82783 - * resolve.c (resolve_component): There is no need to resolve - the components of a use associated vtype. - (resolve_fl_derived): Unconditionally generate a vtable for any - module derived type, as long as the standard is F2003 or later - and it is not a vtype or a PDT template. - -2017-11-05 Tom de Vries - - PR other/82784 - * parse.c (match, matcha, matchs, matcho, matchds, matchdo): Remove - semicolon after "do {} while (0)". - -2017-11-04 Andre Vehreschild - - * trans-expr.c (gfc_trans_assignment_1): Character kind conversion may - create a loop variant temporary, too. - * trans-intrinsic.c (conv_caf_send): Treat char arrays as arrays and - not as scalars. - * trans.c (get_array_span): Take the character kind into account when - doing pointer arithmetic. - -2017-11-04 Thomas Koenig - - PR fortran/29600 - * gfortran.h (gfc_check_f): Replace fm3l with fm4l. - * intrinsic.h (gfc_resolve_maxloc): Add gfc_expr * to argument - list in protoytpe. - (gfc_resolve_minloc): Likewise. - * check.c (gfc_check_minloc_maxloc): Handle kind argument. - * intrinsic.c (add_sym_3_ml): Rename to - (add_sym_4_ml): and handle kind argument. - (add_function): Replace add_sym_3ml with add_sym_4ml and add - extra arguments for maxloc and minloc. - (check_specific): Change use of check.f3ml with check.f4ml. - * iresolve.c (gfc_resolve_maxloc): Handle kind argument. If - the kind is smaller than the smallest library version available, - use gfc_default_integer_kind and convert afterwards. - (gfc_resolve_minloc): Likewise. - -2017-11-04 Paul Thomas - - PR fortran/81735 - * trans-decl.c (gfc_trans_deferred_vars): Do a better job of a - case where 'tmp' was used unititialized and remove TODO. - -2017-11-03 Steven G. Kargl - - PR fortran/82796 - * resolve.c (resolve_equivalence): An entity in a common block within - a module cannot appear in an equivalence statement if the entity is - with a pure procedure. - -2017-10-31 Jim Wilson - - * parse.c (unexpected_eof): Call gcc_unreachable before return. - -2017-10-30 Paul Thomas - - PR fortran/80850 - * trans_expr.c (gfc_conv_procedure_call): When passing a class - argument to an unlimited polymorphic dummy, it is wrong to cast - the passed expression as unlimited, unless it is unlimited. The - correct way is to assign to each of the fields and set the _len - field to zero. - -2017-10-30 Steven G. Kargl - - * resolve.c (resolve_transfer): Set derived to correct symbol for - BT_CLASS. - -2017-10-29 Jim Wilson - - * invoke.texi: Delete adb and sdb references. - -2017-10-28 Andre Vehreschild - - * check.c (gfc_check_co_reduce): Clarify error message. - -2017-10-28 Paul Thomas - - PR fortran/81758 - * trans-expr.c (trans_class_vptr_len_assignment): 'vptr_expr' - must only be set if the right hand side expression is of type - class. - -2017-10-27 Steven G. Kargl - - PR fortran/82620 - * match.c (gfc_match_allocate): Exit early on syntax error. - -2017-10-27 Thomas Koenig - - PR fortran/56342 - * simplify.c (is_constant_array_expr): If the expression is - a parameter array, call gfc_simplify_expr. - -2017-10-25 Bernhard Reutner-Fischer - - * match.c (gfc_match_type_is): Fix typo in error message. - -2017-10-21 Paul Thomas - - PR fortran/82586 - * decl.c (gfc_get_pdt_instance): Remove the error message that - the parameter does not have a corresponding component since - this is now taken care of when the derived type is resolved. Go - straight to error return instead. - (gfc_match_formal_arglist): Make the PDT relevant errors - immediate so that parsing of the derived type can continue. - (gfc_match_derived_decl): Do not check the match status on - return from gfc_match_formal_arglist for the same reason. - * resolve.c (resolve_fl_derived0): Check that each type - parameter has a corresponding component. - - PR fortran/82587 - * resolve.c (resolve_generic_f): Check that the derived type - can be used before resolving the struture constructor. - - PR fortran/82589 - * symbol.c (check_conflict): Add the conflicts involving PDT - KIND and LEN attributes. - -2017-10-19 Bernhard Reutner-Fischer - - * interface.c (check_sym_interfaces, check_uop_interfaces, - gfc_check_interfaces): Base interface_name buffer off - GFC_MAX_SYMBOL_LEN. - -2017-10-19 Jakub Jelinek - - PR fortran/82568 - * gfortran.h (gfc_resolve_do_iterator): Add a bool arg. - (gfc_resolve_omp_local_vars): New declaration. - * openmp.c (omp_current_ctx): Make static. - (gfc_resolve_omp_parallel_blocks): Handle EXEC_OMP_TASKLOOP - and EXEC_OMP_TASKLOOP_SIMD. - (gfc_resolve_do_iterator): Add ADD_CLAUSE argument, if false, - don't actually add any clause. Move omp_current_ctx test - earlier. - (handle_local_var, gfc_resolve_omp_local_vars): New functions. - * resolve.c (gfc_resolve_code): Call gfc_resolve_omp_parallel_blocks - instead of just gfc_resolve_omp_do_blocks for EXEC_OMP_TASKLOOP - and EXEC_OMP_TASKLOOP_SIMD. - (gfc_resolve_code): Adjust gfc_resolve_do_iterator caller. - (resolve_codes): Call gfc_resolve_omp_local_vars. - -2017-10-19 Bernhard Reutner-Fischer - - * gfortran.h (gfc_lookup_function_fuzzy): New declaration. - (gfc_closest_fuzzy_match): New declaration. - (vec_push): New definition. - * misc.c (gfc_closest_fuzzy_match): New definition. - * resolve.c: Include spellcheck.h. - (lookup_function_fuzzy_find_candidates): New static function. - (lookup_uop_fuzzy_find_candidates): Likewise. - (lookup_uop_fuzzy): Likewise. - (resolve_operator) : Call lookup_uop_fuzzy. - (gfc_lookup_function_fuzzy): New definition. - (resolve_unknown_f): Call gfc_lookup_function_fuzzy. - * interface.c (check_interface0): Likewise. - (lookup_arg_fuzzy_find_candidates): New static function. - (lookup_arg_fuzzy ): Likewise. - (compare_actual_formal): Call lookup_arg_fuzzy. - * symbol.c: Include spellcheck.h. - (lookup_symbol_fuzzy_find_candidates): New static function. - (lookup_symbol_fuzzy): Likewise. - (gfc_set_default_type): Call lookup_symbol_fuzzy. - (lookup_component_fuzzy_find_candidates): New static function. - (lookup_component_fuzzy): Likewise. - (gfc_find_component): Call lookup_component_fuzzy. - -2017-10-18 Thomas Koenig - - PR fortran/82567 - * frontend-passes.c (combine_array_constructor): If an array - constructor is all constants and has more elements than a small - constant, don't convert a*[b,c] to [a*b,a*c] to reduce compilation - times. - -2017-10-18 Thomas Koenig - - PR fortran/79795 - * resolve.c (resovle_symbol): Change gcc_assert to - sensible error message. - -2017-10-18 Paul Thomas - - PR fortran/82550 - * trans_decl.c (gfc_get_symbol_decl): Procedure symbols that - have the 'used_in_submodule' attribute should be processed by - 'gfc_get_extern_function_decl'. - -2017-10-16 Fritz Reese - - PR fortran/82511 - * trans-io.c (transfer_expr): Treat BT_UNION as BT_DERIVED. - -2017-10-15 Thomas Koenig - - PR fortran/82372 - * fortran/scanner.c (last_error_char): New global variable. - (gfc_scanner_init_1): Set last_error_char to NULL. - (gfc_gobble_whitespace): If a character not printable or - not newline, issue an error. - -2017-10-13 Paul Thomas - - PR fortran/81048 - * resolve.c (resolve_symbol): Ensure that derived type array - results get default initialization. - -2017-10-11 Nathan Sidwell - - * cpp.c (gfc_cpp_add_include_path): Update incpath_e names. - (gfc_cpp_add_include_path_after): Likewise. - -2017-10-10 Richard Sandiford - - * target-memory.c (gfc_interpret_logical): Use wi::to_wide when - operating on trees as wide_ints. - * trans-const.c (gfc_conv_tree_to_mpz): Likewise. - * trans-expr.c (gfc_conv_cst_int_power): Likewise. - * trans-intrinsic.c (trans_this_image): Likewise. - (gfc_conv_intrinsic_bound): Likewise. - (conv_intrinsic_cobound): Likewise. - -2017-10-08 Steven G. Kargl - - * check.c (gfc_check_x): Remove function. - * intrinsic.c (add_functions): Use gfc_check_fn_r. - -2017-10-08 Paul Thomas - - PR fortran/82375 - * module.c : Bump up MOD_VERSION to 15. - (mio_component): Edit comment about PDT specification list. - (mio_expr, mio_symbol): Include the expression and symbol PDT - specification lists in the same way as in mio_component. - -2017-10-08 Thomas Koenig - - * dump_prase_tree (show_symbol): Output list of variables in - NAMELIST. - (show_code_node): Add new line for ELSE and END DO for DO - CONCURRENT. - * invoke.texi: Document that the output of - -fdump-fortran-original, -fdump-fortran-optimized and - -fdump-parse-tree is unsable and may lead to ICEs. - -2017-10-07 Paul Thomas - - PR fortran/82375 - * class.c (gfc_find_derived_vtab): Return NULL for a passed - pdt template to prevent bad procedures from being written. - * decl.c (gfc_get_pdt_instance): Do not use the default - initializer for pointer and allocatable pdt type components. If - the component is allocatbale, set the 'alloc_comp' attribute of - 'instance'. - * module.c : Add a prototype for 'mio_actual_arglist'. Add a - boolean argument 'pdt'. - (mio_component): Call it for the parameter list of pdt type - components with 'pdt' set to true. - (mio_actual_arg): Add the boolean 'pdt' and, if it is set, call - mio_integer for the 'spec_type'. - (mio_actual_arglist): Add the boolean 'pdt' and use it in the - call to mio_actual_arg. - (mio_expr, mio_omp_udr_expr): Call mio_actual_arglist with - 'pdt' set false. - * resolve.c (get_pdt_spec_expr): Add the parameter name to the - KIND parameter error. - (get_pdt_constructor): Check that cons->expr is non-null. - * trans-array.c (structure_alloc_comps): For deallocation of - allocatable components, ensure that parameterized components - are deallocated first. Likewise, when parameterized components - are allocated, nullify allocatable components first. Do not - recurse into pointer or allocatable pdt components while - allocating or deallocating parameterized components. Test that - parameterized arrays or strings are allocated before freeing - them. - (gfc_trans_pointer_assignment): Call the new function. Tidy up - a minor whitespace issue. - trans-decl.c (gfc_trans_deferred_vars): Set 'tmp' to NULL_TREE - to prevent the expression from being used a second time. - -2017-10-07 Thomas Koenig - - PR fortran/49232 - * expr.c (gfc_check_pointer_assign): Error - for non-contiguous rhs. - -2017-10-07 Thomas Koenig - - * gfortran.h (async_io_dt): Add external reference. - * io.c (async_io_dt): Add variable. - (compare_to_allowed_values): Add prototyte. Add optional argument - num. If present, set it to the number of the entry that was - matched. - (check_io_constraints): If this is for an asynchronous I/O - statement, set async_io_dt and set the asynchronous flag for - a SIZE tag. - * resolve.c (resolve_transfer): If async_io_dt is set, set - the asynchronous flag on the variable. - (resolve_fl_namelist): If async_io_dt is set, set the asynchronous - flag on all elements of the namelist. - -2017-10-04 Paul Thomas - - PR fortran/60458 - PR fortran/77296 - * resolve.c (resolve_assoc_var): Deferred character type - associate names must not receive an integer conatant length. - * symbol.c (gfc_is_associate_pointer): Deferred character - length functions also require an associate pointer. - * trans-decl.c (gfc_get_symbol_decl): Deferred character - length functions or derived type components require the assoc - name to have variable string length. - * trans-stmt.c (trans_associate_var): Set the string length of - deferred string length associate names. The address expression - is not needed for allocatable, pointer or dummy targets. Change - the comment about defered string length targets. - -2017-10-03 Thomas Koenig - - * io.c (match_wait_element): Correctly match END and EOR tags. - * dump-parse-tree.c (show_code_node): Handle EXEC_WAIT. - -2017-10-02 Paul Thomas - - PR fortran/82312 - * resolve.c (gfc_resolve_code): Simplify condition for class - pointer assignments becoming regular assignments by asserting - that only class valued targets are permitted. - * trans-expr.c (trans_class_pointer_fcn): New function using a - block of code from gfc_trans_pointer_assignment. - (gfc_trans_pointer_assignment): Call the new function. Tidy up - a minor whitespace issue. - -2017-10-01 Dominique d'Humieres - - PR fortran/61450 - * parse.c (gfc_global_used): Replace the gfc_internal_error - with an error. - -2017-09-29 Dominique d'Humieres - - PR fortran/25071 - * interface.c (compare_actual_formal): Change warnings to errors - when "Actual argument contains too few elements for dummy - argument", unless -std=legacy is used. - -2017-09-27 Thomas Schwinge - - * lang.opt : End help text with a period. - -2017-09-26 Thomas Koenig - - * frontend-passes.c (do_subscript): Don't do anything - if inside an associate list. - -2017-09-25 Thomas Koenig - - * lang.opt: Add -Wdo-subscript. - * frontend-passes.c (do_t): New type. - (doloop_list): Use variable of do_type. - (if_level): Variable to track if levels. - (select_level): Variable to track select levels. - (gfc_run_passes): Initialize i_level and select_level. - (doloop_code): Record current level of if + select - level in doloop_list. Add seen_goto if there could - be a branch outside the loop. Use different type for - doloop_list. - (doloop_function): Call do_intent and do_subscript; move - functionality of checking INTENT to do_intent. - (insert_index_t): New type, for callback_insert_index. - (callback_insert_index): New function. - (insert_index): New function. - (do_subscript): New function. - (do_intent): New function. - (gfc_code_walker): Keep track of if_level and select_level. - * invoke.texi: Document -Wdo-subscript. - -2017-09-25 Janne Blomqvist - - * trans.c (gfc_unlikely): Remove unnecessary fold_convert. - (gfc_likely): Likewise. - -2017-09-24 Thomas Koenig - Steven G. Kargl - - PR fortran/80118 - * expr.c (gfc_get_full_arrayspec_from_expr): If there is - no symtree, set array spec to NULL. - -2017-09-23 Janus Weil - - PR fortran/82143 - * lang.opt: Add the options -fdefault-real-10 and -fdefault-real-16. - Rename flag_default_real to flag_default_real_8. - * invoke.texi: Add documentation. - * module.c (use_iso_fortran_env_module): flag_default_real is renamed. - * trans-types.c (gfc_init_kinds): Implement the flags - -fdefault-real-10 and -fdefault-real-16. Make -fdefault-double-8 work - without -fdefault-real-8. - -2017-09-21 Paul Thomas - - 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 Cesar Philippidis - - * openmp.c (gfc_match_oacc_wait): Don't restrict wait directive - arguments to constant integers. - -2017-09-17 Paul Thomas - - PR fortran/82173 - * decl.c (gfc_get_pdt_instance): Use the component initializer - expression for the default, rather than the parameter value. - * resolve.c (resolve_pdt): New function. - (resolve_symbol): Call it. Remove false error, prohibiting - deferred type parameters for dummy arguments. - - PR fortran/60483 - * primary.c (gfc_match_varspec): If the type of an associate - name is unknown and yet there is a match, try resolving the - target expression and using its type. - -2017-09-15 Paul Thomas - - PR fortran/82184 - trans-decl.c (gfc_trans_deferred_vars): Do not null the 'span' - field if the symbol is either implicitly or explicitly saved. - -2017-09-13 Paul Thomas - - PR fortran/82173 - * decl.c (match_char_kind): If the kind expression is - parameterized, save it in saved_kind_expr and set kind = 0. - (gfc_get_pdt_instance): Resolve and simplify before emitting - error on expression kind. Insert a missing simplification after - insertion of kind expressions. - -2017-09-12 Paul Thomas - - PR fortran/82173 - PR fortran/82168 - * decl.c (variable_decl): Check pdt template components for - appearance of KIND/LEN components in the type parameter name - list, that components corresponding to type parameters have - either KIND or LEN attributes and that KIND or LEN components - are scalar. Copy the initializer to the parameter value. - (gfc_get_pdt_instance): Add a label 'error_return' and follow - it with repeated code, while replacing this code with a jump. - Check if a parameter appears as a component in the template. - Make sure that the parameter expressions are integer. Validate - KIND expressions. - (gfc_match_decl_type_spec): Search for pdt_types in the parent - namespace since they are instantiated in the template ns. - * expr.c (gfc_extract_int): Use a KIND parameter if it - appears as a component expression. - (gfc_check_init_expr): Allow expressions with the pdt_kind - attribute. - *primary.c (gfc_match_actual_arglist): Make sure that the first - keyword argument is recognised when 'pdt' is set. - -2017-09-10 Paul Thomas - - PR fortran/34640 - PR fortran/40737 - PR fortran/55763 - PR fortran/57019 - PR fortran/57116 - - * expr.c (is_subref_array): Add class pointer array dummies - to the list of expressions that return true. - * trans-array.c: Add SPAN_FIELD and update indices for - subsequent fields. - (gfc_conv_descriptor_span, gfc_conv_descriptor_span_get, - gfc_conv_descriptor_span_set, is_pointer_array, - get_array_span): New functions. - (gfc_get_descriptor_offsets_for_info): New function to preserve - API for access to descriptor fields for trans-types.c. - (gfc_conv_scalarized_array_ref): If the expression is a subref - array, make sure that info->descriptor is a descriptor type. - Otherwise, if info->descriptor is a pointer array, set 'decl' - and fix it if it is a component reference. - (build_array_ref): Simplify handling of class array refs by - passing the vptr to gfc_build_array_ref rather than generating - the pointer arithmetic in this function. - (gfc_conv_array_ref): As in gfc_conv_scalarized_array_ref, set - 'decl'. - (gfc_array_allocate): Set the span field if this is a pointer - array. Use the expr3 element size if it is available, so that - the dynamic type element size is used. - (gfc_conv_expr_descriptor): Set the span field for pointer - assignments. - * trans-array.h: Prototypes for gfc_conv_descriptor_span_get - gfc_conv_descriptor_span_set and - gfc_get_descriptor_offsets_for_info added. - trans-decl.c (gfc_get_symbol_decl): If a non-class pointer - array, mark the declaration as a GFC_DECL_PTR_ARRAY_P. Remove - the setting of GFC_DECL_SPAN. - (gfc_trans_deferred_vars): Set the span field to zero in thge - originating scope. - * trans-expr.c (gfc_conv_procedure_call): Do not use copy-in/ - copy-out to pass subref expressions to a pointer dummy. - (gfc_trans_pointer_assignment): Remove code for setting of - GFC_DECL_SPAN. Set the 'span' field for non-class pointers to - class function results. Likewise for rank remap. In the case - that the target is not a whole array, use the target array ref - for remap and, since the 'start' indices are missing, set the - lbounds to one, as required by the standard. - * trans-intrinsic.c (conv_expr_ref_to_caf_ref): Pick up the - 'token' offset from the field decl in the descriptor. - (conv_isocbinding_subroutine): Set the 'span' field. - * trans-io.c (gfc_trans_transfer): Always scalarize pointer - array io. - * trans-stmt.c (trans_associate_var): Set the 'span' field. - * trans-types.c (gfc_get_array_descriptor_base): Add the 'span' - field to the array descriptor. - (gfc_get_derived_type): Pointer array components are marked as - GFC_DECL_PTR_ARRAY_P. - (gfc_get_array_descr_info): Replaced API breaking code for - descriptor offset calling gfc_get_descriptor_offsets_for_info. - * trans.c (get_array_span): New function. - (gfc_build_array_ref): Simplify by calling get_array_span and - obtain 'span' if 'decl' or 'vptr' present. - * trans.h : Rename DECL_LANG_FLAG_6, GFC_DECL_SUBREF_ARRAY_P, - as GFC_DECL_PTR_ARRAY_P. - -2017-09-09 Paul Thomas - - * decl.c : Add decl_type_param_list, type_param_spec_list as - static variables to hold PDT spec lists. - (build_sym): Copy 'type_param_spec_list' to symbol spec_list. - (build_struct): Copy the 'saved_kind_expr' to the component - 'kind_expr'. Check that KIND or LEN components appear in the - decl_type_param_list. These should appear as symbols in the - f2k_derived namespace. If the component is itself a PDT type, - copy the decl_type_param_list to the component param_list. - (gfc_match_kind_spec): If the KIND expression is parameterized - set KIND to zero and store the expression in 'saved_kind_expr'. - (insert_parameter_exprs): New function. - (gfc_insert_kind_parameter_exprs): New function. - (gfc_insert_parameter_exprs): New function. - (gfc_get_pdt_instance): New function. - (gfc_match_decl_type_spec): Match the decl_type_spec_list if it - is present. If it is, call 'gfc_get_pdt_instance' to obtain the - specific instance of the PDT. - (match_attr_spec): Match KIND and LEN attributes. Check for the - standard and for type/kind of the parameter. They are also not - allowed outside a derived type definition. - (gfc_match_data_decl): Null the decl_type_param_list and the - type_param_spec_list on entry and free them on exit. - (gfc_match_formal_arglist): If 'typeparam' is true, add the - formal symbol to the f2k_derived namespace. - (gfc_match_derived_decl): Register the decl_type_param_list - if this is a PDT. If this is a type extension, gather up all - the type parameters and put them in the right order. - *dump-parse-tree.c (show_attr): Signal PDT templates and the - parameter attributes. - (show_components): Output parameter atrributes and component - parameter list. - (show_symbol): Show variable parameter lists. - * expr.c (expr.c): Copy the expression parameter list. - (gfc_is_constant_expr): Pass on symbols representing PDT - parameters. - (gfc_check_init_expr): Break on PDT KIND parameters and - PDT parameter expressions. - (gfc_check_assign): Assigning to KIND or LEN components is an - error. - (derived_parameter_expr): New function. - (gfc_derived_parameter_expr): New function. - (gfc_spec_list_type): New function. - * gfortran.h : Add enum gfc_param_spec_type. Add the PDT attrs - to the structure symbol_attr. Add the 'kind_expr' and - 'param_list' field to the gfc_component structure. Comment on - the reuse of the gfc_actual_arglist structure as storage for - type parameter spec lists. Add the new field 'spec_type' to - this structure. Add 'param_list' fields to gfc_symbol and - gfc_expr. Add prototypes for gfc_insert_kind_parameter_exprs, - gfc_insert_parameter_exprs, gfc_add_kind, gfc_add_len, - gfc_derived_parameter_expr and gfc_spec_list_type. - * interface.c (gfc_compare_derived_types): Treat PDTs in the - same way as sequence types. - * match.c : Add variable 'type_param_spec_list'. - (gfc_op2string, gfc_match_member_sep, gfc_match_label): Remove - trailing whitespace. - (match_derived_type_spec): Match PDTs and find specific - instance. - (gfc_match_type_spec): Remove more trailing whitespace. - (gfc_match_allocate): Assumed or deferred parameters cannot - appear here. Copy the type parameter spec list to the expr for - the allocatable entity. Free 'type_param_spec_list'. - (gfc_match_common, gfc_match_namelist, gfc_match_module): Still - more trailing whitespace to remove. - (gfc_match_type_is): Allow PDT typespecs. - * match.h : Modify prototypes for gfc_match_formal_arglist and - gfc_match_actual_arglist. - * module.c (ab_attribute, mstring attr_bits): PDT attributes - added. - (mio_symbol_attribute): PDT attributes handled. - (mio_component): Deal with 'kind_expr' field. - (mio_full_f2k_derived): For PDT templates, transfer the formal - namespace symroot to the f2k_derived namespace. - *primary.c (match_keyword_arg, gfc_match_actual_arglist): Add - modifications to handle PDT spec lists. These are flagged in - both cases by new boolean arguments, whose prototype defaults - are false. - (gfc_match_structure_constructor, match_variable): Remove yet - more trailing whitespace. - * resolve.c (get_pdt_spec_expr, get_pdt_constructor): New - functions. - (resolve_structure_cons): If the constructor is a PDT template, - call get_pdt_constructor to build it using the parameter lists - and then get the specific instance of the PDT. - (resolve_component): PDT strings need a hidden string length - component like deferred characters. - (resolve_symbol): Dummy PDTs cannot have deferred parameters. - * symbol.c (gfc_add_kind, gfc_add_len): New functions. - (free_components): Free 'kind_expr' and 'param_list' fields. - (gfc_free_symbol): Free the 'param_list' field. - (gfc_find_sym_tree): If the current state is a PDT template, - look for the symtree in the f2k_derived namspaces. - trans-array.c (structure_alloc_comps): Allocate and deallocate - PDTs. Check dummy arguments for compliance of LEN parameters. - Add the new functions to the preceeding enum. - (gfc_allocate_pdt_comp, gfc_deallocate_pdt_comp and - gfc_check_pdt_dummy): New functions calling above. - * trans-array.h : Add prototypes for these functions. - trans-decl.c (gfc_get_symbol_decl): Call gfc_defer_symbol_init - as appropriate for PDT symbols. - (gfc_trans_deferred_vars): Allocate/deallocate PDT entities as - they come into and out of scope. Exclude pdt_types from being - 'gcc_unreachable'. - (gfc_trans_subcomponent_assign): PDT array components must be - handles as if they are allocatable. - * trans-stmt.c (gfc_trans_allocate): Handle initialization of - PDT entities. - (gfc_trans_deallocate): Likewise. - * trans-types.c (gfc_get_derived_type): PDT templates must not - arrive here. PDT string components are handles as if deferred. - Similarly, PDT arrays are treated as if allocatable. PDT - strings are pointer types. - * trans.c (gfc_deferred_strlen): Handle PDT strings in the same - way as deferred characters. - -2017-09-01 Jakub Jelinek - - PR c/81887 - * parse.c (decode_omp_directive): Use matchs instead of matcho for - end ordered and ordered directives, except for ordered depend. For - -fopenmp-simd and ordered depend, reject the stmt. - * trans-openmp.c (gfc_trans_omp_ordered): For -fopenmp-simd ignore - threads clause and if simd clause isn't present, just translate the - body. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * trans-types.c (gfc_init_kinds): Use opt_scalar_int_mode for - the mode iterator. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * target-memory.c (size_integer): Use SCALAR_INT_TYPE_MODE. - (size_logical): Likewise. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * trans-types.c (gfc_type_for_mode): Use is_a . - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * trans-types.c (gfc_init_kinds): Use opt_scalar_float_mode - and FOR_EACH_MODE_IN_CLASS. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * target-memory.c (size_float): Use SCALAR_FLOAT_TYPE_MODE - instead of TYPE_MODE. - -2017-08-30 Richard Sandiford - Alan Hayward - David Sherwood - - * trans-types.c (gfc_init_kinds): Use machine_mode instead of int - for "mode". - -2017-08-28 Janus Weil - - PR fortran/81770 - * expr.c (gfc_check_pointer_assign): Improve the check whether pointer - may outlive pointer target. - -2017-08-27 Thomas Koenig - - PR fortran/81974 - * frontend-passes (inline_matumul_assign): Explicity - set typespec for call to CONJG. - -2017-08-21 Jerry DeLisle - - PR fortran/81296 - * trans-io.c (get_dtio_proc): Add check for format label and set - formatted flag accordingly. Reorganize the code a little. - -2017-08-16 Thomas Koenig - - PR fortran/81116 - * frontend-passes.c (realloc_string_callback): If expression is a - concatenation, also check for dependency. - (constant_string_length): Check for presence of symtree. - -2017-08-13 Thomas Koenig - - * gfortran.texi: Document format of unformatted sequential files. - -2017-08-11 Thomas Koenig - - * invoke.texi: Actually commit change about -Ofast. - -2017-08-11 Thomas Koenig - - PR fortran/60355 - * resolve.c (resolve_symbol): Adjust (and reformat) - comment. Perform check if a BIND(C) is declared - at module level regardless of whether it is typed - implicitly or not. - -2017-08-10 Fritz Reese - - * options.c (set_dec_flags): Only set legacy standards when value - is not zero. - -2017-08-10 Fritz Reese - - * options.c (set_dec_flags, gfc_post_options): Only set flag_d_lines - with -fdec when not set by user. - -2017-08-10 Fritz Reese - - * decl.c (attr_seen): New static variable. - * decl.c (variable_decl): Match %FILL in STRUCTURE body. - * gfortran.texi: Update documentation. - -2017-08-08 Martin Liska - - * trans-types.c: Include header files. - -2017-08-07 Thomas Koenig - - PR fortran/68829 - PR fortran/81701 - * options.c: Make -Ofast honor -fmax-stack-var-size. - * invoke.texi: Document change. - -2017-08-01 Thomas König - - PR fortran/79312 - * intrisic.c (gfc_convert_type_warn): Only set typespec for - empty array constructors which don't have it already. - -2017-08-01 Thomas Koenig - - PR fortran/45435 - * lang.opt (fc-prototypes): Add option. - * gfortran.h (gfc_typespec): Add interop_kind to struct. - (gfc_dump_c_prototypes): Add prototype. - * decl.c (gfc_match_kind_spec): Copy symbol used for kind to typespec. - * parse.c (gfc_parse_file): Call gfc_dump_prototypes. - * dump-parse-tree.c (gfc_dump_c_prototypes): New function. - (type_return): New enum. - (get_c_type_name): New function. - (write_decl): New function. - (write_type): New function. - (write_variable): New function. - (write_proc): New function. - (write_interop_decl): New function. - * invoke.texi: Document -fc-prototypes. - -2017-08-01 Dominique d'Humieres - - PR fortran/53542 - * expr.c (gfc_check_init_expr): Use the renamed name. - -2017-07-31 Jakub Jelinek - - * check.c (gfc_check_num_images): Fix a pasto. - -2017-07-29 Jakub Jelinek - - * trans-decl.c (gfc_trans_use_stmts): Pass false as new argument to - the imported_module_or_decl debug hook. - -2017-07-28 Trevor Saunders - - * resolve.c (find_reachable_labels): Adjust. - -2017-07-25 Jakub Jelinek - - * ioparm.def: Use 1U << 31 instead of 1 << 31 as flags2 mask. - -2017-07-24 Thomas Koenig - - * dump-parse-tree.c (show_symbol): Show binding label if present. - -2017-07-24 Thomas Koenig - Mikael Morin - - PR fortran/66102 - * fortran/trans-array.c (gfc_conv_resolve_dependencies): - Break if dependency has been found. - -2017-07-23 Alexander Monakov - - * interface.c (pair_cmp): Fix gfc_symbol comparison. Adjust comment. - -2017-07-18 Nathan Sidwell - - * trans.c (gfc_build_array_ref): Use TYPE_MAX_VALUE. - -2017-07-09 Dominique d'Humieres - - PR fortran/81341 - * class.c (class_array_ref_detected): Remove a redundant - condition. - -2017-07-06 Harald Anlauf - - PR fortran/70071 - * array.c (gfc_ref_dimen_size): Handle bad subscript triplets. - -2017-07-03 Dominique d'Humieres - - PR fortran/79866 - * resolve.c (resolve_symbol): Fix typo. - -2017-07-03 Dominique d'Humieres - - PR fortran/79843 - * symbol.c (check_conflict): Add missing "conflicts". - -2017-06-29 Cesar Philippidis - - PR fortran/77765 - * openmp.c (gfc_match_oacc_routine): Check if proc_name exist before - comparing the routine name against it. - -2017-06-27 Jerry DeLisle - - PR fortran/80164 - * trans-stmt.c (gfc_trans_call): If no code expr, use code->loc - as warning/error locus. - -2017-06-24 Jerry DeLisle - - PR fortran/81160 - * arith.c (wprecision_int_real): Set return value before - mpz_clear and then return after it. - -2017-06-15 Janus Weil - - PR fortran/80983 - * trans-expr.c (gfc_conv_procedure_call): Deallocate the result of - scalar allocatable procedure-pointer components. - -2017-06-10 Thomas Koenig - - PR fortran/80988 - * frontend-passes.c (traverse_io_block): Also - check for variables occurring as indices multiple - time in a single implied DO loop. - -2017-06-05 Janus Weil - - PR fortran/70601 - * trans-expr.c (gfc_conv_procedure_call): Fix detection of allocatable - function results. - -2017-06-05 Nicolas Koenig - - PR fortran/35339 - * frontend-passes.c (traverse_io_block): New function. - (simplify_io_impl_do): New function. - (optimize_namespace): Invoke gfc_code_walker with - simplify_io_impl_do. - -2017-06-02 Jakub Jelinek - - PR fortran/80918 - * openmp.c (resolve_omp_clauses): Fix a typo. - -2017-05-30 David Malcolm - - * error.c (gfc_format_decoder): Update for new bool and - const char ** params. - -2017-05-29 Thomas Koenig - - PR fortran/37131 - * frontend-passes.c (check_conjg_transpose_variable): - Add prototype. - (has_dimen_vector_ref): Likewise - (matmul_temp_args): New function. Add prototype. - (optimize_namespace): Call matmul_temp_args. - -2017-05-28 Thomas Koenig - - * frontend-passes.c (matmul_lhs_realloc): Correct - allocation size for case A1B2. - -2017-05-25 Thomas Koenig - - * dump-parse-tree.c (show_expr): Also replace - with dumpfile for showing values for forgotten - case. - -2017-05-24 Thomas Koenig - - * dump-parse-tree.c (show_expr): Replace stdout - with dumpfile for showing values. - -2017-05-24 Thomas Koenig - - PR fortran/66094 - * frontend-passes.c (matrix_case): Add A2TB2. - (inline_limit_check): Handle MATMUL(TRANSPOSE(A),B) - (inline_matmul_assign): Likewise. - -2017-05-23 Thomas Schwinge - - * openmp.c (OACC_KERNELS_CLAUSES): Add "OMP_CLAUSE_NUM_GANGS", - "OMP_CLAUSE_NUM_WORKERS", "OMP_CLAUSE_VECTOR_LENGTH". - -2017-05-22 Janus Weil - - PR fortran/80766 - * resolve.c (resolve_fl_derived): Make sure that vtype symbols are - properly resolved. - -2017-05-19 Paul Thomas - - PR fortran/80333 - * trans-io.c (nml_get_addr_expr): If we are dealing with class - type data set tmp tree to get that address. - (transfer_namelist_element): Set the array spec to point to the - the class data. - -2017-05-19 David Malcolm - - PR fortran/79852 - * bbt.c (insert): Remove trailing exclamation mark from message. - * decl.c (gfc_match_final_decl): Likewise. - * dump-parse-tree.c (show_expr): Likewise. - * module.c (gfc_use_module): Likewise. - * primary.c (build_actual_constructor): Likewise. - (gfc_convert_to_structure_constructor): Likewise. - -2017-05-19 Thomas Schwinge - - * gfortran.h (enum gfc_omp_default_sharing): Add - "OMP_DEFAULT_PRESENT". - * dump-parse-tree.c (show_omp_clauses): Handle it. - * openmp.c (gfc_match_omp_clauses): Likewise. - * trans-openmp.c (gfc_trans_omp_clauses): Likewise. - -2017-05-18 Fritz Reese - - PR fortran/79968 - * decl.c (match_attr_spec, gfc_match_automatic, - gfc_match_static, gfc_match_structure_decl): Unify diagnostic - errors regarding -fdec options. - * io.c (match_dec_etag, match_dec_vtag, match_dec_ftag): Ditto. - -2017-05-17 Jerry DeLisle - - PR fortran/80741 - * trans-io.c (transfer_namelist_element): Change check from - NULL_TREE to null_pointer_node. - -2017-05-17 Fritz Reese - - PR fortran/80668 - * expr.c (component_initializer): Don't generate initializers for - pointer components. - * invoke.texi (-finit-derived): Document. - -2017-05-16 Paul Thomas - - PR fortran/80554 - * decl.c (build_sym): In a submodule allow overriding of host - associated symbols from the ancestor module with a new - declaration. - -2017-05-15 Steven G. Kargl - - PR fortran/80674 - * trans-stmt.c (gfc_trans_integer_select): Remove redundant condition. - -2017-05-15 Steven G. Kargl - - PR fortran/80752 - * expr.c (gfc_generate_initializer): If type conversion fails, - check for error and return NULL. - -2017-05-14 Nicolas Koenig - - PR fortran/80442 - * array.c (gfc_ref_dimen_size): Simplify stride - expression - * data.c (gfc_advance_section): Simplify start, - end and stride expressions - (gfc_advance_section): Simplify start and end - expressions - (gfc_get_section_index): Simplify start expression - -2017-05-13 Jerry DeLisle - - * io.c (gfc_resolve_dt): Fix returns to bool type. - -2017-05-11 Jerry DeLisle - - PR fortran/78659 - * io.c (dtio_procs_present): Add new function to check for DTIO - procedures relative to I/O statement READ or WRITE. - (gfc_resolve_dt): Add namelist checks using the new function. - * resolve.c (dtio_procs_present): Remove function and related - namelist checks. (resolve_fl_namelist): Add check specific to - Fortran 95 restriction on namelist objects. - -2017-05-11 Nathan Sidwell - - * trans-decl.c: Include dumpfile.h not tree-dump.h, - -2017-05-09 Janus Weil - - PR fortran/79311 - * resolve.c (gfc_resolve_finalizers): Ensure that derived-type - components have a their finalizers resolved, also if the superordinate - type itself has a finalizer. - -2017-05-08 Thomas Koenig - - PR fortran/79930 - * frontend-passes.c (matmul_to_var_expr): New function, - add prototype. - (matmul_to_var_code): Likewise. - (optimize_namespace): Use them from gfc_code_walker. - -2017-05-05 David Malcolm - - * cpp.c (cb_cpp_error): Replace report_diagnostic - with diagnostic_report_diagnostic. - * error.c (gfc_warning): Likewise. - (gfc_warning_now_at): Likewise. - (gfc_warning_now): Likewise. - (gfc_warning_internal): Likewise. - (gfc_error_now): Likewise. - (gfc_fatal_error): Likewise. - (gfc_error_opt): Likewise. - (gfc_internal_error): Likewise. - -2017-05-01 Thomas Koenig - - PR fortran/37131 - * frontend-passes.c (inline_matmul_assign): Also check bounds - for allocatable lhs and matrix-vector-multiplication. - -2017-04-23 Jerry DeLisle - - PR fortran/80484 - * io.c (format_lex): Check for '/' and set token to FMT_SLASH. - (check_format): Move FMT_DT checking code to data_desc section. - * module.c (gfc_match_use): Include the case of INTERFACE_DTIO. - -2017-04-22 Janus Weil - - PR fortran/80121 - * trans-types.c (gfc_conv_procedure_call): Deallocate the components - of allocatable intent(out) arguments. - -2017-04-21 Janus Weil - - PR fortran/80392 - * trans-types.c (gfc_get_derived_type): Prevent an infinite loop when - building a derived type that includes a procedure pointer component - with a polymorphic result. - -2017-04-17 Paul Thomas - - PR fortran/80440 - * module.c (find_symtree_for_symbol): Delete. - (read_module): Remove the call to the above. - -2017-04-14 Janus Weil - - PR fortran/80361 - * class.c (generate_finalization_wrapper): Give the finalization wrapper - the recursive attribute. - -2017-04-10 Nicolas Koenig - Paul Thomas - - PR fortran/69498 - * module.c (gfc_match_submodule): Add error - if function is called in the wrong state. - -2017-04-10 Janus Weil - - PR fortran/80046 - * expr.c (gfc_check_pointer_assign): Check if procedure pointer - components in a pointer assignment need an explicit interface. - -2017-03-18 Nicolas Koenig - - PR fortran/69498 - * symbol.c (gfc_delete_symtree): If there is a period in the name, ignore - everything before it. - -2017-03-28 Janus Weil - - PR fortran/78661 - * trans-io.c (transfer_namelist_element): Perform a polymorphic call - to a DTIO procedure if necessary. - -2017-03-25 Paul Thomas - - PR fortran/80156 - PR fortran/79382 - * decl.c (access_attr_decl): Remove the error for an absent - generic DTIO interface and ensure that symbol has the flavor - FL_PROCEDURE. - -2017-03-22 Dominique d'Humieres - - PR fortran/79838 - * module.c: Remove trailing period. - -2017-03-22 Dominique d'Humieres - - PR fortran/79602 - * decl.c: Replace '%s' with %qs. - * expr.c: Likewise. - * interface.c: Likewise. - * match.c: Likewise. - * primary.c: Likewise. - * resolve.c: Likewise. - - PR fortran/79844 - PR fortran/80011 - * io.c: Remove trailing spaces. - * match.c: Likewise. - * openmp.c: Likewise. - * resolve.c: Likewise. - * trans-intrinsic.c: Likewise. - - PR fortran/79853 - * expr.c: Remove a double spaces. - - PR fortran/79859 - * primary.c: Remove spurious quotes around %qs. - -2017-03-22 Thomas Koenig - - PR fortran/80142 - * frontend-passes.c (combine_array_constructor): Take - location of new expression from constructor expression instead - of constructor. - -2017-03-20 Nicolas Koenig - - PR fortran/39239 - * symbol.c (check_conflict): Report an error if an EQUIVALENCE - object is BIND(C) - -2017-03-18 Nicolas Koenig - - PR fortran/69498 - * decl.c (add_hidden_procptr_result): Fixed Refs count of the - created "ppr@" symbol. - -2017-03-18 Paul Thomas - - PR fortran/79676 - * module.c (mio_symbol_attribute): Remove reset of the flag - 'no_module_procedures'. - (check_for_module_procedures): New function. Move declaration - of 'no_module_procedures' to above it. - (gfc_dump_module): Traverse namespace calling new function. - -2017-03-18 Paul Thomas - - PR fortran/71838 - * symbol.c (check_conflict): A dummy procedure in a submodule, - module procedure is not an error. - (gfc_add_flavor): Ditto. - -2017-03-17 Jerry DeLisle - - PR fortran/79841 - * openmp.c (check_symbol_not_pointer): Adjust diagnostics. - -2017-03-16 Jakub Jelinek - - PR fortran/80010 - * parse.c (gfc_ascii_statement): Use !$ACC for ST_OACC_ATOMIC - and ST_OACC_END_ATOMIC, instead of !ACC. - * trans-decl.c (finish_oacc_declare): Use !$ACC instead of $!ACC. - * openmp.c (gfc_match_oacc_declare, gfc_match_oacc_wait, - gfc_resolve_oacc_declare): Likewise. - - PR fortran/79886 - * error.c (gfc_format_decoder): Rename plus argument to set_locus, - remove ATTRIBUTE_UNUSED from all arguments, call default_tree_printer - if not a Fortran specific spec. - * trans-io.c: Include options.h. - (gfc_build_st_parameter): Temporarily disable -Wpadded around layout - of artificial IO data structures. - -2017-03-15 David Malcolm - - PR fortran/79860 - * resolve.c (resolve_contained_fntype): Make error messages more - amenable to translation. - -2017-03-06 Richard Biener - - PR fortran/79894 - * trans.c (gfc_add_modify_loc): Weaken assert. - -2017-03-05 Andre Vehreschild , - Alessandro Fanfarillo - - * check.c (positive_check): Add new function checking constant for - being greater then zero. - (gfc_check_image_status): Add checking of image_status arguments. - (gfc_check_failed_or_stopped_images): Same but for failed_- and - stopped_images function. - * dump-parse-tree.c (show_code_node): Added output of FAIL IMAGE. - * gfortran.h (enum gfc_statement): Added FAIL_IMAGE_ST. - (enum gfc_isym_id): Added new intrinsic symbols. - (enum gfc_exec_op): Added EXEC_FAIL_IMAGE. - * gfortran.texi: Added description for the new API functions. Updated - coverage of gfortran of TS18508. - * intrinsic.c (add_functions): Added symbols to resolve new intrinsic - functions. - * intrinsic.h: Added prototypes. - * iresolve.c (gfc_resolve_failed_images): Resolve the failed_images - intrinsic. - (gfc_resolve_image_status): Same for image_status. - (gfc_resolve_stopped_images): Same for stopped_images. - * libgfortran.h: Added prototypes. - * match.c (gfc_match_if): Added matching of FAIL IMAGE statement. - (gfc_match_fail_image): Match a FAIL IMAGE statement. - * match.h: Added prototype. - * parse.c (decode_statement): Added matching for FAIL IMAGE. - (next_statement): Same. - (gfc_ascii_statement): Same. - * resolve.c: Same. - * simplify.c (gfc_simplify_failed_or_stopped_images): For COARRAY= - single a constant result can be returne.d - (gfc_simplify_image_status): For COARRAY=single the result is constant. - * st.c (gfc_free_statement): Added FAIL_IMAGE handling. - * trans-decl.c (gfc_build_builtin_function_decls): Added decls of the - new intrinsics. - * trans-expr.c (gfc_conv_procedure_call): This is first time all - arguments of a function are optional, which is now handled here - correctly. - * trans-intrinsic.c (conv_intrinsic_image_status): Translate - image_status. - (gfc_conv_intrinsic_function): Add support for image_status. - (gfc_is_intrinsic_libcall): Add support for the remaining new - intrinsics. - * trans-stmt.c (gfc_trans_fail_image): Trans a fail image. - * trans-stmt.h: Add the prototype for the above. - * trans.c (trans_code): Dispatch for fail_image. - * trans.h: Add the trees for the new intrinsics. - -2017-03-03 Jerry DeLisle - - PR fortran/79841 - * openmp.c (check_symbol_not_pointer): Adjust diagnostic. - -2017-02-28 Paul Thomas - - PR fortran/79739 - * resolve.c (resolve_fl_procedure): Deal with the case where - 'submodule_name' is NULL so that gfc_error does not ICE. - Reformat the error message to make it more consistent. - -2017-02-28 Jakub Jelinek - - * parse.c (parse_critical_block): Use cond ? G_("...") : G_("...") - instead of just cond ? "..." : "...". - * scanner.c (gfc_next_char_literal): Likewise. - * match.c (match_exit_cycle): Likewise. - -2017-02-26 Thomas Koenig - - PR fortran/51119 - * options.c (gfc_post_options): Set default limit for matmul - inlining to 30. - * invoke.texi: Document change. - -2017-02-25 Dominique d'Humieres - - PR fortran/79601 - * interface.c (check_dtio_arg_TKR_intent): Change 'intent' - to 'INTENT'. - -2017-02-25 Dominique d'Humieres - - PR fortran/79597 - * interface.c (gfc_match_end_interface): Remove spurious comma - and space, replace 'got %s' with 'got %qs'. - -2017-02-20 Paul Thomas - - PR fortran/79599 - * interface.c (check_dtio_arg_TKR_intent): Supply 'must' - missing from error message. - -2017-02-20 Paul Thomas - - PR fortran/79523 - * interface.c (gfc_find_typebound_dtio_proc): Guard test for - flavor attribute by checking that symbol is resolved. - -2017-02-16 Paul Thomas - - PR fortran/79382 - * decl.c (access_attr_decl): Test for presence of generic DTIO - interface and emit error if not present. - -2017-02-20 Paul Thomas - - PR fortran/79434 - * parse.c (check_component, parse_union): Whitespace. - (set_syms_host_assoc): For a derived type, check if the module - in which it was declared is one of the submodule ancestors. If - it is, make the components public. Otherwise, reset attribute - 'host_assoc' and set 'use-assoc' so that encapsulation is - preserved. - -2017-02-19 Paul Thomas - - PR fortran/79447 - * decl.c (gfc_set_constant_character_len): Whitespace. - (gfc_match_end): Catch case where a procedure is contained in - a module procedure and ensure that 'end procedure' is the - correct termination. - -2017-02-19 Paul Thomas - - PR fortran/79402 - * resolve.c (fixup_unique_dummy): New function. - (gfc_resolve_expr): Call it for dummy variables with a unique - symtree name. - -2017-02-19 Andre Vehreschild - - PR fortran/79229 - * trans-expr.c (gfc_trans_assignment_1): Deref indirect refs when - compiling with -fcheck=mem to check the pointer and not the data. - -2017-02-19 Andre Vehreschild - - PR fortran/79335 - * trans-array.c (duplicate_allocatable_coarray): Ensure attributes - passed are properly initialized. - (structure_alloc_comps): Same. - * trans-expr.c (gfc_trans_structure_assign): Same. - -2017-02-13 Jakub Jelinek - - * trans-expr.c (gfc_conv_substring): Add missing space in diagnostics. - -2017-02-12 Thomas Koenig - - PR fortran/65542 - * intrinsic.c (gfc_intrinsic_func_interface): Return an error - for -std=f95 for disallowed transformational functions in - initialization expressions. - -2017-02-09 Cesar Philippidis - Joseph Myers - - * openmp.c (resolve_omp_clauses): Error on directives - containing both tile and collapse clauses. - (resolve_oacc_loop_blocks): Represent '*' tile arguments as zero. - * trans-openmp.c (gfc_trans_omp_do): Lower tiled loops like - collapsed loops. - -2017-02-07 Steven G. Kargl - - * trans-types.c (gfc_get_int_kind_from_width_isofortranen): Choose - REAL type with the widest precision if two (or more) have the same - storage size. - -2017-02-05 Andre Vehreschild - - PR fortran/79344 - * trans-stmt.c (gfc_trans_allocate): Only deallocate the components of - the temporary, when a new object was created for the temporary. Not - when it is just an alias to an existing object. - -2017-02-05 Andre Vehreschild - - PR fortran/79335 - * trans-decl.c (generate_coarray_sym_init): Retrieve the symbol's - attributes before using them. - -2017-02-05 Andre Vehreschild - - PR fortran/78958 - * trans-stmt.c (gfc_trans_allocate): Add the multiplying the _len - component of unlimited polymorphic objects when source-allocating. - -2017-02-05 Andre Vehreschild - - PR fortran/79230 - * trans-array.c (structure_alloc_comps): Ignore pointer components when - freeing structures. - -2017-01-25 Maxim Ostapenko - - PR lto/79061 - * f95-lang.c (gfc_create_decls): Include stringpool.h. - Pass main_input_filename to build_translation_unit_decl. - -2017-01-23 Thomas Koenig - - * arith.c (arith_power): If simplifying integer power expression - to zero, warn if -Winteger-division is given. - -2017-01-22 Jakub Jelinek - - PR fortran/79154 - * parse.c (matchs, matcho, matchds, matchdo): Replace return st; - with { ret = st; goto finish; }. - (decode_omp_directive): Allow declare simd, declare target and - simd directives in PURE/ELEMENTAL procedures. Only call - gfc_unset_implicit_pure on successful match of other procedures. - -2017-01-21 Gerald Pfeifer - - * gfc-internals.texi (Symbol Versioning): Change references - to www.akkadia.org to https. - -2017-01-21 Jakub Jelinek - - * gfortran.h (gfc_extract_int): Change return type to bool. Add - int argument with = 0. - * decl.c (gfc_match_kind_spec): Adjust gfc_extract_int caller, pass - 1 as new last argument to it, don't emit gfc_error. - (match_char_kind): Likewise. - (gfc_match_decl_type_spec): Use gfc_get_string ("%s", x) instead of - gfc_get_string (x). - (gfc_match_derived_decl, match_binding_attributes): Likewise. - (gfc_match_structure_decl): Don't sprintf back to name, call - get_struct_decl directly with gfc_dt_upper_string (name) result. - * trans-stmt.c (gfc_trans_allocate): Use gfc_get_string ("%s", x) - instead of gfc_get_string (x). - * module.c (gfc_dt_lower_string, gfc_dt_upper_string, - gfc_match_use, gfc_match_submodule, find_true_name, mio_pool_string, - mio_symtree_ref, mio_expr, mio_omp_udr_expr, load_generic_interfaces, - load_omp_udrs, load_needed, read_module, dump_module, - create_intrinsic_function, import_iso_c_binding_module, - create_int_parameter, create_int_parameter_array, create_derived_type, - use_iso_fortran_env_module): Likewise. - * error.c (gfc_diagnostic_starter, gfc_diagnostic_start_span): Use - pp_verbatim (context->printer, "%s", x) instead of - pp_verbatim (context->printer, x). - * match.c (gfc_match_small_int): Adjust gfc_extract_int caller, pass - 1 as new last argument to it, don't emit gfc_error. - (gfc_match_small_int_expr): Likewise. - * iresolve.c (gfc_get_string): Optimize format "%s" case. - (resolve_bound): Use gfc_get_string ("%s", x) instead of - gfc_get_string (x). - (resolve_transformational): Formatting fix. - (gfc_resolve_char_achar): Change name argument to bool is_achar, - use a single format string and if is_achar add "a" before "char". - (gfc_resolve_achar, gfc_resolve_char): Adjust callers. - * expr.c (gfc_extract_int): Change return type to bool, return true - if some error occurred. Add REPORT_ERROR argument, if non-zero - call either gfc_error or gfc_error_now depending on its sign. - * arith.c (arith_power): Adjust gfc_extract_int caller. - * symbol.c (gfc_add_component): Use gfc_get_string ("%s", x) instead - of gfc_get_string (x). - (gfc_new_symtree, gfc_delete_symtree, gfc_get_uop, gfc_new_symbol, - gfc_get_gsymbol, generate_isocbinding_symbol): Likewise. - * openmp.c (gfc_match_omp_clauses): Adjust gfc_extract_int caller, pass - -1 as new last argument to it, don't emit gfc_error_now. - (gfc_match_omp_declare_reduction): Use gfc_get_string ("%s", x) - instead of gfc_get_string (x). - * check.c (kind_check): Adjust gfc_extract_int caller. - * intrinsic.c (add_sym, find_sym, make_alias): Use - gfc_get_string ("%s", x) instead of gfc_get_string (x). - * simplify.c (get_kind, gfc_simplify_btest, gfc_simplify_maskr, - gfc_simplify_maskl, gfc_simplify_poppar, gfc_simplify_repeat, - gfc_simplify_selected_int_kind, gfc_simplify_selected_real_kind): - Adjust gfc_extract_int callers. - * trans-decl.c (gfc_find_module): Use gfc_get_string ("%s", x) - instead of gfc_get_string (x). - * matchexp.c (expression_syntax): Add const. - * primary.c (match_kind_param, match_hollerith_constant, - match_string_constant): Adjust gfc_extract_int callers. - (match_keyword_arg): Use gfc_get_string ("%s", x) instead of - gfc_get_string (x). - * frontend-passes.c (optimize_minmaxloc): Likewise. - -2017-01-19 Andre Vehreschild - - PR fortran/70696 - * trans-decl.c (gfc_build_qualified_array): Add static decl to parent - function only, when the decl-context is not the translation unit. - -2017-01-18 Louis Krupp - - PR fortran/50069 - PR fortran/55086 - * trans-expr.c (gfc_conv_variable): Don't treat temporary variables - as function arguments. - * trans-stmt.c (forall_make_variable_temp, - generate_loop_for_temp_to_lhs, gfc_trans_assign_need_temp, - gfc_trans_forall_1): Don't adjust offset of forall temporary - for array sections, make forall temporaries work for substring - expressions, improve test coverage by adding -ftest-forall-temp - option to request usage of temporary array in forall code. - * lang.opt: Add -ftest-forall-temp option. - * invoke.texi: Add -ftest-forall-temp option. - -2017-01-18 Andre Vehreschild - - * primary.c (caf_variable_attr): Improve figuring whether the current - component is the last one refed. - * trans-stmt.c (gfc_trans_allocate): Do not generate sync_all calls - when allocating pointer or allocatable components. - -2017-01-18 Andre Vehreschild - - * gfortran.texi: Add missing parameters to caf-API functions. Correct - typos and clarify some descriptions. - -2017-01-18 Andre Vehreschild - - PR fortran/70696 - Missed some cases, here they are: - * trans-decl.c (gfc_build_qualified_array): Add static tokens to the - parent function's scope. - * trans-expr.c (gfc_get_tree_for_caf_expr): Shorten code. Remove - unnecessary assert. - -2017-01-13 Andre Vehreschild - - PR fortran/70697 - * resolve.c (resolve_lock_unlock_event): Resolve the expression for - event's until_count. - -2017-01-13 Andre Vehreschild - - PR fortran/70696 - * trans-expr.c (gfc_get_tree_for_caf_expr): Ensure the backend_decl - is valid before accessing it. - -2017-01-09 Jakub Jelinek - - PR translation/79019 - PR translation/79020 - * decl.c (attr_decl1): Fix spelling in translatable string. - * intrinsic.texi: Fix spelling - invokation -> invocation. - * lang.opt (faggressive-function-elimination, gfc_convert): Fix - typos in descriptions. - * openmp.c (resolve_omp_clauses): Add missing whitespace to - translatable strings. - -2017-01-08 Martin Sebor - - PR tree-optimization/78913 - PR middle-end/77708 - * trans-common.c (build_equiv_decl): Increase buffer size to avoid - truncation for any argument. - * trans-types.c (gfc_build_logical_type): Same. - -2017-01-07 Andre Vehreschild - - PR fortran/78781 - PR fortran/78935 - * expr.c (gfc_check_pointer_assign): Return the same error message for - rewritten coarray pointer assignments like for plain ones. - * gfortran.h: Change prototype. - * primary.c (caf_variable_attr): Set attributes used ones only only - ones. Add setting of pointer_comp attribute. - (gfc_caf_attr): Add setting of pointer_comp attribute. - * trans-array.c (gfc_array_allocate): Add flag that the component to - allocate is not an ultimate coarray component. Add allocation of - pointer arrays. - (structure_alloc_comps): Extend nullify to treat pointer components in - coarrays correctly. Restructure nullify to remove redundant code. - (gfc_nullify_alloc_comp): Allow setting caf_mode flags. - * trans-array.h: Change prototype of gfc_nullify_alloc_comp (). - * trans-decl.c (generate_coarray_sym_init): Call nullify_alloc_comp for - derived type coarrays with pointer components. - * trans-expr.c (gfc_trans_structure_assign): Also treat pointer - components. - (trans_caf_token_assign): Handle assignment of token of scalar pointer - components. - (gfc_trans_pointer_assignment): Call above routine. - * trans-intrinsic.c (conv_expr_ref_to_caf_ref): Add treating pointer - components. - (gfc_conv_intrinsic_caf_get): Likewise. - (conv_caf_send): Likewise. - * trans-stmt.c (gfc_trans_allocate): After allocating a derived type in - a coarray pre-register the tokens. - (gfc_trans_deallocate): Simply determining the coarray type (scalar or - array) and deregistering it correctly. - * trans-types.c (gfc_typenode_for_spec): Replace in_coarray flag by the - actual codim to allow lookup of array types in the cache. - (gfc_build_array_type): Likewise. - (gfc_get_array_descriptor_base): Likewise. - (gfc_get_array_type_bounds): Likewise. - (gfc_get_derived_type): Likewise. - * trans-types.h: Likewise. - * trans.c (gfc_deallocate_with_status): Enable deregistering of all kind - of coarray components. - (gfc_deallocate_scalar_with_status): Use free() in fcoarray_single mode - instead of caf_deregister. - -2017-01-06 Jakub Jelinek - - * simplify.c (simplify_transformation_to_array): Use - GCC_DIAGNOSTIC_PUSH_IGNORED and GCC_DIAGNOSTIC_POP instead of - #pragma GCC diagnostic {push,ignored,pop}. - -2017-01-06 Alexandre Oliva - - * simplify.c (simplify_transformation_to_array): Silence - array bounds warning. Fix whitespace. - -2017-01-04 Alexandre Oliva - - * module.c (load_omp_udrs): Initialize name. - -2017-01-02 Janne Blomqvist - - PR fortran/78534 - * trans-expr.c (gfc_trans_string_copy): Rework string copy - algorithm to avoid -Wstringop-overflow warning. - -2017-01-01 Jakub Jelinek - - Update copyright years. - - * gfortranspec.c (lang_specific_driver): Update copyright notice - dates. - * gfc-internals.texi: Bump @copying's copyright year. - * gfortran.texi: Ditto. - * intrinsic.texi: Ditto. - * invoke.texi: Ditto. -Copyright (C) 2017 Free Software Foundation, Inc. +Copyright (C) 2018 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/fortran/ChangeLog-2017 b/gcc/fortran/ChangeLog-2017 new file mode 100644 index 00000000000..678ffc68469 --- /dev/null +++ b/gcc/fortran/ChangeLog-2017 @@ -0,0 +1,2295 @@ +2017-12-28 Steven G. Kargl + + PR Fortran/83548 + * match.c (gfc_match_type_spec): Check for LOGICAL conflict in + type-spec versus LOGICAL intrinsic subprogram. + +2017-12-28 Janne Blomqvist + + PR fortran/83344 + * resolve.c (resolve_assoc_var): Don't set the constant value + unless the target is a constant expression. + +2017-12-28 Paul Thomas + + PR fortran/83567 + * trans-expr.c (gfc_trans_assignment_1): Free parameterized + components of the lhs if dealloc is set. + *trans-decl.c (gfc_trans_deferred_vars): Do not free the + parameterized components of function results on leaving scope. + +2017_12_27 Louis Krupp + + PR fortran/83092 + * expr.c (gfc_apply_init): Check that typespec has character type + before using character length field. + +2017-12-26 Thomas Koenig + + PR fortran/83540 + * frontend-passes.c (create_var): If an array to be created + has unknown size and -fno-realloc-lhs is in effect, + return NULL. + +2017-12-22 Bernhard Reutner-Fischer + Eric Botcazou + + * array.c (gfc_copy_iterator): Copy unroll field. + * decl.c (directive_unroll): New global variable. + (gfc_match_gcc_unroll): New function. + * gfortran.h (gfc_iterator]): Add unroll field. + (directive_unroll): Declare: + * match.c (gfc_match_do): Use memset to initialize the iterator. + * match.h (gfc_match_gcc_unroll): New prototype. + * parse.c (decode_gcc_attribute): Match "unroll". + (parse_do_block): Set iterator's unroll. + (parse_executable): Diagnose misplaced unroll directive. + * trans-stmt.c (gfc_trans_simple_do) Annotate loop condition with + annot_expr_unroll_kind. + (gfc_trans_do): Likewise. + * gfortran.texi (GNU Fortran Compiler Directives): Split section into + subections 'ATTRIBUTES directive' and 'UNROLL directive'. + +2017-12-19 Jakub Jelinek + + * scanner.c (preprocessor_line): Replace Yoda conditions with typical + order conditions. + * dependency.c (check_section_vs_section): Likewise. + * trans-array.c (gfc_conv_expr_descriptor): Likewise. + +2017-12-17 Janne Blomqvist + + * decl.c (gfc_match_implicit_none): Use GFC_STD_F2018 instead of + GFC_STD_F2015. + * error.c (gfc_notify_std): Add GFC_STD_F2018{_DEL,_OBS} to + switch. + * gfortran.texi: Document -std=f2018. + * interface.c (compare_parameter): Fix comment. + * invoke.texi: Document -std=f2018. + * lang.opt: Add -std=f2018 argumnet. + * libgfortran.h (GFC_STD_F2015): Rename to GFC_STD_F0218, use + separate flag bit. + (GFC_STD_F2018_DEL): New macro. + (GFC_STD_F2018_OBS): Likewise. + * match.c (gfc_match_stopcode): Use GFC_STD_F2018. + * options.c (set_default_std_flags): Add F2018 flags to defaults. + (gfc_handle_option): Set options for -std=f2018. + +2017-12-15 Jakub Jelinek + + * f95-lang.c (gfc_attribute_table): Swap affects_type_identity + and handler fields, adjust comments. + +2017-12-14 Qing Zhao + + PR middle_end/79538 + * class.c (gfc_build_class_symbol): Replace call to + sprintf with xasprintf to avoid format-overflow warning. + (generate_finalization_wrapper): Likewise. + (gfc_find_derived_vtab): Likewise. + (find_intrinsic_vtab): Likewise. + +2017-12-12 Thomas Koenig + + * intrinsic.texi (MAXLOC): Remove double description + of return value. + (MINLOC): Likewise. + +2017-12-11 Thomas Koenig + + * intrinsic.texi (MAXLOC): Update documentation for + character arrays and KIND argument. + (MINLOC): Likewise. + +2017-12-11 Thomas Koenig + + PR fortran/45689 + * simplify.c (min_max_choose): Add prototype. + (gfc_count): Format correctly. + (simplify_transformation): Pass array argument to init_result_expr. + (gfc_simplify_minval_maxval): Remove. + (gfc_min): New function. + (gfc_simplify_minval): Call simplify_transformation. + (gfc_max): New function. + (gfc_simplify_maxval): Call simplify_transformation. + +2017-12-10 Dominique d'Humieres + + PR fortran/53478 + * gfortran.h (gfc_find_case_gsymbol): New prototype. + * symbol.c (gfc_find_case_gsymbol): New procedure, case + insensistive version of gfc_find_gsymbol. + * resolve.c (resolve_common_blocks): Use it. + Replace %s with %qs where needed. + +2017-12-09 Steven G. Kargl + + PR fortran/82934 + PR fortran/83318 + * match.c (gfc_match_allocate): Enforce F2008:C631. + +2017-12-09 Thomas Koenig + + PR fortran/83316 + * arith.c (gfc_character2character): New function. + * arith.h: Add prototype. + * simplify.c (gfc_convert_constant): Handle character type. + +2017-12-07 Martin Sebor + + PR c/81544 + * f95-lang.c (gfc_attribute_table): Initialize new member of struct + attribute_spec. + +2017-12-03 Thomas Koenig + + PR fortran/36313 + * check.c (gfc_check_minval_maxval): Use + int_orLreal_or_char_check_f2003 for array argument. + * iresolve.c (gfc_resolve_maxval): Insert number in + function name for character arguments. + (gfc_resolve_minval): Likewise. + * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): + Fix comment. + (gfc_conv_intrinsic_minmaxval): Resort arguments and call library + function if dealing with a character function. + +2017-12-01 Qing Zhao + + * decl.c (gfc_get_pdt_instance): Adjust the call to sprintf + to avoid the same buffer being both source and destination. + +2017-12-01 Thomas Koenig + + PR fortran/83224 + * frontend-passes.c (create_var): Also handle + character arrays, handling deferred lenghts. + +2017-12-01 Paul Thomas + + PR fortran/82605 + * resolve.c (get_pdt_constructor): Initialize 'cons' to NULL. + (resolve_pdt): Correct typo in prior comment. Emit an error if + any parameters are deferred and the object is neither pointer + nor allocatable. + + PR fortran/82606 + * decl.c (gfc_get_pdt_instance): Continue if the parameter sym + is not present or has no name. Select the parameter by name + of component, rather than component order. Remove all the other + manipulations of 'tail' when building the pdt instance. + (gfc_match_formal_arglist): Emit and error if a star is picked + up in a PDT decl parameter list. + + PR fortran/82622 + * trans-array.c (set_loop_bounds): If a GFC_SS_COMPONENT has an + info->end, use it rather than falling through to + gcc_unreachable. + (structure_alloc_comps): Check that param->name is non-null + before comparing with the component name. + * trans-decl.c (gfc_get_symbol_decl): Do not use the static + initializer for PDT symbols. + (gfc_init_default_dt): Do nothing for PDT symbols. + * trans-io.c (transfer_array_component): Parameterized array + components use the descriptor ubound since the shape is not + available. + + PR fortran/82719 + PR fortran/82720 + * trans-expr.c (gfc_conv_component_ref): Do not use the charlen + backend_decl of pdt strings. Use the hidden component instead. + * trans-io.c (transfer_expr): Do not do IO on "hidden" string + lengths. Use the hidden string length for pdt string transfers + by adding it to the se structure. When finished nullify the + se string length. + + PR fortran/82866 + * decl.c (gfc_match_formal_arglist): If a name is not found or + star is found, while reading a type parameter list, emit an + immediate error. + (gfc_match_derived_decl): On reading a PDT parameter list, on + failure to match call gfc_error_recovery. + + PR fortran/82978 + * decl.c (build_struct): Character kind defaults to 1, so use + kind_expr whatever is the set value. + (gfc_get_pdt_instance): Ditto. + * trans-array.c (structure_alloc_comps): Copy the expression + for the PDT string length before parameter substitution. Use + this expression for evaluation and free it after use. + +2017-12-01 Jakub Jelinek + + PR c/79153 + * match.c (gfc_match): Add FALLTHRU comment to avoid + -Wimplicit-fallthrough warning. + +2017-12-01 Thomas Koenig + + PR fortran/83224 + * frontend-passes.c (realloc_string_callback): Handle + case for which the RHS is an array expression. + +2017-11-28 Janne Blomqvist + + PR fortran/53796 + * gfortran.texi: Remove mentions of GFORTRAN_DEFAULT_RECL. + +2017-11-28 Paul Thomas + + PR fortran/83021 + * resolve.c (resolve_component): Only escape for use assciated + vtypes if the current namespace has no proc_name and is most + particularly block data. + +2017-11-28 Jakub Jelinek + + * trans-decl.c (gfc_trans_entry_master_switch): Build SWITCH_EXPR + using fold_build2_loc instead of fold_build3_loc. + * trans-io.c (io_result): Likewise. + * trans-stmt.c (gfc_trans_integer_select, gfc_trans_character_select): + Likewise. + +2017-11-24 Jakub Jelinek + + PR fortran/81304 + * trans-openmp.c (gfc_trans_omp_array_reduction_or_udr): Set + attr.implicit_type in intrinsic_sym to avoid undesirable warning. + +2017-11-23 Dirk Broemmel + Jakub Jelinek + + PR fortran/81841 + * parse.c (parse_spec): Allow ST_OMP_THREADPRIVATE inside of + BLOCK DATA. + +2017-11-23 Mike Stump + Eric Botcazou + + * trans-stmt.c (gfc_trans_forall_loop): Pass 3rd operand to + ANNOTATE_EXPR. + +2017-11-23 Paul Thomas + + 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-22 David Malcolm + + PR c++/62170 + * error.c (gfc_notify_std): Convert "quoted" param from bool to + bool *. + +2017-11-22 Thomas Koenig + + 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 Paul Thomas + + PR fortran/79072 + * trans-stmt.c (trans_associate_var): Weaken the over strong + condition for using the fake result decl. + +2017-11-20 Paul Thomas + + PR fortran/79072 + * trans-expr.c (trans_class_vptr_len_assignment): Set from_len + if the temporary is unlimited polymorphic. + * trans-stmt.c (trans_associate_var): Use the fake result decl + to obtain the 'len' field from an explicit function result when + in that function scope. + +2017-11-19 Paul Thomas + + PR fortran/78990 + * expr.c (gfc_is_class_array_function): Renamed from + 'gfc_is_alloc_class_array_function' and modified to return true + for pointers as well as allocatable results. + * gfortran.h : Change of name for prototype of above function. + * trans-array.c (gfc_add_loop_ss_code): Force finalization of + class array results. + (build_class_array_ref): Change assertion into a condition. + (build_class_array_ref): Set the se class_vptr for class array + function results. + (gfc_walk_function_expr): Reference gfc_is_class_array_function + as above. + * trans-decl.c (get_proc_result): Move it up before + gfc_trans_deferred_vars. + (gfc_trans_deferred_vars): Nullify explicit return class arrays + on entry. + * trans-expr.c (gfc_conv_class_to_class): Allow conversion of + class array functions that have an se class_vptr and use it + for the result vptr. + (gfc_conv_subref_array_arg): Rename reference to the above + function. + (gfc_conv_procedure_call): Ditto. Add the se pre block to the + loop pre block before the function is evaluated. Do not + finalize class pointer results. + (arrayfunc_assign_needs_temporary, gfc_trans_assignment_1) More + renamed references. + * trans-intrinsic.c (gfc_conv_intrinsic_size): Ditto. + +2017-11-18 Janne Blomqvist + + PR fortran/83036 + * ioparm.def (IOPARM): Make nextrec a pintio. + +2017-11-18 Janne Blomqvist + + PR fortran/44292 + * ioparm.def (IOPARM): Make recl_in intio, and recl_out pintio. + +2017-11-18 Thomas Koenig + + PR fortran/83012 + * expr.c (gfc_is_simply_contiguous): If a function call through a + class variable is done through a reference, check the function's + interface. + +2017-11-17 Richard Biener + + PR fortran/83017 + * trans-stmt.c (gfc_trans_forall_loop): Annotate DO CONCURRENT + loops with annot_expr_parallel_kind instead of just + annot_expr_ivdep_kind. + +2017-11-15 Martin Liska + + * options.c (gfc_post_options): + Do not set default value of warn_return_type. + * trans-decl.c (gfc_trans_deferred_vars): + Compare warn_return_type for greater than zero. + (generate_local_decl): Likewise + (gfc_generate_function_code): Likewise. + +2017-11-13 Fritz Reese + + PR fortran/78240 + * decl.c (match_clist_expr): Replace gcc_assert with proper + handling of bad result from spec_size(). + * resolve.c (check_data_variable): Avoid NULL dereference when passing + locus to gfc_error. + +2017-11-11 Janus Weil + + PR fortran/82932 + * resolve.c (update_compcall_arglist): Improve error recovery, + remove a gcc_assert. + +2017-11-10 Fritz Reese + + PR fortran/82886 + * gfortran.h (gfc_build_init_expr): New prototype. + * invoke.texi (finit-derived): Update documentation. + * expr.c (gfc_build_init_expr): New, from gfc_build_default_init_expr. + (gfc_build_default_init_expr): Redirect to gfc_build_init_expr(,,false) + (component_initializer): Force building initializers using + gfc_build_init_expr(,,true). + +2017-11-10 Martin Sebor + + PR c/81117 + * gcc/fortran/decl.c (build_sym): Use strcpy instead of strncpy. + +2017-11-10 Paul Thomas + + PR fortran/82934 + * trans-stmt.c (gfc_trans_allocate): Remove the gcc_assert on + null string length for assumed length typespec and set + expr3_esize to NULL_TREE; + +2017-11-09 Paul Thomas + + PR fortran/78619 + * check.c (same_type_check): Introduce a new argument 'assoc' + with default value false. If this is true, use the symbol type + spec of BT_PROCEDURE expressions. + (gfc_check_associated): Set 'assoc' true in the call to + 'same_type_check'. + +2017-11-09 Steven G. Kargl + + PR fortran/78814 + * interface.c (symbol_rank): Check for NULL pointer. + +2017-11-08 Steven G. Kargl + + PR Fortran/82841 + * simplify.c(gfc_simplify_transfer): Do not dereference a NULL pointer. + Unwrap a short line. + +2017-11-08 Steven G. Kargl + + PR fortran/82884 + * arith.c (gfc_hollerith2character): Clear pad. + +2017-11-08 Janne Blomqvist + + PR 82869 + * convert.c (truthvalue_conversion): Use logical_type_node. + * trans-array.c (gfc_trans_allocate_array_storage): Likewise. + (gfc_trans_create_temp_array): Likewise. + (gfc_trans_array_ctor_element): Likewise. + (gfc_trans_array_constructor_value): Likewise. + (trans_array_constructor): Likewise. + (trans_array_bound_check): Likewise. + (gfc_conv_array_ref): Likewise. + (gfc_trans_scalarized_loop_end): Likewise. + (gfc_conv_array_extent_dim): Likewise. + (gfc_array_init_size): Likewise. + (gfc_array_allocate): Likewise. + (gfc_trans_array_bounds): Likewise. + (gfc_trans_dummy_array_bias): Likewise. + (gfc_conv_array_parameter): Likewise. + (duplicate_allocatable): Likewise. + (duplicate_allocatable_coarray): Likewise. + (structure_alloc_comps): Likewise + (get_std_lbound): Likewise + (gfc_alloc_allocatable_for_assignment): Likewise + * trans-decl.c (add_argument_checking): Likewise + (gfc_generate_function_code): Likewise + * trans-expr.c (gfc_copy_class_to_class): Likewise + (gfc_trans_class_array_init_assign): Likewise + (gfc_trans_class_init_assign): Likewise + (gfc_conv_expr_present): Likewise + (gfc_conv_substring): Likewise + (gfc_conv_cst_int_power): Likewise + (gfc_conv_expr_op): Likewise + (gfc_conv_procedure_call): Likewise + (fill_with_spaces): Likewise + (gfc_trans_string_copy): Likewise + (gfc_trans_alloc_subarray_assign): Likewise + (gfc_trans_pointer_assignment): Likewise + (gfc_trans_scalar_assign): Likewise + (fcncall_realloc_result): Likewise + (alloc_scalar_allocatable_for_assignment): Likewise + (trans_class_assignment): Likewise + (gfc_trans_assignment_1): Likewise + * trans-intrinsic.c (build_fixbound_expr): Likewise + (gfc_conv_intrinsic_aint): Likewise + (gfc_trans_same_strlen_check): Likewise + (conv_caf_send): Likewise + (trans_this_image): Likewise + (conv_intrinsic_image_status): Likewise + (trans_image_index): Likewise + (gfc_conv_intrinsic_bound): Likewise + (conv_intrinsic_cobound): Likewise + (gfc_conv_intrinsic_mod): Likewise + (gfc_conv_intrinsic_dshift): Likewise + (gfc_conv_intrinsic_dim): Likewise + (gfc_conv_intrinsic_sign): Likewise + (gfc_conv_intrinsic_ctime): Likewise + (gfc_conv_intrinsic_fdate): Likewise + (gfc_conv_intrinsic_ttynam): Likewise + (gfc_conv_intrinsic_minmax): Likewise + (gfc_conv_intrinsic_minmax_char): Likewise + (gfc_conv_intrinsic_anyall): Likewise + (gfc_conv_intrinsic_arith): Likewise + (gfc_conv_intrinsic_minmaxloc): Likewise + (gfc_conv_intrinsic_minmaxval): Likewise + (gfc_conv_intrinsic_btest): Likewise + (gfc_conv_intrinsic_bitcomp): Likewise + (gfc_conv_intrinsic_shift): Likewise + (gfc_conv_intrinsic_ishft): Likewise + (gfc_conv_intrinsic_ishftc): Likewise + (gfc_conv_intrinsic_leadz): Likewise + (gfc_conv_intrinsic_trailz): Likewise + (gfc_conv_intrinsic_mask): Likewise + (gfc_conv_intrinsic_spacing): Likewise + (gfc_conv_intrinsic_rrspacing): Likewise + (gfc_conv_intrinsic_size): Likewise + (gfc_conv_intrinsic_sizeof): Likewise + (gfc_conv_intrinsic_transfer): Likewise + (gfc_conv_allocated): Likewise + (gfc_conv_associated): Likewise + (gfc_conv_same_type_as): Likewise + (gfc_conv_intrinsic_trim): Likewise + (gfc_conv_intrinsic_repeat): Likewise + (conv_isocbinding_function): Likewise + (conv_intrinsic_ieee_is_normal): Likewise + (conv_intrinsic_ieee_is_negative): Likewise + (conv_intrinsic_ieee_copy_sign): Likewise + (conv_intrinsic_move_alloc): Likewise + * trans-io.c (set_parameter_value_chk): Likewise + (set_parameter_value_inquire): Likewise + (set_string): Likewise + * trans-openmp.c (gfc_walk_alloc_comps): Likewise + (gfc_omp_clause_default_ctor): Likewise + (gfc_omp_clause_copy_ctor): Likewise + (gfc_omp_clause_assign_op): Likewise + (gfc_omp_clause_dtor): Likewise + (gfc_omp_finish_clause): Likewise + (gfc_trans_omp_clauses): Likewise + (gfc_trans_omp_do): Likewise + * trans-stmt.c (gfc_trans_goto): Likewise + (gfc_trans_sync): Likewise + (gfc_trans_arithmetic_if): Likewise + (gfc_trans_simple_do): Likewise + (gfc_trans_do): Likewise + (gfc_trans_forall_loop): Likewise + (gfc_trans_where_2): Likewise + (gfc_trans_allocate): Likewise + (gfc_trans_deallocate): Likewise + * trans-types.c (gfc_init_types): Initialize logical_type_node and + their true/false trees. + (gfc_get_array_descr_info): Use logical_type_node. + * trans-types.h (logical_type_node): New tree. + (logical_true_node): Likewise. + (logical_false_node): Likewise. + * trans.c (gfc_trans_runtime_check): Use logical_type_node. + (gfc_call_malloc): Likewise + (gfc_allocate_using_malloc): Likewise + (gfc_allocate_allocatable): Likewise + (gfc_add_comp_finalizer_call): Likewise + (gfc_add_finalizer_call): Likewise + (gfc_deallocate_with_status): Likewise + (gfc_deallocate_scalar_with_status): Likewise + (gfc_call_realloc): Likewise + +2017-11-06 Paul Thomas + + PR fortran/69739 + * trans-expr.c (gfc_map_intrinsic_function): Return false for + bounds without the DIM argument instead of ICEing. + +2017-11-06 Martin Liska + + PR middle-end/82404 + * options.c (gfc_post_options): Set default value of + -Wreturn-type to false. + +2017-11-05 Thomas Koenig + + PR fortran/82471 + * lang.opt (ffrontend-loop-interchange): New option. + (Wfrontend-loop-interchange): New option. + * options.c (gfc_post_options): Handle ffrontend-loop-interchange. + * frontend-passes.c (gfc_run_passes): Run + optimize_namespace if flag_frontend_optimize or + flag_frontend_loop_interchange are set. + (optimize_namespace): Run functions according to flags set; + also call index_interchange. + (ind_type): New function. + (has_var): New function. + (index_cost): New function. + (loop_comp): New function. + +2017-11-05 Paul Thomas + + PR fortran/78641 + * resolve.c (resolve_ordinary_assign): Do not add the _data + component for class valued array constructors being assigned + to derived type arrays. + * trans-array.c (gfc_trans_array_ctor_element): Take the _data + of class valued elements for assignment to derived type arrays. + +2017-11-05 Paul Thomas + + PR fortran/81447 + PR fortran/82783 + * resolve.c (resolve_component): There is no need to resolve + the components of a use associated vtype. + (resolve_fl_derived): Unconditionally generate a vtable for any + module derived type, as long as the standard is F2003 or later + and it is not a vtype or a PDT template. + +2017-11-05 Tom de Vries + + PR other/82784 + * parse.c (match, matcha, matchs, matcho, matchds, matchdo): Remove + semicolon after "do {} while (0)". + +2017-11-04 Andre Vehreschild + + * trans-expr.c (gfc_trans_assignment_1): Character kind conversion may + create a loop variant temporary, too. + * trans-intrinsic.c (conv_caf_send): Treat char arrays as arrays and + not as scalars. + * trans.c (get_array_span): Take the character kind into account when + doing pointer arithmetic. + +2017-11-04 Thomas Koenig + + PR fortran/29600 + * gfortran.h (gfc_check_f): Replace fm3l with fm4l. + * intrinsic.h (gfc_resolve_maxloc): Add gfc_expr * to argument + list in protoytpe. + (gfc_resolve_minloc): Likewise. + * check.c (gfc_check_minloc_maxloc): Handle kind argument. + * intrinsic.c (add_sym_3_ml): Rename to + (add_sym_4_ml): and handle kind argument. + (add_function): Replace add_sym_3ml with add_sym_4ml and add + extra arguments for maxloc and minloc. + (check_specific): Change use of check.f3ml with check.f4ml. + * iresolve.c (gfc_resolve_maxloc): Handle kind argument. If + the kind is smaller than the smallest library version available, + use gfc_default_integer_kind and convert afterwards. + (gfc_resolve_minloc): Likewise. + +2017-11-04 Paul Thomas + + PR fortran/81735 + * trans-decl.c (gfc_trans_deferred_vars): Do a better job of a + case where 'tmp' was used unititialized and remove TODO. + +2017-11-03 Steven G. Kargl + + PR fortran/82796 + * resolve.c (resolve_equivalence): An entity in a common block within + a module cannot appear in an equivalence statement if the entity is + with a pure procedure. + +2017-10-31 Jim Wilson + + * parse.c (unexpected_eof): Call gcc_unreachable before return. + +2017-10-30 Paul Thomas + + PR fortran/80850 + * trans_expr.c (gfc_conv_procedure_call): When passing a class + argument to an unlimited polymorphic dummy, it is wrong to cast + the passed expression as unlimited, unless it is unlimited. The + correct way is to assign to each of the fields and set the _len + field to zero. + +2017-10-30 Steven G. Kargl + + * resolve.c (resolve_transfer): Set derived to correct symbol for + BT_CLASS. + +2017-10-29 Jim Wilson + + * invoke.texi: Delete adb and sdb references. + +2017-10-28 Andre Vehreschild + + * check.c (gfc_check_co_reduce): Clarify error message. + +2017-10-28 Paul Thomas + + PR fortran/81758 + * trans-expr.c (trans_class_vptr_len_assignment): 'vptr_expr' + must only be set if the right hand side expression is of type + class. + +2017-10-27 Steven G. Kargl + + PR fortran/82620 + * match.c (gfc_match_allocate): Exit early on syntax error. + +2017-10-27 Thomas Koenig + + PR fortran/56342 + * simplify.c (is_constant_array_expr): If the expression is + a parameter array, call gfc_simplify_expr. + +2017-10-25 Bernhard Reutner-Fischer + + * match.c (gfc_match_type_is): Fix typo in error message. + +2017-10-21 Paul Thomas + + PR fortran/82586 + * decl.c (gfc_get_pdt_instance): Remove the error message that + the parameter does not have a corresponding component since + this is now taken care of when the derived type is resolved. Go + straight to error return instead. + (gfc_match_formal_arglist): Make the PDT relevant errors + immediate so that parsing of the derived type can continue. + (gfc_match_derived_decl): Do not check the match status on + return from gfc_match_formal_arglist for the same reason. + * resolve.c (resolve_fl_derived0): Check that each type + parameter has a corresponding component. + + PR fortran/82587 + * resolve.c (resolve_generic_f): Check that the derived type + can be used before resolving the struture constructor. + + PR fortran/82589 + * symbol.c (check_conflict): Add the conflicts involving PDT + KIND and LEN attributes. + +2017-10-19 Bernhard Reutner-Fischer + + * interface.c (check_sym_interfaces, check_uop_interfaces, + gfc_check_interfaces): Base interface_name buffer off + GFC_MAX_SYMBOL_LEN. + +2017-10-19 Jakub Jelinek + + PR fortran/82568 + * gfortran.h (gfc_resolve_do_iterator): Add a bool arg. + (gfc_resolve_omp_local_vars): New declaration. + * openmp.c (omp_current_ctx): Make static. + (gfc_resolve_omp_parallel_blocks): Handle EXEC_OMP_TASKLOOP + and EXEC_OMP_TASKLOOP_SIMD. + (gfc_resolve_do_iterator): Add ADD_CLAUSE argument, if false, + don't actually add any clause. Move omp_current_ctx test + earlier. + (handle_local_var, gfc_resolve_omp_local_vars): New functions. + * resolve.c (gfc_resolve_code): Call gfc_resolve_omp_parallel_blocks + instead of just gfc_resolve_omp_do_blocks for EXEC_OMP_TASKLOOP + and EXEC_OMP_TASKLOOP_SIMD. + (gfc_resolve_code): Adjust gfc_resolve_do_iterator caller. + (resolve_codes): Call gfc_resolve_omp_local_vars. + +2017-10-19 Bernhard Reutner-Fischer + + * gfortran.h (gfc_lookup_function_fuzzy): New declaration. + (gfc_closest_fuzzy_match): New declaration. + (vec_push): New definition. + * misc.c (gfc_closest_fuzzy_match): New definition. + * resolve.c: Include spellcheck.h. + (lookup_function_fuzzy_find_candidates): New static function. + (lookup_uop_fuzzy_find_candidates): Likewise. + (lookup_uop_fuzzy): Likewise. + (resolve_operator) : Call lookup_uop_fuzzy. + (gfc_lookup_function_fuzzy): New definition. + (resolve_unknown_f): Call gfc_lookup_function_fuzzy. + * interface.c (check_interface0): Likewise. + (lookup_arg_fuzzy_find_candidates): New static function. + (lookup_arg_fuzzy ): Likewise. + (compare_actual_formal): Call lookup_arg_fuzzy. + * symbol.c: Include spellcheck.h. + (lookup_symbol_fuzzy_find_candidates): New static function. + (lookup_symbol_fuzzy): Likewise. + (gfc_set_default_type): Call lookup_symbol_fuzzy. + (lookup_component_fuzzy_find_candidates): New static function. + (lookup_component_fuzzy): Likewise. + (gfc_find_component): Call lookup_component_fuzzy. + +2017-10-18 Thomas Koenig + + PR fortran/82567 + * frontend-passes.c (combine_array_constructor): If an array + constructor is all constants and has more elements than a small + constant, don't convert a*[b,c] to [a*b,a*c] to reduce compilation + times. + +2017-10-18 Thomas Koenig + + PR fortran/79795 + * resolve.c (resovle_symbol): Change gcc_assert to + sensible error message. + +2017-10-18 Paul Thomas + + PR fortran/82550 + * trans_decl.c (gfc_get_symbol_decl): Procedure symbols that + have the 'used_in_submodule' attribute should be processed by + 'gfc_get_extern_function_decl'. + +2017-10-16 Fritz Reese + + PR fortran/82511 + * trans-io.c (transfer_expr): Treat BT_UNION as BT_DERIVED. + +2017-10-15 Thomas Koenig + + PR fortran/82372 + * fortran/scanner.c (last_error_char): New global variable. + (gfc_scanner_init_1): Set last_error_char to NULL. + (gfc_gobble_whitespace): If a character not printable or + not newline, issue an error. + +2017-10-13 Paul Thomas + + PR fortran/81048 + * resolve.c (resolve_symbol): Ensure that derived type array + results get default initialization. + +2017-10-11 Nathan Sidwell + + * cpp.c (gfc_cpp_add_include_path): Update incpath_e names. + (gfc_cpp_add_include_path_after): Likewise. + +2017-10-10 Richard Sandiford + + * target-memory.c (gfc_interpret_logical): Use wi::to_wide when + operating on trees as wide_ints. + * trans-const.c (gfc_conv_tree_to_mpz): Likewise. + * trans-expr.c (gfc_conv_cst_int_power): Likewise. + * trans-intrinsic.c (trans_this_image): Likewise. + (gfc_conv_intrinsic_bound): Likewise. + (conv_intrinsic_cobound): Likewise. + +2017-10-08 Steven G. Kargl + + * check.c (gfc_check_x): Remove function. + * intrinsic.c (add_functions): Use gfc_check_fn_r. + +2017-10-08 Paul Thomas + + PR fortran/82375 + * module.c : Bump up MOD_VERSION to 15. + (mio_component): Edit comment about PDT specification list. + (mio_expr, mio_symbol): Include the expression and symbol PDT + specification lists in the same way as in mio_component. + +2017-10-08 Thomas Koenig + + * dump_prase_tree (show_symbol): Output list of variables in + NAMELIST. + (show_code_node): Add new line for ELSE and END DO for DO + CONCURRENT. + * invoke.texi: Document that the output of + -fdump-fortran-original, -fdump-fortran-optimized and + -fdump-parse-tree is unsable and may lead to ICEs. + +2017-10-07 Paul Thomas + + PR fortran/82375 + * class.c (gfc_find_derived_vtab): Return NULL for a passed + pdt template to prevent bad procedures from being written. + * decl.c (gfc_get_pdt_instance): Do not use the default + initializer for pointer and allocatable pdt type components. If + the component is allocatbale, set the 'alloc_comp' attribute of + 'instance'. + * module.c : Add a prototype for 'mio_actual_arglist'. Add a + boolean argument 'pdt'. + (mio_component): Call it for the parameter list of pdt type + components with 'pdt' set to true. + (mio_actual_arg): Add the boolean 'pdt' and, if it is set, call + mio_integer for the 'spec_type'. + (mio_actual_arglist): Add the boolean 'pdt' and use it in the + call to mio_actual_arg. + (mio_expr, mio_omp_udr_expr): Call mio_actual_arglist with + 'pdt' set false. + * resolve.c (get_pdt_spec_expr): Add the parameter name to the + KIND parameter error. + (get_pdt_constructor): Check that cons->expr is non-null. + * trans-array.c (structure_alloc_comps): For deallocation of + allocatable components, ensure that parameterized components + are deallocated first. Likewise, when parameterized components + are allocated, nullify allocatable components first. Do not + recurse into pointer or allocatable pdt components while + allocating or deallocating parameterized components. Test that + parameterized arrays or strings are allocated before freeing + them. + (gfc_trans_pointer_assignment): Call the new function. Tidy up + a minor whitespace issue. + trans-decl.c (gfc_trans_deferred_vars): Set 'tmp' to NULL_TREE + to prevent the expression from being used a second time. + +2017-10-07 Thomas Koenig + + PR fortran/49232 + * expr.c (gfc_check_pointer_assign): Error + for non-contiguous rhs. + +2017-10-07 Thomas Koenig + + * gfortran.h (async_io_dt): Add external reference. + * io.c (async_io_dt): Add variable. + (compare_to_allowed_values): Add prototyte. Add optional argument + num. If present, set it to the number of the entry that was + matched. + (check_io_constraints): If this is for an asynchronous I/O + statement, set async_io_dt and set the asynchronous flag for + a SIZE tag. + * resolve.c (resolve_transfer): If async_io_dt is set, set + the asynchronous flag on the variable. + (resolve_fl_namelist): If async_io_dt is set, set the asynchronous + flag on all elements of the namelist. + +2017-10-04 Paul Thomas + + PR fortran/60458 + PR fortran/77296 + * resolve.c (resolve_assoc_var): Deferred character type + associate names must not receive an integer conatant length. + * symbol.c (gfc_is_associate_pointer): Deferred character + length functions also require an associate pointer. + * trans-decl.c (gfc_get_symbol_decl): Deferred character + length functions or derived type components require the assoc + name to have variable string length. + * trans-stmt.c (trans_associate_var): Set the string length of + deferred string length associate names. The address expression + is not needed for allocatable, pointer or dummy targets. Change + the comment about defered string length targets. + +2017-10-03 Thomas Koenig + + * io.c (match_wait_element): Correctly match END and EOR tags. + * dump-parse-tree.c (show_code_node): Handle EXEC_WAIT. + +2017-10-02 Paul Thomas + + PR fortran/82312 + * resolve.c (gfc_resolve_code): Simplify condition for class + pointer assignments becoming regular assignments by asserting + that only class valued targets are permitted. + * trans-expr.c (trans_class_pointer_fcn): New function using a + block of code from gfc_trans_pointer_assignment. + (gfc_trans_pointer_assignment): Call the new function. Tidy up + a minor whitespace issue. + +2017-10-01 Dominique d'Humieres + + PR fortran/61450 + * parse.c (gfc_global_used): Replace the gfc_internal_error + with an error. + +2017-09-29 Dominique d'Humieres + + PR fortran/25071 + * interface.c (compare_actual_formal): Change warnings to errors + when "Actual argument contains too few elements for dummy + argument", unless -std=legacy is used. + +2017-09-27 Thomas Schwinge + + * lang.opt : End help text with a period. + +2017-09-26 Thomas Koenig + + * frontend-passes.c (do_subscript): Don't do anything + if inside an associate list. + +2017-09-25 Thomas Koenig + + * lang.opt: Add -Wdo-subscript. + * frontend-passes.c (do_t): New type. + (doloop_list): Use variable of do_type. + (if_level): Variable to track if levels. + (select_level): Variable to track select levels. + (gfc_run_passes): Initialize i_level and select_level. + (doloop_code): Record current level of if + select + level in doloop_list. Add seen_goto if there could + be a branch outside the loop. Use different type for + doloop_list. + (doloop_function): Call do_intent and do_subscript; move + functionality of checking INTENT to do_intent. + (insert_index_t): New type, for callback_insert_index. + (callback_insert_index): New function. + (insert_index): New function. + (do_subscript): New function. + (do_intent): New function. + (gfc_code_walker): Keep track of if_level and select_level. + * invoke.texi: Document -Wdo-subscript. + +2017-09-25 Janne Blomqvist + + * trans.c (gfc_unlikely): Remove unnecessary fold_convert. + (gfc_likely): Likewise. + +2017-09-24 Thomas Koenig + Steven G. Kargl + + PR fortran/80118 + * expr.c (gfc_get_full_arrayspec_from_expr): If there is + no symtree, set array spec to NULL. + +2017-09-23 Janus Weil + + PR fortran/82143 + * lang.opt: Add the options -fdefault-real-10 and -fdefault-real-16. + Rename flag_default_real to flag_default_real_8. + * invoke.texi: Add documentation. + * module.c (use_iso_fortran_env_module): flag_default_real is renamed. + * trans-types.c (gfc_init_kinds): Implement the flags + -fdefault-real-10 and -fdefault-real-16. Make -fdefault-double-8 work + without -fdefault-real-8. + +2017-09-21 Paul Thomas + + 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 Cesar Philippidis + + * openmp.c (gfc_match_oacc_wait): Don't restrict wait directive + arguments to constant integers. + +2017-09-17 Paul Thomas + + PR fortran/82173 + * decl.c (gfc_get_pdt_instance): Use the component initializer + expression for the default, rather than the parameter value. + * resolve.c (resolve_pdt): New function. + (resolve_symbol): Call it. Remove false error, prohibiting + deferred type parameters for dummy arguments. + + PR fortran/60483 + * primary.c (gfc_match_varspec): If the type of an associate + name is unknown and yet there is a match, try resolving the + target expression and using its type. + +2017-09-15 Paul Thomas + + PR fortran/82184 + trans-decl.c (gfc_trans_deferred_vars): Do not null the 'span' + field if the symbol is either implicitly or explicitly saved. + +2017-09-13 Paul Thomas + + PR fortran/82173 + * decl.c (match_char_kind): If the kind expression is + parameterized, save it in saved_kind_expr and set kind = 0. + (gfc_get_pdt_instance): Resolve and simplify before emitting + error on expression kind. Insert a missing simplification after + insertion of kind expressions. + +2017-09-12 Paul Thomas + + PR fortran/82173 + PR fortran/82168 + * decl.c (variable_decl): Check pdt template components for + appearance of KIND/LEN components in the type parameter name + list, that components corresponding to type parameters have + either KIND or LEN attributes and that KIND or LEN components + are scalar. Copy the initializer to the parameter value. + (gfc_get_pdt_instance): Add a label 'error_return' and follow + it with repeated code, while replacing this code with a jump. + Check if a parameter appears as a component in the template. + Make sure that the parameter expressions are integer. Validate + KIND expressions. + (gfc_match_decl_type_spec): Search for pdt_types in the parent + namespace since they are instantiated in the template ns. + * expr.c (gfc_extract_int): Use a KIND parameter if it + appears as a component expression. + (gfc_check_init_expr): Allow expressions with the pdt_kind + attribute. + *primary.c (gfc_match_actual_arglist): Make sure that the first + keyword argument is recognised when 'pdt' is set. + +2017-09-10 Paul Thomas + + PR fortran/34640 + PR fortran/40737 + PR fortran/55763 + PR fortran/57019 + PR fortran/57116 + + * expr.c (is_subref_array): Add class pointer array dummies + to the list of expressions that return true. + * trans-array.c: Add SPAN_FIELD and update indices for + subsequent fields. + (gfc_conv_descriptor_span, gfc_conv_descriptor_span_get, + gfc_conv_descriptor_span_set, is_pointer_array, + get_array_span): New functions. + (gfc_get_descriptor_offsets_for_info): New function to preserve + API for access to descriptor fields for trans-types.c. + (gfc_conv_scalarized_array_ref): If the expression is a subref + array, make sure that info->descriptor is a descriptor type. + Otherwise, if info->descriptor is a pointer array, set 'decl' + and fix it if it is a component reference. + (build_array_ref): Simplify handling of class array refs by + passing the vptr to gfc_build_array_ref rather than generating + the pointer arithmetic in this function. + (gfc_conv_array_ref): As in gfc_conv_scalarized_array_ref, set + 'decl'. + (gfc_array_allocate): Set the span field if this is a pointer + array. Use the expr3 element size if it is available, so that + the dynamic type element size is used. + (gfc_conv_expr_descriptor): Set the span field for pointer + assignments. + * trans-array.h: Prototypes for gfc_conv_descriptor_span_get + gfc_conv_descriptor_span_set and + gfc_get_descriptor_offsets_for_info added. + trans-decl.c (gfc_get_symbol_decl): If a non-class pointer + array, mark the declaration as a GFC_DECL_PTR_ARRAY_P. Remove + the setting of GFC_DECL_SPAN. + (gfc_trans_deferred_vars): Set the span field to zero in thge + originating scope. + * trans-expr.c (gfc_conv_procedure_call): Do not use copy-in/ + copy-out to pass subref expressions to a pointer dummy. + (gfc_trans_pointer_assignment): Remove code for setting of + GFC_DECL_SPAN. Set the 'span' field for non-class pointers to + class function results. Likewise for rank remap. In the case + that the target is not a whole array, use the target array ref + for remap and, since the 'start' indices are missing, set the + lbounds to one, as required by the standard. + * trans-intrinsic.c (conv_expr_ref_to_caf_ref): Pick up the + 'token' offset from the field decl in the descriptor. + (conv_isocbinding_subroutine): Set the 'span' field. + * trans-io.c (gfc_trans_transfer): Always scalarize pointer + array io. + * trans-stmt.c (trans_associate_var): Set the 'span' field. + * trans-types.c (gfc_get_array_descriptor_base): Add the 'span' + field to the array descriptor. + (gfc_get_derived_type): Pointer array components are marked as + GFC_DECL_PTR_ARRAY_P. + (gfc_get_array_descr_info): Replaced API breaking code for + descriptor offset calling gfc_get_descriptor_offsets_for_info. + * trans.c (get_array_span): New function. + (gfc_build_array_ref): Simplify by calling get_array_span and + obtain 'span' if 'decl' or 'vptr' present. + * trans.h : Rename DECL_LANG_FLAG_6, GFC_DECL_SUBREF_ARRAY_P, + as GFC_DECL_PTR_ARRAY_P. + +2017-09-09 Paul Thomas + + * decl.c : Add decl_type_param_list, type_param_spec_list as + static variables to hold PDT spec lists. + (build_sym): Copy 'type_param_spec_list' to symbol spec_list. + (build_struct): Copy the 'saved_kind_expr' to the component + 'kind_expr'. Check that KIND or LEN components appear in the + decl_type_param_list. These should appear as symbols in the + f2k_derived namespace. If the component is itself a PDT type, + copy the decl_type_param_list to the component param_list. + (gfc_match_kind_spec): If the KIND expression is parameterized + set KIND to zero and store the expression in 'saved_kind_expr'. + (insert_parameter_exprs): New function. + (gfc_insert_kind_parameter_exprs): New function. + (gfc_insert_parameter_exprs): New function. + (gfc_get_pdt_instance): New function. + (gfc_match_decl_type_spec): Match the decl_type_spec_list if it + is present. If it is, call 'gfc_get_pdt_instance' to obtain the + specific instance of the PDT. + (match_attr_spec): Match KIND and LEN attributes. Check for the + standard and for type/kind of the parameter. They are also not + allowed outside a derived type definition. + (gfc_match_data_decl): Null the decl_type_param_list and the + type_param_spec_list on entry and free them on exit. + (gfc_match_formal_arglist): If 'typeparam' is true, add the + formal symbol to the f2k_derived namespace. + (gfc_match_derived_decl): Register the decl_type_param_list + if this is a PDT. If this is a type extension, gather up all + the type parameters and put them in the right order. + *dump-parse-tree.c (show_attr): Signal PDT templates and the + parameter attributes. + (show_components): Output parameter atrributes and component + parameter list. + (show_symbol): Show variable parameter lists. + * expr.c (expr.c): Copy the expression parameter list. + (gfc_is_constant_expr): Pass on symbols representing PDT + parameters. + (gfc_check_init_expr): Break on PDT KIND parameters and + PDT parameter expressions. + (gfc_check_assign): Assigning to KIND or LEN components is an + error. + (derived_parameter_expr): New function. + (gfc_derived_parameter_expr): New function. + (gfc_spec_list_type): New function. + * gfortran.h : Add enum gfc_param_spec_type. Add the PDT attrs + to the structure symbol_attr. Add the 'kind_expr' and + 'param_list' field to the gfc_component structure. Comment on + the reuse of the gfc_actual_arglist structure as storage for + type parameter spec lists. Add the new field 'spec_type' to + this structure. Add 'param_list' fields to gfc_symbol and + gfc_expr. Add prototypes for gfc_insert_kind_parameter_exprs, + gfc_insert_parameter_exprs, gfc_add_kind, gfc_add_len, + gfc_derived_parameter_expr and gfc_spec_list_type. + * interface.c (gfc_compare_derived_types): Treat PDTs in the + same way as sequence types. + * match.c : Add variable 'type_param_spec_list'. + (gfc_op2string, gfc_match_member_sep, gfc_match_label): Remove + trailing whitespace. + (match_derived_type_spec): Match PDTs and find specific + instance. + (gfc_match_type_spec): Remove more trailing whitespace. + (gfc_match_allocate): Assumed or deferred parameters cannot + appear here. Copy the type parameter spec list to the expr for + the allocatable entity. Free 'type_param_spec_list'. + (gfc_match_common, gfc_match_namelist, gfc_match_module): Still + more trailing whitespace to remove. + (gfc_match_type_is): Allow PDT typespecs. + * match.h : Modify prototypes for gfc_match_formal_arglist and + gfc_match_actual_arglist. + * module.c (ab_attribute, mstring attr_bits): PDT attributes + added. + (mio_symbol_attribute): PDT attributes handled. + (mio_component): Deal with 'kind_expr' field. + (mio_full_f2k_derived): For PDT templates, transfer the formal + namespace symroot to the f2k_derived namespace. + *primary.c (match_keyword_arg, gfc_match_actual_arglist): Add + modifications to handle PDT spec lists. These are flagged in + both cases by new boolean arguments, whose prototype defaults + are false. + (gfc_match_structure_constructor, match_variable): Remove yet + more trailing whitespace. + * resolve.c (get_pdt_spec_expr, get_pdt_constructor): New + functions. + (resolve_structure_cons): If the constructor is a PDT template, + call get_pdt_constructor to build it using the parameter lists + and then get the specific instance of the PDT. + (resolve_component): PDT strings need a hidden string length + component like deferred characters. + (resolve_symbol): Dummy PDTs cannot have deferred parameters. + * symbol.c (gfc_add_kind, gfc_add_len): New functions. + (free_components): Free 'kind_expr' and 'param_list' fields. + (gfc_free_symbol): Free the 'param_list' field. + (gfc_find_sym_tree): If the current state is a PDT template, + look for the symtree in the f2k_derived namspaces. + trans-array.c (structure_alloc_comps): Allocate and deallocate + PDTs. Check dummy arguments for compliance of LEN parameters. + Add the new functions to the preceeding enum. + (gfc_allocate_pdt_comp, gfc_deallocate_pdt_comp and + gfc_check_pdt_dummy): New functions calling above. + * trans-array.h : Add prototypes for these functions. + trans-decl.c (gfc_get_symbol_decl): Call gfc_defer_symbol_init + as appropriate for PDT symbols. + (gfc_trans_deferred_vars): Allocate/deallocate PDT entities as + they come into and out of scope. Exclude pdt_types from being + 'gcc_unreachable'. + (gfc_trans_subcomponent_assign): PDT array components must be + handles as if they are allocatable. + * trans-stmt.c (gfc_trans_allocate): Handle initialization of + PDT entities. + (gfc_trans_deallocate): Likewise. + * trans-types.c (gfc_get_derived_type): PDT templates must not + arrive here. PDT string components are handles as if deferred. + Similarly, PDT arrays are treated as if allocatable. PDT + strings are pointer types. + * trans.c (gfc_deferred_strlen): Handle PDT strings in the same + way as deferred characters. + +2017-09-01 Jakub Jelinek + + PR c/81887 + * parse.c (decode_omp_directive): Use matchs instead of matcho for + end ordered and ordered directives, except for ordered depend. For + -fopenmp-simd and ordered depend, reject the stmt. + * trans-openmp.c (gfc_trans_omp_ordered): For -fopenmp-simd ignore + threads clause and if simd clause isn't present, just translate the + body. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * trans-types.c (gfc_init_kinds): Use opt_scalar_int_mode for + the mode iterator. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * target-memory.c (size_integer): Use SCALAR_INT_TYPE_MODE. + (size_logical): Likewise. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * trans-types.c (gfc_type_for_mode): Use is_a . + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * trans-types.c (gfc_init_kinds): Use opt_scalar_float_mode + and FOR_EACH_MODE_IN_CLASS. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * target-memory.c (size_float): Use SCALAR_FLOAT_TYPE_MODE + instead of TYPE_MODE. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * trans-types.c (gfc_init_kinds): Use machine_mode instead of int + for "mode". + +2017-08-28 Janus Weil + + PR fortran/81770 + * expr.c (gfc_check_pointer_assign): Improve the check whether pointer + may outlive pointer target. + +2017-08-27 Thomas Koenig + + PR fortran/81974 + * frontend-passes (inline_matumul_assign): Explicity + set typespec for call to CONJG. + +2017-08-21 Jerry DeLisle + + PR fortran/81296 + * trans-io.c (get_dtio_proc): Add check for format label and set + formatted flag accordingly. Reorganize the code a little. + +2017-08-16 Thomas Koenig + + PR fortran/81116 + * frontend-passes.c (realloc_string_callback): If expression is a + concatenation, also check for dependency. + (constant_string_length): Check for presence of symtree. + +2017-08-13 Thomas Koenig + + * gfortran.texi: Document format of unformatted sequential files. + +2017-08-11 Thomas Koenig + + * invoke.texi: Actually commit change about -Ofast. + +2017-08-11 Thomas Koenig + + PR fortran/60355 + * resolve.c (resolve_symbol): Adjust (and reformat) + comment. Perform check if a BIND(C) is declared + at module level regardless of whether it is typed + implicitly or not. + +2017-08-10 Fritz Reese + + * options.c (set_dec_flags): Only set legacy standards when value + is not zero. + +2017-08-10 Fritz Reese + + * options.c (set_dec_flags, gfc_post_options): Only set flag_d_lines + with -fdec when not set by user. + +2017-08-10 Fritz Reese + + * decl.c (attr_seen): New static variable. + * decl.c (variable_decl): Match %FILL in STRUCTURE body. + * gfortran.texi: Update documentation. + +2017-08-08 Martin Liska + + * trans-types.c: Include header files. + +2017-08-07 Thomas Koenig + + PR fortran/68829 + PR fortran/81701 + * options.c: Make -Ofast honor -fmax-stack-var-size. + * invoke.texi: Document change. + +2017-08-01 Thomas König + + PR fortran/79312 + * intrisic.c (gfc_convert_type_warn): Only set typespec for + empty array constructors which don't have it already. + +2017-08-01 Thomas Koenig + + PR fortran/45435 + * lang.opt (fc-prototypes): Add option. + * gfortran.h (gfc_typespec): Add interop_kind to struct. + (gfc_dump_c_prototypes): Add prototype. + * decl.c (gfc_match_kind_spec): Copy symbol used for kind to typespec. + * parse.c (gfc_parse_file): Call gfc_dump_prototypes. + * dump-parse-tree.c (gfc_dump_c_prototypes): New function. + (type_return): New enum. + (get_c_type_name): New function. + (write_decl): New function. + (write_type): New function. + (write_variable): New function. + (write_proc): New function. + (write_interop_decl): New function. + * invoke.texi: Document -fc-prototypes. + +2017-08-01 Dominique d'Humieres + + PR fortran/53542 + * expr.c (gfc_check_init_expr): Use the renamed name. + +2017-07-31 Jakub Jelinek + + * check.c (gfc_check_num_images): Fix a pasto. + +2017-07-29 Jakub Jelinek + + * trans-decl.c (gfc_trans_use_stmts): Pass false as new argument to + the imported_module_or_decl debug hook. + +2017-07-28 Trevor Saunders + + * resolve.c (find_reachable_labels): Adjust. + +2017-07-25 Jakub Jelinek + + * ioparm.def: Use 1U << 31 instead of 1 << 31 as flags2 mask. + +2017-07-24 Thomas Koenig + + * dump-parse-tree.c (show_symbol): Show binding label if present. + +2017-07-24 Thomas Koenig + Mikael Morin + + PR fortran/66102 + * fortran/trans-array.c (gfc_conv_resolve_dependencies): + Break if dependency has been found. + +2017-07-23 Alexander Monakov + + * interface.c (pair_cmp): Fix gfc_symbol comparison. Adjust comment. + +2017-07-18 Nathan Sidwell + + * trans.c (gfc_build_array_ref): Use TYPE_MAX_VALUE. + +2017-07-09 Dominique d'Humieres + + PR fortran/81341 + * class.c (class_array_ref_detected): Remove a redundant + condition. + +2017-07-06 Harald Anlauf + + PR fortran/70071 + * array.c (gfc_ref_dimen_size): Handle bad subscript triplets. + +2017-07-03 Dominique d'Humieres + + PR fortran/79866 + * resolve.c (resolve_symbol): Fix typo. + +2017-07-03 Dominique d'Humieres + + PR fortran/79843 + * symbol.c (check_conflict): Add missing "conflicts". + +2017-06-29 Cesar Philippidis + + PR fortran/77765 + * openmp.c (gfc_match_oacc_routine): Check if proc_name exist before + comparing the routine name against it. + +2017-06-27 Jerry DeLisle + + PR fortran/80164 + * trans-stmt.c (gfc_trans_call): If no code expr, use code->loc + as warning/error locus. + +2017-06-24 Jerry DeLisle + + PR fortran/81160 + * arith.c (wprecision_int_real): Set return value before + mpz_clear and then return after it. + +2017-06-15 Janus Weil + + PR fortran/80983 + * trans-expr.c (gfc_conv_procedure_call): Deallocate the result of + scalar allocatable procedure-pointer components. + +2017-06-10 Thomas Koenig + + PR fortran/80988 + * frontend-passes.c (traverse_io_block): Also + check for variables occurring as indices multiple + time in a single implied DO loop. + +2017-06-05 Janus Weil + + PR fortran/70601 + * trans-expr.c (gfc_conv_procedure_call): Fix detection of allocatable + function results. + +2017-06-05 Nicolas Koenig + + PR fortran/35339 + * frontend-passes.c (traverse_io_block): New function. + (simplify_io_impl_do): New function. + (optimize_namespace): Invoke gfc_code_walker with + simplify_io_impl_do. + +2017-06-02 Jakub Jelinek + + PR fortran/80918 + * openmp.c (resolve_omp_clauses): Fix a typo. + +2017-05-30 David Malcolm + + * error.c (gfc_format_decoder): Update for new bool and + const char ** params. + +2017-05-29 Thomas Koenig + + PR fortran/37131 + * frontend-passes.c (check_conjg_transpose_variable): + Add prototype. + (has_dimen_vector_ref): Likewise + (matmul_temp_args): New function. Add prototype. + (optimize_namespace): Call matmul_temp_args. + +2017-05-28 Thomas Koenig + + * frontend-passes.c (matmul_lhs_realloc): Correct + allocation size for case A1B2. + +2017-05-25 Thomas Koenig + + * dump-parse-tree.c (show_expr): Also replace + with dumpfile for showing values for forgotten + case. + +2017-05-24 Thomas Koenig + + * dump-parse-tree.c (show_expr): Replace stdout + with dumpfile for showing values. + +2017-05-24 Thomas Koenig + + PR fortran/66094 + * frontend-passes.c (matrix_case): Add A2TB2. + (inline_limit_check): Handle MATMUL(TRANSPOSE(A),B) + (inline_matmul_assign): Likewise. + +2017-05-23 Thomas Schwinge + + * openmp.c (OACC_KERNELS_CLAUSES): Add "OMP_CLAUSE_NUM_GANGS", + "OMP_CLAUSE_NUM_WORKERS", "OMP_CLAUSE_VECTOR_LENGTH". + +2017-05-22 Janus Weil + + PR fortran/80766 + * resolve.c (resolve_fl_derived): Make sure that vtype symbols are + properly resolved. + +2017-05-19 Paul Thomas + + PR fortran/80333 + * trans-io.c (nml_get_addr_expr): If we are dealing with class + type data set tmp tree to get that address. + (transfer_namelist_element): Set the array spec to point to the + the class data. + +2017-05-19 David Malcolm + + PR fortran/79852 + * bbt.c (insert): Remove trailing exclamation mark from message. + * decl.c (gfc_match_final_decl): Likewise. + * dump-parse-tree.c (show_expr): Likewise. + * module.c (gfc_use_module): Likewise. + * primary.c (build_actual_constructor): Likewise. + (gfc_convert_to_structure_constructor): Likewise. + +2017-05-19 Thomas Schwinge + + * gfortran.h (enum gfc_omp_default_sharing): Add + "OMP_DEFAULT_PRESENT". + * dump-parse-tree.c (show_omp_clauses): Handle it. + * openmp.c (gfc_match_omp_clauses): Likewise. + * trans-openmp.c (gfc_trans_omp_clauses): Likewise. + +2017-05-18 Fritz Reese + + PR fortran/79968 + * decl.c (match_attr_spec, gfc_match_automatic, + gfc_match_static, gfc_match_structure_decl): Unify diagnostic + errors regarding -fdec options. + * io.c (match_dec_etag, match_dec_vtag, match_dec_ftag): Ditto. + +2017-05-17 Jerry DeLisle + + PR fortran/80741 + * trans-io.c (transfer_namelist_element): Change check from + NULL_TREE to null_pointer_node. + +2017-05-17 Fritz Reese + + PR fortran/80668 + * expr.c (component_initializer): Don't generate initializers for + pointer components. + * invoke.texi (-finit-derived): Document. + +2017-05-16 Paul Thomas + + PR fortran/80554 + * decl.c (build_sym): In a submodule allow overriding of host + associated symbols from the ancestor module with a new + declaration. + +2017-05-15 Steven G. Kargl + + PR fortran/80674 + * trans-stmt.c (gfc_trans_integer_select): Remove redundant condition. + +2017-05-15 Steven G. Kargl + + PR fortran/80752 + * expr.c (gfc_generate_initializer): If type conversion fails, + check for error and return NULL. + +2017-05-14 Nicolas Koenig + + PR fortran/80442 + * array.c (gfc_ref_dimen_size): Simplify stride + expression + * data.c (gfc_advance_section): Simplify start, + end and stride expressions + (gfc_advance_section): Simplify start and end + expressions + (gfc_get_section_index): Simplify start expression + +2017-05-13 Jerry DeLisle + + * io.c (gfc_resolve_dt): Fix returns to bool type. + +2017-05-11 Jerry DeLisle + + PR fortran/78659 + * io.c (dtio_procs_present): Add new function to check for DTIO + procedures relative to I/O statement READ or WRITE. + (gfc_resolve_dt): Add namelist checks using the new function. + * resolve.c (dtio_procs_present): Remove function and related + namelist checks. (resolve_fl_namelist): Add check specific to + Fortran 95 restriction on namelist objects. + +2017-05-11 Nathan Sidwell + + * trans-decl.c: Include dumpfile.h not tree-dump.h, + +2017-05-09 Janus Weil + + PR fortran/79311 + * resolve.c (gfc_resolve_finalizers): Ensure that derived-type + components have a their finalizers resolved, also if the superordinate + type itself has a finalizer. + +2017-05-08 Thomas Koenig + + PR fortran/79930 + * frontend-passes.c (matmul_to_var_expr): New function, + add prototype. + (matmul_to_var_code): Likewise. + (optimize_namespace): Use them from gfc_code_walker. + +2017-05-05 David Malcolm + + * cpp.c (cb_cpp_error): Replace report_diagnostic + with diagnostic_report_diagnostic. + * error.c (gfc_warning): Likewise. + (gfc_warning_now_at): Likewise. + (gfc_warning_now): Likewise. + (gfc_warning_internal): Likewise. + (gfc_error_now): Likewise. + (gfc_fatal_error): Likewise. + (gfc_error_opt): Likewise. + (gfc_internal_error): Likewise. + +2017-05-01 Thomas Koenig + + PR fortran/37131 + * frontend-passes.c (inline_matmul_assign): Also check bounds + for allocatable lhs and matrix-vector-multiplication. + +2017-04-23 Jerry DeLisle + + PR fortran/80484 + * io.c (format_lex): Check for '/' and set token to FMT_SLASH. + (check_format): Move FMT_DT checking code to data_desc section. + * module.c (gfc_match_use): Include the case of INTERFACE_DTIO. + +2017-04-22 Janus Weil + + PR fortran/80121 + * trans-types.c (gfc_conv_procedure_call): Deallocate the components + of allocatable intent(out) arguments. + +2017-04-21 Janus Weil + + PR fortran/80392 + * trans-types.c (gfc_get_derived_type): Prevent an infinite loop when + building a derived type that includes a procedure pointer component + with a polymorphic result. + +2017-04-17 Paul Thomas + + PR fortran/80440 + * module.c (find_symtree_for_symbol): Delete. + (read_module): Remove the call to the above. + +2017-04-14 Janus Weil + + PR fortran/80361 + * class.c (generate_finalization_wrapper): Give the finalization wrapper + the recursive attribute. + +2017-04-10 Nicolas Koenig + Paul Thomas + + PR fortran/69498 + * module.c (gfc_match_submodule): Add error + if function is called in the wrong state. + +2017-04-10 Janus Weil + + PR fortran/80046 + * expr.c (gfc_check_pointer_assign): Check if procedure pointer + components in a pointer assignment need an explicit interface. + +2017-03-18 Nicolas Koenig + + PR fortran/69498 + * symbol.c (gfc_delete_symtree): If there is a period in the name, ignore + everything before it. + +2017-03-28 Janus Weil + + PR fortran/78661 + * trans-io.c (transfer_namelist_element): Perform a polymorphic call + to a DTIO procedure if necessary. + +2017-03-25 Paul Thomas + + PR fortran/80156 + PR fortran/79382 + * decl.c (access_attr_decl): Remove the error for an absent + generic DTIO interface and ensure that symbol has the flavor + FL_PROCEDURE. + +2017-03-22 Dominique d'Humieres + + PR fortran/79838 + * module.c: Remove trailing period. + +2017-03-22 Dominique d'Humieres + + PR fortran/79602 + * decl.c: Replace '%s' with %qs. + * expr.c: Likewise. + * interface.c: Likewise. + * match.c: Likewise. + * primary.c: Likewise. + * resolve.c: Likewise. + + PR fortran/79844 + PR fortran/80011 + * io.c: Remove trailing spaces. + * match.c: Likewise. + * openmp.c: Likewise. + * resolve.c: Likewise. + * trans-intrinsic.c: Likewise. + + PR fortran/79853 + * expr.c: Remove a double spaces. + + PR fortran/79859 + * primary.c: Remove spurious quotes around %qs. + +2017-03-22 Thomas Koenig + + PR fortran/80142 + * frontend-passes.c (combine_array_constructor): Take + location of new expression from constructor expression instead + of constructor. + +2017-03-20 Nicolas Koenig + + PR fortran/39239 + * symbol.c (check_conflict): Report an error if an EQUIVALENCE + object is BIND(C) + +2017-03-18 Nicolas Koenig + + PR fortran/69498 + * decl.c (add_hidden_procptr_result): Fixed Refs count of the + created "ppr@" symbol. + +2017-03-18 Paul Thomas + + PR fortran/79676 + * module.c (mio_symbol_attribute): Remove reset of the flag + 'no_module_procedures'. + (check_for_module_procedures): New function. Move declaration + of 'no_module_procedures' to above it. + (gfc_dump_module): Traverse namespace calling new function. + +2017-03-18 Paul Thomas + + PR fortran/71838 + * symbol.c (check_conflict): A dummy procedure in a submodule, + module procedure is not an error. + (gfc_add_flavor): Ditto. + +2017-03-17 Jerry DeLisle + + PR fortran/79841 + * openmp.c (check_symbol_not_pointer): Adjust diagnostics. + +2017-03-16 Jakub Jelinek + + PR fortran/80010 + * parse.c (gfc_ascii_statement): Use !$ACC for ST_OACC_ATOMIC + and ST_OACC_END_ATOMIC, instead of !ACC. + * trans-decl.c (finish_oacc_declare): Use !$ACC instead of $!ACC. + * openmp.c (gfc_match_oacc_declare, gfc_match_oacc_wait, + gfc_resolve_oacc_declare): Likewise. + + PR fortran/79886 + * error.c (gfc_format_decoder): Rename plus argument to set_locus, + remove ATTRIBUTE_UNUSED from all arguments, call default_tree_printer + if not a Fortran specific spec. + * trans-io.c: Include options.h. + (gfc_build_st_parameter): Temporarily disable -Wpadded around layout + of artificial IO data structures. + +2017-03-15 David Malcolm + + PR fortran/79860 + * resolve.c (resolve_contained_fntype): Make error messages more + amenable to translation. + +2017-03-06 Richard Biener + + PR fortran/79894 + * trans.c (gfc_add_modify_loc): Weaken assert. + +2017-03-05 Andre Vehreschild , + Alessandro Fanfarillo + + * check.c (positive_check): Add new function checking constant for + being greater then zero. + (gfc_check_image_status): Add checking of image_status arguments. + (gfc_check_failed_or_stopped_images): Same but for failed_- and + stopped_images function. + * dump-parse-tree.c (show_code_node): Added output of FAIL IMAGE. + * gfortran.h (enum gfc_statement): Added FAIL_IMAGE_ST. + (enum gfc_isym_id): Added new intrinsic symbols. + (enum gfc_exec_op): Added EXEC_FAIL_IMAGE. + * gfortran.texi: Added description for the new API functions. Updated + coverage of gfortran of TS18508. + * intrinsic.c (add_functions): Added symbols to resolve new intrinsic + functions. + * intrinsic.h: Added prototypes. + * iresolve.c (gfc_resolve_failed_images): Resolve the failed_images + intrinsic. + (gfc_resolve_image_status): Same for image_status. + (gfc_resolve_stopped_images): Same for stopped_images. + * libgfortran.h: Added prototypes. + * match.c (gfc_match_if): Added matching of FAIL IMAGE statement. + (gfc_match_fail_image): Match a FAIL IMAGE statement. + * match.h: Added prototype. + * parse.c (decode_statement): Added matching for FAIL IMAGE. + (next_statement): Same. + (gfc_ascii_statement): Same. + * resolve.c: Same. + * simplify.c (gfc_simplify_failed_or_stopped_images): For COARRAY= + single a constant result can be returne.d + (gfc_simplify_image_status): For COARRAY=single the result is constant. + * st.c (gfc_free_statement): Added FAIL_IMAGE handling. + * trans-decl.c (gfc_build_builtin_function_decls): Added decls of the + new intrinsics. + * trans-expr.c (gfc_conv_procedure_call): This is first time all + arguments of a function are optional, which is now handled here + correctly. + * trans-intrinsic.c (conv_intrinsic_image_status): Translate + image_status. + (gfc_conv_intrinsic_function): Add support for image_status. + (gfc_is_intrinsic_libcall): Add support for the remaining new + intrinsics. + * trans-stmt.c (gfc_trans_fail_image): Trans a fail image. + * trans-stmt.h: Add the prototype for the above. + * trans.c (trans_code): Dispatch for fail_image. + * trans.h: Add the trees for the new intrinsics. + +2017-03-03 Jerry DeLisle + + PR fortran/79841 + * openmp.c (check_symbol_not_pointer): Adjust diagnostic. + +2017-02-28 Paul Thomas + + PR fortran/79739 + * resolve.c (resolve_fl_procedure): Deal with the case where + 'submodule_name' is NULL so that gfc_error does not ICE. + Reformat the error message to make it more consistent. + +2017-02-28 Jakub Jelinek + + * parse.c (parse_critical_block): Use cond ? G_("...") : G_("...") + instead of just cond ? "..." : "...". + * scanner.c (gfc_next_char_literal): Likewise. + * match.c (match_exit_cycle): Likewise. + +2017-02-26 Thomas Koenig + + PR fortran/51119 + * options.c (gfc_post_options): Set default limit for matmul + inlining to 30. + * invoke.texi: Document change. + +2017-02-25 Dominique d'Humieres + + PR fortran/79601 + * interface.c (check_dtio_arg_TKR_intent): Change 'intent' + to 'INTENT'. + +2017-02-25 Dominique d'Humieres + + PR fortran/79597 + * interface.c (gfc_match_end_interface): Remove spurious comma + and space, replace 'got %s' with 'got %qs'. + +2017-02-20 Paul Thomas + + PR fortran/79599 + * interface.c (check_dtio_arg_TKR_intent): Supply 'must' + missing from error message. + +2017-02-20 Paul Thomas + + PR fortran/79523 + * interface.c (gfc_find_typebound_dtio_proc): Guard test for + flavor attribute by checking that symbol is resolved. + +2017-02-16 Paul Thomas + + PR fortran/79382 + * decl.c (access_attr_decl): Test for presence of generic DTIO + interface and emit error if not present. + +2017-02-20 Paul Thomas + + PR fortran/79434 + * parse.c (check_component, parse_union): Whitespace. + (set_syms_host_assoc): For a derived type, check if the module + in which it was declared is one of the submodule ancestors. If + it is, make the components public. Otherwise, reset attribute + 'host_assoc' and set 'use-assoc' so that encapsulation is + preserved. + +2017-02-19 Paul Thomas + + PR fortran/79447 + * decl.c (gfc_set_constant_character_len): Whitespace. + (gfc_match_end): Catch case where a procedure is contained in + a module procedure and ensure that 'end procedure' is the + correct termination. + +2017-02-19 Paul Thomas + + PR fortran/79402 + * resolve.c (fixup_unique_dummy): New function. + (gfc_resolve_expr): Call it for dummy variables with a unique + symtree name. + +2017-02-19 Andre Vehreschild + + PR fortran/79229 + * trans-expr.c (gfc_trans_assignment_1): Deref indirect refs when + compiling with -fcheck=mem to check the pointer and not the data. + +2017-02-19 Andre Vehreschild + + PR fortran/79335 + * trans-array.c (duplicate_allocatable_coarray): Ensure attributes + passed are properly initialized. + (structure_alloc_comps): Same. + * trans-expr.c (gfc_trans_structure_assign): Same. + +2017-02-13 Jakub Jelinek + + * trans-expr.c (gfc_conv_substring): Add missing space in diagnostics. + +2017-02-12 Thomas Koenig + + PR fortran/65542 + * intrinsic.c (gfc_intrinsic_func_interface): Return an error + for -std=f95 for disallowed transformational functions in + initialization expressions. + +2017-02-09 Cesar Philippidis + Joseph Myers + + * openmp.c (resolve_omp_clauses): Error on directives + containing both tile and collapse clauses. + (resolve_oacc_loop_blocks): Represent '*' tile arguments as zero. + * trans-openmp.c (gfc_trans_omp_do): Lower tiled loops like + collapsed loops. + +2017-02-07 Steven G. Kargl + + * trans-types.c (gfc_get_int_kind_from_width_isofortranen): Choose + REAL type with the widest precision if two (or more) have the same + storage size. + +2017-02-05 Andre Vehreschild + + PR fortran/79344 + * trans-stmt.c (gfc_trans_allocate): Only deallocate the components of + the temporary, when a new object was created for the temporary. Not + when it is just an alias to an existing object. + +2017-02-05 Andre Vehreschild + + PR fortran/79335 + * trans-decl.c (generate_coarray_sym_init): Retrieve the symbol's + attributes before using them. + +2017-02-05 Andre Vehreschild + + PR fortran/78958 + * trans-stmt.c (gfc_trans_allocate): Add the multiplying the _len + component of unlimited polymorphic objects when source-allocating. + +2017-02-05 Andre Vehreschild + + PR fortran/79230 + * trans-array.c (structure_alloc_comps): Ignore pointer components when + freeing structures. + +2017-01-25 Maxim Ostapenko + + PR lto/79061 + * f95-lang.c (gfc_create_decls): Include stringpool.h. + Pass main_input_filename to build_translation_unit_decl. + +2017-01-23 Thomas Koenig + + * arith.c (arith_power): If simplifying integer power expression + to zero, warn if -Winteger-division is given. + +2017-01-22 Jakub Jelinek + + PR fortran/79154 + * parse.c (matchs, matcho, matchds, matchdo): Replace return st; + with { ret = st; goto finish; }. + (decode_omp_directive): Allow declare simd, declare target and + simd directives in PURE/ELEMENTAL procedures. Only call + gfc_unset_implicit_pure on successful match of other procedures. + +2017-01-21 Gerald Pfeifer + + * gfc-internals.texi (Symbol Versioning): Change references + to www.akkadia.org to https. + +2017-01-21 Jakub Jelinek + + * gfortran.h (gfc_extract_int): Change return type to bool. Add + int argument with = 0. + * decl.c (gfc_match_kind_spec): Adjust gfc_extract_int caller, pass + 1 as new last argument to it, don't emit gfc_error. + (match_char_kind): Likewise. + (gfc_match_decl_type_spec): Use gfc_get_string ("%s", x) instead of + gfc_get_string (x). + (gfc_match_derived_decl, match_binding_attributes): Likewise. + (gfc_match_structure_decl): Don't sprintf back to name, call + get_struct_decl directly with gfc_dt_upper_string (name) result. + * trans-stmt.c (gfc_trans_allocate): Use gfc_get_string ("%s", x) + instead of gfc_get_string (x). + * module.c (gfc_dt_lower_string, gfc_dt_upper_string, + gfc_match_use, gfc_match_submodule, find_true_name, mio_pool_string, + mio_symtree_ref, mio_expr, mio_omp_udr_expr, load_generic_interfaces, + load_omp_udrs, load_needed, read_module, dump_module, + create_intrinsic_function, import_iso_c_binding_module, + create_int_parameter, create_int_parameter_array, create_derived_type, + use_iso_fortran_env_module): Likewise. + * error.c (gfc_diagnostic_starter, gfc_diagnostic_start_span): Use + pp_verbatim (context->printer, "%s", x) instead of + pp_verbatim (context->printer, x). + * match.c (gfc_match_small_int): Adjust gfc_extract_int caller, pass + 1 as new last argument to it, don't emit gfc_error. + (gfc_match_small_int_expr): Likewise. + * iresolve.c (gfc_get_string): Optimize format "%s" case. + (resolve_bound): Use gfc_get_string ("%s", x) instead of + gfc_get_string (x). + (resolve_transformational): Formatting fix. + (gfc_resolve_char_achar): Change name argument to bool is_achar, + use a single format string and if is_achar add "a" before "char". + (gfc_resolve_achar, gfc_resolve_char): Adjust callers. + * expr.c (gfc_extract_int): Change return type to bool, return true + if some error occurred. Add REPORT_ERROR argument, if non-zero + call either gfc_error or gfc_error_now depending on its sign. + * arith.c (arith_power): Adjust gfc_extract_int caller. + * symbol.c (gfc_add_component): Use gfc_get_string ("%s", x) instead + of gfc_get_string (x). + (gfc_new_symtree, gfc_delete_symtree, gfc_get_uop, gfc_new_symbol, + gfc_get_gsymbol, generate_isocbinding_symbol): Likewise. + * openmp.c (gfc_match_omp_clauses): Adjust gfc_extract_int caller, pass + -1 as new last argument to it, don't emit gfc_error_now. + (gfc_match_omp_declare_reduction): Use gfc_get_string ("%s", x) + instead of gfc_get_string (x). + * check.c (kind_check): Adjust gfc_extract_int caller. + * intrinsic.c (add_sym, find_sym, make_alias): Use + gfc_get_string ("%s", x) instead of gfc_get_string (x). + * simplify.c (get_kind, gfc_simplify_btest, gfc_simplify_maskr, + gfc_simplify_maskl, gfc_simplify_poppar, gfc_simplify_repeat, + gfc_simplify_selected_int_kind, gfc_simplify_selected_real_kind): + Adjust gfc_extract_int callers. + * trans-decl.c (gfc_find_module): Use gfc_get_string ("%s", x) + instead of gfc_get_string (x). + * matchexp.c (expression_syntax): Add const. + * primary.c (match_kind_param, match_hollerith_constant, + match_string_constant): Adjust gfc_extract_int callers. + (match_keyword_arg): Use gfc_get_string ("%s", x) instead of + gfc_get_string (x). + * frontend-passes.c (optimize_minmaxloc): Likewise. + +2017-01-19 Andre Vehreschild + + PR fortran/70696 + * trans-decl.c (gfc_build_qualified_array): Add static decl to parent + function only, when the decl-context is not the translation unit. + +2017-01-18 Louis Krupp + + PR fortran/50069 + PR fortran/55086 + * trans-expr.c (gfc_conv_variable): Don't treat temporary variables + as function arguments. + * trans-stmt.c (forall_make_variable_temp, + generate_loop_for_temp_to_lhs, gfc_trans_assign_need_temp, + gfc_trans_forall_1): Don't adjust offset of forall temporary + for array sections, make forall temporaries work for substring + expressions, improve test coverage by adding -ftest-forall-temp + option to request usage of temporary array in forall code. + * lang.opt: Add -ftest-forall-temp option. + * invoke.texi: Add -ftest-forall-temp option. + +2017-01-18 Andre Vehreschild + + * primary.c (caf_variable_attr): Improve figuring whether the current + component is the last one refed. + * trans-stmt.c (gfc_trans_allocate): Do not generate sync_all calls + when allocating pointer or allocatable components. + +2017-01-18 Andre Vehreschild + + * gfortran.texi: Add missing parameters to caf-API functions. Correct + typos and clarify some descriptions. + +2017-01-18 Andre Vehreschild + + PR fortran/70696 + Missed some cases, here they are: + * trans-decl.c (gfc_build_qualified_array): Add static tokens to the + parent function's scope. + * trans-expr.c (gfc_get_tree_for_caf_expr): Shorten code. Remove + unnecessary assert. + +2017-01-13 Andre Vehreschild + + PR fortran/70697 + * resolve.c (resolve_lock_unlock_event): Resolve the expression for + event's until_count. + +2017-01-13 Andre Vehreschild + + PR fortran/70696 + * trans-expr.c (gfc_get_tree_for_caf_expr): Ensure the backend_decl + is valid before accessing it. + +2017-01-09 Jakub Jelinek + + PR translation/79019 + PR translation/79020 + * decl.c (attr_decl1): Fix spelling in translatable string. + * intrinsic.texi: Fix spelling - invokation -> invocation. + * lang.opt (faggressive-function-elimination, gfc_convert): Fix + typos in descriptions. + * openmp.c (resolve_omp_clauses): Add missing whitespace to + translatable strings. + +2017-01-08 Martin Sebor + + PR tree-optimization/78913 + PR middle-end/77708 + * trans-common.c (build_equiv_decl): Increase buffer size to avoid + truncation for any argument. + * trans-types.c (gfc_build_logical_type): Same. + +2017-01-07 Andre Vehreschild + + PR fortran/78781 + PR fortran/78935 + * expr.c (gfc_check_pointer_assign): Return the same error message for + rewritten coarray pointer assignments like for plain ones. + * gfortran.h: Change prototype. + * primary.c (caf_variable_attr): Set attributes used ones only only + ones. Add setting of pointer_comp attribute. + (gfc_caf_attr): Add setting of pointer_comp attribute. + * trans-array.c (gfc_array_allocate): Add flag that the component to + allocate is not an ultimate coarray component. Add allocation of + pointer arrays. + (structure_alloc_comps): Extend nullify to treat pointer components in + coarrays correctly. Restructure nullify to remove redundant code. + (gfc_nullify_alloc_comp): Allow setting caf_mode flags. + * trans-array.h: Change prototype of gfc_nullify_alloc_comp (). + * trans-decl.c (generate_coarray_sym_init): Call nullify_alloc_comp for + derived type coarrays with pointer components. + * trans-expr.c (gfc_trans_structure_assign): Also treat pointer + components. + (trans_caf_token_assign): Handle assignment of token of scalar pointer + components. + (gfc_trans_pointer_assignment): Call above routine. + * trans-intrinsic.c (conv_expr_ref_to_caf_ref): Add treating pointer + components. + (gfc_conv_intrinsic_caf_get): Likewise. + (conv_caf_send): Likewise. + * trans-stmt.c (gfc_trans_allocate): After allocating a derived type in + a coarray pre-register the tokens. + (gfc_trans_deallocate): Simply determining the coarray type (scalar or + array) and deregistering it correctly. + * trans-types.c (gfc_typenode_for_spec): Replace in_coarray flag by the + actual codim to allow lookup of array types in the cache. + (gfc_build_array_type): Likewise. + (gfc_get_array_descriptor_base): Likewise. + (gfc_get_array_type_bounds): Likewise. + (gfc_get_derived_type): Likewise. + * trans-types.h: Likewise. + * trans.c (gfc_deallocate_with_status): Enable deregistering of all kind + of coarray components. + (gfc_deallocate_scalar_with_status): Use free() in fcoarray_single mode + instead of caf_deregister. + +2017-01-06 Jakub Jelinek + + * simplify.c (simplify_transformation_to_array): Use + GCC_DIAGNOSTIC_PUSH_IGNORED and GCC_DIAGNOSTIC_POP instead of + #pragma GCC diagnostic {push,ignored,pop}. + +2017-01-06 Alexandre Oliva + + * simplify.c (simplify_transformation_to_array): Silence + array bounds warning. Fix whitespace. + +2017-01-04 Alexandre Oliva + + * module.c (load_omp_udrs): Initialize name. + +2017-01-02 Janne Blomqvist + + PR fortran/78534 + * trans-expr.c (gfc_trans_string_copy): Rework string copy + algorithm to avoid -Wstringop-overflow warning. + +2017-01-01 Jakub Jelinek + + Update copyright years. + + * gfortranspec.c (lang_specific_driver): Update copyright notice + dates. + * gfc-internals.texi: Bump @copying's copyright year. + * gfortran.texi: Ditto. + * intrinsic.texi: Ditto. + * invoke.texi: Ditto. + +Copyright (C) 2017 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/fortran/gfc-internals.texi b/gcc/fortran/gfc-internals.texi index cef61a76785..7b6718c16a4 100644 --- a/gcc/fortran/gfc-internals.texi +++ b/gcc/fortran/gfc-internals.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename gfc-internals.info -@set copyrights-gfortran 2007-2017 +@set copyrights-gfortran 2007-2018 @include gcc-common.texi diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index fc95ec0bf74..a8fdf92aaa0 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename gfortran.info -@set copyrights-gfortran 1999-2017 +@set copyrights-gfortran 1999-2018 @include gcc-common.texi diff --git a/gcc/fortran/gfortranspec.c b/gcc/fortran/gfortranspec.c index 7a27f53da57..7749bb069e1 100644 --- a/gcc/fortran/gfortranspec.c +++ b/gcc/fortran/gfortranspec.c @@ -276,7 +276,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options, case OPT__version: printf ("GNU Fortran %s%s\n", pkgversion_string, version_string); - printf ("Copyright %s 2017 Free Software Foundation, Inc.\n", + printf ("Copyright %s 2018 Free Software Foundation, Inc.\n", _("(C)")); fputs (_("This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"), diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index 58ace824c46..fbe9938b0e3 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -1,5 +1,5 @@ @ignore -Copyright (C) 2005-2017 Free Software Foundation, Inc. +Copyright (C) 2005-2018 Free Software Foundation, Inc. This is part of the GNU Fortran manual. For copying conditions, see the file gfortran.texi. diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 7b6f161516e..3d64056591e 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -1,10 +1,10 @@ -@c Copyright (C) 2004-2017 Free Software Foundation, Inc. +@c Copyright (C) 2004-2018 Free Software Foundation, Inc. @c This is part of the GNU Fortran manual. @c For copying conditions, see the file gfortran.texi. @ignore @c man begin COPYRIGHT -Copyright @copyright{} 2004-2017 Free Software Foundation, Inc. +Copyright @copyright{} 2004-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/gcc.c b/gcc/gcc.c index f70755679f4..e03f73ded5b 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -8035,7 +8035,7 @@ driver::maybe_print_and_exit () const { printf (_("%s %s%s\n"), progname, pkgversion_string, version_string); - printf ("Copyright %s 2017 Free Software Foundation, Inc.\n", + printf ("Copyright %s 2018 Free Software Foundation, Inc.\n", _("(C)")); fputs (_("This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"), diff --git a/gcc/gcov-dump.c b/gcc/gcov-dump.c index 7dc28bbf216..e79e34f9d9f 100644 --- a/gcc/gcov-dump.c +++ b/gcc/gcov-dump.c @@ -148,7 +148,7 @@ static void print_version (void) { printf ("gcov-dump %s%s\n", pkgversion_string, version_string); - printf ("Copyright (C) 2017 Free Software Foundation, Inc.\n"); + printf ("Copyright (C) 2018 Free Software Foundation, Inc.\n"); printf ("This is free software; see the source for copying conditions.\n" "There is NO warranty; not even for MERCHANTABILITY or \n" "FITNESS FOR A PARTICULAR PURPOSE.\n\n"); diff --git a/gcc/gcov-tool.c b/gcc/gcov-tool.c index 74e77b90d72..18a33e79f06 100644 --- a/gcc/gcov-tool.c +++ b/gcc/gcov-tool.c @@ -526,7 +526,7 @@ static void print_version (void) { fnotice (stdout, "%s %s%s\n", progname, pkgversion_string, version_string); - fnotice (stdout, "Copyright %s 2014-2017 Free Software Foundation, Inc.\n", + fnotice (stdout, "Copyright %s 2018 Free Software Foundation, Inc.\n", _("(C)")); fnotice (stdout, _("This is free software; see the source for copying conditions.\n" diff --git a/gcc/gcov.c b/gcc/gcov.c index 24e6da09fcf..a109d6cd572 100644 --- a/gcc/gcov.c +++ b/gcc/gcov.c @@ -843,7 +843,7 @@ static void print_version (void) { fnotice (stdout, "gcov %s%s\n", pkgversion_string, version_string); - fprintf (stdout, "Copyright %s 2017 Free Software Foundation, Inc.\n", + fprintf (stdout, "Copyright %s 2018 Free Software Foundation, Inc.\n", _("(C)")); fnotice (stdout, _("This is free software; see the source for copying conditions.\n" diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index a829159119f..4d78e187a04 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,7 @@ +2018-01-03 Jakub Jelinek + + * gccgo.texi: Bump @copyrights-go year. + 2017-12-12 Tony Reix Ian Lance Taylor diff --git a/gcc/go/gccgo.texi b/gcc/go/gccgo.texi index e268c25fabf..f54cc103003 100644 --- a/gcc/go/gccgo.texi +++ b/gcc/go/gccgo.texi @@ -12,7 +12,7 @@ @include gcc-common.texi @c Copyright years for this manual. -@set copyrights-go 2010-2017 +@set copyrights-go 2010-2018 @copying @c man begin COPYRIGHT diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 0a53eaa6346..37ffd6e17ff 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,7 @@ +2018-01-03 Jakub Jelinek + + * libgomp.texi: Bump @copying's copyright year. + 2017-12-30 Tom de Vries PR libgomp/83046 diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi index 8753aaf2221..c994a404d06 100644 --- a/libgomp/libgomp.texi +++ b/libgomp/libgomp.texi @@ -7,7 +7,7 @@ @copying -Copyright @copyright{} 2006-2017 Free Software Foundation, Inc. +Copyright @copyright{} 2006-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/libitm/ChangeLog b/libitm/ChangeLog index fb2e9493224..39dad15d929 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,3 +1,7 @@ +2018-01-03 Jakub Jelinek + + * libitm.texi: Bump @copying's copyright year. + 2017-11-17 Igor Tsimbalist * Makefile.in: Regenerate. diff --git a/libitm/libitm.texi b/libitm/libitm.texi index 7f49ca7d2e6..7a91348947f 100644 --- a/libitm/libitm.texi +++ b/libitm/libitm.texi @@ -7,7 +7,7 @@ @copying -Copyright @copyright{} 2011-2017 Free Software Foundation, Inc. +Copyright @copyright{} 2011-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog index 284f4d98e74..5a649e0e06b 100644 --- a/libquadmath/ChangeLog +++ b/libquadmath/ChangeLog @@ -1,4 +1,8 @@ - 2017-11-17 Igor Tsimbalist +2018-01-03 Jakub Jelinek + + * libquadmath.texi: Bump @copying's copyright year. + +2017-11-17 Igor Tsimbalist * Makefile.am: Update AM_CFLAGS. * Makefile.in: Regenerate: diff --git a/libquadmath/libquadmath.texi b/libquadmath/libquadmath.texi index e107ff9e75f..af576334a3e 100644 --- a/libquadmath/libquadmath.texi +++ b/libquadmath/libquadmath.texi @@ -6,7 +6,7 @@ @c %**end of header @copying -Copyright @copyright{} 2010-2017 Free Software Foundation, Inc. +Copyright @copyright{} 2010-2018 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document -- 2.30.2