blob: b93dae5dfb0ce839ba7d832478c9ef5beaed0e9c [file] [log] [blame]
2018-07-26 Release Manager
* GCC 8.2.0 released.
2018-07-18 Martin Sebor <>
PR middle-end/85602
* calls.c (maybe_warn_nonstring_arg): Handle strncat.
* tree-ssa-strlen.c (is_strlen_related_p): Make extern.
Handle integer subtraction.
(maybe_diag_stxncpy_trunc): Handle nonstring source arguments.
* tree-ssa-strlen.h (is_strlen_related_p): Declare.
* doc/invoke.texi (-Wstringop-truncation): Update.
2018-07-16 Claudiu Zissulescu <>
Backport from mainline
2017-03-24 Claudiu Zissulescu <>
* config/arc/arc-protos.h (arc_pad_return): Remove.
* config/arc/arc.c (machine_function): Remove force_short_suffix
and size_reason.
(arc_print_operand): Adjust printing of '&'.
(arc_verify_short): Remove conditional printing of short suffix.
(arc_final_prescan_insn): Remove reference to size_reason.
(pad_return): New function.
(arc_reorg): Call pad_return.
(arc_pad_return): Remove.
(arc_init_machine_status): Remove reference to force_short_suffix.
* config/arc/ (vunspec): Add VUNSPEC_ARC_BLOCKAGE.
(attr length): When attribute iscompact is true force to 2
regardless; in the case of maybe check if we want to force the
instruction to have 4 bytes length.
(nopv): Change it to generate 4 byte long nop as well.
(blockage): New pattern.
(simple_return): Remove call to arc_pad_return.
(p_return_i): Likewise.
2018-07-19 Richard Biener <>
Backport from mainline
2018-07-13 Richard Biener <>
PR debug/86452
* dwarf2out.c (gen_type_die_with_usage): Use scope_die_for
instead of get_context_die.
2018-07-11 Richard Biener <>
PR debug/86457
* dwarf2out.c (init_sections_and_labels): Use
output_asm_line_debug_info consistently.
(dwarf2out_early_finish): Likewise.
(dwarf2out_finish): Remove DW_AT_stmt_list from early generated
type units.
2018-07-16 Richard Biener <>
Backport from mainline
2018-07-13 Richard Biener <>
PR middle-end/85974
* match.pd (addr1 - addr2): Allow either of the operand to
have a conversion.
2018-06-15 Richard Biener <>
PR middle-end/86076
* tree-cfg.c (move_stmt_op): unshare invariant addresses
before adjusting their block.
2018-06-06 Richard Biener <>
PR tree-optimization/85935
* graphite-scop-detection.c (find_params_in_bb): Analyze
condition operands with respect to the correct loop. Assert
the analysis doesn't fail.
2018-07-16 Eric Botcazou <>
PR tree-optimization/86514
* tree-ssa-reassoc.c (init_range_entry) <CASE_CONVERT>: Return for a
conversion to a boolean type from a type with greater precision.
2018-07-15 Bill Schmidt <>
Backport from mainline
2018-07-13 Bill Schmidt <>
Steve Munroe <>
* config/rs6000/emmintrin.h (_mm_and_si128): New function.
(_mm_andnot_si128): Likewise.
(_mm_or_si128): Likewise.
(_mm_xor_si128): Likewise.
2018-07-14 Martin Sebor <>
PR tree-optimization/86274
* gimple-ssa-sprintf.c (fmtresult::type_max_digits): Verify
(format_floating): Correct handling of infinities and NaNs.
2018-07-13 H.J. Lu <>
Backport from mainline
2018-07-13 H.J. Lu <>
Sunil K Pandey <>
PR target/84413
* config/i386/i386.c (m_CORE_AVX512): New.
(m_CORE_AVX2): Likewise.
(m_CORE_ALL): Add m_CORE_AVX2.
* config/i386/x86-tune.def: Replace m_HASWELL with m_CORE_AVX2.
Replace m_SKYLAKE_AVX512 with m_CORE_AVX512 on avx256_optimal
and remove the rest of m_SKYLAKE_AVX512.
2018-07-13 Marek Polacek <>
Backport from trunk
2018-07-03 Marek Polacek <>
PR middle-end/86202
* gimple-fold.c (size_must_be_zero_p): Check the type of the size.
2018-07-12 Richard Biener <>
PR target/84829
Remove -mieee-fp handling.
2018-07-12 Jakub Jelinek <>
PR tree-optimization/86492
* gimple-ssa-store-merging.c
(imm_store_chain_info::coalesce_immediate_stores): Call
check_no_overlap even for the merge_overlapping case.
2018-07-11 Jakub Jelinek <>
* config/i386/avx512bitalgintrin.h (_mm512_mask_bitshuffle_epi64_mask):
Use __mmask64 type instead of __mmask8 for __M argument.
* config/i386/avx512fintrin.h (_mm512_mask_xor_epi64,
_mm512_maskz_xor_epi64): Use __mmask8 type instead of __mmask16 for
__U argument.
(_mm512_mask_cmpneq_epi64_mask): Use __mmask8 type instead of
__mmask16 for __M argument.
(_mm512_maskz_insertf32x4, _mm512_maskz_inserti32x4,
_mm512_mask_insertf32x4, _mm512_mask_inserti32x4): Cast last argument
to __mmask16 instead of __mmask8.
* config/i386/avx512vlintrin.h (_mm_mask_add_ps, _mm_maskz_add_ps,
_mm256_mask_add_ps, _mm256_maskz_add_ps, _mm_mask_sub_ps,
_mm_maskz_sub_ps, _mm256_mask_sub_ps, _mm256_maskz_sub_ps,
_mm256_maskz_cvtepi32_ps, _mm_maskz_cvtepi32_ps): Use __mmask8 type
instead of __mmask16 for __U argument.
* config/i386/avx512vlbwintrin.h (_mm_mask_cmp_epi8_mask): Use
__mmask16 instead of __mmask8 for __U argument.
(_mm256_mask_cmp_epi8_mask): Use __mmask32 instead of __mmask16 for
__U argument.
(_mm256_cmp_epi8_mask): Use __mmask32 return type instead of
(_mm_mask_cmp_epu8_mask): Use __mmask16 instead of __mmask8 for __U
(_mm256_mask_cmp_epu8_mask): Use __mmask32 instead of __mmask16 for
__U argument.
(_mm256_cmp_epu8_mask): Use __mmask32 return type instead of
(_mm_mask_cmp_epi16_mask): Cast last argument to __mmask8 instead
of __mmask16.
(_mm256_mask_cvtepi8_epi16): Use __mmask16 instead of __mmask32 for
__U argument.
(_mm_mask_cvtepi8_epi16): Use __mmask8 instead of __mmask32 for
__U argument.
(_mm256_mask_cvtepu8_epi16): Use __mmask16 instead of __mmask32 for
__U argument.
(_mm_mask_cvtepu8_epi16): Use __mmask8 instead of __mmask32 for
__U argument.
(_mm256_mask_cmpneq_epu8_mask, _mm256_mask_cmplt_epu8_mask,
_mm256_mask_cmpge_epu8_mask, _mm256_mask_cmple_epu8_mask): Change
return type as well as __M argument type and all casts from __mmask8
to __mmask32.
(_mm256_mask_cmpneq_epu16_mask, _mm256_mask_cmplt_epu16_mask,
_mm256_mask_cmpge_epu16_mask, _mm256_mask_cmple_epu16_mask): Change
return type as well as __M argument type and all casts from __mmask8
to __mmask16.
(_mm256_mask_cmpneq_epi8_mask, _mm256_mask_cmplt_epi8_mask,
_mm256_mask_cmpge_epi8_mask, _mm256_mask_cmple_epi8_mask): Change
return type as well as __M argument type and all casts from __mmask8
to __mmask32.
(_mm256_mask_cmpneq_epi16_mask, _mm256_mask_cmplt_epi16_mask,
_mm256_mask_cmpge_epi16_mask, _mm256_mask_cmple_epi16_mask): Change
return type as well as __M argument type and all casts from __mmask8
to __mmask16.
* config/i386/avx512vbmi2vlintrin.h (_mm_mask_shrdi_epi32,
_mm_mask_shldi_epi32): Cast last argument to __mmask8 instead of
2018-07-11 Grazvydas Ignotas <>
* config/i386/avx512bwintrin.h: (_mm512_mask_cmp_epi8_mask,
_mm512_mask_cmp_epu8_mask): Use __mmask64 type instead of __mmask32
for __U argument.
2018-07-05 Martin Sebor <>
PR c++/86400
* tree-ssa-strlen.c (maybe_set_strlen_range): Use type size rather
than its domain to compute its the upper bound of a char array.
2018-07-03 Carl Love <>
Backport from trunk
2018-07-03 Carl Love <>
* config/rs6000/rs6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for
float argument to VSX_BUILTIN_DOUBLEH_V4SF.
Map ALTIVEC_BUILTIN_VEC_UNPACKL for float argument to
2018-07-04 Luis Machado <>
* config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
(qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
2018-07-02 Segher Boessenkool <>
Backport from trunk
2018-06-26 Segher Boessenkool <>
PR target/86285
* config/rs6000/rs6000.c (rs6000_init_builtins): Do not set
ieee128_float_type_node to long_double_type_node unless
2018-07-02 Eric Botcazou <>
* config/i386/i386.c (ix86_finalize_stack_frame_flags): Do not overrule
-fno-omit-frame-pointer when not optimizing.
2018-06-30 Alexandre Oliva <>
PR debug/86064
* dwarf2out.c (loc_list_has_views): Adjust comments.
(dw_loc_list): Split single cross-partition range with
nonzero locview.
2018-06-29 Kelvin Nilsen <>
Backport from mainline
2018-06-22 Kelvin Nilsen <>
* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
behavior of vec_pack (vector double, vector double) to match
behavior of vec_float2 (vector double, vector double).
2018-06-29 Jakub Jelinek <>
* config/rs6000/t-rs6000: Append rs6000-modes.h to TM_H.
2018-06-28 Kelvin Nilsen <>
Backport from mainline
2017-05-23 Segher Boessenkool <>
* doc/sourcebuild.texi (Endianness): New subsubsection.
2018-06-27 Kelvin Nilsen <>
Backport from mainline
2018-06-20 Kelvin Nilsen <>
* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
behavior of vec_packsu (vector unsigned long long, vector unsigned
long long) to match behavior of vec_packs with same signature.
2018-06-26 Aaron Sawdey <>
Backport from trunk
2018-06-26 Aaron Sawdey <>
* config/rs6000/rs6000-string.c (expand_block_clear): Don't use
unaligned vsx for 16B memset.
2018-06-26 Aaron Sawdey <>
Backport from trunk
2018-06-22 Aaron Sawdey <>
PR target/86222
* config/rs6000/rs6000-string.c (expand_strn_compare): Handle -m32
2018-06-26 Segher Boessenkool <>
Backport from trunk
2018-05-08 Segher Boessenkool <>
PR rtl-optimization/85645
* regrename.c (build_def_use): Also kill the chains that include the
destination of a REG_CFA_REGISTER note.
2018-06-26 Segher Boessenkool <>
Backport from trunk
2018-05-08 Segher Boessenkool <>
PR rtl-optimization/85645
* regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
insn that has a REG_CFA_REGISTER note.
2018-06-26 Robin Dapp <>
* config/s390/s390.h (enum processor_flags): Do not use
default tune parameter when -march was specified.
2018-06-26 Jakub Jelinek <>
PR target/86314
* config/i386/ (setcc + movzbl to xor + setcc peephole2s):
Check reg_overlap_mentioned_p in addition to reg_set_p with the same
2018-06-25 Michael Meissner <>
Back port from trunk
2018-06-25 Michael Meissner <>
* config.gcc (powerpc64le*): Revert January 16th, 2018 patch that
added IEEE/IBM long double multilib support on PowerPC little
endian Linux systems.
* config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Likewise.
* config/rs6000/rs6000.c (rs6000_option_override_internal):
* config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Likewise.
* config/rs6000/t-ldouble-linux64le-ibm: Delete, no longer used.
* config/rs6000/t-ldouble-linux64le-ieee: Delete, no longer used.
2018-06-25 Segher Boessenkool <>
Backport from trunk
2018-06-04 Segher Boessenkool <>
* config/rs6000/ (abs<mode>2): Handle IFmode.
2018-05-02 Jan Hubicka <>
Backport from mainline
2018-04-30 Jan Hubicka <>
* lto-wrapper.c (ltrans_priorities): New static var.
(cmp_priority): New.
(run_gcc): Read priorities and if doing parallel build order
the Makefile by them.
2018-06-25 Segher Boessenkool <>
Backport from trunk
2018-06-19 Segher Boessenkool <>
PR target/86197
* config/rs6000/ (rs6000_discover_homogeneous_aggregate): An
ieee128 argument takes up only one (vector) register, not two (floating
point) registers.
2018-06-23 Richard Sandiford <>
PR tree-optimization/85989
* gimple-ssa-backprop.c (backprop::m_visited_phis): New member
(backprop::intersect_uses): Check it when deciding whether this
is a backedge reference.
(backprop::process_block): Add each phi to m_visited_phis
after visiting it, then clear it at the end.
2018-06-22 David Edelsohn <>
Backport from mainline
2018-06-19 Tony Reix <>
Damien Bergamini <>
David Edelsohn <>
* collect2.c (static_obj): New variable.
(static_libs): New variable.
(is_in_list): Uncomment declaration.
(main): Track AIX libraries linked statically.
(is_in_list): Uncomment definition.
(scan_prog_file): Don't add AIX shared libraries initializer
to constructor list if linking statically.
2018-06-22 Michael Meissner <>
Back port from trunk
2018-06-21 Michael Meissner <>
* config/rs6000/ (extendtfif2): Add missing 128-bit
conversion insn that shows up when pr85657-3.c is compiled using
IEEE 128-bit long double.
Back port from trunk
2018-06-21 Michael Meissner <>
* config/rs6000/rs6000.c (init_float128_ieee): Prevent complex
multiply and divide external functions from being created more
than once.
Back port from trunk
2018-06-21 Michael Meissner <>
* config/rs6000/ (neg<mode>2_internal): Use the correct
mode to check whether the mode is IBM extended.
2018-06-18 Michael Meissner <>
PR target/85358
* config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit
floating point modes, so that IFmode is numerically greater than
TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE
to declare the ordering. This prevents IFmode from being
converted to TFmode when long double is IEEE 128-bit on an ISA 3.0
machine. Include rs6000-modes.h to share the fractional values
between genmodes* and the rest of the compiler.
(IFmode): Likewise.
(KFmode): Likewise.
(TFmode): Likewise.
* config/rs6000/rs6000-modes.h: New file.
* config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the
meaning of rs6000_long_double_size so that 126..128 selects an
appropriate 128-bit floating point type.
(rs6000_option_override_internal): Likewise.
* config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h.
(TARGET_LONG_DOUBLE_128): Change the meaning of
rs6000_long_double_size so that 126..128 selects an appropriate
128-bit floating point type.
(LONG_DOUBLE_TYPE_SIZE): Update comment.
* config/rs6000/ (trunciftf2): Correct the modes of the
source and destination to match the standard usage.
(truncifkf2): Likewise.
(copysign<mode>3, IEEE iterator): Rework copysign of float128 on
ISA 2.07 to use an explicit clobber, instead of passing in a
(copysign<mode>3_soft): Likewise.
Back port from trunk
2018-06-08 David Edelsohn <>
* config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if
Back port from trunk
2018-06-04 Michael Meissner <>
* config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to
track if we pass or return IEEE 128-bit floating point.
(ieee128_mangling_gcc_8_1): New boolean to say whether to generate
C++ mangling that is compatible with GCC 8.1.
(TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook.
(init_cumulative_args): Note if we pass or return IEEE 128-bit
floating point types.
(rs6000_function_arg_advance_1): Likewise.
(rs6000_mangle_type): Optionally generate mangled names that match
what GCC 8.1 generated for IEEE 128-bit floating point types.
(rs6000_globalize_decl_name): If we have an external function that
passes or returns IEEE 128-bit types, generate a weak reference
from the mangled name used in GCC 8.1 to the current mangled
(rs6000_init_builtins): Make __ibm128 use the long double type if
long double is IBM extended double. Make __float128 use the long
double type if long double is IEEE 128-bit.
PR target/85657
* config/rs6000/rs6000-builtin.def (BU_IBM128_2): New helper
macro for __ibm128 built-in functions.
(PACK_IF): Add __ibm128 pack/unpack functions.
(UNPACK_IF): Likewise.
* config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Do not
enable long double built-in functions if long double is IEEE
128-bit floating point.
(rs6000_invalid_builtin): Update long double built-in function
error message.
(rs6000_expand_builtin): For PACK_IF and UNPACK_IF built-in
functions, adjust the built-in function to use the long double
built-in function if __ibm128 and long double are the same type.
* doc/extend.texi (PowerPC builtins): Update documention for
__builtin_{,un}pack_longdouble. Add documentation for
Back port from trunk
2018-06-01 Segher Boessenkool <>
* config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
the 128-bit floating point types. Fix function comment.
2018-06-22 Michael Meissner <>
Back port from trunk
2018-05-21 Michael Meissner <>
PR target/85657
* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
define __ibm128 as long double.
* config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
as a distinct type with IEEE 128-bit floating point is supported.
(init_float128_ieee): Fix up conversions between IFmode and IEEE
128-bit types to use the correct functions.
(rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
convert between 128-bit floating point types that have different
modes but the same representation, instead of using gen_lowpart to
makean alias.
* config/rs6000/ (IFKF): New iterator for IFmode and
(IFKF_reg): New attributes to give the register constraints for
IFmode and KFmode.
(extend<mode>tf2_internal): New insns to mark an explicit
conversion between 128-bit floating point types that have a
different mode but share the same representation.
2018-06-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR target/85994
* config/i386/sol2.h (CPP_SPEC): Don't pass -P for
-x assembler-with-cpp.
2018-06-21 Sebastian Huber <>
Backported from mainline
2018-06-15 Sebastian Huber <>
* config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom
multilibs for *-*-rtems*.
* config/riscv/t-rtems: New file.
2018-06-20 Jakub Jelinek <>
Backported from mainline
2018-06-16 Jakub Jelinek <>
PR rtl-optimization/86108
* bb-reorder.c (create_forwarder_block): Renamed to ...
(create_eh_forwarder_block): ... this. Split OLD_BB after labels and
jump from new landing pad to the second part.
(sjlj_fix_up_crossing_landing_pad, dw2_fix_up_crossing_landing_pad):
Adjust callers.
2018-06-20 Jakub Jelinek <>
PR debug/86194
* var-tracking.c (use_narrower_mode_test): Check if shift amount can
be narrowed.
PR tree-optimization/86231
* tree-vrp.c (union_ranges): For ( [ ) ] or ( )[ ] range and
anti-range don't overwrite *vr0min before using it to compute *vr0max.
2018-06-19 Max Filippov <>
Backport from mainline
2018-06-19 Max Filippov <>
* config/xtensa/ (UNSPEC_FRAME_BLOCKAGE): New unspec
(allocate_stack, frame_blockage, *frame_blockage): New patterns.
2018-06-19 Eric Botcazou <>
* gimplify.c (gimplify_init_constructor): Really never clear for an
incomplete constructor if CONSTRUCTOR_NO_CLEARING is set.
2018-06-18 Martin Sebor <>
PR c/82063
* calls.c (alloc_max_size): Correct a logic error/typo.
Treat excessive arguments as infinite. Warn for invalid arguments.
* doc/invoke.texi (-Walloc-size-larger-than): Update.
2018-06-16 Jakub Jelinek <>
PR middle-end/86095
* common.opt (Wunsafe-loop-optimizations): Add Ignore, remove Var,
documented as preserved for backward compatibility only.
* doc/invoke.texi: Remove -Wunsafe-loop-optimizations documentation.
2018-06-15 Jakub Jelinek <>
PR middle-end/85878
* expr.c (expand_assignment): Remove now redundant COMPLEX_MODE_P
check from first store_expr, use to_mode instead of GET_MODE (to_rtx).
Only call store_expr for halves if the mode is the same.
PR middle-end/86123
* match.pd ((X / Y) == 0 -> X < Y): Don't transform complex divisions.
Fix up comment formatting.
2018-06-14 Jakub Jelinek <>
PR middle-end/86122
* match.pd ((A +- CST1) +- CST2): Punt if last resort
unsigned_type_for returns NULL.
PR target/85945
* lower-subreg.c (find_decomposable_subregs): Don't decompose float
subregs of multi-word pseudos unless the float mode has word size.
2018-06-14 Richard Biener <>
PR middle-end/86139
* tree-vect-generic.c (build_word_mode_vector_type): Remove
duplicate and harmful type_hash_canon.
* tree.c (type_hash_canon): Assert we didn't find ourselves.
2018-06-14 Sebastian Huber <>
Backport from mainline
2018-06-14 Sebastian Huber <>
* config/rtems.h (STDINT_LONG32): Define.
2018-05-05 Roland McGrath <>
PR other/77609
* varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
any section for which we don't know a specific type it should have,
regardless of name. Previously this was done only for the exact
names ".init_array", ".fini_array", and ".preinit_array".
(default_elf_asm_named_section): Add comment about
relationship with default_section_type_flags and SECTION_NOTYPE.
(get_section): Don't consider it a type conflict if one side has
SECTION_NOTYPE and the other doesn't, as long as neither has the
SECTION_BSS et al used in the default_section_type_flags logic.
2018-06-13 Martin Sebor <>
PR tree-optimization/86114
* gimple-fold.c (gimple_fold_builtin_strlen): Only handle LHS
of integer types.
* tree-ssa-strlen.c (maybe_set_strlen_range): Same.
2018-06-13 Eric Botcazou <>
PR target/86048
* config/i386/winnt.c (i386_pe_seh_cold_init): Do not emit negative
offsets for register save directives. Emit a second batch of save
directives, if need be, when the function accesses prior frames.
2018-06-11 Jason Merrill <>
PR c++/80485 - inline function non-zero address.
* symtab.c (nonzero_address): Check DECL_COMDAT.
2018-06-11 Peter Bergner <>
Backport from mainline
2018-06-08 Peter Bergner <>
PR target/85755
* config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC
2018-06-11 Segher Boessenkool <>
Backport from trunk
2018-06-11 Segher Boessenkool <>
PR target/85755
* config/rs6000/ (*movdi_internal32): Put constraint modifiers
on the correct operand.
(*movdi_internal64): Ditto.
2018-06-08 Carl Love <>
Backport from mainline
* gcc/config/rs6000/ (vextract_fp_from_shorth,
vextract_fp_from_shortl): Add BE support.
2018-06-08 Carl Love <>
Backport from mainline
* gcc/config/rs6000/ (first_match_index_<mode>):
Calculate index using natureal element order.
Calculate index using natural element order.
Calculate index using natural element order.
Calculate index using natural order.
(define_insn vclzlsbb): Change to define_insn vclzlsbb_<mode>.
for BE and LE modes.
* gcc/config/rs6000/rs6000-c.c: Rename P9V_BUILTIN_VCLZLSBB,
* gcc/config/rs6000/rs6000-builtin.def: Make VCLZLSBB mode
2018-06-08 Kyrylo Tkachov <>
Backport from mainline
2018-06-05 Kyrylo Tkachov <>
PR target/81497
* config/arm/arm-builtins.c (arm_type_qualifiers): Add
qualifier_void_pointer and qualifier_const_void_pointer.
(arm_ldc_qualifiers, arm_stc_qualifiers): Use the above.
(arm_init_builtins): Handle the above.
* config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc,
__arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2,
__arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for
void intrinsics.
2018-06-07 Uros Bizjak <>
PR target/85684
* config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
Generate SImode target register for null target.
<case IX86_BUILTIN_XGETBV>: Ditto.
<case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
* config/i386/xsaveintrin.h (_xgetbv): Add missing return.
2018-06-07 Peter Bergner <>
Backport from mainline
2018-06-06 Peter Bergner <>
PR target/63177
* /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9.
Don't handle -mcpu=power8 if -mpower9-vector is also used.
2018-06-06 Richard Biener <>
Backport from mainline
2018-06-04 Richard Biener <>
PR tree-optimization/86038
* tracer.c (find_best_successor): Check probability for
being initialized, bail out if not.
2018-05-30 Richard Biener <>
PR tree-optimization/85964
* tracer.c (better_p): Drop initialized count check, we only
call the function with initialized counts now.
(find_best_successor): Do find a best edge if one
has uninitialized count.
(find_best_predecessor): Likewise. Do BB frequency check only
if count is initialized.
2018-05-28 Richard Biener <>
PR tree-optimization/85934
* tree-vect-generic.c (expand_vector_operations_1): Hoist
vector boolean check before scalar optimization.
2018-05-22 Richard Biener <>
PR tree-optimization/85863
* tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
comparisons when vectype is specified.
(vectorizable_condition): Do not specify vectype for
vect_is_simple_cond when SLP vectorizing.
2018-06-05 Andreas Krebbel <>
Backport from mainline
2018-06-05 Andreas Krebbel <>
* config/s390/s390-builtin-types.def: Add void function type.
* config/s390/s390-builtins.def: Use the function type for the
tbeginc builtin.
2018-06-04 Martin Sebor <>
PR c/85623
* calls.c (maybe_warn_nonstring_arg): Use string length to set
or ajust the presumed bound on an operation to avoid unnecessary
2018-06-04 Richard Earnshaw <>
PR target/86003
* config/arm/ (ALL_QUIRKS): Add xscale feature to the list
of bits to ignore when comparing architectures.
2018-06-04 Jakub Jelinek <>
PR c++/86025
* tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
2018-06-01 Bill Schmidt <>
PR tree-optimization/85712
Backport from mainline:
2018-05-23 Bill Schmidt <>
PR tree-optimization/85712
* gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
first_interp field.
(alloc_cand_and_find_basis): Initialize first_interp field.
(slsr_process_mul): Modify first_interp field.
(slsr_process_add): Likewise.
(slsr_process_cast): Modify first_interp field for each new
(slsr_process_copy): Likewise.
(dump_candidate): Dump first_interp field.
(replace_mult_candidate): Process all interpretations, not just
subsequent ones.
(replace_rhs_if_not_dup): Likewise.
(replace_one_candidate): Likewise.
Backport from mainline:
2018-05-25 Bill Schmidt <>
PR tree-optimization/85712
* gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
this candidate has already been replaced in-situ by a copy.
2018-05-31 Uros Bizjak <>
PR target/85950
* config/i386/ (l<rounding_insn><MODEF:mode><SWI48:mode>2):
Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
(sse4_1_round<mode>2): Use nonimmediate_operand
for operand 1 predicate.
2018-05-31 Jakub Jelinek <>
PR target/85984
* bb-reorder.c (pass_partition_blocks::gate): Return false for
functions with naked attribute.
2018-05-31 H.J. Lu <>
PR target/85829
* config/i386/x86-tune.def: Re-enable partial_reg_dependency
and movx for Haswell.
2018-05-30 Jakub Jelinek <>
Backported from mainline
2018-05-14 Jakub Jelinek <>
PR target/85756
* config/i386/ Disallow non-commutative arithmetics in
last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS
in the peephole2 before it.
2018-05-08 Jakub Jelinek <>
PR target/85683
* config/i386/ Add peepholes for mem {+,-,&,|,^}= x; mem != 0
after cmpelim optimization.
2018-05-28 H.J. Lu <>
Backport from mainline
2018-05-26 H.J. Lu <>
PR target/85900
PR target/85345
* varasm.c (assemble_alias): Lookup ifunc attribute on error.
2018-05-24 H.J. Lu <>
PR target/85900
PR target/85345
* varasm.c (assemble_alias): Check ifunc_resolver only on
2018-05-22 H.J. Lu <>
PR target/85345
* cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
(cgraph_node::create_alias): Likewise.
(cgraph_node::get_availability): Check ifunc_resolver instead
of looking up ifunc attribute.
* cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
* varasm.c (do_assemble_alias): Likewise.
(assemble_alias): Likewise.
(default_binds_local_p_3): Likewise.
* cgraph.h (cgraph_node): Add ifunc_resolver.
(cgraph_node::only_called_directly_or_aliased_p): Return false
for IFUNC resolver.
* lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
* symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
(symtab_node::binds_to_current_def_p): Check ifunc_resolver
instead of looking up ifunc attribute.
2018-05-27 John David Anglin <>
* config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
2018-05-25 Richard Biener <>
PR c++/85912
* tree-dump.c (dequeue_and_dump): Remove access to removed
operand 2 of a SWITCH_EXPR.
2018-05-24 Uros Bizjak <>
* config/i386/ (cvtusi2<ssescalarmodesuffix>64<round_name>):
Add {q} suffix to insn mnemonic.
2018-05-24 Uros Bizjak <>
PR target/85903
* config/i386/ (movdi_to_sse): Do not generate pseudo
when memory input operand is handled.
2018-05-23 Bin Cheng <>
Backport from mainline
2018-05-17 Bin Cheng <>
Richard Biener <>
PR tree-optimization/85793
* tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
2018-05-23 Richard Biener <>
PR middle-end/85874
* tree-data-ref.c (create_runtime_alias_checks): Defer
and ignore overflow warnings.
2018-05-23 Martin Liska <>
Backport from mainline
2018-05-23 Yury Gribov <>
PR tree-optimization/85822
* tree-vrp.c (is_masked_range_test): Fix handling of negative
2018-05-23 Martin Liska <>
Backport from mainline
2018-05-11 Martin Liska <>
PR sanitizer/85556
* doc/extend.texi: Document LLVM style format for no_sanitize
2018-05-22 Martin Sebor <>
PR middle-end/85643
* calls.c (get_attr_nonstring_decl): Handle MEM_REF.
2018-05-22 Richard Sandiford <>
PR tree-optimization/85814
* tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
a null return from get_strinfo when unsharing the next
strinfo in the chain.
2018-05-21 Pat Haugen <>
Backport from mainline
2018-05-17 Pat Haugen <>
Segher Boessenkool <>
PR target/85698
* config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest operand.
2018-05-18 Toon Moene <>
* doc/invoke.texi: Move -floop-unroll-and-jam documentation
directly after that of -floop-interchange. Indicate that both
options are enabled by default when specifying -O3.
2018-05-11 Martin Jambor <>
PR ipa/85655
* ipa-cp.c (intersect_with_plats): Check that the lattice contains
single const.
2018-05-11 Richard Earnshaw <>
PR target/85733
* config/arm/ (fgroup ARMv6m): Add be8 feature.
2018-05-11 Richard Earnshaw <>
PR target/85606
* config/arm/ Add comment that ARMv6-m and ARMv6S-m are now
(cortex-m0): Use armv6s-m isa.
(cortex-m0plus): Likewise.
(cortex-m1): Likewise.
(cortex-m0.small-multiply): Likewise.
(cortex-m0plus.small-multiply): Likewise.
(cortex-m1.small-multiply): Likewise.
2018-05-09 Eric Botcazou <>
PR rtl-optimization/85638
* bb-reorder.c: Include common/common-target.h.
(create_forwarder_block): New function extracted from...
(fix_up_crossing_landing_pad): Rename into...
(dw2_fix_up_crossing_landing_pad): ...this.
(sjlj_fix_up_crossing_landing_pad): New function.
(find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
from both partitions and exit the loop after one iteration.
2018-05-08 Richard Biener <>
Backport from mainline
2018-05-04 Richard Biener <>
PR middle-end/85588
* fold-const.c (negate_expr_p): Restrict negation of operand
zero of a division to when we know that can happen without
(fold_negate_expr_1): Likewise.
2018-05-03 Richard Biener <>
PR tree-optimization/85615
* tree-ssa-threadupdate.c (thread_block_1): Only allow exits
to loops not nested in BBs loop father to avoid creating multi-entry
2018-05-02 Richard Biener <>
PR middle-end/85567
* gimplify.c (gimplify_save_expr): When in SSA form allow
SAVE_EXPRs to compute to SSA vars.
2018-05-02 Richard Biener <>
PR tree-optimization/85597
* tree-vect-stmts.c (vectorizable_operation): For ternary SLP
do not use split vect_get_vec_defs call but call vect_get_slp_defs
2018-05-08 Richard Earnshaw <>
PR target/85658
* config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
(check_arch): Likewise.
(check_fpu): Return the result rather than printing it.
(end arch): Fix operator precedence.
(end cpu): Likewise.
(END): Print the result from check_fpu.
2018-05-08 Richard Biener <>
Backport from mainline
2018-05-04 Richard Biener <>
* bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
* gimple-ssa-store-merging.c
(imm_store_chain_info::output_merged_store): Remove redundant create,
release split_store vector contents on failure.
* tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
scalar stmt vector on cache hit.
2018-05-04 Richard Biener <>
PR middle-end/85627
* tree-complex.c (tree_lower_complex): Handle removed blocks.
2018-05-07 Chung-Ju Wu <>
Backport from mainline.
2018-04-25 Chung-Ju Wu <>
* config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
GET_MODE_MASK before any checking.
(nds32_can_use_bset_p): Likewise.
(nds32_can_use_btgl_p): Likewise.
2018-05-07 Chung-Ju Wu <>
Backport from mainline.
2018-04-25 Chung-Ju Wu <>
* config/nds32/ New define_split pattern for
illegal register number.
2018-05-07 Chung-Ju Wu <>
Backport from mainline.
2018-04-25 Chung-Ju Wu <>
* config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
2018-05-07 Chung-Ju Wu <>
Backport from mainline.
2018-04-25 Chung-Ju Wu <>
* config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
2018-05-06 Jakub Jelinek <>
PR c++/85659
* cfgexpand.c (expand_asm_stmt): Don't create a temporary if
the type is addressable. Don't force op into register if it has
2018-05-04 Kyrylo Tkachov <>
Backport from trunk.
2018-04-27 Kyrylo Tkachov <>
PR target/85512
* config/aarch64/ (Usg): Limit to 31.
(Usj): Limit to 63.
2018-05-02 Jakub Jelinek <>
* BASE-VER: Set to 8.1.1.
2018-05-02 Release Manager
* GCC 8.1.0 released.
2018-05-02 Richard Sandiford <>
PR tree-optimization/85586
* tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
exit early for statements in the same group if the accesses are
not strided.
2018-05-01 Jakub Jelinek <>
PR web/85578
* doc/install.texi2html: Replace _002d with - and _002a with * in
generated html files using sed.
2018-04-27 Martin Jambor <>
PR ipa/85549
* ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
the jump function allows for passing through aggregate values.
2018-04-27 Jeff Law <>
* config.gcc: Mark tile* targets as deprecated/obsolete.
2018-04-27 Jakub Jelinek <>
PR tree-optimization/85529
* tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
zero extension or masking of the MSB bit.
(optimize_range_tests): Add FIRST_BB argument, pass it through
to optimize_range_tests_var_bound.
(maybe_optimize_range_tests, reassociate_bb): Adjust
optimize_range_tests callers.
2018-04-26 Richard Biener <>
Jakub Jelinek <>
* cgraph.h (symbol_table): Just declare debug method here.
* symtab.c (symbol_table::debug): Define.
2018-04-26 Jonathan Wakely <>
* doc/invoke.texi (-Wreturn-type): Document default status for C++.
2018-04-25 H.J. Lu <>
Backport from mainline
2018-04-25 Sebastian Peryt <>
PR target/85473
* config/i386/i386.c (ix86_expand_builtin): Change memory
operand to XI, extend p0 to Pmode.
* config/i386/ Change unspec volatile and operand
1 mode to XI, change operand 0 mode to P.
2018-04-25 Jakub Jelinek <>
* DEV-PHASE: Set to prerelease.
2018-04-24 Segher Boessenkool <>
* config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
in __abskf2 and __powikf2.
2018-04-24 Kyrylo Tkachov <>
PR target/85512
* config/aarch64/ (Usg, Usj): New constraints.
* config/aarch64/ (cmode_simd): New mode attribute.
* config/aarch64/ (*aarch64_ashr_sisd_or_int_<mode>3):
Use the above on operand 2. Reindent.
(*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
2018-04-24 H.J. Lu <>
PR target/85485
* common/config/i386/i386-common.c (ix86_handle_option): Don't
handle OPT_mcet.
* config/i386/i386.opt (mcet): Removed.
* doc/install.texi: Remove -mcet documentation.
* doc/invoke.texi: Likewise.
2018-04-24 H.J. Lu <>
PR target/85485
* doc/install.texi: Remove -mcet from bootstrap-cet.
2018-04-24 Jakub Jelinek <>
PR target/85511
* config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
__builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
PR target/85503
* config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
containing a CONST_VECTOR.
2018-04-24 Cesar Philippidis <>
* doc/install.texi: Update newlib dependency for nvptx.
2018-04-24 Jakub Jelinek <>
PR target/85508
* config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
instead of INTVAL when shifting x left.
2018-04-24 Andreas Krebbel <>
PR tree-optimization/85478
* tree-vect-loop.c (vect_analyze_loop_2): Do not call
vect_grouped_store_supported for single element vectors.
2018-04-24 Richard Biener <>
PR target/85491
* config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
load cost increase to the case of non-constant step.
2018-04-24 Jakub Jelinek <>
PR target/84828
* reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
destination if any_malformed_asm.
2018-04-23 Eric Botcazou <>
PR middle-end/85496
* expr.c (store_field): In the bitfield case, if the value comes from
a function call and is returned in registers by means of a PARALLEL,
do not change the mode of the temporary unless BLKmode and VOIDmode.
2018-04-23 Andrey Belevantsev <>
PR rtl-optimization/85423
* sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
dependencies to debug insns when the previous insn is non-debug.
2018-04-23 Claudiu Zissulescu <>
* config/arc/ ("vunspec"): Delete it, unify all the unspec
enums into a single definition.
(fls): Fix predicates and printing.
(seti): Likewise.
2018-04-23 Claudiu Zissulescu <>
* config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
* config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
and short u6 immediate.
(check_if_valid_sleep_operand): Remove.
* config/arc/ (Sleep): Accepts registers and u6 immediates.
2018-04-22 Chung-Ju Wu <>
* config/nds32/nds32.c (nds32_compute_stack_frame): Consider
flag_always_save_lp condition.
* config/nds32/nds32.opt (malways-save-lp): New option.
2018-04-22 Shiva Chen <>
* config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
* config/nds32/nds32.c (nds32_use_load_post_increment): New.
* config/nds32/nds32.h
2018-04-22 Shiva Chen <>
* config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
* config/nds32/nds32.c (nds32_ls_333_p): Remove.
2018-04-22 Shiva Chen <>
Chung-Ju Wu <>
* config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
* config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
* config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
2018-04-22 Chung-Ju Wu <>
* config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
2018-04-22 Chung-Ju Wu <>
* config/nds32/nds32-protos.h (nds32_data_alignment,
nds32_local_alignment): Declare.
* config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
nds32_local_alignment): New functions.
* config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
2018-04-22 Chung-Ju Wu <>
* config/nds32/nds32.c
(TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
2018-04-22 Chung-Ju Wu <>
* config/nds32/nds32.c (nds32_asm_file_start): Display optimization
level Ofast and Og.
2018-04-22 Monk Chiang <>
Chung-Ju Wu <>
* config/nds32/ (unspec_volatile_element): Add enum values
for unaligned access.
* config/nds32/nds32-intrinsic.c: Implementation of expanding
unaligned access.
* config/nds32/ Likewise.
* config/nds32/nds32_intrinsic.h: Likewise.
* config/nds32/nds32.h (nds32_builtins): Likewise.
* config/nds32/nds32.opt (munaligned-access): New option.
* config/nds32/nds32.c (nds32_asm_file_start): Display
flag_unaligned_access status.
2018-04-20 Kito Cheng <>
* config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
-mno-relax is present.
* config/riscv/linux.h (LINK_SPEC): Ditto.
2018-04-20 Martin Sebor <>
PR c/85365
* gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
for null pointers.
(gimple_fold_builtin_stxcpy_chk): Same.
* gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
2018-04-20 Michael Meissner <>
PR target/85456
* config/rs6000/rs6000.c (init_float128_ieee): Add support to call
__powikf2 when long double is IEEE 128-bit.
2018-04-20 Kito Cheng <>
* config/riscv/riscv.c (riscv_first_stack_step): Round up min
step to make sure stack always aligned.
2018-04-20 Carl Love <>
PR target/83402
* config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
size check for arg0.
2018-04-20 Nathan Sidwell <>
Tom de Vries <>
PR target/85445
* config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
Emit insns for calls too.
(nvptx_find_par): Always look for worker-level predecessor insn.
(nvptx_propagate): Add is_call parm, return bool. Copy frame for
(nvptx_vpropagate, nvptx_wpropagate): Adjust.
(nvptx_process_pars): Propagate frames for calls.
2018-04-20 H.J. Lu <>
PR target/85469
* common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
(ix86_handle_option): Don't handle OPT_mibt.
* config/i386/cet.h: Check __CET__ instead of __IBT__ and
* config/i386/driver-i386.c (host_detect_local_cpu): Remove
has_ibt and ibt.
* config/i386/i386-c.c (ix86_target_macros_internal): Don't
check OPTION_MASK_ISA_IBT nor flag_cf_protection.
(ix86_target_macros): Define __CET__ with flag_cf_protection
for -fcf-protection.
* config/i386/i386.c (isa2_opts): Remove -mibt.
* config/i386/i386.h (TARGET_IBT): Removed.
(TARGET_IBT_P): Likewise.
(ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
* config/i386/ (nop_endbr): Don't check TARGET_IBT.
* config/i386/i386.opt (mcet): Update help message.
(mshstk): Likewise.
(mibt): Removed.
* doc/invoke.texi: Remove -mibt. Document __CET__. Document
-mcet as an alias for -mshstk.
2018-04-20 Richard Biener <>
PR middle-end/85475
* match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
complexity by forcing a single use of the multiply operand.
2018-04-20 Martin Jambor <>
* ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
recursion dependency to only apply to non-clones.
2018-04-20 Martin Jambor <>
* ipa-cp.c (create_specialized_node): Check that clones of
self-recursive edges exist during IPA-CP.
2018-04-19 Toon Moene <>
* doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
by -O3.
2018-04-19 Jakub Jelinek <>
PR tree-optimization/85467
* fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
VECTOR_TYPE_P macro. If type is vector type, VIEW_CONVERT_EXPR the
VECTOR_CST element to type.
2018-04-19 H.J. Lu <>
PR target/85397
* config/i386/i386.h (STACK_SAVEAREA_MODE): New.
* config/i386/ (builtin_setjmp_setup): Removed.
(builtin_longjmp): Likewise.
(save_stack_nonlocal): New pattern.
(restore_stack_nonlocal): Likewise.
2018-04-19 H.J. Lu <>
PR target/85404
* config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
Replace ASM_OUTPUT_LABEL with fprintf.
2018-04-19 H.J. Lu <>
PR target/85417
* config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
* config/i386/i386-c.c (ix86_target_macros_internal): Also
define __IBT__ and __SHSTK__ for -fcf-protection.
* config/i386/i386.c (pass_insert_endbranch::gate): Don't check
(ix86_trampoline_init): Likewise.
(x86_output_mi_thunk): Likewise.
(ix86_notrack_prefixed_insn_p): Likewise.
(ix86_option_override_internal): Don't disallow -fcf-protection.
* config/i386/ (rdssp<mode>): Also enable for
(incssp<mode>): Likewise.
(nop_endbr): Likewise.
* config/i386/i386.opt (mcet): Change help message to built-in
functions only.
(mibt): Likewise.
(mshstk): Likewise.
* doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
on -fcf-protection. Change -mcet, -mibt and -mshstk to only
enable CET built-in functions.
2018-04-19 Sebastian Peryt <>
* common/config/i386/i386-common.c
(ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
* config.gcc (movdirintrin.h): New header.
* config/i386/cpuid.h (bit_MOVDIRI,
bit_MOVDIR64B): New bits.
* config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
and -mmvodir64b.
* config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
(VOID, PVOID, PCVOID)): New function types.
* config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
__builtin_ia32_movdir64b): New builtins.
* config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
* config/i386/i386.c (ix86_target_string): Added -mmovdir64b
and -mmovdiri.
(ix86_valid_target_attribute_inner_p): Ditto.
(ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
(ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
* config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
(movdiri<mode>, movdir64b_<mode>): New.
* config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
* config/i386/immintrin.h: Include movdirintrin.h.
* config/i386/movdirintrin.h: New file.
* doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
2018-04-19 Richard Biener <>
PR middle-end/85455
* cfg.c (clear_bb_flags): When loop state says we have
marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
2018-04-19 Richard Biener <>
PR tree-optimization/84737
* tree-vect-data-refs.c (vect_copy_ref_info): New function
copying restrict info.
(vect_setup_realignment): Use it.
* tree-vectorizer.h (vect_copy_ref_info): Declare.
* tree-vect-stmts.c (vectorizable_store): Copy ref info from
the first DR to all generated stores.
(vectorizable_load): Likewise for loads.
2018-04-19 Jakub Jelinek <>
PR tree-optimization/85446
* match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
the integral and pointer types to have the same precision.
* doc/install.texi: Document --disable-cet being the default and
2018-04-18 Martin Liska <>
* ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
2018-04-18 Martin Liska <>
2018-03-02 Eric Botcazou <>
PR ipa/83983
* ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
arguments if they are comparable.
2018-04-18 Martin Liska <>
2018-03-13 Eric Botcazou <>
PR lto/84805
* ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
incomplete types.
2018-04-18 H.J. Lu <>
PR target/85388
* config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
ENDBR after calling __morestack.
2018-04-18 David Malcolm <>
PR jit/85384
* (gcc-driver-name.h): Honor --with-gcc-major-version
by using gcc_base_ver to generate a gcc_driver_version, and use
it when generating GCC_DRIVER_NAME.
* configure: Regenerate.
2018-04-18 Jakub Jelinek <>
PR target/81084
* config.gcc: Obsolete powerpc*-*-*spe*.
2018-04-17 Jakub Jelinek <>
PR debug/84637
* dbxout.c (dbxout_int): Perform negation in unsigned int type.
(stabstr_D): Change type of unum from unsigned int to
unsigned HOST_WIDE_INT. Perform negation in unsigned HOST_WIDE_INT
2018-04-17 Jim Wilson <>
PR 84856
* config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
Set arg_pointer_offset after using pretend_args_size.
2018-04-17 Jakub Jelinek <>
PR rtl-optimization/85431
* dse.c (record_store): Ignore zero width stores.
PR sanitizer/85230
* asan.c (handle_builtin_stack_restore): Adjust comment. Emit
__asan_allocas_unpoison call and last_alloca_addr = new_sp before
__builtin_stack_restore rather than after it.
* builtins.c (expand_asan_emit_allocas_unpoison): Pass
arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
argument instead of virtual_dynamic_stack_rtx.
2018-04-17 Kelvin Nilsen <>
* config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
New prototype.
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
Add note to error message to explain internal mapping of overloaded
built-in function name to non-overloaded built-in function name.
* config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
2018-04-17 Michael Meissner <>
PR target/85424
* config/rs6000/ (pack<mode>): Do not try handle a pack
where the inputs overlap with the output.
2018-04-17 Jakub Jelinek <>
* config/i386/ (vec_extract_lo_<mode><mask_name>): Add
(=v, v) alternative and explicit "memory" attribute.
(vec_extract_lo_<mode><mask_name>): Likewise. Also add
"type", "prefix", "prefix_extra", "length_immediate" and "mode"
(vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
"sselog1" type instead of "sselog".
(vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
"sselog". Remove explicit "memory" attribute.
(vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
"type", "prefix", "prefix_extra", "length_immediate" and "mode"
(vec_extract_hi_v32hi): Merge all alternatives into one, use
"sselog1" type instead of "sselog". Remove explicit "memory"
(vec_extract_hi_v16hi): Merge each pair of alternatives into one,
use "sselog1" type instead of "sselog". Remove explicit "memory"
(vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
"type", "prefix", "prefix_extra", "length_immediate" and "mode"
(vec_extract_hi_v64qi): Merge all alternatives into one, use
"sselog1" type instead of "sselog". Remove explicit "memory"
(vec_extract_hi_v32qi): Merge each pair of alternatives into one,
use "sselog1" type instead of "sselog". Remove explicit "memory"
PR target/85430
* config/i386/ (*ashlqi3_1_slp): Use alu1 type instead of alu.
PR middle-end/85414
* rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
on a SUBREG.
2018-04-17 Martin Jambor <>
PR ipa/85421
* ipa-cp.c (create_specialized_node): Call
expand_all_artificial_thunks if necessary.
2018-04-17 Martin Liska <>
PR lto/85405
* ipa-devirt.c (odr_types_equivalent_p): Remove trailing
in message, remote space in between '_G' and '('.
2018-04-17 Jakub Jelinek <>
PR target/85281
* config/i386/ (reduces<mode><mask_scalar_name>,
Use %<iptr>2 instead of %2 for -masm=intel.
(avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
(avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
Use %q1 instead of %1 for -masm=intel.
avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
of %3 for -masm=intel.
(sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
(*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
(*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
(avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
%k0 and %1 for -masm=intel rather than two patterns, one with %0 and
(*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
(avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
%q0 and %1 for -masm=intel rather than two patterns, one with %0 and
%g1 and one with %0 and %1.
avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
%1 for -masm=intel.
(avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
of %0 and %{%4%} for -masm=intel.
(avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
order of %0 and %{%5%}%{z%} for -masm=intel.
2018-04-17 Jan Hubicka <>
PR lto/85405
* ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
2018-04-17 Martin Liska <>
PR ipa/85329
* multiple_target.c (create_dispatcher_calls): Set apostrophes
for target_clone error message. Make default implementation
clone to be a local declaration.
(separate_attrs): Add new argument and check for an empty
(expand_target_clones): Handle it.
(ipa_target_clone): Make redirection just for target_clones
2018-04-16 Cesar Philippidis <>
Tom de Vries <>
PR middle-end/84955
* omp-expand.c (expand_oacc_for): Add dummy false branch for
tiled basic blocks without omp continue statements.
2018-04-16 Aaron Sawdey <>
PR target/83660
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
vec_extract expression as having side effects to make sure it gets
a cleanup point.
2018-04-16 H.J. Lu <>
PR target/85403
* config/i386/i386.c (get_builtin_code_for_version): Check
2018-04-16 Olga Makhotina <>
PR target/84331
* gcc/config.gcc: Support "skylake".
* gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
* gcc/config/i386/i386.c (m_SKYLAKE): Define.
(processor_target_table): Add "skylake".
(ix86_option_override_internal): Add "skylake".
(get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
(get_builtin_code_for_version): Fix priority for
* gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
(processor_type): Add PROCESSOR_SKYLAKE.
2018-04-16 Paolo Carlini <>
Jason Merrill <>
PR c++/85112
* convert.c (convert_to_integer_1): Use direct recursion for
enumeral types and types with a precision less than the number
of bits in their mode.
2018-04-16 Julia Koval <>
PR target/84413
* config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
2018-04-14 Segher Boessenkool <>
PR target/85293
* config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
* doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
and -mno-direct-move.
2018-04-13 Paul A. Clarke <>
PR target/83402
* config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
Ensure negative shifts result in {0}.
2018-04-13 Vladimir Makarov <>
PR rtl-optimization/79916
* config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
regs (if any) to define how to gnerate SD moves when LRA is in
2018-04-13 Jakub Jelinek <>
PR rtl-optimization/85393
* except.h (expand_dw2_landing_pad_for_region): Remove declaration.
* except.c (expand_dw2_landing_pad_for_region): Make static.
* bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
a label and unconditional jump to old_bb, rather than
expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
basic block.
PR rtl-optimization/85376
* simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
instead of a specific value.
2018-04-13 Jan Hubicka <>
Bin Cheng <>
PR tree-optimization/82965
PR tree-optimization/83991
* cfgloopanal.c (expected_loop_iterations_unbounded): Add
by_profile_only parameter.
* cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
information if the loop was predicted to iterate too many times.
* cfgloop.h (expected_loop_iterations_unbounded): Update prototype
2018-04-13 Jan Hubicka <>
PR lto/71991
* config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
always inline.
2018-04-13 Martin Liska <>
Jakub Jelinek <>
PR middle-end/81657
* expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
* expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
* builtins.c (expand_builtin_memory_copy_args): Use
BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
handle dest_addr == pc_rtx.
2018-04-12 Segher Boessenkool <>
PR target/85291
* config/rs6000/ (fix_trunc<mode>si2): Use legacy code if
asked to not generate direct moves.
(fix_trunc<mode>si2_stfiwx): Similar.
(fix_trunc<mode>si2_internal): Similar.
2018-04-12 Jakub Jelinek <>
PR debug/83157
* var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
* cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
lookup if dest in some wider mode is known to be const0_rtx and
if so, record permanent equivalence for it to be ZERO_EXTEND of
the narrower mode destination.
2018-04-12 Cesar Philippidis <>
* lto-streamer-out.c (output_function): Revert 259346.
* omp-expand.c (expand_oacc_for): Likewise.
2018-04-12 Alexander Monakov <>
PR rtl-optimization/85354
* sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
* sel-sched.c (sel_global_init): ... here.
2018-04-12 Eric Botcazou <>
PR target/85238
* lto-wrapper.c (debug_objcopy): Open the files in binary mode.
* dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
mode for PE-COFF targets.
* config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
(i386_pe_asm_lto_end): Likewise.
* config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
* config/i386/winnt.c (saved_debug_info_level): New static variable.
(i386_pe_asm_lto_start): New function.
(i386_pe_asm_lto_end): Likewise.
2018-04-12 Cesar Philippidis <>
Richard Biener <>
PR middle-end/84955
* lto-streamer-out.c (output_function): Fix CFG loop state before
streaming out.
* omp-expand.c (expand_oacc_for): Handle calls to internal
functions like regular functions.
2018-04-12 Richard Biener <>
PR lto/85371
* dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
for the early LTO debug to properly generate references to it
during DIE emission. Do not re-use that for the skeleton for
(dwarf2out_early_finish): Likewise.
2018-04-12 Jakub Jelinek <>
PR target/85328
* config/i386/
(<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
and output is a reg, avoid creating invalid lowpart subreg, but
instead split into a 512-bit move. Don't split if not AVX512VL,
input is xmm16+ reg and output is a mem.
(vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
xmm16+ reg and output is a mem.
2018-04-12 Andreas Krebbel <>
* config/s390/s390.c (s390_output_indirect_thunk_function): Check
also for flag_dwarf2_cfi_asm.
2018-04-12 Jakub Jelinek <>
PR rtl-optimization/85342
* regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
a bool scalar var inside of the loop instead. Don't try to update
recog_data.operand after failed apply_change_group.
2018-04-12 Tom de Vries <>
PR target/85296
* config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
(nvptx_assemble_decl_begin): Add undefined param. Declare undefined
array with flexible array member as array without given dimension.
(nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
argument for undefined param to true.
2018-04-11 Aaron Sawdey <>
PR target/85321
* doc/invoke.texi (RS/6000 and PowerPC Options): Document options
-mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
from PowerPC section.
* config/rs6000/sysv4.opt (mcall-): Improve help text.
* config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
help text that is too long.
* config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
help text that is too long.
* config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
help text that is too long.
2018-04-11 Uros Bizjak <>
* config/alpha/ (stack_probe_internal): Rename
from "probe_stack". Update all callers.
2018-04-11 Alexander Monakov <>
PR rtl-optimization/84566
* sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
2018-04-11 Alexander Monakov <>
PR target/84301
* sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
(compute_block_dependences): ... from here.
2018-04-11 Jakub Jelinek <>
PR tree-optimization/85331
* vec-perm-indices.h (vec_perm_indices::clamp): Change input type
from int to HOST_WIDE_INT.
2018-04-11 Martin Jambor <>
PR ipa/84149
* ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
(cgraph_edge_brings_value_p): New parameter dest_val, check if it is
not the same as the source val.
(cgraph_edge_brings_value_p): New parameter.
(gather_edges_for_value): Pass destination value to
(perhaps_add_new_callers): Likewise.
(get_info_about_necessary_edges): Likewise and exclude values brought
only by self-recursive edges.
(create_specialized_node): Redirect only clones of self-calling edges.
(+self_recursive_pass_through_p): New function.
(find_more_scalar_values_for_callers_subset): Use it.
(find_aggregate_values_for_callers_subset): Likewise.
(known_aggs_to_agg_replacement_list): Removed.
(decide_whether_version_node): Re-calculate known constants for all
remaining context clones.
2018-04-11 Richard Biener <>
PR lto/85339
* dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
from early DWARF output.
(dwarf2out_early_finish): Output line info unconditionally into
early DWARF and add reference to it.
2018-04-11 Jakub Jelinek <>
PR target/85281
* config/i386/ (iptr): Add V16SFmode and V8DFmode cases.
(<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
other than V2DFmode using iptr mode attribute.
(<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
2018-04-11 Alexander Monakov <>
PR rtl-optimization/84659
* sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
2018-04-11 Jakub Jelinek <>
PR debug/85302
* dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
(output_loc_list): Pass address of a dummy size variable even in the
locview handling loop.
(index_location_lists): Add comment on why skip_loc_list_entry can't
call size_of_locs.
2018-04-11 Thomas Preud'homme <>
PR target/85261
* config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
into register.
2018-04-10 Aaron Sawdey <>
PR target/85321
* doc/invoke.texi (RS/6000 and PowerPC Options): Document options
-mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
and -mstring-compare-inline-limit.
2018-04-10 Segher Boessenkool <>
PR target/85287
* gcc/config/rs6000/ (allocate_stack): Put the residual size
for stack clash protection in a register whenever we need it to be in
a register.
2018-04-10 Segher Boessenkool <>
* common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
2018-04-10 Segher Boessenkool <>
PR target/85321
* config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
the help text.
(mlong-double-): Ditto.
* config/rs6000/sysv4.opt (msdata=): Ditto.
(mtls-size=): Ditto.
2018-04-10 Kelvin Nilsen <>
* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
erroneous entries for
"vector int vec_ldl (int, long int *)", and
"vector unsigned int vec_ldl (int, unsigned long int *)".
Add comments and entries for
"vector bool char vec_ldl (int, bool char *)",
"vector bool short vec_ldl (int, bool short *)",
"vector bool int vec_ldl (int, bool int *)",
"vector bool long long vec_ldl (int, bool long long *)",
"vector pixel vec_ldl (int, pixel *)",
"vector long long vec_ldl (int, long long *)",
"vector unsigned long long vec_ldl (int, unsigned long long *)".
* config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
type tree bool_long_long_type_node and correct definition of
bool_V2DI_type_node to make reference to this new type tree.
(rs6000_mangle_type): Replace erroneous reference to
bool_long_type_node with bool_long_long_type_node.
* config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
comments to emphasize sign distinctions for char and int types and
replace RS6000_BTI_bool_long constant with
RS6000_BTI_bool_long_long constant. Also add comment to restrict
use of RS6000_BTI_pixel.
(bool_long_type_node): Remove this macro definition.
(bool_long_long_type_node): New macro definition
2018-04-10 Jakub Jelinek <>
PR rtl-optimization/85300
* combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
simplify_unary_operation fails.
2018-04-10 Martin Liska <>
* Add pretty-printers for varpool_node, symtab_node,
cgraph_edge and ipa_ref.
2018-04-10 Jakub Jelinek <>
PR target/85177
PR target/85255
* config/i386/
(<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
computation of the VEC_MERGE selector from mask.
Fix decoding of the VEC_MERGE selector into mask.
2018-04-10 Richard Sandiford <>
PR tree-optimization/85286
* tree-vect-data-refs.c (vect_get_smallest_scalar_type):
2018-04-10 Richard Sandiford <>
* final.c (final_1): Set insn_last_address as well as
2018-04-10 Kyrylo Tkachov <>
PR target/85173
* explow.c (emit_stack_probe): Call validize_mem on memory location
before passing it to gen_probe_stack. Create address operand and
legitimize it for the probe_stack_address case.
2018-04-09 Jan Hubicka <>
PR lto/85078
* ipa-devirt.c (rebuild_type_inheritance-hash): New.
* ipa-utils.h (rebuild_type_inheritance-hash): Declare.
* tree.c (free_lang_data_in_type): Fix handling of binfos;
walk basetypes.
(free_lang_data): Rebuild type inheritance graph.
2018-04-09 Martin Sebor <>
* invoke.texi (-finline-small-functions): Mention other optimization
(-findirect-inlining, -fpartial-inlining): Same.
(-finline-functions-called-once): Same.
(-freorder-blocks-and-partition): Same.
2018-04-09 Jan Hubicka <>
PR rtl/84058
* cfgcleanup.c (try_forward_edges): Do not give up on crossing
jumps; choose last target that matches the criteria (i.e.
no partition changes for non-crossing jumps).
* cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
support for redirecting crossing jumps to non-crossing.
2018-04-09 Alexey Brodkin <>
* config/arc/arc.c (arc_expand_prologue): Set stack usage info
also for naked functions.
2018-04-09 Claudiu Zissulescu <>
* config/arc/ (add_shift): New pattern.
(add_shift2): Likewise.
(sub_shift): Likewise.
(sub_shift_cmp0_noout): Likewise.
(compare_si_ashiftsi): Likewise.
(xbfu_cmp0_noout): New combine pattern.
(xbfu_cmp0"): Likewise.
(movsi_set_cc_insn): Place the predicable variant first.
(commutative_binary_cmp0_noout): Remove clobber.
(commutative_binary_cmp0): New pattern.
(noncommutative_binary_cmp0): Likewise.
(noncommutative_binary_cmp0_noout): Likewise.
(noncommutative_binary_comparison_result_used): Removed.
(rsub_cmp0): New pattern.
(rsub_cmp0_noout): Likewise.
(extzvsi): Changed, keep only meaningful variants.
(SQH, SEZ): New iterators.
(SQH_postfix): New mode attribute.
(SEZ_prefix): New code attribute.
(<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
(<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
* config/arc/ (cc_set_register): Use CC_REG instead
of numerical value.
(noncommutative_operator): Check the availability of barrel
shifter option.
2018-04-09 Richard Biener <>
PR tree-optimization/85284
* tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
Only use the niter constraining form of simple_iv when the exit
is always executed.
2018-04-09 Tom de Vries <>
PR target/84041
* config/nvptx/ (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
(define_expand "*memory_barrier"): New define_expand.
(define_insn "memory_barrier"): New insn.
2018-04-09 Andrey Belevantsev <>
PR rtl-optimization/80463
PR rtl-optimization/83972
PR rtl-optimization/83480
* sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
correct producer for the insn.
(tidy_control_flow): Fixup seqnos in case of debug insns.
2018-04-09 Andrey Belevantsev <>
PR rtl-optimization/83913
* sel-sched-ir.c (merge_expr_data): Choose the middle between two
different sched-times when merging exprs.
2018-04-09 Andrey Belevantsev <>
PR rtl-optimization/83962
* sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
tidy_fallthru_edge and tidy_control_flow.
2018-04-09 Andrey Belevantsev <>
PR rtl-optimization/83530
* sel-sched.c (force_next_insn): New global variable.
(remove_insn_for_debug): When force_next_insn is true, also leave only
next insn in the ready list.
(sel_sched_region): When the region wasn't scheduled, make another pass
over it with force_next_insn set to 1.
2018-04-08 Monk Chiang <>
* config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
into tm_file.
* config/nds32/ (unspec_volatile_element): Add enum values
for interrupt control.
* config/nds32/nds32-intrinsic.c: Implementation of intrinsic
functions for interrupt control.
* config/nds32/ Likewise.
* config/nds32/nds32_intrinsic.h: Likewise.
* config/nds32/nds32.h (nds32_builtins): Likewise.
2018-04-08 Chung-Ju Wu <>
* config/nds32/nds32.c (nds32_init_machine_status,
nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
strict_aligned_p field.
(nds32_expand_to_rtl_hook): New function.
* config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
2018-04-08 Kito Cheng <>
Chung-Ju Wu <>
* config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
* config/nds32/ New file.
* config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
* config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
* config/nds32/nds32-protos.h: More declarations for n7 pipeline.
* config/nds32/ (pipeline_model): Add n7.
* config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
* config/nds32/ Include n7 settings.
2018-04-08 Kito Cheng <>
Chung-Ju Wu <>
* config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
* config/nds32/ New file.
* config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
* config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
* config/nds32/nds32-protos.h: More declarations for e8 pipeline.
* config/nds32/ (pipeline_model): Add e8.
* config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
* config/nds32/ Include e8 settings.
2018-04-08 Kito Cheng <>
Chung-Ju Wu <>
* config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
* config/nds32/ New file.
* config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
* config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
* config/nds32/nds32-protos.h: More declarations for n8 pipeline.
* config/nds32/nds32-utils.c: More implementations for n8 pipeline.
* config/nds32/ (pipeline_model): Add n8.
* config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
* config/nds32/ Include n8 settings.
2018-04-08 Kito Cheng <>
Chung-Ju Wu <>
* config.gcc (nds32*): Add nds32-utils.o into extra_objs.
* config/nds32/ New file.
* config/nds32/ New file.
* config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
nds32_register_ports): New or modify for cpu n9.
* config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
* config/nds32/nds32-protos.h: More declarations for n9 pipeline.
* config/nds32/nds32-utils.c: New file.
* config/nds32/ (pipeline_model): New attribute.
* config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
New options that support cpu n9.
* config/nds32/ Include n9 settings.
* config/nds32/t-nds32 (nds32-utils.o): Add dependency.
2018-04-08 Chung-Ju Wu <>
* config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
information if necessary.
(output_cond_branch_compare_zero): Likewise.
* config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
(nds32_target_alignment): Refine for alignment.
* config/nds32/nds32.h (NDS32_ALIGN_P): Define.
* config/nds32/ (call_internal, call_value_internal): Consider
align case.
* config/nds32/nds32.opt (malways-align, malign-functions): New.
2018-04-08 Monk Chiang <>
* config/nds32/ (unspec_volatile_element): Add values for
TLB operation and data prefetch.
* config/nds32/nds32-intrinsic.c: Implementation of intrinsic
functions for TLB operation and data prefetch.
* config/nds32/ Likewise.
* config/nds32/nds32_intrinsic.h: Likewise.
* config/nds32/nds32.c (nds32_dpref_names): Likewise.
(nds32_print_operand): Likewise.
* config/nds32/nds32.h (nds32_builtins): Likewise.
2018-04-07 Thomas Koenig <>
Andrew Pinski <>
PR middle-end/82976
* match.pd: Use constant_boolean_node of correct type instead of
boolean_true_node or boolean_false_node for simplifying
pointer comparisons to zero.
2018-04-07 Jakub Jelinek <>
PR tree-optimization/80021
* tree.c (verify_type_variant): Make error call in verify_variant_match
translatable and remove final full stop.
2018-04-07 Chung-Ju Wu <>
* config/nds32/ (unspec_volatile_element): Add
* config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
nds32_output_stack_pop): Support dwarf exception handling process.
* config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
* config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
exception handling process.
(nds32_compute_stack_frame): Likewise.
(nds32_return_addr_rtx): Likewise.
(nds32_initial_elimination_offset): Likewise.
(nds32_expand_prologue): Likewise.
(nds32_expand_epilogue): Likewise.
(nds32_dynamic_chain_address): New function.
* config/nds32/nds32.h (machine_function): Add fields for dwarf
exception handling.
* config/nds32/ (eh_return, nds32_eh_return): Implement
patterns for dwarf exception handling.
2018-04-07 Chung-Ju Wu <>
* config/nds32/nds32.h: Clean up obsolete macros.
2018-04-07 Monk Chiang <>
* config/nds32/ (unspec_element, unspec_volatile_element):
Add enum values for particular instructions.
* config/nds32/nds32-intrinsic.c: Implementation of expanding
particular intrinsic functions.
* config/nds32/ Likewise.
* config/nds32/nds32_intrinsic.h: Likewise.
* config/nds32/nds32.h (nds32_builtins): Likewise.
* config/nds32/ (type): Add pbsad and pbsada.
(btst, ave): New patterns for particular instructions.
2018-04-07 Monk Chiang <>
* config/nds32/ (unspec_element, unspec_volatile_element):
Add enum values for atomic load/store and memory sync.
* config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
and memory sync.
* config/nds32/ Likewise.
* config/nds32/nds32_intrinsic.h: Likewise.
* config/nds32/nds32.h (nds32_builtins): Likewise.
2018-04-07 Jakub Jelinek <>
PR tree-optimization/85257
* fold-const.c (native_encode_vector): If not all elts could fit
and off is -1, return 0 rather than offset.
* tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
(offseti - offset2) / BITS_PER_UNIT as 4th argument to
native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't
adjust buffer in native_interpret_expr call.
2018-04-07 Monk Chiang <>
* config/nds32/ (unspec_volatile_element): Add cache
control enum values.
* config/nds32/nds32-intrinsic.c: Add cache control expand functions.
* config/nds32/ Add cache control patterns.
* config/nds32/nds32.c (nds32_cctl_names): New.
(nds32_print_operand): Handle cache control register names.
* config/nds32/nds32.h (nds32_builtins): New enum values.
* config/nds32/nds32_intrinsic.h: Add cache control enum types and
* config/nds32/ (type): Add mmu.
* config/nds32/ (simple_insn): Add mmu.
2018-04-07 Chung-Ju Wu <>
* config/nds32/ (type): Remove call.
* config/nds32/ (simple_insn): Likewise.
2018-04-07 Monk Chiang <>
* config/nds32/ (unspec_volatile_element): Add
* config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
description for fmfcfg and fmfcsr.
(bdesc_1arg): Add fmtcsr.
(bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
(nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
* config/nds32/ (unspec_fcpynsd, unspec_fcpysd,
unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
unspec_fmfcfg): New patterns.
* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
* config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
__nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
__nds32__fmfcfg): Define.
2018-04-07 Monk Chiang <>
* config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
intrinsic register names.
* config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
intrinsic register enum values and macros.
2018-04-07 Chung-Ju Wu <>
* config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
for load/store addressing form.
(nds32_print_operand_address): Likewise.
2018-04-06 Eric Botcazou <>
PR target/85196
* config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
based on LABEL_REF. Remove useless assertion.
(pic_address_needs_scratch): Fix formatting.
(sparc_legitimize_pic_address): Minor tweaks.
(sparc_delegitimize_address): Adjust assertion accordingly.
* config/sparc/ (movsi_pic_label_ref): Change label_ref_operand
into symbolic_operand.
(movsi_high_pic_label_ref): Likewise.
(movsi_lo_sum_pic_label_ref): Likewise.
(movdi_pic_label_ref): Likewise.
(movdi_high_pic_label_ref): Likewise.
(movdi_lo_sum_pic_label_ref): Likewise.
2018-04-06 Amaan Cheval <>
* config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
custom LIB_SPEC setup.
2018-04-06 Ruslan Bukin <>
Kito Cheng <>
* config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
* config/riscv/freebsd.h: New.
2018-04-06 Chung-Ju Wu <>
* config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
* config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
2018-04-06 Chung-Ju Wu <>
Kito Cheng <>
* config/nds32/nds32-md-auxiliary.c (nds32_output_return,
nds32_output_call, nds32_symbol_binds_local_p): New functions.
* config/nds32/nds32-protos.h (nds32_output_call,
nds32_output_return): Declare.
* config/nds32/ Refine all the call and return patterns.
2018-04-06 Jakub Jelinek <>
PR debug/85252
* dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
PR rtl-optimization/84872
* cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
2018-04-06 Tamar Christina <>
* expr.c (copy_blkmode_to_reg): Revert 254862.
* doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
2018-04-06 Richard Biener <>
PR middle-end/85244
* tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
after seeing a component reference with an adjacent field. Treat
refs to arrays at struct end of external decls similar to
refs to unconstrained commons.
2018-04-06 Jakub Jelinek <>
PR sanitizer/85213
* fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
look through SAVE_EXPRs with non-side-effects argument. Adjust
recursive calls.
(fold_comparison): Adjust twoval_comparison_p caller, don't handle
save_p here.
2018-04-06 Richard Biener <>
PR middle-end/85180
* alias.c (find_base_term): New wrapper around find_base_term
unwinding CSELIB_VAL_PTR changes.
(find_base_term): Do not restore CSELIB_VAL_PTR during the
2018-04-06 Andreas Krebbel <>
* config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
* config/s390/ (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
constant definitions.
("nop"): lr 0,0 -> nopr r0
("nop_lr0", "nop_lr1"): New insn definitions.
2018-04-06 Chung-Ju Wu <>
* config/nds32/ (*stack_push, *stack_pop): Use
2018-04-06 Monk Chiang <>
Chung-Ju Wu <>
* config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
(nds32*-*-*): Add float and fpu_config into supported_defaults.
* common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
* config/nds32/ (unspec_element): Add UNSPEC_COPYSIGN,
* config/nds32/ New constraints and checking for hard
float configuration.
* config/nds32/ New mode iterator and attribute for hard
float configuration.
* config/nds32/ Use hard float alternatives and
* config/nds32/ New file.
* config/nds32/nds32-md-auxiliary.c: New functions and checkings to
deal with hard float code generation.
* config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
(abi_type, float_reg_number): New enum type.
* config/nds32/nds32-predicates.c: New predicates for hard float.
* config/nds32/nds32-protos.h: Declare functions for hard float.
* config/nds32/nds32.c: Implementation for hard float configuration.
* config/nds32/nds32.h: Definitions for hard float configuration.
* config/nds32/ Include hard float machine description and
modify patterns for hard float configuration.
* config/nds32/nds32.opt: New options for hard float configuration.
* config/nds32/ New predicates for hard float
2018-04-06 Kuan-Lin Chen <>
* common/config/nds32/nds32-common.c
(nds32_option_optimization_table): Enable -mreleax-hint by default.
2018-04-05 Jakub Jelinek <>
PR middle-end/85195
* match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
CONSTRUCTOR_ELT (ctor, ...)->value.
2018-04-05 Uros Bizjak <>
PR target/85193
* config/i386/ (define_attr "memory"): Handle rotate1 type.
2018-04-05 Tom de Vries <>
PR target/85204
* config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
cond jump.
2018-04-05 Shiva Chen <>
Kito Cheng <>
* config/nds32/ (U33): Fine-tune checking condition.
* config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
* config/nds32/nds32.h (nds32_16bit_address_type): Add
2018-04-05 Shiva Chen <>
Kito Cheng <>
* config/nds32/ (Ufe): New memory constraint.
* config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
* config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
* config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
* config/nds32/ (*mov<mode>): Adjust pattern.
2018-04-05 Chung-Ju Wu <>
* config/nds32/ Use optimize_size in the condition for
alu-shift instructions.
2018-04-05 Chung-Ju Wu <>
* config/nds32/ (divsi4, udivsi4): New patterns.
2018-04-05 Chung-Ju Wu <>
* config/nds32/ (negsi2): Refine pattern.
2018-04-05 Kito Cheng <>
Chung-Ju Wu <>
* config/nds32/ (shift_rotate): New code iterator.
(shift): New code attribute.
* config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
* config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
* config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
* config/nds32/ (addsi3, *add_srli): Refine implementation for
bit-wise operations.
(andsi3, *andsi3): Ditto.
(iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
(xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
(<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
* config/nds32/ (nds32_rimm5u_operand, nds32_and_operand,
nds32_ior_operand, nds32_xor_operand): New predicates.
2018-04-05 Chung-Ju Wu <>
* config/nds32/ (add<mode>3, sub<mode>3): Rename to ...
(addsi3, subsi3): ... this.
2018-04-05 Chung-Ju Wu <>
* config/nds32/ (*sub_srli, *and_slli): Fine-tune predicator.
2018-04-05 Chung-Ju Wu <>
* config/nds32/ Adjust indention.
2018-04-05 Kito Cheng <>
* config/nds32/ (feature): New attribute.
2018-04-05 Chung-Ju Wu <>
* config/nds32/ (subtype): New attribute.
2018-04-04 Thomas Preud'homme <>
PR target/85203
* config/arm/arm-builtins.c (arm_expand_builtin): Change
expansion to perform a bitwise AND of the argument followed by a
boolean negation of the result.
2018-04-04 Peter Bergner <>
PR rtl-optimization/84878
* ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
the basic block. Assert the use reference is not artificial and that
it has an associated insn.
2018-04-04 Michael Matz <>
* builtins.c (compute_objsize): Pass correct operand
to array_at_struct_end_p.
2018-04-04 Richard Biener <>
PR lto/85176
* dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
from contexts for DINFO_LEVEL_TERSE and below.
2018-04-04 Kito Cheng <>
* config/nds32/ (move_<mode>): Require
resiter_operand condition.
* config/nds32/ (*move<mode>): Ditto.
2018-04-04 Kito Cheng <>
Monk Chiang <>
* config/nds32/ (movmisalign<mode>): New pattern.
2018-04-04 Chung-Ju Wu <>
* config/nds32/ (movqi, movhi): Merge into mov<mode>.
2018-04-04 Chung-Ju Wu <>
Kito Cheng <>
* config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
nds32_cond_code_str, output_cond_branch,
output_cond_branch_compare_zero, nds32_expand_cbranch,
nds32_expand_cstore, nds32_expand_movcc,
nds32_output_cbranchsi4_greater_less_zero: New functions.
* config/nds32/nds32-protos.h (nds32_expand_cbranch,
nds32_expand_cstore, nds32_expand_movcc,
nds32_output_cbranchsi4_greater_less_zero): Declare.
* config/nds32/ (nds32_movecc_comparison_operator,
nds32_rimm11s_operand): New predicates.
* config/nds32/nds32.h (nds32_expand_result_type): New enum type.
* config/nds32/ Rewrite all the branch and conditional move
2018-04-04 Kito Cheng <>
* config/nds32/ Refine all the instruction type.
* config/nds32/ Ditto.
* config/nds32/ Ditto.
2018-04-04 Richard Biener <>
PR tree-optimization/85168
* tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
propagating abnormals.
2018-04-04 Chung-Ju Wu <>
* config/nds32/ (enabled): Use yes/no for this attribute.
2018-04-04 Chung-Ju Wu <>
Kito Cheng <>
* config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
* config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
* config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
* config/nds32/ (sibcall_internal): New.
(sibcall_register): Remove.
(sibcall_immediate): Remove.
(sibcall_value_internal): New.
(sibcall_value_register): Remove.
(sibcall_value_immediate): Remove.
* config/nds32/ (nds32_general_register_operand): New.
(nds32_call_address_operand): New.
2018-04-03 Jakub Jelinek <>
PR rtl-optimization/85167
* shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
bb_defs if *split_p, instead preinitialize it to NULL.
PR tree-optimization/85156
* builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
evaluating the argument multiple times.
2018-04-03 Bill Schmidt <>
* config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
than vector.
(_mm_cvtpd_ps): Likewise.
(_mm_cvttpd_epi32): Likewise.
* config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
* config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
vector, pixel, and bool following altivec.h include.
2018-04-03 Martin Sebor <>
* doc/extend.texi (Common Function Attributes): Clarify.
(const attribute): Likewise.
(pure attribute): Likewise.
2018-04-03 Jakub Jelinek <>
PR target/85169
* config/i386/i386.c (ix86_expand_vector_set): Use
HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix.
2018-04-03 Uros Bizjak <>
* config/i386/i386.c (emit_i387_cw_initialization): Always use logic
instructions when changing rounding bits to preserve precision bits
in the x87 control word.
2018-04-03 Martin Liska <>
PR tree-optimization/82491
* rtl.h (strip_offset_and_add): Replace += suboffset with
poly_uint64 () + suboffset.
2018-03-29 Martin Liska <>
Martin Jambor <>
PR ipa/84947
* ipa-cp.c (propagate_bits_across_jump_function): Bail out if
param_type is not an integral or pointer type.
2018-04-03 Richard Biener <>
* sese.h (recompute_all_dominators): Remove.
2018-04-02 Martin Sebor <>
* doc/invoke.texi (-Wrestrict): Fix typos.
2018-04-02 Jim Wilson <>
* config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
* config/riscv/ (<optab>si3): Use QImode shift count.
(<optab>di3, <optab>si3_extend): Likewise.
(<optab>si3_mask, <optab>si3_mask_1): New.
(<optab>di3_mask, <optab>di3_mask_1): New.
(<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
(lshrsi3_zero_extend_1): Use VOIDmode shift count.
* config/riscv/ (atomic_test_and_set): Emit QImode shift count.
2018-04-02 Gerald Pfeifer <>
* doc/cpp.texi (Variadic Macros): Fix line continuation in an
2018-04-02 Chung-Ju Wu <>
* config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
(nds32_canonicalize_comparison): New function.
2018-04-01 Chung-Ju Wu <>
Kito Cheng <>
Kuan-Lin Chen <>
* config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
* config/nds32/ (unspec_volatile_element): Add
* config/nds32/nds32-relax-opt.c: New file.
* config/nds32/nds32-predicates.c
(nds32_symbol_load_store_p): New function.
* config/nds32/nds32-protos.h
(nds32_symbol_load_store_p): Declare function.
(make_pass_nds32_relax_opt): Declare new rtl pass function.
* config/nds32/nds32.c
(nds32_register_pass): New function to register pass.
(nds32_register_passes): New function to register passes.
* config/nds32/ (relax_group): New pattern.
* config/nds32/nds32.opt (mrelax-hint): New option.
* config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
2018-04-01 Kito Cheng <>
* config/nds32/t-nds32: Modify files dependency.
2018-04-01 Chung-Ju Wu <>
* config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
(PROFILE_HOOK): Define its implementation.
2018-04-01 Chung-Ju Wu <>
* config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
type and 32-bit size.
2018-04-01 Jakub Jelinek <>
PR middle-end/85090
* config/i386/ (V): Add V64QI and V32HI for TARGET_AVX512F.
(V_128_256): New mode iterator.
(*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
(*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
(xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
of V.
* config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
2018-03-31 Segher Boessenkool <>
PR target/83315
* config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
NaN inputs correctly.
2018-03-30 Peter Bergner <>
PR target/80546
* config/rs6000/ (??r): New mode attribute.
(*vsx_mov<mode>_64bit): Use it.
(*vsx_mov<mode>_32bit): Likewise.
2018-03-30 Martin Sebor <>
PR tree-optimization/84818
* builtins.c (check_access): Use warning_n.
2018-03-30 Aaron Sawdey <>
PR target/83822
* config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
2018-03-30 Julia Koval <>
PR target/84413
* x86-tune.def (movx, partial_reg_dependency): Enable for
2018-03-29 Vladimir Makarov <>
PR inline-asm/84985
* lra-constraints.c (process_alt_operands): Move setting
this_alternative_matches below.
2018-03-29 Martin Liska <>
PR lto/84995.
* doc/invoke.texi: Document how LTO works with debug info.
Describe auto-load support of binutils. Mention 'x86-64'
as valid option value of -march option.
2018-03-29 Jakub Jelinek <>
* config/i386/ (<avx512>_blendm<mode>): Use <sseintprefix>.
PR c/85094
* fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
OEP_NO_HASH_CHECK for recursive call, to avoid exponential
2018-03-28 Peter Bergner <>
PR target/84912
* config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
* config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
for RS6000_BTM_POWERPC64.
(rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
(rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
* config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
(DIVDE): Use it.
(DIVDEU): Likewise.
2018-03-28 Carl Love <>
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/ (lrintsfsi2): Add define_insn for the
fctiw instruction.
2018-03-28 Bill Schmidt <>
* config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
instead of __vector bool.
(_mm_max_pu8): Likewise.
(_mm_min_pi16): Likewise.
2018-03-28 Peter Bergner <>
PR target/84912
* config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
(DIVWEUO): Likewise.
(DIVDEO): Likewise.
(DIVDEUO): Likewise.
* config/rs6000/rs6000.c (builtin_function_type): Remove support for
* config/rs6000/ (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
(UNSPEC_DIV_EXTEND): Remove deleted unspecs.
(div_extend): Likewise.
* doc/extend.texi (__builtin_divweo): Remove documentation for deleted
builtin function.
(__builtin_divweuo): Likewise.
(__builtin_divdeo): Likewise.
(__builtin_divdeuo): Likewise.
2018-03-28 Jakub Jelinek <>
PR target/85095
* config/i386/ (*add<mode>3_carry_0, *addsi3_carry_zext_0,
*sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
PR tree-optimization/82004
* gimple-match-head.c (optimize_pow_to_exp): New function.
* match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
Don't fold to exp if optimize_pow_to_exp is false.
2018-03-28 Martin Liska <>
PR other/84819
* calls.c (initialize_argument_information): Fix trailing space.
* common.opt: Fix typo and provide better explanation for
-fsanitize-coverage option.
* config/i386/i386.opt: Fix typo.
2018-03-28 Jakub Jelinek <>
Martin Liska <>
PR sanitizer/85081
* gimplify.c (asan_poison_variable): Don't do the check for
gimplify_omp_ctxp here.
(gimplify_decl_expr): Do it here.
(gimplify_target_expr): Likewise.
2018-03-28 Martin Liska <>
PR target/84988
* config/i386/i386.c (ix86_function_arg_advance): Do not call
chkp_type_bounds_count if MPX is not enabled.
2018-03-27 Chung-Ju Wu <>
* config/nds32/nds32.h (BRANCH_COST): Adjust cost.
2018-03-27 Michael Meissner <>
PR target/84914
* config/rs6000/rs6000.c (create_complex_muldiv): New helper
function to create the function decl for complex long double
multiply and divide for -mabi=ieeelongdouble.
(init_float128_ieee): Call it.
2018-03-27 H.J. Lu <>
PR target/85044
* config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
-fcf-protection=branch -mibt.
* config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
2018-03-27 Ramana Radhakrishnan <>
PR target/81863
* config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
2018-03-27 Cesar Philippidis <>
PR target/85056
* config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
extern array declarations.
2018-03-27 Richard Biener <>
PR middle-end/84067
* match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
explicit single_use checks.
2018-03-27 Richard Biener <>
PR tree-optimization/85082
* tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
Valueize the VUSE.
2018-03-27 Ramana Radhakrishnan <>
* config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
* common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
Turn on fasynchronous-unwind-tables and funwind-tables.
2018-03-26 Uros Bizjak <>
PR target/85073
* config/i386/ (*bmi_blsr_<mode>_cmp): New insn pattern.
(*bmi_blsr_<mode>_ccz): Ditto.
2018-03-26 Tom de Vries <>
PR tree-optimization/85063
* omp-general.c (offloading_function_p): New function. Factor out
of ...
* omp-offload.c (pass_omp_target_link::gate): ... here.
* omp-general.h (offloading_function_p): Declare.
* tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
with attribute omp declare target for offloading functions.
2018-03-24 Richard Sandiford <>
PR tree-optimization/84005
* tree-data-ref.h (get_base_for_alignment): Declare.
* tree-data-ref.c (get_base_for_alignment_1): New function.
(get_base_for_alignment): Likewise.
* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
get_base_for_alignment to find a suitable base object, instead
of always using drb->base_address.
2018-03-23 Jakub Jelinek <>
PR inline-asm/85022
* emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
known size by default.
2018-03-23 Vladimir Makarov <>
PR inline-asm/85030
* lra-constraints.c (process_alt_operands): Don't match BLKmode
and non BLKmode operands.
2018-03-23 Kyrylo Tkachov <>
PR target/85026
* config/arm/ (unaligned_loadhis): Remove first alternative.
Clean up attributes.
2018-03-23 Richard Biener <>
PR debug/85020
* dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
we are going to emit early debug for LTO.
2018-03-23 Jakub Jelinek <>
PR inline-asm/85034
* function.c (match_asm_constraints_1): Don't optimize if input
doesn't satisfy general_operand predicate for output's mode.
PR inline-asm/85022
* alias.c (write_dependence_p): Don't require for x_canonicalized
non-VOIDmode if x has VOIDmode.
PR sanitizer/85029
* sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
just don't try to optimize it rather than assert it never happens.
2018-03-22 Kelvin Nilsen <>
* config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
macro expansions for definition of ST_INTERNAL_<mode> and
LD_INTERNAL_<mode> builtins.
* config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
Remove prototype.
* config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
(altivec_expand_st_builtin): Likewise.
(altivec_expand_builtin): Remove calls to deleted functions.
(rs6000_address_for_altivec): Delete this function.
* config/rs6000/ Remove expands for
vector_altivec_load_<mode> and vector_altivec_store_<mode>.
2018-03-22 Sudakshina Das <>
PR target/84826
* config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
* config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
re-computing once computed.
(arm_expand_prologue): Compute machine->static_chain_stack_bytes.
(arm_init_machine_status): Initialize
2018-03-22 Kelvin Nilsen <>
PR target/84760
* doc/extend.texi: Add four new prototypes for vec_ld.
* config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
definitions for more logical presentation.
* config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
entries for V1TI variants of __builtin_altivec_ld builtin.
* config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
handling of V1TI variant of LVX icode pattern.
(altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
(rs6000_gimple_fold_builtin): Likewise.
(altivec_init_builtins): Add code to define
__builtin_altivec_lvx_v1ti function.
2018-03-22 Jakub Jelinek <>
PR inline-asm/84941
* function.c (match_asm_constraints_1): Don't do the optimization
if input isn't a REG, SUBREG, MEM or constant.
2018-03-22 Tom de Vries <>
PR tree-optimization/84956
* tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
2018-03-22 Jakub Jelinek <>
PR sanitizer/85018
* dwarf2asm.c (dw2_output_indirect_constant_1): Set
DECL_INITIAL (decl) to decl at the end.
* varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
adjust the comment.
2018-03-21 Joseph Myers <>
* doc/extend.texi (__builtin_tgmath): Document when complex
integer types are treated as _Complex _Float64.
2018-03-21 Tom de Vries <>
* doc/extend.texi (__builtin_extend_pointer): Remove pasto.
2018-03-21 Jakub Jelinek <>
PR tree-optimization/84960
* tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
if it is ENTRY block, move them into single succ of ENTRY in that case.
2018-03-21 Richard Sandiford <>
PR tree-optimization/84811
* poly-int.h (poly_span_traits): Remove the T3 parameter and
promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
(maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
(known_subrange_p): Update accordingly. Cast each value involved
in the size comparison, rather than casting the result of the
2018-03-21 Jakub Jelinek <>
PR tree-optimization/84982
* gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
by flipping the least significant bit rather than all bits from
bitpos to bitpos + bitsize - 1.
2018-03-21 Nathan Sidwell <>
* doc/extend.texi (Deprecated Features): Remove mention of
long-deleted deprecations.
2018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR jit/84288
* (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
* configure: Regenerate.
2018-03-21 Tom de Vries <>
PR tree-optimization/83126
* tree-parloops.c (num_phis): New function.
(gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
2018-03-21 Nathan Sidwell <>
* doc/extend.texi (Deprecated Features): Update deprecated flags,
mention anon-struct/union members and trailing attributes.
2018-03-21 Bin Cheng <>
PR tree-optimization/84969
* tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
builtin memset partitions if they set different rhs values.
2018-03-21 Jakub Jelinek <>
PR rtl-optimization/84989
* simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
VEC_DUPLICATE with scalar result mode.
2018-03-21 Martin Liska <>
PR ipa/84963
* ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
not intended return statement.
2018-03-21 Martin Liska <>
PR target/84988
* tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
(chkp_find_bound_slots_1): Limit number of iterations.
2018-03-20 David H. Gutteridge <>
PR target/84838
* Minor grammar fixes for x86 options.
2018-03-20 Jakub Jelinek <>
PR debug/84875
* dce.c (delete_unmarked_insns): Don't remove frame related noop moves
holding REG_CFA_RESTORE notes, instead turn them into a USE.
2018-03-20 Peter Bergner <>
PR target/83789
* config/rs6000/ (altivec_lvx_<mode>_2op): Delete define_insn.
(altivec_lvx_<mode>_1op): Likewise.
(altivec_stvx_<mode>_2op): Likewise.
(altivec_stvx_<mode>_1op): Likewise.
(altivec_lvx_<VM2:mode>): New define_expand.
(altivec_stvx_<VM2:mode>): Likewise.
(altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
(altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
(altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
(altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
* config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
(rs6000_gen_lvx): Likewise.
* config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
(altivec_expand_stv_builtin): Likewise.
(altivec_expand_builtin): Likewise.
* config/rs6000/ Likewise.
2018-03-20 Kyrylo Tkachov <>
PR target/82518
* config/arm/arm.c (arm_array_mode_supported_p): Return false for
2018-03-20 Richard Biener <>
PR target/84986
* config/i386/i386.c (ix86_add_stmt_cost): Only cost
sign-conversions as zero, fall back to standard scalar_stmt
cost for the rest.
2018-03-20 Martin Liska <>
PR ipa/84825
* predict.c (rebuild_frequencies): Handle case when we have
PROFILE_ABSENT, but flag_guess_branch_prob is false.
2018-03-20 Jakub Jelinek <>
PR target/84990
* dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
* varasm.c (use_blocks_for_decl_p): Remove hack for
PR target/84845
* config/aarch64/ (*aarch64_reg_<mode>3_neg_mask2): Rename
to ...
(*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this. If pseudos can't
be created, use lowpart_subreg of operands[0] rather than operands[0]
(*aarch64_reg_<mode>3_minus_mask): Rename to ...
(*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
(*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
and n constraint instead of aarch64_shift_imm_di and Usd.
(*aarch64_reg_<optab>_minus<mode>3): Rename to ...
(*aarch64_<optab>_reg_minus<mode>3): ... this.
2018-03-20 Sudakshina Das <>
PR target/82989
* config/arm/ (ashldi3_neon): Update ?s for constraints
to favor GPR over NEON registers.
(<shift>di3_neon): Likewise.
2018-03-20 Tom de Vries <>
PR target/84952
* config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
(nvptx_process_pars): Emit bar.sync asap and alap.
2018-03-20 Tom de Vries <>
PR target/84954
* config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
seen_label if seen_label is already set.
2018-03-20 Jakub Jelinek <>
PR target/84945
* config/i386/i386.c (fold_builtin_cpu): For features above 31
use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
Use 1U instead of 1. Formatting fixes.
PR c/84953
* builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
instead of TREE_TYPE (s1) for the return value.
2018-03-19 Jakub Jelinek <>
PR tree-optimization/84946
* gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
bitsize + bitsize in poly_uint64 rather than poly_int64.
PR sanitizer/78651
* dwarf2asm.c: Include fold-const.c.
(dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
of decl rather than decl itself.
PR rtl-optimization/84643
* memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
2018-03-19 Maxim Ostapenko <>
PR sanitizer/78651
* dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
calling assemble_variable.
2018-03-19 Sudakshina Das <>
PR target/81647
* config/aarch64/ (vec_cmp<mode><v_int_equiv>): Modify
2018-03-19 Jim Wilson <>
PR bootstrap/84856
* config/riscv/riscv.c (riscv_function_arg_boundary): Use
(riscv_first_stack_step): Likewise.
(riscv_option_override): Use STACK_BOUNDARY instead of
* config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
2018-03-19 Richard Biener <>
PR tree-optimization/84933
* tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
2018-03-19 Richard Biener <>
PR tree-optimization/84859
* tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
(cond_if_else_store_replacement): Perform sinking operation on
single-store BBs regardless of MAX_STORES_TO_SINK setting.
Generalize what a BB with a single eligible store is.
2018-03-19 Richard Biener <>
PR tree-optimization/84929
* tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
chrec_is_positive against non-chrec arg.
2018-03-19 Tamar Christina <>
PR target/84711
* config/arm/arm.c (arm_can_change_mode_class): revert r258554.
2018-03-18 Martin Liska <>
PR rtl-optimization/84635
* regrename.c (build_def_use): Use matches_mode only when
matches >= 0.
2018-03-18 Richard Sandiford <>
PR tree-optimization/84913
* tree-vect-loop.c (vectorizable_reduction): Don't try to
vectorize chains of COND_EXPRs.
2018-03-18 Chung-Ju Wu <>
* config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
2018-03-18 Chung-Ju Wu <>
* config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
2018-03-18 Chung-Ju Wu <>
* config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
2018-03-17 Chung-Ju Wu <>
Kito Cheng <>
* config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
* config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
(nds32_adjust_reg_alloc_order): New function.
* config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
2018-03-17 Kito Cheng <>
* config/nds32/nds32.c (nds32_asm_output_mi_thunk,
nds32_print_operand, nds32_print_operand_address): Use
2018-03-17 Chung-Ju Wu <>
* config/nds32/nds32.c (nds32_register_priority): Modify cost.
2018-03-17 Jakub Jelinek <>
PR target/84902
* config/i386/i386.c (initial_ix86_tune_features,
initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
unsigned long long.
(set_ix86_tune_features): Change ix86_tune_mask from unsigned int
to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
rather than 1u << ix86_tune. Formatting fix.
(ix86_option_override_internal): Change ix86_arch_mask from
unsigned int to unsigned HOST_WIDE_INT, initialize to
HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
(ix86_function_specific_restore): Likewise.
2018-03-16 Jakub Jelinek <>
PR target/84899
* postreload.c (reload_combine_recognize_pattern): Perform
INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
truncate_int_for_mode the result for the destination's mode.
PR c/84909
* hsa-gen.c (mem_type_for_type): Fix comment typo.
* tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
* gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
2018-03-16 Vladimir Makarov <>
PR target/84876
* lra-assigns.c (lra_split_hard_reg_for): Don't use
regno_allocno_class_array and sorted_pseudos.
* lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
insns where regno is used.
2018-03-16 Martin Liska <>
PR ipa/84833
* multiple_target.c (create_dispatcher_calls): Redirect
reference in the symbol table.
2018-03-16 Martin Liska <>
PR ipa/84722
* multiple_target.c (create_dispatcher_calls): Redirect also
an alias.
2018-03-16 Jakub Jelinek <>
PR c++/79937
PR c++/82410
* tree.h (TARGET_EXPR_NO_ELIDE): Define.
* gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
2018-03-16 Julia Koval <>
* doc/invoke.texi (Skylake Server): Add CLWB.
Cannonlake): Remove CLWB.
2018-03-16 Jakub Jelinek <>
PR tree-optimization/84841
* tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
1 << 3.
(constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
(sort_by_operand_rank): Put entries with higher constant_type last
rather than first to match comments.
2018-03-15 Sandra Loosemore <>
* config/nios2/ (movsi_internal): Fix thinko in
split predicate.
2018-03-15 Jakub Jelinek <>
PR c++/79085
* calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
check and use address of target always.
2018-03-15 H.J. Lu <>
PR target/84574
* config/i386/i386.c (indirect_thunk_needed): Update comments.
(indirect_thunk_bnd_needed): Likewise.
(indirect_thunks_used): Likewise.
(indirect_thunks_bnd_used): Likewise.
(indirect_return_needed): New.
(indirect_return_bnd_needed): Likewise.
(output_indirect_thunk_function): Add a bool argument for
function return.
(output_indirect_thunk_function): Don't generate alias for
function return thunk.
(ix86_code_end): Call output_indirect_thunk_function to generate
function return thunks.
(ix86_output_function_return): Set indirect_return_bnd_needed
and indirect_return_needed instead of indirect_thunk_bnd_needed
and indirect_thunk_needed.
2018-03-15 Olga Makhotina <>
* config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
(__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
2018-03-15 David Malcolm <>
Paul Hua <>
PR c/84852
* gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
2018-03-15 Segher Boessenkool <>
* config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
resp. SFmode cases.
2018-03-15 Tamar Christina <>
PR target/84711
* config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
instead of GET_MODE_SIZE when comparing Units.
2018-03-15 Vladimir Mezentsev <>
PR target/68256
* varasm.c (hash_section): Return an unchangeble hash value
* config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
Return !aarch64_can_use_per_function_literal_pools_p ().
2018-03-15 Jakub Jelinek <>
PR target/84860
* optabs.c (emit_conditional_move): Pass address of cmode's copy
rather than address of cmode as last argument to prepare_cmp_insn.
2018-03-15 Julia Koval <>
* config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
2018-03-14 John David Anglin <>
PR target/83451
* config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload
insn for floating-point loads and stores.
2018-03-14 Carl Love <>
* config/rs6000/rs6000-c.c: Add macro definitions for
* config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
* config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
* config/rs6000/ (altivec_vpermxor): New define expand.
* config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
* config/doc/extend.texi: Add prototypes for vec_permxor.
2018-03-14 David Malcolm <>
PR c/84852
* diagnostic-show-locus.c (class layout_point): Convert m_line
from int to linenum_type.
(line_span::comparator): Use linenum "compare" function when
comparing line numbers.
(test_line_span): New function.
(layout_range::contains_point): Convert param "row" from int to
(layout_range::intersects_line_p): Likewise.
(layout::will_show_line_p): Likewise.
(layout::print_source_line): Likewise.
(layout::should_print_annotation_line_p): Likewise.
(layout::print_annotation_line): Likewise.
(layout::print_leading_fixits): Likewise.
(layout::annotation_line_showed_range_p): Likewise.
(struct line_corrections): Likewise for field m_row.
(line_corrections::line_corrections): Likewise for param "row".
(layout::print_trailing_fixits): Likewise.
(layout::get_state_at_point): Likewise.
(layout::get_x_bound_for_row): Likewise.
(layout::print_line): Likewise.
(diagnostic_show_locus): Likewise for locals "last_line" and
(selftest::diagnostic_show_locus_c_tests): Call test_line_span.
* input.c (selftest::test_linenum_comparisons): New function.
(selftest::input_c_tests): Call it.
* selftest.c (selftest::test_assertions): Test ASSERT_GT,
* selftest.h (ASSERT_GT): New macro.
(ASSERT_GT_AT): New macro.
(ASSERT_LT): New macro.
(ASSERT_LT_AT): New macro.
2018-03-14 Segher Boessenkool <>
PR rtl-optimization/84780
* combine.c (distribute_links): Don't make a link based on pc_rtx.
2018-03-14 Martin Liska <>
* tree.c (record_node_allocation_statistics): Use
(get_stats_node_kind): New function extracted from
(free_node): Use get_stats_node_kind.
2018-03-14 Richard Biener <>
* tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
that the value-set of ANTIC_IN doesn't grow.
* tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
(compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
2018-03-14 Julia Koval <>
* config.gcc (icelake-client, icelake-server): New.
(icelake): Remove.
* config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
(initial_ix86_arch_features): Ditto.
(PTA_ICELAKE): Remove.
(ix86_option_override_internal): Split up icelake on icelake client and
icelake server.
(get_builtin_code_for_version): Ditto.
(fold_builtin_cpu): Ditto.
* config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
* config/i386/i386-c.c (ix86_target_macros_internal): Ditto
* config/i386/i386.h (processor_type): Ditto.
* doc/invoke.texi: Ditto.
2018-03-14 Jakub Jelinek <>
PR sanitizer/83392
* sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
INTEGER_CST offset, add it together with bitpos / 8 and
sign extend based on POINTER_SIZE.
PR target/84844
2017-04-20 Uros Bizjak <>
PR target/78090
* config/i386/ (Yc): New register constraint.
* config/i386/ (*float<SWI48:mode><MODEF:mode>2_mixed):
Use Yc constraint for alternative 2 of operand 0. Remove
preferred_for_speed attribute.
2018-03-14 Richard Biener <>
PR tree-optimization/84830
* tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
with the old one to avoid oscillations.
2018-03-13 Vladimir Makarov <>
PR target/83712
* lra-assigns.c (find_all_spills_for): Ignore uninteresting
(assign_by_spills): Return a flag of reload assignment failure.
Do not process the reload assignment failures. Do not spill other
reload pseudos if they has the same reg class. Update n if
(lra_assign): Add a return arg. Set up from the result of
assign_by_spills call.
(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
* lra-constraints.c (split_reg): Add a new arg. Use it instead of
usage_insns if it is not NULL.
(spill_hard_reg_in_range): New function.
(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
function prototypes.
(lra_assign): Change prototype.
* lra.c (lra): Add code to deal with fails by splitting hard reg
live ranges.
2018-03-01 Palmer Dabbelt <>
* config/riscv/riscv.opt (mrelax): New option.
* config/riscv/riscv.c (riscv_file_start): Emit ".option
"norelax" when riscv_mrelax is disabled.
* doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
2018-03-13 Aaron Sawdey <>
PR target/84743
* config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
reassociation for int modes.
2018-03-13 Richard Sandiford <>
* tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
for big-endian.
* config/aarch64/ (hi_lanes_optab): New int attribute.
* config/aarch64/
(*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
(aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
(*extend<mode><Vwide>2): Rename to...
(aarch64_sve_extend<mode><Vwide>2): ...this.
(vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
renaming the old pattern to...
(aarch64_sve_punpk<perm_hilo>_<mode>): ...this. Only define
unsigned packs.
(vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
define_expand, renaming the old pattern to...
(aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
(*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
(vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
account when deciding which SVE instruction the optab should use.
(vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
2018-03-13 Richard Sandiford <>
* config/aarch64/ (V4_REGNUM, V8_REGNUM, V12_REGNUM)
(P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
(tlsdesc_small_<mode>): Turn a define_expand and use
tlsdesc_small_sve_<mode> for SVE. Rename original define_insn to...
(tlsdesc_small_advsimd_<mode>): ...this.
(tlsdesc_small_sve_<mode>): New pattern.
2018-03-13 Richard Sandiford <>
* config/aarch64/ (UNSPEC_SMUL_HIGHPART)
(UNSPEC_UMUL_HIGHPART): New constants.
(MUL_HIGHPART): New int iteraor.
* config/aarch64/ (<su>mul<mode>3_highpart): New
(*<su>mul<mode>3_highpart): New define_insn.
2018-03-13 Eric Botcazou <>
PR lto/84805
* ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
incomplete types.
2018-03-13 Martin Liska <>
PR ipa/84658.
* (sem_item_optimizer::sem_item_optimizer): Initialize new
(sem_item_optimizer::~sem_item_optimizer): Release it.
(sem_item_optimizer::merge_classes): Register variable aliases.
(sem_item_optimizer::fixup_pt_set): New function.
(sem_item_optimizer::fixup_points_to_sets): Likewise.
* ipa-icf.h: Declare new variables and functions.
2018-03-13 Jakub Jelinek <>
PR middle-end/84834
* match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
integer_pow2p@2 and test integer_pow2p in condition.
(A < 0 ? C : 0): Similarly for @1.
PR middle-end/84831
* stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
characters starting at p contain '\0' character, don't look beyond
PR target/84827
* config/i386/ (round<mode>2): For 387 fancy math, disable
pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
PR target/84828
* reg-stack.c (change_stack): Change update_end var from int to
rtx_insn *, if non-NULL don't update just BB_END (current_block), but
also call set_block_for_insn on the newly added insns and rescan.
PR target/84786
* config/i386/ (sse2_loadhpd): Use Yv constraint rather than v
on the last operand.
PR c++/84704
* tree.c (stabilize_reference_1): Return save_expr (e) for
STATEMENT_LIST even if it doesn't have side-effects.
2018-03-12 Jonathan Wakely <>
* doc/invoke.texi (-mclflushopt): Fix spelling of option.
2018-03-12 Renlin Li <>
* config/aarch64/ (movhf_aarch64): Fix mode argument to
2018-03-12 Martin Sebor <>
PR tree-optimization/83456
* gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
for perfectly overlapping calls to memcpy.
(gimple_fold_builtin_memory_chk): Same.
(gimple_fold_builtin_strcpy): Handle no-warning.
(gimple_fold_builtin_stxcpy_chk): Same.
* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
2018-03-12 Segher Boessenkool <>
* config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
parameter. Use it for SFmode.
(rs6000_function_arg_advance_1): Adjust.
(rs6000_function_arg): Adjust.
(rs6000_gimplify_va_arg): Pass false for that new parameter.
2018-03-12 Segher Boessenkool <>
PR rtl-optimization/84169
PR rtl-optimization/84780
* combine.c (can_combine_p): Check for a 2-insn combination whether
the destination register is used between the two insns, too.
2018-03-12 Richard Biener <>
PR tree-optimization/84803
* tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
for refs DR analysis didn't process.
2018-03-12 Richard Biener <>
PR tree-optimization/84777
* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
force-vectorize loops ignore whether we are optimizing for size.
2018-03-12 Chung-Ju Wu <>
* config/nds32/nds32.c (nds32_md_asm_adjust): New function.
2018-03-12 Monk Chiang <>
Kito Cheng <>
Chung-Ju Wu <>
* config/nds32/nds32.c (nds32_compute_stack_frame,
nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
* config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
* config/nds32/ (prologue, epilogue): Use macro
NDS32_V3PUSH_AVAILABLE_P to do checking.
2018-03-11 Jakub Jelinek <>
PR debug/58150
* dwarf2out.c (gen_enumeration_type_die): Don't guard adding
DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
but on TYPE_SIZE. Don't do anything for ENUM_IS_OPAQUE if not creating
a new die. Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE. Guard
addition of most attributes on !orig_type_die or the attribute not
being present already. Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
2018-03-11 Kito Cheng <>
Chung-Ju Wu <>
* config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
__NDS32_VH__ macro.
* config/nds32/nds32.opt (mvh): New option.
2018-03-11 Kito Cheng <>
Chung-Ju Wu <>
* config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
* config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
* config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
2018-03-11 Kito Cheng <>
Chung-Ju Wu <>
* config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
* config/nds32/ (strlensi): New pattern.
* config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
2018-03-11 Monk Chiang <>
Kito Cheng <>
Chung-Ju Wu <>
* config/nds32/ (unspec_element): Add UNSPEC_FFB,
* config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
for ffb, ffmism and flmism.
* config/nds32/ (unspec_ffb): Define new pattern.
(unspec_ffmism): Ditto.
(unspec_flmism): Ditto.
(nds32_expand_builtin_impl): Check if string extension is available.
* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
2018-03-10 Vladimir Makarov <>
Reverting patch:
2018-03-09 Vladimir Makarov <>
PR target/83712
* lra-assigns.c (assign_by_spills): Return a flag of reload
assignment failure. Do not process the reload assignment
failures. Do not spill other reload pseudos if they has the same
reg class.
(lra_assign): Add a return arg. Set up from the result of
assign_by_spills call.
(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
* lra-constraints.c (split_reg): Add a new arg. Use it instead of
usage_insns if it is not NULL.
(spill_hard_reg_in_range): New function.
(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
function prototypes.
(lra_assign): Change prototype.
* lra.c (lra): Add code to deal with fails by splitting hard reg
live ranges.
2018-03-10 H.J. Lu <>
PR target/84807
* config/i386/i386.opt: Replace Enforcment with Enforcement.
2018-03-10 Alexandre Oliva <>
PR debug/84620
* dwarf2out.h (dw_val_class): Add dw_val_class_symview.
(dw_val_node): Add val_symbolic_view.
* dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
(symview_upper_bound): New.
(new_line_info_table): Initialize symviews_since_reset.
(dwarf2out_source_line): Count symviews_since_reset and set
(dw_val_equal_p): Handle symview.
(add_AT_symview): New.
(print_dw_val): Handle symview.
(attr_checksum, attr_checksum_ordered): Likewise.
(same_dw_val_p, size_of_die): Likewise.
(value_format, output_die): Likewise.
(add_high_low_attributes): Use add_AT_symview for entry_view.
(dwarf2out_finish): Reset symview_upper_bound, clear
2018-03-09 Peter Bergner <>
PR target/83969
* config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
Add strict argument and use it.
(rs6000_split_multireg_move): Update for new strict argument.
(mem_operand_gpr): Disallow all non-offsettable addresses.
* config/rs6000/ (*movdi_internal64): Use YZ constraint.
2018-03-09 Jakub Jelinek <>
PR target/84772
* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
* config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
PR c++/84767
* tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
decl, use remap_type if we want to use the type.
2018-03-09 Martin Sebor <>
PR tree-optimization/84526
* gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
Remove dead code.
(builtin_access::generic_overlap): Be prepared to handle non-array
base objects.
2018-03-09 Alexandre Oliva <>
PR rtl-optimization/84682
* lra-constraints.c (process_address_1): Check is_address flag
for address constraints.
(process_alt_operands): Likewise.
* lra.c (lra_set_insn_recog_data): Pass asm operand locs to
* recog.h (preprocess_constraints): Add oploc parameter.
Adjust callers.
* recog.c (preprocess_constraints): Test address_operand for
CT_ADDRESS constraints.
2018-03-09 Vladimir Makarov <>
PR target/83712
* lra-assigns.c (assign_by_spills): Return a flag of reload
assignment failure. Do not process the reload assignment
failures. Do not spill other reload pseudos if they has the same
reg class.
(lra_assign): Add a return arg. Set up from the result of
assign_by_spills call.
(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
* lra-constraints.c (split_reg): Add a new arg. Use it instead of
usage_insns if it is not NULL.
(spill_hard_reg_in_range): New function.
(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
function prototypes.
(lra_assign): Change prototype.
* lra.c (lra): Add code to deal with fails by splitting hard reg
live ranges.
2018-03-09 Kyrylo Tkachov <>
PR target/83193
* common/config/arm/arm-common.c (arm_parse_arch_option_name):
Accept complain bool parameter. Only emit errors if it is true.
(arm_parse_cpu_option_name): Likewise.
(arm_target_thumb_only): Adjust callers of the above.
* config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
prototype to take a default true bool parameter.
(arm_parse_arch_option_name): Likewise.
2018-03-09 David Malcolm <>
Francois-Xavier Coudert <>
PR jit/64089
PR jit/84288
* configure: Regenerate.
* ("linker --version-script option"): New.
("linker soname option"): New.
2018-03-09 Richard Biener <>
PR tree-optimization/84775
* tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
immediate uses of predicate stmts and mark them modified.
PR tree-optimization/84178
* tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
to caller.
(version_loop_for_if_conversion): Delay update_ssa call.
(tree_if_conversion): Delay update_ssa until after predicate
2018-03-09 Eric Botcazou <>
PR target/84763
* config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
when the function accesses prior frames.
2018-03-08 Jakub Jelinek <>
PR debug/84456
* dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
gen_llsym, otherwise call maybe_gen_llsym.
PR inline-asm/84742
* recog.c (asm_operand_ok): Return 0 if multi-character constraint
has ',' character inside of it.
2018-03-08 Kyrylo Tkachov <>
PR target/84748
* config/aarch64/ (*compare_cstore<mode>_insn): Mark pattern
as clobbering CC_REGNUM.
2018-03-08 Richard Biener <>
PR middle-end/84552
* tree-scalar-evolution.c: Include tree-into-ssa.h.
(follow_copies_to_constant): Do not follow SSA names registered
for update.
2018-03-08 Richard Biener <>
PR tree-optimization/84178
* tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
to caller.
(version_loop_for_if_conversion): Delay update_ssa call.
(tree_if_conversion): Delay update_ssa until after predicate
2018-03-08 David Malcolm <>
PR tree-optimization/84178
* tree-if-conv.c (release_bb_predicate): Remove the
the assertion that the stmts have NULL use_ops.
Discard the statements, asserting that they haven't
yet been added to a BB.
2018-03-08 Richard Biener <>
PR tree-optimization/84746
* tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
(phi_translate): Pass in destination ANTIC_OUT set.
(phi_translate_1): Likewise. For a simplified result lookup
a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
(phi_translate_set): Adjust.
(do_pre_regular_insertion): Likewise.
(do_pre_partial_partial_insertion): Likewise.
2018-03-08 Martin Liska <>
PR gcov-profile/84735
* doc/gcov.texi: Document usage of profile files.
* gcov-io.h: Document changes in the format.
2018-03-08 Alexandre Oliva <>
PR debug/84404
PR debug/84408
* dwarf2out.c (struct dw_line_info_table): Update comments for
view == -1.
(RESETTING_VIEW_P): Check for -1 too.
(ZERO_VIEW_P): Likewise.
(new_line_info_table): Force-reset next view.
(dwarf2out_begin_function): Likewise.
(dwarf2out_source_line): Simplify zero_view_p initialization.
view directly. Omit view when omitting .loc at line 0.
2018-03-08 Jakub Jelinek <>
PR tree-optimization/84740
* tree-switch-conversion.c (process_switch): Call build_constructors
only if info.phi_count is non-zero.
PR tree-optimization/84739
* tree-tailcall.c (find_tail_calls): Check call arguments against
DECL_ARGUMENTS (current_function_decl) rather than
DECL_ARGUMENTS (func) when checking for tail recursion.
2018-03-07 Jakub Jelinek <>
* doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
Volker Reichelt's entry and add entries for people that perform
GCC fuzzy testing and report numerous bugs.
2018-03-07 Segher Boessenkool <>
PR target/82411
* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
readonly data in sdata, if that is disabled.
* config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
* doc/invoke.texi (RS/6000 and PowerPC Options): Document
-mreadonly-in-sdata option.
2018-03-07 Martin Sebor <>
PR tree-optimization/84468
* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
basic block when looking for nul assignment.
2018-03-07 Eric Botcazou <>
PR target/84277
* except.h (output_function_exception_table): Adjust prototype.
* except.c (output_function_exception_table): Remove FNNAME parameter
and add SECTION parameter. Ouput one part of the table at a time.
* final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
the first part of the exception table and emit unwind directives.
* config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
(i386_pe_seh_cold_init): Likewise.
* config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
* config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
(ix86_output_call_insn): Emit a nop in one more case for SEH.
* config/i386/winnt.c: Include except.h.
(struct seh_frame_state): Add reg_offset, after_prologue and
in_cold_section fields.
(i386_pe_seh_end_prologue): Set seh->after_prologue.
(i386_pe_seh_cold_init): New function.
(i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
to seh->in_cold_section.
(seh_emit_push): Record the offset of the push.
(seh_emit_save): Record the offet of the save.
(i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
Test seh->after_prologue to disregard the epilogue.
(i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
(i386_pe_end_cold_function): New function.
2018-03-07 Jakub Jelinek <>
PR fortran/84565
* config/aarch64/ (aarch64_simd_reg_or_zero): Use
aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
PR c++/84704