* config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
[official-gcc.git] / gcc / ChangeLog
blob8c373490271073193d740239407d7aa8fb13f4a8
1 2018-05-17  Jakub Jelinek  <jakub@redhat.com>
3         * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
4         _mm512_setzero): New intrinsics.
6 2018-05-17  James Greenhalgh  <james.greenhalgh@arm.com>
7             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
10         code generation for cases where splatting a value is not useful.
11         * simplify-rtx.c (simplify_ternary_operation): Simplify
12         vec_merge across a vec_duplicate and a paradoxical subreg forming a vector
13         mode to a vec_concat.
15 2018-05-17  Olga Makhotina  <olga.makhotina@intel.com>
17         * config.gcc: Support "goldmont-plus".
18         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
19         "goldmont-plus".
20         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
21         PROCESSOR_GOLDMONT_PLUS.
22         * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
23         (processor_target_table): Add "goldmont-plus".
24         (PTA_GOLDMONT_PLUS): Define.
25         (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
26         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
27         (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
28         (fold_builtin_cpu): Add "goldmont-plus".
29         (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
30         (ix86_option_override_internal): Add "goldmont-plus".
31         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
32         (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
33         * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
34         * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
36 2018-05-17  Richard Biener  <rguenther@suse.de>
38         PR tree-optimization/85757
39         * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
40         remove defs that only feed that PHI from further processing.
42 2018-05-16  Jim Wilson  <jimw@sifive.com>
44         * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
45         asterisk to name.
46         (<optab>di3_mask, <optab>di3_mask_1): Likewise.
48 2018-05-16  Mark Wielaard  <mark@klomp.org>
50         * dwarf2out.c (count_index_strings): New function.
51         (output_indirect_strings): Call count_index_strings and generate
52         header for dwarf_version >= 5.
54 2018-05-16  Mark Wielaard  <mark@klomp.org>
56         * dwarf2out.c (dwarf_FORM): New function.
57         (set_indirect_string): Use dwarf_FORM.
58         (reset_indirect_string): Likewise.
59         (size_of_die): Likewise.
60         (value_format): Likewise.
61         (output_die): Likewise.
62         (add_skeleton_AT_string): Likewise.
63         (output_macinfo_op): Likewise.
64         (index_string): Likewise.
65         (output_index_string_offset): Likewise.
66         (output_index_string): Likewise.
67         (count_index_strings): Likewise.
69 2018-05-16  Carl Love  <cel@us.ibm.com>
71         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
72         dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
74 2018-05-16  Martin Jambor  <mjambor@suse.cz>
76         * ipa-prop.c (ipa_free_all_edge_args): Remove.
77         * ipa-prop.h (ipa_free_all_edge_args): Likewise.
79 2018-05-16  Wilco Dijkstra  <wdijkstr@arm.com>
81         * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
82         (fnma<mode>4): Likewise.
83         (fms<mode>4): Likewise.
84         (fnms<mode>4): Likewise.
85         (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
86         (aarch64_fnma<mode>4): Likewise.
87         (aarch64_fms<mode>4): Likewise.
88         (aarch64_fnms<mode>4): Likewise.
89         (aarch64_fnmadd<mode>4): Likewise.
91 2018-05-16  Jason Merrill  <jason@redhat.com>
93         * tree.c (warn_deprecated_use): Return bool.  Simplify logic.
95 2018-05-16  Richard Biener  <rguenther@suse.de>
97         * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
98         (dump_stmt_cost): Declare.
99         (add_stmt_cost): Dump cost we add.
100         (add_stmt_costs): New function.
101         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
102         No longer exported.
103         (vect_analyze_stmt): Adjust prototype.
104         (vectorizable_condition): Likewise.
105         (vectorizable_live_operation): Likewise.
106         (vectorizable_reduction): Likewise.
107         (vectorizable_induction): Likewise.
108         * tree-vect-loop.c (vect_analyze_loop_operations): Create local
109         cost vector to pass to vectorizable_ and record afterwards.
110         (vect_model_reduction_cost): Take cost vector argument and adjust.
111         (vect_model_induction_cost): Likewise.
112         (vectorizable_reduction): Likewise.
113         (vectorizable_induction): Likewise.
114         (vectorizable_live_operation): Likewise.
115         * tree-vect-slp.c (vect_create_new_slp_node): Initialize
116         SLP_TREE_NUMBER_OF_VEC_STMTS.
117         (vect_analyze_slp_cost_1): Remove.
118         (vect_analyze_slp_cost): Likewise.
119         (vect_slp_analyze_node_operations): Take visited args and
120         a target cost vector.  Avoid processing already visited stmt sets.
121         (vect_slp_analyze_operations): Use a local cost vector to gather
122         costs and register those of non-discarded instances.
123         (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
124         (vect_schedule_slp_instance): Remove copying of
125         SLP_TREE_NUMBER_OF_VEC_STMTS.  Instead assert that it is not
126         zero.
127         * tree-vect-stmts.c (record_stmt_cost): Remove path directly
128         adding cost.  Record cost entry location.
129         (vect_prologue_cost_for_slp_op): Function to compute cost of
130         a constant or invariant generated for SLP vect in the prologue,
131         split out from vect_analyze_slp_cost_1.
132         (vect_model_simple_cost): Make static.  Adjust for SLP costing.
133         (vect_model_promotion_demotion_cost): Likewise.
134         (vect_model_store_cost): Likewise, make static.
135         (vect_model_load_cost): Likewise.
136         (vectorizable_bswap): Add cost vector arg and adjust.
137         (vectorizable_call): Likewise.
138         (vectorizable_simd_clone_call): Likewise.
139         (vectorizable_conversion): Likewise.
140         (vectorizable_assignment): Likewise.
141         (vectorizable_shift): Likewise.
142         (vectorizable_operation): Likewise.
143         (vectorizable_store): Likewise.
144         (vectorizable_load): Likewise.
145         (vectorizable_condition): Likewise.
146         (vectorizable_comparison): Likewise.
147         (can_vectorize_live_stmts): Likewise.
148         (vect_analyze_stmt): Likewise.
149         (vect_transform_stmt): Adjust calls to vectorizable_*.
150         * tree-vectorizer.c: Include gimple-pretty-print.h.
151         (dump_stmt_cost): New function.
153 2018-05-16  Richard Biener  <rguenther@suse.de>
155         * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
156         * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
157         * tree-ssa-dse.c: Include tree-ssa-loop.h.
158         (check_name): New callback.
159         (dse_classify_store): Track cycles via a visited bitmap of PHI
160         defs and simplify handling of in-loop and across loop dead stores
161         and properly fail for loop-variant refs.  Handle byte-tracking with
162         multiple defs.  Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
163         limiting the walk.
165 2018-05-16  Richard Sandiford  <richard.sandiford@linaro.org>
167         * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
168         (vect_get_mask_type_for_stmt): Likewise.
169         * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
170         split out from...
171         (vect_build_slp_tree_1): ...here.  Use vect_get_vector_types_for_stmt
172         to determine the statement's vector type and the vector type that
173         should be used for calculating nunits.  Deal with cases in which
174         the type has to be deferred.
175         (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
176         and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
177         * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
178         (vect_determine_vf_for_stmt): New functions, split out from...
179         (vect_determine_vectorization_factor): ...here.
180         * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
181         (vect_get_mask_type_for_stmt): New functions, split out from
182         vect_determine_vectorization_factor.
184 2018-05-16  Richard Biener  <rguenther@suse.de>
186         * tree-cfg.c (verify_gimple_assign_ternary): Properly
187         verify the [VEC_]COND_EXPR embedded comparison.
189 2018-05-15  Martin Sebor  <msebor@redhat.com>
191         PR tree-optimization/85753
192         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
193         RECORD_TYPE in addition to ARRAY_TYPE.
195 2018-05-15  Martin Sebor  <msebor@redhat.com>
197         PR middle-end/85643
198         * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
200 2018-05-15  Richard Biener  <rguenther@suse.de>
202         * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
203         add by_clobber_p one.  Change algorithm to collect all defs
204         representing uses we need to walk and try reducing them to
205         a single one before failing.
206         (dse_dom_walker::dse_optimize_stmt): Adjust.
208 2018-05-13  Mark Wielaard  <mark@klomp.org>
210         * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
211         (size_of_loc_descr): Likewise.
212         (output_loc_operands): Likewise.
213         (output_loc_operands_raw): Likewise.
214         (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
215         (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
216         (hash_loc_operands): Likewise.
217         (compare_loc_operands): Likewise.
219 2018-05-14  Mark Wielaard  <mark@klomp.org>
221         * dwarf2out.c (count_index_addrs): New function.
222         (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
224 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
226         PR tree-optimization/83648
227         * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
228         return value as malloc candidate.
230 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
232         PR ipa/85734
233         * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param
234         as true in call to suggest_attribute.
236 2018-05-14  Segher Boessenkool  <segher@kernel.crashing.org>
238         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
239         -mreadonly-in-sdata.
241 2018-05-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
243         * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
244         New pattern.
245         (aarch64_crypto_aesd_fused): Likewise.
247 2018-05-14  Wilco Dijkstra  <wdijkstr@arm.com>
249         * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
250         (movsi_aarch64): Likewise.
251         (load_pairsi): Likewise.
252         (load_pairdi): Likewise.
253         (store_pairsi): Likewise.
254         (store_pairdi): Likewise.
255         (load_pairsf): Likewise.
256         (load_pairdf): Likewise.
257         (store_pairsf): Likewise.
258         (store_pairdf): Likewise.
259         (zero_extend): Likewise.
260         (trunc): Swap alternatives.
261         (fcvt_target): Add '?' to prefer w over r.
263 2018-05-14  Jakub Jelinek  <jakub@redhat.com>
265         PR target/85756
266         * config/i386/i386.md: Disallow non-commutative arithmetics in
267         last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
268         optimization.  Use COMMUTATIVE_ARITH_P test rather than != MINUS
269         in the peephole2 before it.
271 2018-05-14  Sebastian Peryt  <sebastian.peryt@intel.com>
273         * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
274         OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
275         (ix86_handle_option): Handle -mcldemote.
276         * config.gcc: New header.
277         * config/i386/cldemoteintrin.h: New file.
278         * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
279         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
280         -mcldemote.
281         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
282         OPTION_MASK_ISA_CLDEMOTE.
283         * config/i386/i386.c (ix86_target_string): Add -mcldemote.
284         (ix86_valid_target_attribute_inner_p): Ditto.
285         (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
286         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
287         (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
288         * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
289         * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
290         (cldemote): New.
291         * config/i386/i386.opt: Add -mcldemote.
292         * config/i386/x86intrin.h: New header.
293         * doc/invoke.texi: Add -mcldemote.
295 2018-05-14  Richard Biener  <rguenther@suse.de>
297         * doc/match-and-simplify.texi: Adjust :s documentation.
299 2018-05-14  Alexander Monakov  <amonakov@ispras.ru>
301         * sort.cc (REORDER_23): Pass the type for the temporaries instead of
302         intended memcpy size.
303         (REORDER_45): Likewise.
305 2018-05-13  Alexander Monakov  <amonakov@ispras.ru>
307         * sort.cc: New file.
308         * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
309         * vec.c (qsort_chk): Use gcc_qsort.
310         * Makefile.in (OBJS-libcommon): Add sort.o.
311         (build/sort.o): New target.  Use it...
312         (BUILD_RTL): ... here, and...
313         (build/gencfn-macros): ... here, and...
314         (build/genmatch): ... here.
316 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
317             Chung-Ju Wu  <jasonwucj@gmail.com>
319         * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
320         * config/nds32/nds32-graywolf.md: New file.
321         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
322         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
323         pipeline.
324         * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
325         * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
326         * config/nds32/nds32.md (pipeline_model): Add graywolf.
327         * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
328         * config/nds32/pipelines.md: Include n15 settings.
330 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
331             Chung-Ju Wu  <jasonwucj@gmail.com>
333         * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
334         * config/nds32/nds32-n13.md: New file.
335         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
336         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
337         pipeline.
338         * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
339         * config/nds32/nds32.md (pipeline_model): Add n13.
340         * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
341         * config/nds32/pipelines.md: Include n13 settings.
343 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
344             Chung-Ju Wu  <jasonwucj@gmail.com>
346         * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
347         * config/nds32/nds32-n10.md: New file.
348         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
349         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
350         pipeline.
351         * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
352         * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
353         * config/nds32/nds32.md (pipeline_model): Add n10.
354         * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
355         * config/nds32/pipelines.md: Include n10 settings.
357 2018-05-13  Monk Chiang  <sh.chiang04@gmail.com>
358             Kito Cheng  <kito.cheng@gmail.com>
359             Chung-Ju Wu  <jasonwucj@gmail.com>
361         * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
362         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
363         Add enum values for DSP extension instructions.
364         * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
365         New constraints.
366         * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
367         sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
368         New code iterators.
369         (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
370         * config/nds32/nds32-dspext.md: New file for DSP implementation.
371         * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
372         * config/nds32/nds32-intrinsic.md: Likewise.
373         * config/nds32/nds32_intrinsic.h: Likewise.
374         * config/nds32/nds32-md-auxiliary.c: Likewise.
375         * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
376         * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
377         (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
378         (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
379         * config/nds32/nds32-protos.h: New declarations for DSP extension.
380         * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
381         TYPE_DMAC in switch statement.
382         * config/nds32/nds32.c: New checking and implementation for DSP
383         extension instructions.
384         * config/nds32/nds32.h: Likewise.
385         * config/nds32/nds32.md: Likewise.
386         * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
387         * config/nds32/predicates.md: Implement new predicates for DSP
388         extension.
390 2018-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
392         * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
393         Reformat alternatives and attributes so it is easier to identify
394         which constraints/attributes go with which instruction.
395         (mov<mode>_hardfloat32, FMOVE64): Likewise.
396         (mov<mode>_softfloat32, FMOVE64): Likewise.
397         (mov<mode>_hardfloat64, FMOVE64): Likewise.
398         (mov<mode>_softfloat64, FMOVE64): Likewise.
400 2018-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
402         * doc/extend.texi (PowerPC Built-in Functions): Rename this
403         subsection.
404         (Basic PowerPC Built-in Functions): The new name of the
405         subsection previously known as "PowerPC Built-in Functions".
406         (Basic PowerPC Built-in Functions Available on all Configurations):
407         New subsubsection.
408         (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
409         (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
410         (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
411         (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
413 2018-05-11  Martin Jambor  <mjambor@suse.cz>
415         PR ipa/85655
416         * ipa-cp.c (intersect_with_plats): Check that the lattice contains
417         single const.
419 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
421         PR target/85733
422         * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
424 2018-05-11  Sebastian Peryt  <sebastian.peryt@intel.com>
426         * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
427         OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
428         (ix86_handle_option): Handle -mwaitpkg.
429         * config.gcc: New header.
430         * config/i386/cpuid.h (bit_WAITPKG): New bit.
431         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
432         * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
433         function type.
434         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
435         OPTION_MASK_ISA_WAITPKG.
436         * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
437         (ix86_option_override_internal): Add PTA_WAITPKG.
438         (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
439         (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
440         IX86_BUILTIN_TPAUSE.
441         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
442         __builtin_ia32_umwait and __builtin_ia32_tpause.
443         (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
444         IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
445         * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
446         * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
447         UNSPECV_TPAUSE): New.
448         (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
449         * config/i386/i386.opt: Add -mwaitpkg.
450         * config/i386/waitpkgintrin.h: New file.
451         * config/i386/x86intrin.h: New header.
452         * doc/invoke.texi: Add -mwaitpkg.
454 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
456         PR target/85606
457         * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
458         equivalent.
459         (cortex-m0): Use armv6s-m isa.
460         (cortex-m0plus): Likewise.
461         (cortex-m1): Likewise.
462         (cortex-m0.small-multiply): Likewise.
463         (cortex-m0plus.small-multiply): Likewise.
464         (cortex-m1.small-multiply): Likewise.
466 2018-05-11  Allan Sandfeld Jensen  <allan.jensen@qt.io>
467             Jakub Jelinek  <jakub@redhat.com>
469         PR tree-optimization/85692
470         * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
471         source permute as well.
473 2018-05-11  Martin Liska  <mliska@suse.cz>
475         PR sanitizer/85556
476         * doc/extend.texi: Document LLVM style format for no_sanitize
477         attribute.
479 2018-05-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
481         * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
482         mode_supports_vsx_dform_quad to mode_supports_dq_form.
483         (mode_supports_vsx_dform_quad): Likewise.
484         (mode_supports_vmx_dform): Move these functions to be next to the
485         other mode_supports functions.
486         (mode_supports_dq_form): Likewise.
487         (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
488         mode_supports_dq_form.
489         (reg_offset_addressing_ok_p): Likewise.
490         (offsettable_ok_by_alignment): Likewise.
491         (rs6000_legitimate_offset_address_p): Likewise.
492         (legitimate_lo_sum_address_p): Likewise.
493         (rs6000_legitimize_address): Likewise.
494         (rs6000_legitimize_reload_address): Likewise.
495         (rs6000_secondary_reload_inner): Likewise.
496         (rs6000_preferred_reload_class): Likewise.
497         (rs6000_output_move_128bit): Likewise.
499 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
501         * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
502         Generate SImode target register for null target.
503         <case IX86_BUILTIN_XGETBV>: Ditto.
504         <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
505         * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
507 2018-05-10  Carl Love  <cel@us.ibm.com>
509         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
510         dcbtt and dcbtstt if operands[2] is 0.
512 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
514         PR target/85693
515         * config/i386/sse.md (usadv64qi): New expander.
517 2018-05-10  Segher Boessenkool  <segher@kernel.crashing.org>
519         * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
520         altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
521         -maltivec=be support.
522         (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
523         vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
524         vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
525         vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
526         vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
527         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
528         altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
529         altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
530         altivec_vsumsws): Adjust.
531         (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
532         *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
533         altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
534         support.
535         (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
536         altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
537         altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
538         (altivec_lve<VI_char>x): Delete expand.
539         (*altivec_lve<VI_char>x_internal): Rename to...
540         (altivec_lve<VI_char>x): ... this.
541         (altivec_lvxl_<mode>): Delete expand.
542         (*altivec_lvxl_<mode>_internal): Rename to ...
543         (altivec_lvxl_<mode>): ... this.
544         (altivec_stvxl_<mode>): Delete expand.
545         (*altivec_stvxl_<mode>_internal): Rename to ...
546         (altivec_stvxl_<mode>): ... this.
547         (altivec_stve<VI_char>x): Delete expand.
548         (*altivec_stve<VI_char>x_internal): Rename to ...
549         (altivec_stve<VI_char>x): ... this.
550         (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
551         doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
552         reduc_plus_scal_<mode>): Adjust.
553         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
554         comment.
555         (rs6000_cpu_cpp_builtins): Adjust.
556         (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
557         * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
558         altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
559         * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
560         -maltivec=be support.
561         (rs6000_split_vec_extract_var): Adjust.
562         (rs6000_split_v4si_init): Adjust.
563         (swap_selector_for_mode): Delete.
564         (altivec_expand_lvx_be, altivec_expand_stvx_be,
565         altivec_expand_stvex_be): Delete.
566         (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
567         -maltivec=be support.
568         (rs6000_gimple_fold_builtin): Ditto.
569         (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
570         Adjust.
571         * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
572         (TARGET_DIRECT_MOVE_64BIT): Adjust.
573         * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
574         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
575         * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
576         unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
577         vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
578         *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
579         *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
580         *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
581         anonymous split): Adjust.
582         (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
583         (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
585 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
587         * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
588         when --with-gxx-include-dir is also specified.
589         * configure: Regenerate.
591 2018-05-09  Jim Wilson  <jimw@sifive.com>
593         PR target/84797
594         * config.gcc (riscv*-*-*): Handle --with-multilib-list.
595         * config/riscv/t-withmultilib: New.
596         * config/riscv/withmultilib.h: New.
597         * doc/install.texi: Document RISC-V --with-multilib-list support.
599 2018-05-09  Richard Biener  <rguenther@suse.de>
601         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
602         vector.
603         (vect_bb_vectorization_profitable_p): Adjust.  Compute
604         actual scalar cost using the cost vector and the add_stmt_cost
605         machinery.
607 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
609         PR rtl-optimization/85645
610         * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
611         in the REG_CFA_REGISTER note for LR, don't leave it empty.
613 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
615         PR rtl-optimization/85645
616         * shrink-wrap.c (spread_components): Return a boolean saying if
617         anything was changed.
618         (try_shrink_wrapping_separate): Iterate spread_components until
619         nothing changes anymore.
621 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
623         PR rtl-optimization/85645
624         * regrename.c (build_def_use): Also kill the chains that include the
625         destination of a REG_CFA_REGISTER note.
627 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
629         PR rtl-optimization/85645
630         *  regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
631         insn that has a REG_CFA_REGISTER note.
633 2018-05-09  Richard Sandiford  <richard.sandiford@linaro.org>
635         * cfgexpand.c (expand_clobber): New function.
636         (expand_gimple_stmt_1): Use it.
637         * tree-vect-stmts.c (vect_clobber_variable): New function,
638         split out from...
639         (vectorizable_simd_clone_call): ...here.
640         (vectorizable_store): Emit a clobber either side of an
641         IFN_STORE_LANES sequence.
642         (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
644 2018-05-09  Tom de Vries  <tom@codesourcery.com>
646         PR target/85626
647         * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
648         (define_insn "trap_if_false"): Add exit after trap.
650 2018-05-09  Eric Botcazou  <ebotcazou@adacore.com>
652         PR rtl-optimization/85638
653         * bb-reorder.c: Include common/common-target.h.
654         (create_forwarder_block): New function extracted from...
655         (fix_up_crossing_landing_pad): ...here.  Rename into...
656         (dw2_fix_up_crossing_landing_pad): ...this.
657         (sjlj_fix_up_crossing_landing_pad): New function.
658         (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
659         call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
660         from both partitions and exit the loop after one iteration.
662 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
664         Revert:
665         * doc/extend.texi (PowerPC Built-in Functions): Rename this
666         subsection.
667         (Basic PowerPC Built-in Functions): The new name of the
668         subsection previously known as "PowerPC Built-in Functions".
669         (Basic PowerPC Built-in Functions Available on all Configurations):
670         New subsubsection.
671         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
672         subsubsection.
673         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
674         subsubsection.
675         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
676         subsubsection.
677         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
678         subsubsection.
680 2018-05-08  Jim Wilson  <jimw@sifive.com>
682         * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
683         (LD_EMUL_SUFFIX): New.
684         (LINK_SPEC): Use it.
686 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
688         * doc/extend.texi (PowerPC Built-in Functions): Rename this
689         subsection.
690         (Basic PowerPC Built-in Functions): The new name of the
691         subsection previously known as "PowerPC Built-in Functions".
692         (Basic PowerPC Built-in Functions Available on all Configurations):
693         New subsubsection.
694         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
695         subsubsection.
696         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
697         subsubsection.
698         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
699         subsubsection.
700         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
701         subsubsection.
703 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
705         PR target/85683
706         * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
707         after cmpelim optimization.
709 2018-05-08  Olga Makhotina  <olga.makhotina@intel.com>
711         * config.gcc: Support "goldmont".
712         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
713         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
714         PROCESSOR_GOLDMONT.
715         * config/i386/i386.c (m_GOLDMONT): Define.
716         (processor_target_table): Add "goldmont".
717         (PTA_GOLDMONT): Define.
718         (ix86_lea_outperforms): Add TARGET_GOLDMONT.
719         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
720         (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
721         (fold_builtin_cpu): Add "goldmont".
722         (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
723         (ix86_option_override_internal): Add "goldmont".
724         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
725         (processor_type): Add PROCESSOR_GOLDMONT.
726         * config/i386/i386.md: Add CPU "glm".
727         * config/i386/glm.md: New file.
728         * config/i386/x86-tune.def: Add m_GOLDMONT.
729         * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
731 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
733         PR target/85572
734         * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
735         E_V4DImode.
736         * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
737         VI1248_AVX512VL_AVX512BW.  Handle V2DImode and V4DImode if not
738         TARGET_AVX512VL using ix86_expand_sse2_abs.  Formatting fixes.
740         PR target/85317
741         * config/i386/i386.c (ix86_fold_builtin): Handle
742         IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
744         PR target/85480
745         * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
746         (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
748 2018-05-08  Richard Earnshaw  <rearnsha@arm.com>
750         PR target/85658
751         * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
752         (check_arch): Likewise.
753         (check_fpu): Return the result rather than printing it.
754         (end arch): Fix operator precedence.
755         (end cpu): Likewise.
756         (END): Print the result from check_fpu.
758 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
759             Alan Hayward  <alan.hayward@arm.com>
760             David Sherwood  <david.sherwood@arm.com>
762         * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
763         (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
764         (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
765         (*fcmuo<mode>_and): New patterns.
767 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
769         * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
770         (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
771         (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
772         (cmp_op, sve_imm_con): New code attributes.
773         (SVE_COND_INT_CMP, imm_con): Delete.
774         (cmp_op): Remove above unspecs from int attribute.
775         * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
776         to...
777         (*cmp<cmp_op><mode>): ...this.  Use UNSPEC_MERGE_PTRUE instead of
778         comparison-specific unspecs.
779         (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
780         (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
781         (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
782         (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
783         (*vec_fcm<cmp_op><mode>): Rename to...
784         (*fcm<cmp_op><mode>): ...this and adjust likewise.
785         (*vec_fcmuo<mode>): Rename to...
786         (*fcmuo<mode>): ...this and adjust likewise.
787         (*pred_fcm<cmp_op><mode>): New pattern.
788         * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
789         (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
790         functions.
791         (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
792         and UNORDERED.
793         (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
794         (aarch64_emit_sve_predicated_cond): New function.
795         (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
796         (aarch64_emit_unspec_cond_or): Replace with...
797         (aarch64_emit_sve_or_conds): ...this new function.  Use
798         aarch64_emit_sve_ptrue_op for the individual comparisons and
799         aarch64_emit_binop to OR them together.
800         (aarch64_emit_inverted_unspec_cond): Replace with...
801         (aarch64_emit_sve_inverted_cond): ...this new function.  Use
802         aarch64_emit_sve_ptrue_op for the comparison and
803         aarch64_emit_unop to invert the result.
804         (aarch64_expand_sve_vec_cmp_float): Update after the above
805         changes.  Use aarch64_emit_sve_ptrue_op for native comparisons.
807 2018-05-07  Nathan Sidwell  <nathan@acm.org>
809         * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
810         * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
811         (Backwards Compatibility): Likewise.
813 2018-05-07  Luis Machado  <luis.machado@linaro.org>
815         PR bootstrap/85681
816         Revert:
817         2018-05-07  Luis Machado  <luis.machado@linaro.org>
819         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
820         <prefetch_dynamic_strides>: New const bool field.
821         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
822         prefetch_dynamic_strides.
823         (exynosm1_prefetch_tune): Likewise.
824         (thunderxt88_prefetch_tune): Likewise.
825         (thunderx_prefetch_tune): Likewise.
826         (thunderx2t99_prefetch_tune): Likewise.
827         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
828         (aarch64_override_options_internal): Update to set
829         PARAM_PREFETCH_DYNAMIC_STRIDES.
830         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
831         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
832         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
833         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
834         prefetch-dynamic-strides setting.
836         2018-05-07  Luis Machado  <luis.machado@linaro.org>
838         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
839         <minimum_stride>: New const int field.
840         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
841         minimum_stride field.
842         (exynosm1_prefetch_tune): Likewise.
843         (thunderxt88_prefetch_tune): Likewise.
844         (thunderx_prefetch_tune): Likewise.
845         (thunderx2t99_prefetch_tune): Likewise.
846         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
847         (aarch64_override_options_internal): Update to set
848         PARAM_PREFETCH_MINIMUM_STRIDE.
849         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
850         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
851         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
852         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
853         stride is constant and is below the minimum stride threshold.
855 2018-05-07  Luis Machado  <luis.machado@linaro.org>
857         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
858         to 512.
860 2018-05-07  Luis Machado  <luis.machado@linaro.org>
862         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
863         <prefetch_dynamic_strides>: New const bool field.
864         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
865         prefetch_dynamic_strides.
866         (exynosm1_prefetch_tune): Likewise.
867         (thunderxt88_prefetch_tune): Likewise.
868         (thunderx_prefetch_tune): Likewise.
869         (thunderx2t99_prefetch_tune): Likewise.
870         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
871         (aarch64_override_options_internal): Update to set
872         PARAM_PREFETCH_DYNAMIC_STRIDES.
873         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
874         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
875         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
876         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
877         prefetch-dynamic-strides setting.
879 2018-05-07  Luis Machado  <luis.machado@linaro.org>
881         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
882         <minimum_stride>: New const int field.
883         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
884         minimum_stride field.
885         (exynosm1_prefetch_tune): Likewise.
886         (thunderxt88_prefetch_tune): Likewise.
887         (thunderx_prefetch_tune): Likewise.
888         (thunderx2t99_prefetch_tune): Likewise.
889         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
890         (aarch64_override_options_internal): Update to set
891         PARAM_PREFETCH_MINIMUM_STRIDE.
892         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
893         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
894         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
895         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
896         stride is constant and is below the minimum stride threshold.
898 2018-05-06  Jakub Jelinek  <jakub@redhat.com>
900         PR c++/85659
901         * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
902         the type is addressable.  Don't force op into register if it has
903         BLKmode.
905 2018-05-05  Roland McGrath  <mcgrathr@google.com>
907         PR other/77609
908         * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
909         any section for which we don't know a specific type it should have,
910         regardless of name.  Previously this was done only for the exact
911         names ".init_array", ".fini_array", and ".preinit_array".
912         (default_elf_asm_named_section): Add comment about
913         relationship with default_section_type_flags and SECTION_NOTYPE.
914         (get_section): Don't consider it a type conflict if one side has
915         SECTION_NOTYPE and the other doesn't, as long as neither has the
916         SECTION_BSS et al used in the default_section_type_flags logic.
918 2018-05-05  Tom de Vries  <tom@codesourcery.com>
920         PR target/85653
921         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
922         (workaround_barsyncs): New function.
923         (nvptx_reorg): Use workaround_barsyncs.
924         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
925         (define_expand "nvptx_membar_cta"): New define_expand.
926         (define_insn "*nvptx_membar_cta"): New insn.
928 2018-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
930         * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
931         To improve optimization opportunities.
932         * builtin-types.def: The new needed builtin types for the above.
934 2018-05-04  Richard Biener  <rguenther@suse.de>
936         * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
937         * gimple-ssa-store-merging.c
938         (imm_store_chain_info::output_merged_store): Remove redundant create,
939         release split_store vector contents on failure.
940         * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
941         scalar stmt vector on cache hit.
943 2018-05-04  Segher Boessenkool  <segher@kernel.crashing.org>
945         * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
946         Xilinx FP support.
947         * config.gcc (powerpc-xilinx-eabi*): Remove.
948         * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
949         support.
950         (fusion_addis_mem_combo_load): Ditto.
951         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
952         FP support.
953         (rs6000_cpu_cpp_builtins): Ditto.
954         * config/rs6000/rs6000-linux.c
955         (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
956         * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
957         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
958         support.
959         (rs6000_setup_reg_addr_masks): Ditto.
960         (rs6000_init_hard_regno_mode_ok): Ditto.
961         (rs6000_option_override_internal): Ditto.
962         (legitimate_lo_sum_address_p): Ditto.
963         (rs6000_legitimize_address): Ditto.
964         (rs6000_legitimize_reload_address): Ditto.
965         (rs6000_legitimate_address_p): Ditto.
966         (abi_v4_pass_in_fpr): Ditto.
967         (setup_incoming_varargs): Ditto.
968         (rs6000_gimplify_va_arg): Ditto.
969         (rs6000_split_multireg_move): Ditto.
970         (rs6000_savres_strategy): Ditto.
971         (rs6000_emit_prologue_components): Ditto.
972         (rs6000_emit_epilogue_components): Ditto.
973         (rs6000_emit_prologue): Ditto.
974         (rs6000_emit_epilogue): Ditto.
975         (rs6000_elf_file_end): Ditto.
976         (rs6000_function_value): Ditto.
977         (rs6000_libcall_value): Ditto.
978         * config/rs6000/rs6000.h: Ditto.
979         (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
980         (TARGET_MINMAX): ... this.  New.
981         (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
982         * config/rs6000/rs6000.md: Remove Xilinx FP support.
983         (*movsi_internal1_single): Delete.
984         * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
985         mfpu=, mxilinx-fpu): Delete.
986         * config/rs6000/singlefp.h: Delete.
987         * config/rs6000/sysv4.h: Remove Xilinx FP support.
988         * config/rs6000/t-rs6000: Ditto.
989         * config/rs6000/t-xilinx: Delete.
990         * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
991         * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
992         (VStype_simple): Delete.
993         (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
994         * config/rs6000/xfpu.h: Delete.
995         * config/rs6000/xfpu.md: Delete.
996         * config/rs6000/xilinx.h: Delete.
997         * config/rs6000/xilinx.opt: Delete.
998         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
999         -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
1001 2018-05-04  Tom de Vries  <tom@codesourcery.com>
1003         PR libgomp/85639
1004         * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
1005         if ignore == 0.
1007 2018-05-04  Richard Biener  <rguenther@suse.de>
1009         PR middle-end/85627
1010         * tree-complex.c (update_complex_assignment): We are always in SSA form.
1011         (expand_complex_div_wide): Likewise.
1012         (expand_complex_operations_1): Likewise.
1013         (expand_complex_libcall): Preserve EH info of the original stmt.
1014         (tree_lower_complex): Handle removed blocks.
1015         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
1016         on complex multiplication and division libcall builtins.
1018 2018-05-04  Richard Biener  <rguenther@suse.de>
1020         PR middle-end/85574
1021         * fold-const.c (negate_expr_p): Restrict negation of operand
1022         zero of a division to when we know that can happen without
1023         overflow.
1024         (fold_negate_expr_1): Likewise.
1026 2018-05-04  Jakub Jelinek  <jakub@redhat.com>
1028         PR libstdc++/85466
1029         * real.h (real_nextafter): Declare.
1030         * real.c (real_nextafter): New function.
1031         * fold-const-call.c (fold_const_nextafter): New function.
1032         (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
1033         CASE_CFN_NEXTTOWARD.
1034         (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
1035         even when arg1_mode is different from arg0_mode.
1037 2018-05-03  Nathan Sidwell  <nathan@acm.org>
1039         * doc/extend.texi (Deprecated Features): Remove
1040         -ffriend-injection.
1041         (Backwards Compatibility): Likewise.
1042         * doc/invoke.texi (C++ Language Options): Likewise.
1043         (C++ Dialect Options): Likewise.
1045 2018-05-03  Jakub Jelinek  <jakub@redhat.com>
1047         PR target/85530
1048         * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
1049         _mm512_mask_mullox_epi64): New intrinsics.
1051 2018-05-03  Tom de Vries  <tom@codesourcery.com>
1053         PR testsuite/85106
1054         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1055         dump files): Add offload-tree.
1057 2018-05-03  Richard Biener  <rguenther@suse.de>
1059         PR tree-optimization/85615
1060         * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
1061         to loops not nested in BBs loop father to avoid creating multi-entry
1062         loops.
1064 2018-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1066         PR tree-optimization/70291
1067         * tree-complex.c (expand_complex_libcall): Add type, inplace_p
1068         arguments.  Change return type to tree.  Emit libcall as a new
1069         statement rather than replacing existing one when inplace_p is true.
1070         (expand_complex_multiplication_components): New function.
1071         (expand_complex_multiplication): Expand floating-point complex
1072         multiplication using the above.
1073         (expand_complex_division): Rename inner_type parameter to type.
1074         Update expand_complex_libcall call-site.
1075         (expand_complex_operations_1): Update expand_complex_multiplication
1076         and expand_complex_division call-sites.
1078 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
1080         PR target/85582
1081         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1082         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1083         *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
1084         the highest significant bit of the shift count mask is clear.  In
1085         check whether and[sq]i3 is needed verify that all significant bits
1086         of the shift count other than the highest are set.
1088 2018-05-02  Tom de Vries  <tom@codesourcery.com>
1090         PR libgomp/82428
1091         * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
1092         * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
1093         (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
1094         * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
1095         (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
1096         * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
1097         __builtin_goacc_parlevel_size.
1099 2018-05-02  Richard Biener  <rguenther@suse.de>
1101         PR tree-optimization/85597
1102         * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
1103         do not use split vect_get_vec_defs call but call vect_get_slp_defs
1104         directly.
1106 2018-05-02  Tom de Vries  <tom@codesourcery.com>
1108         PR testsuite/85106
1109         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1110         dump files): Add ltrans-tree.
1112 2018-05-02  Tom de Vries  <tom@codesourcery.com>
1114         PR testsuite/85106
1115         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1116         dump files): Add wpa-ipa.
1118 2018-05-02  Segher Boessenkool  <segher@kernel.crashing.org>
1120         * config.gcc (powerpc*-*-*): Remove paired.h.  Unsupport the
1121         powerpc*-*-linux*paired* target.
1122         * config/rs6000/750cl.h: Delete.
1123         * config/rs6000/paired.h: Delete.
1124         * config/rs6000/paired.md: Delete.
1125         * config/rs6000/predicates.md (easy_vector_constant): Remove paired
1126         float support.
1127         * config/rs6000/rs6000-builtin.def: Remove paired float support.
1128         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
1129         comment.  Remove paired float support.
1130         * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
1131         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
1132         VECTOR_PAIRED.
1133         * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
1134         paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
1135         declarations.
1136         * config/rs6000/rs6000.c: Remove paired float support.
1137         (paired_expand_vector_init, paired_expand_vector_move,
1138         paired_emit_vector_compare, paired_emit_vector_cond_expr,
1139         (paired_expand_lv_builtin, paired_expand_stv_builtin,
1140         paired_expand_builtin, paired_expand_predicate_builtin,
1141         paired_init_builtins): Delete.
1142         * config/rs6000/rs6000.h: Remove paired float support.
1143         * config/rs6000/rs6000.md: Remove paired float support.
1144         (move_from_CR_ov_bit): Delete.
1145         * config/rs6000/rs6000.opt (mpaired): Delete.
1146         * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
1147         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
1149 2018-05-02  Richard Biener  <rguenther@suse.de>
1151         PR middle-end/85567
1152         * gimplify.c (gimplify_save_expr): When in SSA form allow
1153         SAVE_EXPRs to compute to SSA vars.
1155 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
1157         PR target/85582
1158         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1159         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1160         *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
1161         clobber operands[2], instead use a new pseudo.  Formatting fixes.
1163 2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>
1165         PR tree-optimization/85586
1166         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
1167         exit early for statements in the same group if the accesses are
1168         not strided.
1170 2018-05-02  Tom de Vries  <tom@codesourcery.com>
1172         PR lto/85451
1173         * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
1174         error message.
1176 2018-05-01  Marc Glisse  <marc.glisse@inria.fr>
1178         PR tree-optimization/85143
1179         * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
1181 2018-05-01  Tom de Vries  <tom@codesourcery.com>
1183         PR lto/85451
1184         * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
1185         not found" error message.
1187 2018-05-01  Tom de Vries  <tom@codesourcery.com>
1189         PR other/83786
1190         * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
1191         * vec.c (test_ordered_remove_if): New function.
1192         (vec_c_tests): Call test_ordered_remove_if.
1193         * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
1194         * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
1195         * tree-vect-patterns.c (vect_pattern_recog_1): Use
1196         VEC_ORDERED_REMOVE_IF.
1198 2018-05-01  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1200         PR tree-optimization/82665
1201         * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
1202         pointer subtraction where arguments come from a memchr call.
1204 2018-05-01  Jakub Jelinek  <jakub@redhat.com>
1206         * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
1207         --push-state --as-needed and --pop-state instead of --as-needed and
1208         --no-as-needed if ld supports it.
1209         * configure: Regenerated.
1211         PR web/85578
1212         * doc/install.texi2html: Replace _002d with - and _002a with * in
1213         generated html files using sed.
1215 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
1217         PR c++/85523
1218         * gcc-rich-location.c (blank_line_before_p): New function.
1219         (use_new_line): New function.
1220         (gcc_rich_location::add_fixit_insert_formatted): New function.
1221         * gcc-rich-location.h
1222         (gcc_rich_location::add_fixit_insert_formatted): New function.
1224 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
1226         * selftest.c (assert_streq): Rename "expected" and "actual" to
1227         "val1" and "val2".  Extend NULL-handling to cover both inputs
1228         symmetrically, while still requiring both to be non-NULL for a pass.
1229         * selftest.h (assert_streq): Rename "expected" and "actual" to
1230         "val1" and "val2".
1231         (ASSERT_EQ): Likewise.
1232         (ASSERT_EQ_AT): Likewise.
1233         (ASSERT_KNOWN_EQ): Likewise.
1234         (ASSERT_KNOWN_EQ_AT): Likewise.
1235         (ASSERT_NE): Likewise.
1236         (ASSERT_MAYBE_NE): Likewise.
1237         (ASSERT_MAYBE_NE_AT): Likewise.
1238         (ASSERT_STREQ): Likewise.  Clarify that both must be non-NULL for
1239         the assertion to pass.
1240         (ASSERT_STREQ_AT): Likewise.
1242 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
1244         * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
1245         interaction with -pie.
1247 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
1249         * selftest.h: Fix alphabetization of per-source-file selftest
1250         declarations.
1252 2018-04-30  Jason Merrill  <jason@redhat.com>
1254         PR c++/61982 - dead stores to destroyed objects.
1255         * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
1256         of clobber.
1258 2018-04-30  Jason Merrill  <jason@redhat.com>
1260         * tree.c (build_clobber): New.
1261         * tree.h: Declare it.
1262         * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
1264 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
1266         * diagnostic-show-locus.c (layout::layout): Update for
1267         location_get_source_line returning a char_span.
1268         (struct char_span): Move to input.h.
1269         (struct correction): Update for fields in char_span becoming
1270         private.
1271         (struct source_line): Update for location_get_source_line
1272         returning a char_span.
1273         (layout::print_line): Likewise.
1274         * edit-context.c (edited_file::print_content): Likewise.
1275         (edited_file::print_diff_hunk): Likewise.
1276         (edited_file::print_run_of_changed_lines): Likewise.
1277         (edited_file::get_num_lines): Likewise.
1278         (edited_line::edited_line): Likewise.
1279         * final.c (asm_show_source): Likewise.
1280         * input.c (location_get_source_line): Convert return type
1281         from const char * to char_span, losing the final "line_len"
1282         param.
1283         (dump_location_info): Update for the above.
1284         (get_substring_ranges_for_loc): Likewise.  Use a char_span
1285         when handling the literal within the line.
1286         (test_reading_source_line): Update for location_get_source_line
1287         returning a char_span.
1288         * input.h (class char_span): Move here from
1289         diagnostic-show-locus.c, converting from a struct to a class.
1290         Make data members private.
1291         (char_span::operator bool): New.
1292         (char_span::length): New.
1293         (char_span::get_buffer): New.
1294         (char_span::operator[]): New.
1295         (char_span::subspan): Make const.
1296         (char_span::xstrdup): New.
1297         (location_get_source_line): Convert return type from const char *
1298         to char_span, losing the final "line_size" param.
1300 2018-04-30  Jan Hubicka  <jh@suse.cz>
1302         * lto-wrapper.c (ltrans_priorities): New static var.
1303         (cmp_priority): New.
1304         (run_gcc): Read priorities and if doing parallel build order
1305         the Makefile by them.
1307 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
1309         * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
1311 2018-04-30  Richard Biener  <rguenther@suse.de>
1313         * tree-cfg.c (verify_address): Remove base argument, add
1314         flag whether to check TREE_ADDRESSABLE and do that.
1315         (verify_expr): Remove.
1316         (verify_types_in_gimple_reference): Add pieces from verify_expr.
1317         (verify_gimple_assign_single): Likewise.
1318         (verify_gimple_switch): Likewise.
1319         (verify_expr_location_1): Dereference tp once.  Add (disabled)
1320         piece from verify_expr.
1321         (verify_gimple_in_cfg): Do not call verify_expr on all ops.
1323 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
1325         * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
1327 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
1329         * config/arc/arc-protos.h (prepare_extend_operands): Remove.
1330         (small_data_pattern): Likewise.
1331         (arc_rewrite_small_data): Likewise.
1332         * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
1333         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
1334         (get_symbol_alignment): New function.
1335         (legitimate_small_data_address_p): Likewise.
1336         (legitimate_scaled_address): Update, call
1337         legitimate_small_data_address_p.
1338         (output_sdata): New static variable.
1339         (arc_print_operand): Update how we handle small data operands.
1340         (arc_print_operand_address): Likewise.
1341         (arc_legitimate_address_p): Update, use
1342         legitimate_small_data_address_p.
1343         (arc_rewrite_small_data_p): Remove.
1344         (arc_rewrite_small_data_1): Likewise.
1345         (arc_rewrite_small_data): Likewise.
1346         (small_data_pattern): Likewise.
1347         (compact_sda_memory_operand): Update to use
1348         legitimate_small_data_address_p and get_symbol_alignment.
1349         (prepare_move_operands): Don't rewite sdata pattern.
1350         (prepare_extend_operands): Remove.
1351         * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
1352         pattern.
1353         (zero_extendqisi2): Likewise.
1354         (zero_extendhisi2): Likewise.
1355         (extendqihi2): Likewise.
1356         (extendqisi2): Likewise.
1357         (extendhisi2): Likewise.
1358         (addsi3): Likewise.
1359         (subsi3): Likewise.
1360         (andsi3): Likewise.
1361         * config/arc/constraints.md (Usd): Change it to memory constraint.
1363 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
1365         * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
1366         as source of std instructions.
1367         * config/arc/arc.md (movsi_insn): Update pattern predicate to
1368         allow 6-bit constants as source for store instructions.
1369         (movdi_insn): Update instruction pattern to allow 6-bit constants
1370         as source for store instructions.
1372 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
1374         * doc/invoke.texi (-fdebug-types-section): Fix grammar.
1376 2018-04-30  Nathan Sidwell  <nathan@acm.org>
1377             Sandra Loosemore <sandra@codesourcery.com>
1379         * dumpfile.c (dump_open): Allow '-' for stdout.
1380         * doc/invoke.texi (Developer Options): Document dump filename
1381         determination early.  Document stdin/stdout selection.
1383 2018-04-30 Andrew Sadek  <andrew.sadek.se@gmail.com>
1385         Microblaze Target: PIC data text relative
1387         * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
1388         * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
1389         Add declaration.
1390         * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
1391         CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
1392         * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
1393         New addressing mode for data-text relative position indepenedent code.
1394         (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
1395         'ADDRESS_SYMBOLIC_TXT_REL'.
1396         (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
1397         (microblaze_legitimate_pic_operand): Exclude function calls from
1398         pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
1399         (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
1400         addresses cases.
1401         (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
1402         (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
1403         (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
1404         for 'address + offset'.
1405         (microblaze_expand_prologue): Add new function prologue call for
1406         'r20' assignation.
1407         (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
1408         'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
1409         table in case of TARGET_PIC_DATA_TEXT_REL.
1410         (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
1411         * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
1412         Add new macros 'UNSPEC_TEXT',
1413         'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
1414         + exclude function calls from 'UNSPEC_PLT' in case of data text
1415         relative mode.
1416         * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
1417         new target hook for generating address diff vector tables in case of
1418         flag_pic.
1419         * doc/tm.texi : Regenerate.
1420         * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
1421         'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
1422         of addr diff vector generation.
1423         * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
1424         target hook definition.
1425         * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
1426         Add default function for generate_pic_addr_diff_vec -> flag_pic.
1427         * doc/invoke.texi (Add new pic option): Add new microblaze pic
1428         option for data text relative.
1430 2018-04-30  Richard Biener  <rguenther@suse.de>
1432         * tree-chrec.h (evolution_function_is_constant_p): Remove
1433         redundant check.
1434         * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
1436 2018-04-30  Richard Biener  <rguenther@suse.de>
1438         PR bootstrap/85571
1439         * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
1441 2018-04-30  Richard Biener  <rguenther@suse.de>
1443         PR tree-optimization/28364
1444         PR tree-optimization/85275
1445         * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
1446         copying first exit test.
1448 2018-04-28  Mark Wielaard  <mark@klomp.org>
1450         * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
1451         dwarf_version >= 5.
1452         (dwarf_AT): Handle DW_AT_addr_base.
1453         (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
1455 2018-04-28  Uros Bizjak  <ubizjak@gmail.com>
1457         PR target/84431
1458         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
1459         (*ashl<dwi>3_doubleword_mask_1): Ditto.
1460         (*<shift_insn><dwi>3_doubleword_mask): Ditto.
1461         (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
1463 2018-04-28  Richard Biener  <rguenther@suse.de>
1465         * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
1466         (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
1467         to reflect use.  Only add interesting stmts.
1469 2018-04-27  Martin Jambor  <mjambor@suse.cz>
1471         PR ipa/85549
1472         * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
1473         the jump function allows for passing through aggregate values.
1475 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
1477         * input.h (in_system_header_at): Convert from macro to inline
1478         function.
1479         (from_macro_expansion_at): Likewise.
1480         (from_macro_definition_at): Likewise.
1482 2018-04-27  Jeff Law  <law@redhat.com>
1484         * config.gcc: Mark tile* targets as deprecated/obsolete.
1486 2018-04-27  Richard Biener  <rguenther@suse.de>
1488         * config/aarch64/aarch64.c: Simplify ap.__stack advance and
1489         fix for ILP32.
1491 2018-04-27  Richard Biener  <rguenther@suse.de>
1493         * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
1495 2018-04-27  Uros Bizjak  <ubizjak@gmail.com>
1497         * config/i386/i386.md (*movti_internal): Substitute Ye constraint
1498         with Yd constraint. Set "preferred_for_speed" attribute from
1499         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
1500         with Yd constraint.
1501         (*movdi_internal): Ditto.
1502         (movti_interunit splitters): Remove
1503         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
1504         (movdi_interunit splitters): Ditto.
1505         * config/i386/constraints.md (Ye): Remove.
1506         (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
1508 2018-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1510         PR target/85512
1511         * config/aarch64/constraints.md (Usg): Limit to 31.
1512         (Usj): Limit to 63.
1514 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
1516         PR tree-optimization/85529
1517         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
1518         argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
1519         rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
1520         zero extension or masking of the MSB bit.
1521         (optimize_range_tests): Add FIRST_BB argument, pass it through
1522         to optimize_range_tests_var_bound.
1523         (maybe_optimize_range_tests, reassociate_bb): Adjust
1524         optimize_range_tests callers.
1526 2018-04-26  Richard Biener  <rguenther@suse.de>
1527             Jakub Jelinek  <jakub@redhat.com>
1529         * cgraph.h (symbol_table): Just declare debug method here.
1530         * symtab.c (symbol_table::debug): Define.
1532 2018-04-26  Eric Botcazou  <ebotcazou@adacore.com>
1534         * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
1536 2018-04-26  Uros Bizjak  <ubizjak@gmail.com>
1538         * config/i386/i386.md ("isa" attribute): Add x64_sse2.
1539         ("enabled" attribute): Handle x64_sse2 "isa" attribute.
1540         (*movdi_internal): Substitute Yi and Yj constraint with x
1541         and Ym and Yn constraint with y constraint.  Update "isa"
1542         attribute and set "preferred_for_speed" attribute from
1543         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
1544         (*movsi_internal): Ditto.
1545         (*movdf_internal): Ditto.
1546         (*movsf_internal): Ditto.
1547         (*zero_extendsidi2): Ditto.
1548         * config/i386/sse.md (vec_set<mode>_0): Ditto.
1549         (sse2_loadld): Ditto.
1550         (*vec_extract<ssevecmodelower>_0): Ditto.
1551         (*vec_extractv4si_0_zext_sse4): Ditto.
1552         (vec_concatv2di): Ditto.
1553         (*vec_dup<mode>): Ditto.
1554         * config/i386/mmx.md (*mov<mode>_internal): Ditto.
1555         * config/i386/constraints.md (Yi): Remove.
1556         (Yj): Remove.
1557         (Ym): Remove.
1558         (Yn): Remove.
1560 2018-04-26  Nathan Sidwell  <nathan@acm.org>
1562         * dumpfile.c (dump_open): New.
1563         (dump_open_alternate_stream, dump_start, dump_begin): Call it.
1564         (dump_finish): Detect stdio/stderr by value not name.
1566 2018-04-26  Jonathan Wakely  <jwakely@redhat.com>
1568         * doc/invoke.texi (-Wreturn-type): Document default status for C++.
1570 2018-04-26  Tom de Vries  <tom@codesourcery.com>
1572         PR target/84952
1573         * config/nvptx/nvptx.c (verify_neutering_jumps)
1574         (verify_neutering_labels): New function
1575         (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
1577 2018-04-26  Tom de Vries  <tom@codesourcery.com>
1579         PR target/84025
1580         * config/nvptx/nvptx.c (needs_neutering_p): New function.
1581         (nvptx_single): Use needs_neutering_p to skip over insns that do not
1582         need neutering.
1584 2018-04-26  Richard Biener <rguenther@suse.de>
1585             Tom de Vries  <tom@codesourcery.com>
1587         PR lto/85422
1588         * lto-streamer-out.c (output_function): Fixup loops if required to match
1589         discovery done in the reader.
1591 2018-04-26  Richard Biener  <rguenther@suse.de>
1593         PR tree-optimization/85116
1594         * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
1595         have a loop exit from the single latch predecessor.  Remove
1596         case of header with just condition.
1597         (ch_base::copy_headers): Exclude infinite loops from any
1598         processing.
1599         (pass_ch::execute): Record exits.
1601 2018-04-26  Richard Biener  <rguenther@suse.de>
1603         * tree-vect-data-refs.c (vect_get_data_access_cost): Get
1604         prologue cost vector and pass it to vect_get_load_cost.
1605         (vect_get_peeling_costs_all_drs): Likewise.
1606         (vect_peeling_hash_get_lowest_cost): Likewise.
1607         (vect_enhance_data_refs_alignment): Likewise.
1609 2018-04-26  Richard Biener  <rguenther@suse.de>
1611         PR middle-end/85450
1612         * tree-cfg.c (verify_gimple_assign_unary): Restore proper
1613         checking of integer<->pointer conversions.
1614         * omp-expand.c (expand_omp_for_static_nochunk): Avoid
1615         sign-/zero-extending pointer types.
1616         (expand_omp_for_static_chunk): Likewise.
1618 2018-03-22  Hans-Peter Nilsson  <hp@axis.com>
1619             Jean Lee  <xiaoyur347@gmail.com>
1621         * config/mips/mips.c (mips_asan_shadow_offset): New function.
1622         (TARGET_ASAN_SHADOW_OFFSET): Define.
1623         * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
1624         true for -fsanitize=address.
1626 2018-04-25  Mark Wielaard  <mark@klomp.org>
1628         * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
1629         shorter ones.
1631 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
1633         * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
1634         than "alu", remove explicit "memory" and "imm_disp" attributes.
1635         (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
1637         PR middle-end/85414
1638         * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
1639         case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
1640         gen_lowpart_no_emit.
1642 2018-04-25  Sebastian Peryt  <sebastian.peryt@intel.com>
1644         PR target/85473
1645         * config/i386/i386.c (ix86_expand_builtin): Change memory
1646         operand to XI, extend p0 to Pmode.
1647         * config/i386/i386.md: Change unspec volatile and operand
1648         1 mode to XI, change operand 0 mode to P.
1650 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
1652         * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
1653         GET_MODE_MASK before any checking.
1654         (nds32_can_use_bset_p): Likewise.
1655         (nds32_can_use_btgl_p): Likewise.
1657 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
1659         * config/nds32/nds32-doubleword.md: New define_split pattern for
1660         illegal register number.
1662 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
1664         * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
1666 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
1668         * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
1670 2018-04-25  Richard Biener  <rguenther@suse.de>
1672         * lto-streamer.h (LTO_major_version): Bump to 8.
1674 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
1676         * BASE-VER: Set to 9.0.0.
1678 2018-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
1680         * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
1681         in __abskf2 and __powikf2.
1683 2018-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1685         PR target/85512
1686         * config/aarch64/constraints.md (Usg, Usj): New constraints.
1687         * config/aarch64/iterators.md (cmode_simd): New mode attribute.
1688         * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
1689         Use the above on operand 2.  Reindent.
1690         (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
1692 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
1694         PR target/85485
1695         * common/config/i386/i386-common.c (ix86_handle_option): Don't
1696         handle OPT_mcet.
1697         * config/i386/i386.opt (mcet): Removed.
1698         * doc/install.texi: Remove -mcet documentation.
1699         * doc/invoke.texi: Likewise.
1701 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
1703         PR target/85485
1704         * doc/install.texi: Remove -mcet from bootstrap-cet.
1706 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
1708         PR target/85511
1709         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
1710         __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
1711         if TARGET_64BIT.
1713         PR target/85503
1714         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
1715         const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
1716         containing a CONST_VECTOR.
1718 2018-04-24  Cesar Philippidis  <cesar@codesourcery.com>
1720         * doc/install.texi: Update newlib dependency for nvptx.
1722 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
1724         PR target/85508
1725         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
1726         instead of INTVAL when shifting x left.
1728 2018-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
1730         PR tree-optimization/85478
1731         * tree-vect-loop.c (vect_analyze_loop_2): Do not call
1732         vect_grouped_store_supported for single element vectors.
1734 2018-04-24  Richard Biener  <rguenther@suse.de>
1736         PR target/85491
1737         * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
1738         load cost increase to the case of non-constant step.
1740 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
1742         PR target/84828
1743         * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
1744         destination if any_malformed_asm.
1746 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
1748         PR middle-end/85496
1749         * expr.c (store_field): In the bitfield case, if the value comes from
1750         a function call and is returned in registers by means of a PARALLEL,
1751         do not change the mode of the temporary unless BLKmode and VOIDmode.
1753 2018-04-23  Andrey Belevantsev  <abel@ispras.ru>
1755         PR rtl-optimization/85423
1756         * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
1757         dependencies to debug insns when the previous insn is non-debug.
1759 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
1761         * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
1762         enums into a single definition.
1763         (fls): Fix predicates and printing.
1764         (seti): Likewise.
1766 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
1768         * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
1769         * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
1770         and short u6 immediate.
1771         (check_if_valid_sleep_operand): Remove.
1772         * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
1774 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
1776         * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
1777         flag_always_save_lp condition.
1778         * config/nds32/nds32.opt (malways-save-lp): New option.
1780 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
1782         * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
1783         * config/nds32/nds32.c (nds32_use_load_post_increment): New.
1784         * config/nds32/nds32.h
1785         (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
1786         (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
1788 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
1790         * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
1791         * config/nds32/nds32.c (nds32_ls_333_p): Remove.
1793 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
1794             Chung-Ju Wu  <jasonwucj@gmail.com>
1796         * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
1797         Declare.
1798         * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
1799         * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
1801 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
1803         * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
1805 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
1807         * config/nds32/nds32-protos.h (nds32_data_alignment,
1808         nds32_local_alignment): Declare.
1809         * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
1810         nds32_local_alignment): New functions.
1811         (TARGET_CONSTANT_ALIGNMENT): Define.
1812         * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
1814 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
1816         * config/nds32/nds32.c
1817         (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
1818         (TARGET_MODES_TIEABLE_P): Likewise.
1820 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
1822         * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
1823         level Ofast and Og.
1825 2018-04-22  Monk Chiang  <sh.chiang04@gmail.com>
1826             Chung-Ju Wu  <jasonwucj@gmail.com>
1828         * config/nds32/constants.md (unspec_volatile_element): Add enum values
1829         for unaligned access.
1830         * config/nds32/nds32-intrinsic.c: Implementation of expanding
1831         unaligned access.
1832         * config/nds32/nds32-intrinsic.md: Likewise.
1833         * config/nds32/nds32_intrinsic.h: Likewise.
1834         * config/nds32/nds32.h (nds32_builtins): Likewise.
1835         * config/nds32/nds32.opt (munaligned-access): New option.
1836         * config/nds32/nds32.c (nds32_asm_file_start): Display
1837         flag_unaligned_access status.
1839 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
1841         * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
1842         -mno-relax is present.
1843         * config/riscv/linux.h (LINK_SPEC): Ditto.
1845 2018-04-20  Martin Sebor  <msebor@redhat.com>
1847         PR c/85365
1848         * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
1849         for null pointers.
1850         (gimple_fold_builtin_stxcpy_chk): Same.
1851         * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
1853 2018-04-20  Michael Meissner  <meissner@linux.ibm.com>
1855         PR target/85456
1856         * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
1857         __powikf2 when long double is IEEE 128-bit.
1859 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
1861         * config/riscv/riscv.c (riscv_first_stack_step): Round up min
1862         step to make sure stack always aligned.
1864 2018-04-20  Carl Love  <cel@us.ibm.com>
1866         PR target/83402
1867         * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
1868         size check for arg0.
1870 2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
1871             Tom de Vries  <tom@codesourcery.com>
1873         PR target/85445
1874         * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
1875         Emit insns for calls too.
1876         (nvptx_find_par): Always look for worker-level predecessor insn.
1877         (nvptx_propagate): Add is_call parm, return bool.  Copy frame for
1878         calls.
1879         (nvptx_vpropagate, nvptx_wpropagate): Adjust.
1880         (nvptx_process_pars): Propagate frames for calls.
1882 2018-04-20  H.J. Lu  <hongjiu.lu@intel.com>
1884         PR target/85469
1885         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
1886         Removed.
1887         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
1888         (ix86_handle_option): Don't handle OPT_mibt.
1889         * config/i386/cet.h: Check __CET__ instead of __IBT__ and
1890         __SHSTK__.
1891         * config/i386/driver-i386.c (host_detect_local_cpu): Remove
1892         has_ibt and ibt.
1893         * config/i386/i386-c.c (ix86_target_macros_internal): Don't
1894         check OPTION_MASK_ISA_IBT nor flag_cf_protection.
1895         (ix86_target_macros): Define __CET__ with flag_cf_protection
1896         for -fcf-protection.
1897         * config/i386/i386.c (isa2_opts): Remove -mibt.
1898         * config/i386/i386.h (TARGET_IBT): Removed.
1899         (TARGET_IBT_P): Likewise.
1900         (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
1901         * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
1902         * config/i386/i386.opt (mcet): Update help message.
1903         (mshstk): Likewise.
1904         (mibt): Removed.
1905         * doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
1906         -mcet as an alias for -mshstk.
1908 2018-04-20  Richard Biener <rguenther@suse.de>
1910         PR middle-end/85475
1911         * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
1912         complexity by forcing a single use of the multiply operand.
1914 2018-04-20  Martin Jambor  <mjambor@suse.cz>
1916         ipa/85449
1917         * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
1918         recursion dependency to only apply to non-clones.
1920 2018-04-20  Martin Jambor  <mjambor@suse.cz>
1922         ipa/85447
1923         * ipa-cp.c (create_specialized_node): Check that clones of
1924         self-recursive edges exist during IPA-CP.
1926 2018-04-19  Toon Moene  <toon@moene.org>
1928         * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
1929         by -O3. 
1931 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
1933         PR tree-optimization/85467
1934         * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
1935         VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
1936         VECTOR_CST element to type.
1938 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
1940         PR target/85397
1941         * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
1942         * config/i386/i386.md (builtin_setjmp_setup): Removed.
1943         (builtin_longjmp): Likewise.
1944         (save_stack_nonlocal): New pattern.
1945         (restore_stack_nonlocal): Likewise.
1947 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
1949         PR target/85404
1950         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
1951         Replace ASM_OUTPUT_LABEL with fprintf.
1953 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
1955         PR target/85417
1956         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
1957         Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
1958         * config/i386/i386-c.c (ix86_target_macros_internal): Also
1959         define __IBT__ and __SHSTK__ for -fcf-protection.
1960         * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
1961         TARGET_IBT.
1962         (ix86_trampoline_init): Likewise.
1963         (x86_output_mi_thunk): Likewise.
1964         (ix86_notrack_prefixed_insn_p): Likewise.
1965         (ix86_option_override_internal): Don't disallow -fcf-protection.
1966         * config/i386/i386.md (rdssp<mode>): Also enable for
1967         -fcf-protection.
1968         (incssp<mode>): Likewise.
1969         (nop_endbr): Likewise.
1970         * config/i386/i386.opt (mcet): Change help message to built-in
1971         functions only.
1972         (mibt): Likewise.
1973         (mshstk): Likewise.
1974         * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
1975         on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
1976         enable CET built-in functions.
1978 2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>
1980         * common/config/i386/i386-common.c 
1981         (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
1982         OPTION_MASK_ISA_MOVDIRI_UNSET,
1983         OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
1984         (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
1985         * config.gcc (movdirintrin.h): New header.
1986         * config/i386/cpuid.h (bit_MOVDIRI,
1987         bit_MOVDIR64B): New bits.
1988         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
1989         and -mmvodir64b.
1990         * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
1991         (VOID, PVOID, PCVOID)): New function types.
1992         * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
1993         __builtin_ia32_directstoreu_u64,
1994          __builtin_ia32_movdir64b): New builtins.
1995         * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
1996         * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
1997         and -mmovdiri.
1998         (ix86_valid_target_attribute_inner_p): Ditto.
1999         (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
2000         and VOID_FTYPE_PUNSIGNED_UNSIGNED.
2001         (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
2002         * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
2003         TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
2004         * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
2005         (movdiri<mode>, movdir64b_<mode>): New.
2006         * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
2007         * config/i386/immintrin.h: Include movdirintrin.h.
2008         * config/i386/movdirintrin.h: New file.
2009         * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
2011 2018-04-19  Richard Biener  <rguenther@suse.de>
2013         PR middle-end/85455
2014         * cfg.c (clear_bb_flags): When loop state says we have
2015         marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
2017 2018-04-19  Richard Biener  <rguenther@suse.de>
2019         PR tree-optimization/84737
2020         * tree-vect-data-refs.c (vect_copy_ref_info): New function
2021         copying restrict info.
2022         (vect_setup_realignment): Use it.
2023         * tree-vectorizer.h (vect_copy_ref_info): Declare.
2024         * tree-vect-stmts.c (vectorizable_store): Copy ref info from
2025         the first DR to all generated stores.
2026         (vectorizable_load): Likewise for loads.
2028 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
2030         PR tree-optimization/85446
2031         * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
2032         the integral and pointer types to have the same precision.
2034         * doc/install.texi: Document --disable-cet being the default and
2035         --enable-cet=auto.
2037 2018-04-18  Martin Liska  <mliska@suse.cz>
2039         * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
2040         style.
2042 2018-04-18  Martin Liska  <mliska@suse.cz>
2044         Revert
2045         2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
2047         PR ipa/83983
2048         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
2049         arguments if they are comparable.
2051 2018-04-18  Martin Liska  <mliska@suse.cz>
2053         Revert
2054         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
2056         PR lto/84805
2057         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
2058         incomplete types.
2060 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
2062         PR target/85388
2063         * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
2064         ENDBR after calling __morestack.
2066 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
2068         PR jit/85384
2069         * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
2070         by using gcc_base_ver to generate a gcc_driver_version, and use
2071         it when generating GCC_DRIVER_NAME.
2072         * configure: Regenerate.
2074 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
2076         PR target/81084
2077         * config.gcc: Obsolete powerpc*-*-*spe*.
2079 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
2081         PR debug/84637
2082         * dbxout.c (dbxout_int): Perform negation in unsigned int type.
2083         (stabstr_D): Change type of unum from unsigned int to
2084         unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
2085         type.
2087 2018-04-17  Jim Wilson  <jimw@sifive.com>
2089         PR 84856
2090         * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
2091         RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
2092         Set arg_pointer_offset after using pretend_args_size.
2094 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
2096         PR rtl-optimization/85431
2097         * dse.c (record_store): Ignore zero width stores.
2099         PR sanitizer/85230
2100         * asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
2101         __asan_allocas_unpoison call and last_alloca_addr = new_sp before
2102         __builtin_stack_restore rather than after it.
2103         * builtins.c (expand_asan_emit_allocas_unpoison): Pass
2104         arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
2105         argument instead of virtual_dynamic_stack_rtx.
2107 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2109         * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
2110         New prototype.
2111         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2112         Add note to error message to explain internal mapping of overloaded
2113         built-in function name to non-overloaded built-in function name.
2114         * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
2115         function.
2117 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
2119         PR target/85424
2120         * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
2121         where the inputs overlap with the output.
2123 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
2125         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
2126         (=v, v) alternative and explicit "memory" attribute.
2127         (vec_extract_lo_<mode><mask_name>): Likewise.  Also add
2128         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2129         attributes.
2130         (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
2131         "sselog1" type instead of "sselog".
2132         (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
2133         "sselog".  Remove explicit "memory" attribute.
2134         (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
2135         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2136         attributes.
2137         (vec_extract_hi_v32hi): Merge all alternatives into one, use
2138         "sselog1" type instead of "sselog".  Remove explicit "memory"
2139         attribute.
2140         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
2141         use "sselog1" type instead of "sselog".  Remove explicit "memory"
2142         attribute.
2143         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
2144         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2145         attributes.
2146         (vec_extract_hi_v64qi): Merge all alternatives into one, use
2147         "sselog1" type instead of "sselog".  Remove explicit "memory"
2148         attribute.
2149         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
2150         use "sselog1" type instead of "sselog".  Remove explicit "memory"
2151         attribute.
2153         PR target/85430
2154         * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
2156         PR middle-end/85414
2157         * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
2158         on a SUBREG.
2160 2018-04-17  Martin Jambor  <mjambor@suse.cz>
2162         PR ipa/85421
2163         * ipa-cp.c (create_specialized_node): Call
2164         expand_all_artificial_thunks if necessary.
2166 2018-04-17  Martin Liska  <mliska@suse.cz>
2168         PR lto/85405
2169         * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
2170         in message, remote space in between '_G' and '('.
2172 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
2174         PR target/85281
2175         * config/i386/sse.md (reduces<mode><mask_scalar_name>,
2176         avx512f_vmcmp<mode>3<round_saeonly_name>,
2177         avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
2178         avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
2179         avx512f_rndscale<mode><round_saeonly_name>,
2180         avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
2181         avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
2182         Use %<iptr>2 instead of %2 for -masm=intel.
2183         (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
2184         avx512f_vcvttss2usi<round_saeonly_name>,
2185         avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
2186         -masm=intel.
2187         (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
2188         avx512f_vcvttsd2usi<round_saeonly_name>,
2189         avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
2190         Use %q1 instead of %1 for -masm=intel.
2191         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
2192         avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
2193         of %3 for -masm=intel.
2194         (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
2195         -masm=intel.
2196         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
2197         -masm=intel.
2198         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
2199         -masm=intel.
2200         (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
2201         %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
2202         %g1.
2203         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
2204         -masm=intel.
2205         (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
2206         %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
2207         %g1 and one with %0 and %1.
2208         (avx512er_vmrcp28<mode><round_saeonly_name>,
2209         avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
2210         %1 for -masm=intel.
2211         (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
2212         avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
2213         avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
2214         of %0 and %{%4%} for -masm=intel.
2215         (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
2216         avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
2217         avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
2218         order of %0 and %{%5%}%{z%} for -masm=intel.
2220 2018-04-17  Jan Hubicka  <jh@suse.cz>
2222         PR lto/85405
2223         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
2225 2018-04-17  Martin Liska  <mliska@suse.cz>
2227         PR ipa/85329
2228         * multiple_target.c (create_dispatcher_calls): Set apostrophes
2229         for target_clone error message.  Make default implementation
2230         clone to be a local declaration.
2231         (separate_attrs): Add new argument and check for an empty
2232         string.
2233         (expand_target_clones): Handle it.
2234         (ipa_target_clone): Make redirection just for target_clones
2235         functions.
2237 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
2238             Tom de Vries  <tom@codesourcery.com>
2240         PR middle-end/84955
2241         * omp-expand.c (expand_oacc_for): Add dummy false branch for
2242         tiled basic blocks without omp continue statements.
2244 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
2246         PR target/83660
2247         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
2248         vec_extract expression as having side effects to make sure it gets
2249         a cleanup point.
2251 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
2253         PR target/85403
2254         * config/i386/i386.c (get_builtin_code_for_version): Check
2255         error_mark_node.
2257 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
2259         PR target/84331
2260         * gcc/config.gcc: Support "skylake".
2261         * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
2262         PROCESSOR_SKYLAKE.
2263         * gcc/config/i386/i386.c (m_SKYLAKE): Define.
2264         (processor_target_table): Add "skylake".
2265         (ix86_option_override_internal): Add "skylake".
2266         (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
2267         PROCESSOR_CANNONLAKE.
2268         (get_builtin_code_for_version): Fix priority for
2269         PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
2270         PROCESSOR_SKYLAKE-AVX512.
2271         * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
2272         (processor_type): Add PROCESSOR_SKYLAKE.
2274 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
2275             Jason Merrill  <jason@redhat.com>
2277         PR c++/85112
2278         * convert.c (convert_to_integer_1): Use direct recursion for
2279         enumeral types and types with a precision less than the number
2280         of bits in their mode.
2282 2018-04-16  Julia Koval  <julia.koval@intel.com>
2284         PR target/84413
2285         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
2286         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
2288 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
2290         PR target/85293
2291         * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
2292         * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
2293         and -mno-direct-move.
2295 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
2297         PR target/83402
2298         * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
2299         Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
2300         Ensure negative shifts result in {0}.
2302 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
2304         PR rtl-optimization/79916
2305         * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
2306         regs (if any) to define how to gnerate SD moves when LRA is in
2307         progress.
2309 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
2311         PR rtl-optimization/85393
2312         * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
2313         * except.c (expand_dw2_landing_pad_for_region): Make static.
2314         * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
2315         a label and unconditional jump to old_bb, rather than
2316         expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
2317         basic block.
2319         PR rtl-optimization/85376
2320         * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
2321         zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
2322         instead of a specific value.
2324 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
2325             Bin Cheng  <bin.cheng@arm.com>
2327         PR tree-optimization/82965
2328         PR tree-optimization/83991
2329         * cfgloopanal.c (expected_loop_iterations_unbounded): Add
2330         by_profile_only parameter.
2331         * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
2332         information if the loop was predicted to iterate too many times.
2333         * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
2335 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
2337         PR lto/71991
2338         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
2339         always inline.
2341 2018-04-13  Martin Liska  <mliska@suse.cz>
2342             Jakub Jelinek  <jakub@redhat.com>
2344         PR middle-end/81657
2345         * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
2346         * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
2347         * builtins.c (expand_builtin_memory_copy_args): Use
2348         BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
2349         handle dest_addr == pc_rtx.
2351 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
2353         PR target/85291
2354         * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
2355         asked to not generate direct moves.
2356         (fix_trunc<mode>si2_stfiwx): Similar.
2357         (fix_trunc<mode>si2_internal): Similar.
2359 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
2361         PR debug/83157
2362         * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
2363         * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
2364         lookup if dest in some wider mode is known to be const0_rtx and
2365         if so, record permanent equivalence for it to be ZERO_EXTEND of
2366         the narrower mode destination.
2368 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
2370         * lto-streamer-out.c (output_function): Revert 259346.
2371         * omp-expand.c (expand_oacc_for): Likewise.
2373 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
2375         PR rtl-optimization/85354
2376         * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
2377         * sel-sched.c (sel_global_init): ... here.
2379 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
2381         PR target/85238
2382         * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
2383         * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
2384         mode for PE-COFF targets.
2385         * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
2386         (i386_pe_asm_lto_end): Likewise.
2387         * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
2388         (TARGET_ASM_LTO_END): Likewise.
2389         * config/i386/winnt.c (saved_debug_info_level): New static variable.
2390         (i386_pe_asm_lto_start): New function.
2391         (i386_pe_asm_lto_end): Likewise.
2393 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
2394             Richard Biener  <rguenther@suse.de>
2396         PR middle-end/84955
2397         * lto-streamer-out.c (output_function): Fix CFG loop state before
2398         streaming out.
2399         * omp-expand.c (expand_oacc_for): Handle calls to internal
2400         functions like regular functions.
2402 2018-04-12  Richard Biener  <rguenther@suse.de>
2404         PR lto/85371
2405         * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
2406         for the early LTO debug to properly generate references to it
2407         during DIE emission.  Do not re-use that for the skeleton for
2408         split-dwarf.
2409         (dwarf2out_early_finish): Likewise.
2411 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
2413         PR target/85328
2414         * config/i386/sse.md
2415         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
2416         <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
2417         vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
2418         vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
2419         and output is a reg, avoid creating invalid lowpart subreg, but
2420         instead split into a 512-bit move.  Don't split if not AVX512VL,
2421         input is xmm16+ reg and output is a mem.
2422         (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
2423         vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
2424         xmm16+ reg and output is a mem.
2426 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
2428         * config/s390/s390.c (s390_output_indirect_thunk_function): Check
2429         also for flag_dwarf2_cfi_asm.
2431 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
2433         PR rtl-optimization/85342
2434         * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
2435         a bool scalar var inside of the loop instead.  Don't try to update
2436         recog_data.operand after failed apply_change_group.
2438 2018-04-12  Tom de Vries  <tom@codesourcery.com>
2440         PR target/85296
2441         * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
2442         (nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
2443         array with flexible array member as array without given dimension.
2444         (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
2445         argument for undefined param to true.
2447 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
2449         PR target/85321
2450         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
2451         -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
2452         from PowerPC section.
2453         * config/rs6000/sysv4.opt (mcall-): Improve help text.
2454         * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
2455         help text that is too long.
2456         * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
2457         help text that is too long.
2458         * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
2459         help text that is too long.
2461 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
2463         * config/alpha/alpha.md (stack_probe_internal): Rename
2464         from "probe_stack".  Update all callers.
2466 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
2468         PR rtl-optimization/84566
2469         * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
2470         sched_macro_fuse_insns.
2472 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
2474         PR target/84301
2475         * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
2476         (compute_block_dependences): ... from here.
2478 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
2480         PR tree-optimization/85331
2481         * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
2482         from int to HOST_WIDE_INT.
2484 2018-04-11  Martin Jambor  <mjambor@suse.cz>
2486         PR ipa/84149
2487         * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
2488         (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
2489         not the same as the source val.
2490         (cgraph_edge_brings_value_p): New parameter.
2491         (gather_edges_for_value): Pass destination value to
2492         cgraph_edge_brings_value_p.
2493         (perhaps_add_new_callers): Likewise.
2494         (get_info_about_necessary_edges): Likewise and exclude values brought
2495         only by self-recursive edges.
2496         (create_specialized_node): Redirect only clones of self-calling edges.
2497         (+self_recursive_pass_through_p): New function.
2498         (find_more_scalar_values_for_callers_subset): Use it.
2499         (find_aggregate_values_for_callers_subset): Likewise.
2500         (known_aggs_to_agg_replacement_list): Removed.
2501         (decide_whether_version_node): Re-calculate known constants for all
2502         remaining context clones.
2504 2018-04-11  Richard Biener  <rguenther@suse.de>
2506         PR lto/85339
2507         * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
2508         from early DWARF output.
2509         (dwarf2out_early_finish): Output line info unconditionally into
2510         early DWARF and add reference to it.
2512 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
2514         PR target/85281
2515         * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
2516         (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
2517         other than V2DFmode using iptr mode attribute.
2518         (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
2520 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
2522         PR rtl-optimization/84659
2523         * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
2525 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
2527         PR debug/85302
2528         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
2529         SIZEP is NULL.
2530         (output_loc_list): Pass address of a dummy size variable even in the
2531         locview handling loop.
2532         (index_location_lists): Add comment on why skip_loc_list_entry can't
2533         call size_of_locs.
2535 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
2537         PR target/85261
2538         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
2539         into register.
2541 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
2543         PR target/85321
2544         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
2545         -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
2546         and -mstring-compare-inline-limit.
2548 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
2550         PR target/85287
2551         * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
2552         for stack clash protection in a register whenever we need it to be in
2553         a register.
2555 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
2557         * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
2558         Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
2560 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
2562         PR target/85321
2563         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
2564         the help text.
2565         (mlong-double-): Ditto.
2566         * config/rs6000/sysv4.opt (msdata=): Ditto.
2567         (mtls-size=): Ditto.
2569 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2571         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
2572         erroneous entries for
2573         "vector int vec_ldl (int, long int *)", and
2574         "vector unsigned int vec_ldl (int, unsigned long int *)".
2575         Add comments and entries for
2576         "vector bool char vec_ldl (int, bool char *)",
2577         "vector bool short vec_ldl (int, bool short *)",
2578         "vector bool int vec_ldl (int, bool int *)",
2579         "vector bool long long vec_ldl (int, bool long long *)",
2580         "vector pixel vec_ldl (int, pixel *)",
2581         "vector long long vec_ldl (int, long long *)",
2582         "vector unsigned long long vec_ldl (int, unsigned long long *)".
2583         * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
2584         type tree bool_long_long_type_node and correct definition of
2585         bool_V2DI_type_node to make reference to this new type tree.
2586         (rs6000_mangle_type): Replace erroneous reference to
2587         bool_long_type_node with bool_long_long_type_node.
2588         * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
2589         comments to emphasize sign distinctions for char and int types and
2590         replace RS6000_BTI_bool_long constant with
2591         RS6000_BTI_bool_long_long constant.  Also add comment to restrict
2592         use of RS6000_BTI_pixel.
2593         (bool_long_type_node): Remove this macro definition.
2594         (bool_long_long_type_node): New macro definition
2596 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
2598         PR rtl-optimization/85300
2599         * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
2600         into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
2601         simplify_unary_operation fails.
2603 2018-04-10  Martin Liska  <mliska@suse.cz>
2605         * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
2606         cgraph_edge and ipa_ref.
2608 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
2610         PR target/85177
2611         PR target/85255
2612         * config/i386/sse.md
2613         (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
2614         computation of the VEC_MERGE selector from mask.
2615         (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
2616         Fix decoding of the VEC_MERGE selector into mask.
2618 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
2620         PR tree-optimization/85286
2621         * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
2623 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
2625         * final.c (final_1): Set insn_last_address as well as
2626         insn_current_address.
2628 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2630         PR target/85173
2631         * explow.c (emit_stack_probe): Call validize_mem on memory location
2632         before passing it to gen_probe_stack.  Create address operand and
2633         legitimize it for the probe_stack_address case.
2635 2018-04-09  Jan Hubicka  <jh@suse.cz>
2637         PR lto/85078
2638         * ipa-devirt.c (rebuild_type_inheritance-hash): New.
2639         * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
2640         * tree.c (free_lang_data_in_type): Fix handling of binfos;
2641         walk basetypes.
2642         (free_lang_data): Rebuild type inheritance graph.
2644 2018-04-09  Martin Sebor  <msebor@redhat.com>
2646         * invoke.texi (-finline-small-functions): Mention other optimization
2647         options.
2648         (-findirect-inlining, -fpartial-inlining): Same.
2649         (-finline-functions-called-once): Same.
2650         (-freorder-blocks-and-partition): Same.
2652 2018-04-09  Jan Hubicka  <jh@suse.cz>
2654         PR rtl/84058
2655         * cfgcleanup.c (try_forward_edges): Do not give up on crossing
2656         jumps; choose last target that matches the criteria (i.e.
2657         no partition changes for non-crossing jumps).
2658         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
2659         support for redirecting crossing jumps to non-crossing.
2661 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
2663         * config/arc/arc.c (arc_expand_prologue): Set stack usage info
2664         also for naked functions.
2666 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
2668         * config/arc/arc.md (add_shift): New pattern.
2669         (add_shift2): Likewise.
2670         (sub_shift): Likewise.
2671         (sub_shift_cmp0_noout): Likewise.
2672         (compare_si_ashiftsi): Likewise.
2673         (xbfu_cmp0_noout): New combine pattern.
2674         (xbfu_cmp0"): Likewise.
2675         (movsi_set_cc_insn): Place the predicable variant first.
2676         (commutative_binary_cmp0_noout): Remove clobber.
2677         (commutative_binary_cmp0): New pattern.
2678         (noncommutative_binary_cmp0): Likewise.
2679         (noncommutative_binary_cmp0_noout): Likewise.
2680         (noncommutative_binary_comparison_result_used): Removed.
2681         (rsub_cmp0): New pattern.
2682         (rsub_cmp0_noout): Likewise.
2683         (extzvsi): Changed, keep only meaningful variants.
2684         (SQH, SEZ): New iterators.
2685         (SQH_postfix): New mode attribute.
2686         (SEZ_prefix): New code attribute.
2687         (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
2688         (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
2689         * config/arc/predicates.md (cc_set_register): Use CC_REG instead
2690         of numerical value.
2691         (noncommutative_operator): Check the availability of barrel
2692         shifter option.
2694 2018-04-09  Richard Biener  <rguenther@suse.de>
2696         PR tree-optimization/85284
2697         * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
2698         Only use the niter constraining form of simple_iv when the exit
2699         is always executed.
2701 2018-04-09  Tom de Vries  <tom@codesourcery.com>
2703         PR target/84041
2704         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
2705         (define_expand "*memory_barrier"): New define_expand.
2706         (define_insn "memory_barrier"): New insn.
2708 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
2710         PR rtl-optimization/80463
2711         PR rtl-optimization/83972
2712         PR rtl-optimization/83480
2714         * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
2715         correct producer for the insn.
2716         (tidy_control_flow): Fixup seqnos in case of debug insns.
2718 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
2720         PR rtl-optimization/83913
2722         * sel-sched-ir.c (merge_expr_data): Choose the middle between two
2723         different sched-times when merging exprs.
2725 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
2727         PR rtl-optimization/83962
2729         * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
2730         tidy_fallthru_edge and tidy_control_flow.
2732 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
2734         PR rtl-optimization/83530
2736         * sel-sched.c (force_next_insn): New global variable.
2737         (remove_insn_for_debug): When force_next_insn is true, also leave only
2738         next insn in the ready list.
2739         (sel_sched_region): When the region wasn't scheduled, make another pass
2740         over it with force_next_insn set to 1.
2742 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
2744         * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
2745         into tm_file.
2746         * config/nds32/constants.md (unspec_volatile_element): Add enum values
2747         for interrupt control.
2748         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
2749         functions for interrupt control.
2750         * config/nds32/nds32-intrinsic.md: Likewise.
2751         * config/nds32/nds32_intrinsic.h: Likewise.
2752         * config/nds32/nds32.h (nds32_builtins): Likewise.
2754 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
2756         * config/nds32/nds32.c (nds32_init_machine_status,
2757         nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
2758         strict_aligned_p field.
2759         (nds32_expand_to_rtl_hook): New function.
2760         (TARGET_EXPAND_TO_RTL_HOOK): Define.
2761         * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
2763 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
2764             Chung-Ju Wu  <jasonwucj@gmail.com>
2766         * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
2767         * config/nds32/nds32-n7.md: New file.
2768         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
2769         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
2770         pipeline.
2771         * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
2772         * config/nds32/nds32.md (pipeline_model): Add n7.
2773         * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
2774         * config/nds32/pipelines.md: Include n7 settings.
2776 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
2777             Chung-Ju Wu  <jasonwucj@gmail.com>
2779         * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
2780         * config/nds32/nds32-e8.md: New file.
2781         * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
2782         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
2783         pipeline.
2784         * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
2785         * config/nds32/nds32.md (pipeline_model): Add e8.
2786         * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
2787         * config/nds32/pipelines.md: Include e8 settings.
2789 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
2790             Chung-Ju Wu  <jasonwucj@gmail.com>
2792         * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
2793         * config/nds32/nds32-n8.md: New file.
2794         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
2795         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
2796         pipeline.
2797         * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
2798         * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
2799         * config/nds32/nds32.md (pipeline_model): Add n8.
2800         * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
2801         * config/nds32/pipelines.md: Include n8 settings.
2803 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
2804             Chung-Ju Wu  <jasonwucj@gmail.com>
2806         * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
2807         * config/nds32/nds32-n9-2r1w.md: New file.
2808         * config/nds32/nds32-n9-3r2w.md: New file.
2809         * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
2810         nds32_register_ports): New or modify for cpu n9.
2811         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
2812         pipeline.
2813         * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
2814         * config/nds32/nds32-utils.c: New file.
2815         * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
2816         TARGET_MUL_SLOW): Define.
2817         * config/nds32/nds32.md (pipeline_model): New attribute.
2818         * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
2819         New options that support cpu n9.
2820         * config/nds32/pipelines.md: Include n9 settings.
2821         * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
2823 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
2825         * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
2826         information if necessary.
2827         (output_cond_branch_compare_zero): Likewise.
2828         * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
2829         (nds32_target_alignment): Refine for alignment.
2830         * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
2831         (FUNCTION_BOUNDARY): Modify.
2832         * config/nds32/nds32.md (call_internal, call_value_internal): Consider
2833         align case.
2834         * config/nds32/nds32.opt (malways-align, malign-functions): New.
2836 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
2838         * config/nds32/constants.md (unspec_volatile_element): Add values for
2839         TLB operation and data prefetch.
2840         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
2841         functions for TLB operation and data prefetch.
2842         * config/nds32/nds32-intrinsic.md: Likewise.
2843         * config/nds32/nds32_intrinsic.h: Likewise.
2844         * config/nds32/nds32.c (nds32_dpref_names): Likewise.
2845         (nds32_print_operand): Likewise.
2846         * config/nds32/nds32.h (nds32_builtins): Likewise.
2848 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
2849         Andrew Pinski <pinsika@gcc.gnu.org>
2851         PR middle-end/82976
2852         * match.pd: Use constant_boolean_node of correct type instead of
2853         boolean_true_node or boolean_false_node for simplifying
2854         pointer comparisons to zero.
2856 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
2858         PR tree-optimization/80021
2859         * tree.c (verify_type_variant): Make error call in verify_variant_match
2860         translatable and remove final full stop.
2862 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
2864         * config/nds32/constants.md (unspec_volatile_element): Add
2865         UNSPEC_VOLATILE_EH_RETURN.
2866         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
2867         nds32_output_stack_pop): Support dwarf exception handling process.
2868         * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
2869         * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
2870         exception handling process.
2871         (nds32_compute_stack_frame): Likewise.
2872         (nds32_return_addr_rtx): Likewise.
2873         (nds32_initial_elimination_offset): Likewise.
2874         (nds32_expand_prologue): Likewise.
2875         (nds32_expand_epilogue): Likewise.
2876         (nds32_dynamic_chain_address): New function.
2877         * config/nds32/nds32.h (machine_function): Add fields for dwarf
2878         exception handling.
2879         (DYNAMIC_CHAIN_ADDRESS): Define.
2880         (EH_RETURN_DATA_REGNO): Define.
2881         (EH_RETURN_STACKADJ_RTX): Define.
2882         * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
2883         patterns for dwarf exception handling.
2885 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
2887         * config/nds32/nds32.h: Clean up obsolete macros.
2889 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
2891         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
2892         Add enum values for particular instructions.
2893         * config/nds32/nds32-intrinsic.c: Implementation of expanding
2894         particular intrinsic functions.
2895         * config/nds32/nds32-intrinsic.md: Likewise.
2896         * config/nds32/nds32_intrinsic.h: Likewise.
2897         * config/nds32/nds32.h (nds32_builtins): Likewise.
2898         * config/nds32/nds32.md (type): Add pbsad and pbsada.
2899         (btst, ave): New patterns for particular instructions.
2901 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
2903         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
2904         Add enum values for atomic load/store and memory sync.
2905         * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
2906         and memory sync.
2907         * config/nds32/nds32-intrinsic.md: Likewise.
2908         * config/nds32/nds32_intrinsic.h: Likewise.
2909         * config/nds32/nds32.h (nds32_builtins): Likewise.
2911 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
2913         PR tree-optimization/85257
2914         * fold-const.c (native_encode_vector): If not all elts could fit
2915         and off is -1, return 0 rather than offset.
2916         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
2917         (offseti - offset2) / BITS_PER_UNIT as 4th argument to
2918         native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
2919         adjust buffer in native_interpret_expr call.
2921 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
2923         * config/nds32/constants.md (unspec_volatile_element): Add cache
2924         control enum values.
2925         * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
2926         * config/nds32/nds32-intrinsic.md: Add cache control patterns.
2927         * config/nds32/nds32.c (nds32_cctl_names): New.
2928         (nds32_print_operand): Handle cache control register names.
2929         * config/nds32/nds32.h (nds32_builtins): New enum values.
2930         * config/nds32/nds32_intrinsic.h: Add cache control enum types and
2931         macros.
2932         * config/nds32/nds32.md (type): Add mmu.
2933         * config/nds32/pipelines.md (simple_insn): Add mmu.
2935 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
2937         * config/nds32/nds32.md (type): Remove call.
2938         * config/nds32/pipelines.md (simple_insn): Likewise.
2940 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
2942         * config/nds32/constants.md (unspec_volatile_element): Add
2943         UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
2944         UNSPEC_VOLATILE_FMFCFG.
2945         * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
2946         description for fmfcfg and fmfcsr.
2947         (bdesc_1arg): Add fmtcsr.
2948         (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
2949         (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
2950         * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
2951         unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
2952         unspec_fmfcfg): New patterns.
2953         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
2954         NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
2955         NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
2956         * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
2957         __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
2958         __nds32__fmfcfg): Define.
2960 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
2962         * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
2963         intrinsic register names.
2964         * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
2965         intrinsic register enum values and macros.
2967 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
2969         * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
2970         for load/store addressing form.
2971         (nds32_print_operand_address): Likewise.
2973 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
2975         PR target/85196
2976         * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
2977         based on LABEL_REF.  Remove useless assertion.
2978         (pic_address_needs_scratch): Fix formatting.
2979         (sparc_legitimize_pic_address): Minor tweaks.
2980         (sparc_delegitimize_address): Adjust assertion accordingly.
2981         * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
2982         into symbolic_operand.
2983         (movsi_high_pic_label_ref): Likewise.
2984         (movsi_lo_sum_pic_label_ref): Likewise.
2985         (movdi_pic_label_ref): Likewise.
2986         (movdi_high_pic_label_ref): Likewise.
2987         (movdi_lo_sum_pic_label_ref): Likewise.
2989 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
2991         * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
2992         custom LIB_SPEC setup.
2994 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
2995             Kito Cheng  <kito.cheng@gmail.com>
2997         * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
2998         * config/riscv/freebsd.h: New.
3000 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
3002         * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
3003         * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
3004         file.
3006 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
3007             Kito Cheng  <kito.cheng@gmail.com>
3009         * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
3010         nds32_output_call, nds32_symbol_binds_local_p): New functions.
3011         * config/nds32/nds32-protos.h (nds32_output_call,
3012         nds32_output_return): Declare.
3013         * config/nds32/nds32.md: Refine all the call and return patterns.
3015 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
3017         PR debug/85252
3018         * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
3019         build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
3021         PR rtl-optimization/84872
3022         * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
3023         nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
3024         EDGE_CROSSING edge.
3026 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
3028         * expr.c (copy_blkmode_to_reg): Revert 254862.
3029         * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
3031 2018-04-06  Richard Biener  <rguenther@suse.de>
3033         PR middle-end/85244
3034         * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
3035         after seeing a component reference with an adjacent field.  Treat
3036         refs to arrays at struct end of external decls similar to
3037         refs to unconstrained commons.
3039 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
3041         PR sanitizer/85213
3042         * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
3043         look through SAVE_EXPRs with non-side-effects argument.  Adjust
3044         recursive calls.
3045         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
3046         save_p here.
3048 2018-04-06  Richard Biener  <rguenther@suse.de>
3050         PR middle-end/85180
3051         * alias.c (find_base_term): New wrapper around find_base_term
3052         unwinding CSELIB_VAL_PTR changes.
3053         (find_base_term): Do not restore CSELIB_VAL_PTR during the
3054         recursion.
3056 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
3058         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
3059         instructions.
3060         * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
3061         constant definitions.
3062         ("nop"): lr 0,0 -> nopr r0
3063         ("nop_lr0", "nop_lr1"): New insn definitions.
3065 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
3067         * config/nds32/nds32.md (*stack_push, *stack_pop): Use
3068         NDS32_V3PUSH_AVAILABLE_P macro.
3070 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
3071             Chung-Ju Wu  <jasonwucj@gmail.com>
3073         * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
3074         (nds32*-*-*): Add float and fpu_config into supported_defaults.
3075         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
3076         Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
3077         * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
3078         UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
3079         * config/nds32/constraints.md: New constraints and checking for hard
3080         float configuration.
3081         * config/nds32/iterators.md: New mode iterator and attribute for hard
3082         float configuration.
3083         * config/nds32/nds32-doubleword.md: Use hard float alternatives and
3084         patterns.
3085         * config/nds32/nds32-fpu.md: New file.
3086         * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
3087         deal with hard float code generation.
3088         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
3089         ARCH_V3S.
3090         (abi_type, float_reg_number): New enum type.
3091         * config/nds32/nds32-predicates.c: New predicates for hard float.
3092         * config/nds32/nds32-protos.h: Declare functions for hard float.
3093         * config/nds32/nds32.c: Implementation for hard float configuration.
3094         * config/nds32/nds32.h: Definitions for hard float configuration.
3095         * config/nds32/nds32.md: Include hard float machine description and
3096         modify patterns for hard float configuration.
3097         * config/nds32/nds32.opt: New options for hard float configuration.
3098         * config/nds32/predicates.md: New predicates for hard float
3099         configuration.
3101 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
3103         * common/config/nds32/nds32-common.c
3104         (nds32_option_optimization_table): Enable -mreleax-hint by default.
3106 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
3108         PR middle-end/85195
3109         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
3110         CONSTRUCTOR_ELT (ctor, ...)->value.
3112 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
3114         PR target/85193
3115         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
3117 2018-04-05  Tom de Vries  <tom@codesourcery.com>
3119         PR target/85204
3120         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
3121         cond jump.
3123 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
3124             Kito Cheng  <kito.cheng@gmail.com>
3126         * config/nds32/constraints.md (U33): Fine-tune checking condition.
3127         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
3128         * config/nds32/nds32.h (nds32_16bit_address_type): Add
3129         ADDRESS_POST_MODIFY_LO_REG_IMM3U.
3131 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
3132             Kito Cheng  <kito.cheng@gmail.com>
3134         * config/nds32/constraints.md (Ufe): New memory constraint.
3135         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
3136         nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
3137         * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
3138         operands.
3139         * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
3140         * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
3142 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3144         * config/nds32/nds32.md: Use optimize_size in the condition for
3145         alu-shift instructions.
3147 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3149         * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
3151 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3153         * config/nds32/nds32.md (negsi2): Refine pattern.
3155 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
3156             Chung-Ju Wu  <jasonwucj@gmail.com>
3158         * config/nds32/iterators.md (shift_rotate): New code iterator.
3159         (shift): New code attribute.
3160         * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
3161         * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
3162         * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
3163         * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
3164         bit-wise operations.
3165         (andsi3, *andsi3): Ditto.
3166         (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
3167         (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
3168         (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
3169         * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
3170         nds32_ior_operand, nds32_xor_operand): New predicates.
3172 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3174         * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
3175         (addsi3, subsi3): ... this.
3177 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3179         * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
3181 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3183         * config/nds32/nds32.md: Adjust indention.
3185 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
3187         * config/nds32/nds32.md (feature): New attribute.
3189 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3191         * config/nds32/nds32.md (subtype): New attribute.
3193 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
3195         PR target/85203
3196         * config/arm/arm-builtins.c (arm_expand_builtin): Change
3197         expansion to perform a bitwise AND of the argument followed by a
3198         boolean negation of the result.
3200 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
3202         PR rtl-optimization/84878
3203         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
3204         the basic block.  Assert the use reference is not artificial and that
3205         it has an associated insn.
3207 2018-04-04  Michael Matz  <matz@suse.de>
3209         * builtins.c (compute_objsize): Pass correct operand
3210         to array_at_struct_end_p.
3212 2018-04-04  Richard Biener  <rguenther@suse.de>
3214         PR lto/85176
3215         * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
3216         from contexts for DINFO_LEVEL_TERSE and below.
3218 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
3220         * config/nds32/nds32-doubleword.md (move_<mode>): Require
3221         resiter_operand condition.
3222         * config/nds32/nds32.md (*move<mode>): Ditto.
3224 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
3225             Monk Chiang  <sh.chiang04@gmail.com>
3227         * config/nds32/nds32.md (movmisalign<mode>): New pattern.
3229 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
3231         * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
3233 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
3234             Kito Cheng  <kito.cheng@gmail.com>
3236         * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
3237         nds32_cond_code_str, output_cond_branch,
3238         output_cond_branch_compare_zero, nds32_expand_cbranch,
3239         nds32_expand_cstore, nds32_expand_movcc,
3240         nds32_output_cbranchsi4_equality_zero,
3241         nds32_output_cbranchsi4_equality_reg,
3242         nds32_output_cbranchsi4_equality_reg_or_const_int,
3243         nds32_output_cbranchsi4_greater_less_zero: New functions.
3244         * config/nds32/nds32-protos.h (nds32_expand_cbranch,
3245         nds32_expand_cstore, nds32_expand_movcc,
3246         nds32_output_cbranchsi4_equality_zero,
3247         nds32_output_cbranchsi4_equality_reg,
3248         nds32_output_cbranchsi4_equality_reg_or_const_int,
3249         nds32_output_cbranchsi4_greater_less_zero): Declare.
3250         * config/nds32/predicates.md (nds32_movecc_comparison_operator,
3251         nds32_rimm11s_operand): New predicates.
3252         * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
3253         * config/nds32/nds32.md: Rewrite all the branch and conditional move
3254         patterns.
3256 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
3258         * config/nds32/nds32-doubleword.md: Refine all the instruction type.
3259         * config/nds32/nds32.md: Ditto.
3260         * config/nds32/pipelines.md: Ditto.
3262 2018-04-04  Richard Biener  <rguenther@suse.de>
3264         PR tree-optimization/85168
3265         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
3266         propagating abnormals.
3268 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
3270         * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
3272 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
3273             Kito Cheng  <kito.cheng@gmail.com>
3275         * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
3276         * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
3277         * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
3278         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
3279         * config/nds32/nds32.md (sibcall_internal): New.
3280         (sibcall_register): Remove.
3281         (sibcall_immediate): Remove.
3282         (sibcall_value_internal): New.
3283         (sibcall_value_register): Remove.
3284         (sibcall_value_immediate): Remove.
3285         * config/nds32/predicates.md (nds32_general_register_operand): New.
3286         (nds32_call_address_operand): New.
3288 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
3290         PR rtl-optimization/85167
3291         * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
3292         bb_defs if *split_p, instead preinitialize it to NULL.
3294         PR tree-optimization/85156
3295         * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
3296         evaluating the argument multiple times.
3298 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
3300         * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
3301         than vector.
3302         (_mm_cvtpd_ps): Likewise.
3303         (_mm_cvttpd_epi32): Likewise.
3304         * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
3305         * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
3306         vector, pixel, and bool following altivec.h include.
3308 2018-04-03  Martin Sebor  <msebor@redhat.com>
3310         * doc/extend.texi (Common Function Attributes): Clarify.
3311         (const attribute): Likewise.
3312         (pure attribute): Likewise.
3314 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
3316         PR target/85169
3317         * config/i386/i386.c (ix86_expand_vector_set): Use
3318         HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
3320 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
3322         * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
3323         instructions when changing rounding bits to preserve precision bits
3324         in the x87 control word.
3326 2018-04-03  Martin Liska  <mliska@suse.cz>
3328         PR tree-optimization/82491
3329         * rtl.h (strip_offset_and_add): Replace += suboffset with
3330         poly_uint64 () + suboffset.
3332 2018-03-29  Martin Liska  <mliska@suse.cz>
3333             Martin Jambor  <mjambor@suse.cz>
3335         PR ipa/84947
3336         * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
3337         param_type is not an integral or pointer type.
3339 2018-04-03  Richard Biener  <rguenther@suse.de>
3341         * sese.h (recompute_all_dominators): Remove.
3343 2018-04-02  Martin Sebor  <msebor@redhat.com>
3345         * doc/invoke.texi (-Wrestrict): Fix typos.
3347 2018-04-02  Jim Wilson  <jimw@sifive.com>
3349         * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
3350         * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
3351         (<optab>di3, <optab>si3_extend): Likewise.
3352         (<optab>si3_mask, <optab>si3_mask_1): New.
3353         (<optab>di3_mask, <optab>di3_mask_1): New.
3354         (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
3355         (lshrsi3_zero_extend_1): Use VOIDmode shift count.
3356         * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
3358 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
3360         * doc/cpp.texi (Variadic Macros): Fix line continuation in an
3361         example.
3363 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
3365         * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
3366         (nds32_canonicalize_comparison): New function.
3368 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
3369             Kito Cheng  <kito.cheng@gmail.com>
3370             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
3372         * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
3373         * config/nds32/constants.md (unspec_volatile_element): Add
3374         UNSPEC_VOLATILE_RELAX_GROUP.
3375         * config/nds32/nds32-relax-opt.c: New file.
3376         * config/nds32/nds32-predicates.c
3377         (nds32_symbol_load_store_p): New function.
3378         * config/nds32/nds32-protos.h
3379         (nds32_symbol_load_store_p): Declare function.
3380         (make_pass_nds32_relax_opt): Declare new rtl pass function.
3381         * config/nds32/nds32.c
3382         (nds32_register_pass): New function to register pass.
3383         (nds32_register_passes): New function to register passes.
3384         * config/nds32/nds32.md (relax_group): New pattern.
3385         * config/nds32/nds32.opt (mrelax-hint): New option.
3386         * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
3388 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
3390         * config/nds32/t-nds32: Modify files dependency.
3392 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
3394         * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
3395         (PROFILE_HOOK): Define its implementation.
3397 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
3399         * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
3400         type and 32-bit size.
3402 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
3404         PR middle-end/85090
3405         * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
3406         (V_128_256): New mode iterator.
3407         (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
3408         (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
3409         (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
3410         of V.
3411         * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
3412         V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
3414 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
3416         PR target/83315
3417         * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
3418         NaN inputs correctly.
3420 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
3422         PR target/80546
3423         * config/rs6000/vsx.md (??r): New mode attribute.
3424         (*vsx_mov<mode>_64bit): Use it.
3425         (*vsx_mov<mode>_32bit): Likewise.
3427 2018-03-30  Martin Sebor  <msebor@redhat.com>
3429         PR tree-optimization/84818
3430         * builtins.c (check_access): Use warning_n.
3432 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
3434         PR target/83822
3435         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
3436         condition.
3437         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
3438         condition.
3440 2018-03-30  Julia Koval  <julia.koval@intel.com>
3442         PR target/84413
3443         * x86-tune.def (movx, partial_reg_dependency): Enable for
3444         m_SKYLAKE_AVX512.
3446 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
3448         PR inline-asm/84985
3449         * lra-constraints.c (process_alt_operands): Move setting
3450         this_alternative_matches below.
3452 2018-03-29  Martin Liska  <mliska@suse.cz>
3454         PR lto/84995.
3455         * doc/invoke.texi: Document how LTO works with debug info.
3456         Describe auto-load support of binutils.  Mention 'x86-64'
3457         as valid option value of -march option.
3459 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
3461         * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
3463         PR c/85094
3464         * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
3465         For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
3466         OEP_NO_HASH_CHECK for recursive call, to avoid exponential
3467         checking.
3469 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
3471         PR target/84912
3472         * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
3473         (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
3474         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
3475         for RS6000_BTM_POWERPC64.
3476         (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
3477         (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
3478         * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
3479         definition.
3480         (DIVDE): Use it.
3481         (DIVDEU): Likewise.
3483 2018-03-28 Carl Love  <cel@us.ibm.com>
3485         Revert
3486         2017-09-27  Carl Love  <cel@us.ibm.com>
3488         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
3489         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
3490         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
3491         fctiw instruction.
3493 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
3495         * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
3496         instead of __vector bool.
3497         (_mm_max_pu8): Likewise.
3498         (_mm_min_pi16): Likewise.
3500 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
3502         PR target/84912
3503         * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
3504         (DIVWEUO): Likewise.
3505         (DIVDEO): Likewise.
3506         (DIVDEUO): Likewise.
3507         * config/rs6000/rs6000.c (builtin_function_type): Remove support for
3508         DIVWEUO and DIVDEUO.
3509         * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
3510         (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
3511         (div_extend): Likewise.
3512         * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
3513         builtin function.
3514         (__builtin_divweuo): Likewise.
3515         (__builtin_divdeo): Likewise.
3516         (__builtin_divdeuo): Likewise.
3518 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
3520         PR target/85095
3521         * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
3522         *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
3524         PR tree-optimization/82004
3525         * gimple-match-head.c (optimize_pow_to_exp): New function.
3526         * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
3527         Don't fold to exp if optimize_pow_to_exp is false.
3529 2018-03-28  Martin Liska  <mliska@suse.cz>
3531         PR other/84819
3532         * calls.c (initialize_argument_information): Fix trailing space.
3533         * common.opt: Fix typo and provide better explanation for
3534         -fsanitize-coverage option.
3535         * config/i386/i386.opt: Fix typo.
3537 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
3538             Martin Liska  <mliska@suse.cz>
3540         PR sanitizer/85081
3541         * gimplify.c (asan_poison_variable): Don't do the check for
3542         gimplify_omp_ctxp here.
3543         (gimplify_decl_expr): Do it here.
3544         (gimplify_target_expr): Likewise.
3546 2018-03-28  Martin Liska  <mliska@suse.cz>
3548         PR target/84988
3549         * config/i386/i386.c (ix86_function_arg_advance): Do not call
3550         chkp_type_bounds_count if MPX is not enabled.
3552 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
3554         * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
3556 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
3558         PR target/84914
3559         * config/rs6000/rs6000.c (create_complex_muldiv): New helper
3560         function to create the function decl for complex long double
3561         multiply and divide for -mabi=ieeelongdouble.
3562         (init_float128_ieee): Call it.
3564 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
3566         PR target/85044
3567         * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
3568         -fcf-protection=branch -mibt.
3569         * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
3571 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3573         PR target/81863
3574         * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
3576 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
3578         PR target/85056
3579         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
3580         extern array declarations.
3582 2018-03-27  Richard Biener  <rguenther@suse.de>
3584         PR middle-end/84067
3585         * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
3586         explicit single_use checks.
3588 2018-03-27  Richard Biener  <rguenther@suse.de>
3590         PR tree-optimization/85082
3591         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
3592         Valueize the VUSE.
3594 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3596         * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
3597         * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
3598         Turn on fasynchronous-unwind-tables and funwind-tables.
3600 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
3602         PR target/85073
3603         * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
3604         (*bmi_blsr_<mode>_ccz): Ditto.
3606 2018-03-26  Tom de Vries  <tom@codesourcery.com>
3608         PR tree-optimization/85063
3609         * omp-general.c (offloading_function_p): New function.  Factor out
3610         of ...
3611         * omp-offload.c (pass_omp_target_link::gate): ... here.
3612         * omp-general.h (offloading_function_p): Declare.
3613         * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
3614         with attribute omp declare target for offloading functions.
3616 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
3618         PR tree-optimization/84005
3619         * tree-data-ref.h (get_base_for_alignment): Declare.
3620         * tree-data-ref.c (get_base_for_alignment_1): New function.
3621         (get_base_for_alignment): Likewise.
3622         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
3623         get_base_for_alignment to find a suitable base object, instead
3624         of always using drb->base_address.
3626 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
3628         PR inline-asm/85022
3629         * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
3630         known size by default.
3632 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
3634         PR inline-asm/85030
3635         * lra-constraints.c (process_alt_operands): Don't match BLKmode
3636         and non BLKmode operands.
3638 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3640         PR target/85026
3641         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
3642         Clean up attributes.
3644 2018-03-23  Richard Biener  <rguenther@suse.de>
3646         PR debug/85020
3647         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
3648         we are going to emit early debug for LTO.
3650 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
3652         PR inline-asm/85034
3653         * function.c (match_asm_constraints_1): Don't optimize if input
3654         doesn't satisfy general_operand predicate for output's mode.
3656         PR inline-asm/85022
3657         * alias.c (write_dependence_p): Don't require for x_canonicalized
3658         non-VOIDmode if x has VOIDmode.
3660         PR sanitizer/85029
3661         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
3662         just don't try to optimize it rather than assert it never happens.
3664 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3666         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
3667         macro expansions for definition of ST_INTERNAL_<mode> and
3668         LD_INTERNAL_<mode> builtins.
3669         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
3670         Remove prototype.
3671         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
3672         function.
3673         (altivec_expand_st_builtin): Likewise.
3674         (altivec_expand_builtin): Remove calls to deleted functions.
3675         (rs6000_address_for_altivec): Delete this function.
3676         * config/rs6000/vector.md: Remove expands for
3677         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
3679 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
3681         PR target/84826
3682         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
3683         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
3684         re-computing once computed.
3685         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
3686         (arm_init_machine_status): Initialize
3687         machine->static_chain_stack_bytes.
3689 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3691         PR target/84760
3692         * doc/extend.texi: Add four new prototypes for vec_ld.
3693         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
3694         definitions for more logical presentation.
3695         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
3696         entries for V1TI variants of __builtin_altivec_ld builtin.
3697         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
3698         handling of V1TI variant of LVX icode pattern.
3699         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
3700         (rs6000_gimple_fold_builtin): Likewise.
3701         (altivec_init_builtins): Add code to define
3702         __builtin_altivec_lvx_v1ti function.
3704 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
3706         PR inline-asm/84941
3707         * function.c (match_asm_constraints_1): Don't do the optimization
3708         if input isn't a REG, SUBREG, MEM or constant.
3710 2018-03-22  Tom de Vries  <tom@codesourcery.com>
3712         PR tree-optimization/84956
3713         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
3714         bb_has_abnormal_pred.
3716 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
3718         PR sanitizer/85018
3719         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
3720         DECL_INITIAL (decl) to decl at the end.
3721         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
3722         adjust the comment.
3724 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
3726         * doc/extend.texi (__builtin_tgmath): Document when complex
3727         integer types are treated as _Complex _Float64.
3729 2018-03-21  Tom de Vries  <tom@codesourcery.com>
3731         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
3733 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
3735         PR tree-optimization/84960
3736         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
3737         if it is ENTRY block, move them into single succ of ENTRY in that case.
3739 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
3741         PR tree-optimization/84811
3742         * poly-int.h (poly_span_traits): Remove the T3 parameter and
3743         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
3744         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
3745         (known_subrange_p): Update accordingly.  Cast each value involved
3746         in the size comparison, rather than casting the result of the
3747         subtraction.
3749 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
3751         PR tree-optimization/84982
3752         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
3753         by flipping the least significant bit rather than all bits from
3754         bitpos to bitpos + bitsize - 1.
3756 2018-03-21  Nathan Sidwell  <nathan@acm.org>
3758         * doc/extend.texi (Deprecated Features): Remove mention of
3759         long-deleted deprecations.
3761 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3763         PR jit/84288
3764         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
3765         * configure: Regenerate.
3767 2018-03-21  Tom de Vries  <tom@codesourcery.com>
3769         PR tree-optimization/83126
3770         * tree-parloops.c (num_phis): New function.
3771         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
3773 2018-03-21  Nathan Sidwell  <nathan@acm.org>
3775         * doc/extend.texi (Deprecated Features): Update deprecated flags,
3776         mention anon-struct/union members and trailing attributes.
3778 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
3780         PR tree-optimization/84969
3781         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
3782         builtin memset partitions if they set different rhs values.
3784 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
3786         PR rtl-optimization/84989
3787         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
3788         VEC_DUPLICATE with scalar result mode.
3790 2018-03-21  Martin Liska  <mliska@suse.cz>
3792         PR ipa/84963
3793         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
3794         not intended return statement.
3796 2018-03-21  Martin Liska  <mliska@suse.cz>
3798         PR target/84988
3799         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
3800         (chkp_find_bound_slots_1): Limit number of iterations.
3802 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
3804         PR target/84838
3805         * Minor grammar fixes for x86 options.
3807 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
3809         PR debug/84875
3810         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
3811         holding REG_CFA_RESTORE notes, instead turn them into a USE.
3813 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
3815         PR target/83789
3816         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
3817         (altivec_lvx_<mode>_1op): Likewise.
3818         (altivec_stvx_<mode>_2op): Likewise.
3819         (altivec_stvx_<mode>_1op): Likewise.
3820         (altivec_lvx_<VM2:mode>): New define_expand.
3821         (altivec_stvx_<VM2:mode>): Likewise.
3822         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
3823         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
3824         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
3825         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
3826         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
3827         (rs6000_gen_lvx): Likewise.
3828         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
3829         (altivec_expand_stv_builtin): Likewise.
3830         (altivec_expand_builtin): Likewise.
3831         * config/rs6000/vector.md: Likewise.
3833 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3835         PR target/82518
3836         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
3837         BYTES_BIG_ENDIAN.
3839 2018-03-20  Richard Biener  <rguenther@suse.de>
3841         PR target/84986
3842         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
3843         sign-conversions as zero, fall back to standard scalar_stmt
3844         cost for the rest.
3846 2018-03-20  Martin Liska  <mliska@suse.cz>
3848         PR ipa/84825
3849         * predict.c (rebuild_frequencies): Handle case when we have
3850         PROFILE_ABSENT, but flag_guess_branch_prob is false.
3852 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
3854         PR target/84990
3855         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
3856         flag_section_anchors.
3857         * varasm.c (use_blocks_for_decl_p): Remove hack for
3858         dw2_force_const_mem.
3860         PR target/84845
3861         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
3862         to ...
3863         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
3864         be created, use lowpart_subreg of operands[0] rather than operands[0]
3865         itself.
3866         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
3867         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
3868         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
3869         and n constraint instead of aarch64_shift_imm_di and Usd.
3870         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
3871         (*aarch64_<optab>_reg_minus<mode>3): ... this.
3873 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
3875         PR target/82989
3876         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
3877         to favor GPR over NEON registers.
3878         (<shift>di3_neon): Likewise.
3880 2018-03-20  Tom de Vries  <tom@codesourcery.com>
3882         PR target/84952
3883         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
3884         (nvptx_process_pars): Emit bar.sync asap and alap.
3886 2018-03-20  Tom de Vries  <tom@codesourcery.com>
3888         PR target/84954
3889         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
3890         seen_label if seen_label is already set.
3892 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
3894         PR target/84945
3895         * config/i386/i386.c (fold_builtin_cpu): For features above 31
3896         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
3897         Use 1U instead of 1.  Formatting fixes.
3899         PR c/84953
3900         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
3901         instead of TREE_TYPE (s1) for the return value.
3903 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
3905         PR tree-optimization/84946
3906         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
3907         bitsize + bitsize in poly_uint64 rather than poly_int64.
3909         PR sanitizer/78651
3910         * dwarf2asm.c: Include fold-const.c.
3911         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
3912         of decl rather than decl itself.
3914         PR rtl-optimization/84643
3915         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
3917 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
3919         PR sanitizer/78651
3920         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
3921         calling assemble_variable.
3923 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
3925         PR target/81647
3926         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
3927         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
3929 2018-03-19  Jim Wilson  <jimw@sifive.com>
3931         PR bootstrap/84856
3932         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
3933         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
3934         (riscv_first_stack_step): Likewise.
3935         (riscv_option_override): Use STACK_BOUNDARY instead of
3936         MIN_STACK_BOUNDARY.
3937         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
3938         MIN_STACK_BOUNDARY.
3939         (BIGGEST_ALIGNMENT): Set to 128.
3940         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
3941         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
3942         STACK_BOUNDARY.
3944 2018-03-19  Richard Biener  <rguenther@suse.de>
3946         PR tree-optimization/84933
3947         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
3948         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
3950 2018-03-19  Richard Biener  <rguenther@suse.de>
3952         PR tree-optimization/84859
3953         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
3954         (cond_if_else_store_replacement): Perform sinking operation on
3955         single-store BBs regardless of MAX_STORES_TO_SINK setting.
3956         Generalize what a BB with a single eligible store is.
3958 2018-03-19  Richard Biener  <rguenther@suse.de>
3960         PR tree-optimization/84929
3961         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
3962         chrec_is_positive against non-chrec arg.
3964 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
3966         PR target/84711
3967         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
3969 2018-03-18  Martin Liska  <mliska@suse.cz>
3971         PR rtl-optimization/84635
3972         * regrename.c (build_def_use): Use matches_mode only when
3973         matches >= 0.
3975 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
3977         PR tree-optimization/84913
3978         * tree-vect-loop.c (vectorizable_reduction): Don't try to
3979         vectorize chains of COND_EXPRs.
3981 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
3983         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
3985 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
3987         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
3989 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
3991         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
3993 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
3994             Kito Cheng  <kito.cheng@gmail.com>
3996         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
3997         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
3998         (nds32_adjust_reg_alloc_order): New function.
3999         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
4001 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
4003         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
4004         nds32_print_operand, nds32_print_operand_address): Use
4005         HOST_WIDE_INT_PRINT_DEC instead.
4007 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
4009         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
4011 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
4013         PR target/84902
4014         * config/i386/i386.c (initial_ix86_tune_features,
4015         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
4016         unsigned long long.
4017         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
4018         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
4019         rather than 1u << ix86_tune.  Formatting fix.
4020         (ix86_option_override_internal): Change ix86_arch_mask from
4021         unsigned int to unsigned HOST_WIDE_INT, initialize to
4022         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
4023         (ix86_function_specific_restore): Likewise.
4025 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
4027         PR target/84899
4028         * postreload.c (reload_combine_recognize_pattern): Perform
4029         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
4030         truncate_int_for_mode the result for the destination's mode.
4032         PR c/84909
4033         * hsa-gen.c (mem_type_for_type): Fix comment typo.
4034         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
4035         Likewise.
4036         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
4037         Likewise.
4039 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
4041         PR target/84876
4042         * lra-assigns.c (lra_split_hard_reg_for): Don't use
4043         regno_allocno_class_array and sorted_pseudos.
4044         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
4045         insns where regno is used.
4047 2018-03-16  Martin Liska  <mliska@suse.cz>
4049         PR ipa/84833
4050         * multiple_target.c (create_dispatcher_calls): Redirect
4051         reference in the symbol table.
4053 2018-03-16  Martin Liska  <mliska@suse.cz>
4055         PR ipa/84722
4056         * multiple_target.c (create_dispatcher_calls): Redirect also
4057         an alias.
4059 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
4061         PR c++/79937
4062         PR c++/82410
4063         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
4064         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
4065         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
4067 2018-03-16  Julia Koval  <julia.koval@intel.com>
4069         * doc/invoke.texi (Skylake Server): Add CLWB.
4070         Cannonlake): Remove CLWB.
4072 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
4074         PR tree-optimization/84841
4075         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
4076         1 << 3.
4077         (FLOAT_ONE_CONST_TYPE): Define.
4078         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
4079         (sort_by_operand_rank): Put entries with higher constant_type last
4080         rather than first to match comments.
4082 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
4084         * config/nios2/nios2.md (movsi_internal): Fix thinko in 
4085         split predicate.
4087 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
4089         PR c++/79085
4090         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
4091         check and use address of target always.
4093 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
4095         PR target/84574
4096         * config/i386/i386.c (indirect_thunk_needed): Update comments.
4097         (indirect_thunk_bnd_needed): Likewise.
4098         (indirect_thunks_used): Likewise.
4099         (indirect_thunks_bnd_used): Likewise.
4100         (indirect_return_needed): New.
4101         (indirect_return_bnd_needed): Likewise.
4102         (output_indirect_thunk_function): Add a bool argument for
4103         function return.
4104         (output_indirect_thunk_function): Don't generate alias for
4105         function return thunk.
4106         (ix86_code_end): Call output_indirect_thunk_function to generate
4107         function return thunks.
4108         (ix86_output_function_return): Set indirect_return_bnd_needed
4109         and indirect_return_needed instead of indirect_thunk_bnd_needed
4110         and indirect_thunk_needed.
4112 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
4114         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
4115         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
4116         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
4118 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
4119             Paul Hua <paul.hua.gm@gmail.com>
4121         PR c/84852
4122         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
4124 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
4126         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
4127         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
4128         resp. SFmode cases.
4130 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
4132         PR target/84711
4133         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
4134         instead of GET_MODE_SIZE when comparing Units.
4136 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
4138         PR target/68256
4139         * varasm.c (hash_section): Return an unchangeble hash value
4140         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
4141         Return !aarch64_can_use_per_function_literal_pools_p ().
4143 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
4145         PR target/84860
4146         * optabs.c (emit_conditional_move): Pass address of cmode's copy
4147         rather than address of cmode as last argument to prepare_cmp_insn.
4149 2018-03-15  Julia Koval  <julia.koval@intel.com>
4151         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
4152         F_AVX512VNNI, F_AVX512BITALG): New.
4154 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
4156         PR target/83451
4157         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
4158         insn for floating-point loads and stores.
4160 2018-03-14  Carl Love  <cel@us.ibm.com>
4162         * config/rs6000/rs6000-c.c: Add macro definitions for
4163         ALTIVEC_BUILTIN_VEC_PERMXOR.
4164         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
4165         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
4166         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
4167         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
4168         UNSPEC_VPERMXOR.
4169         * config/doc/extend.texi: Add prototypes for vec_permxor.
4171 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
4173         PR c/84852
4174         * diagnostic-show-locus.c (class layout_point): Convert m_line
4175         from int to linenum_type.
4176         (line_span::comparator): Use linenum "compare" function when
4177         comparing line numbers.
4178         (test_line_span): New function.
4179         (layout_range::contains_point): Convert param "row" from int to
4180         linenum_type.
4181         (layout_range::intersects_line_p): Likewise.
4182         (layout::will_show_line_p): Likewise.
4183         (layout::print_source_line): Likewise.
4184         (layout::should_print_annotation_line_p): Likewise.
4185         (layout::print_annotation_line): Likewise.
4186         (layout::print_leading_fixits): Likewise.
4187         (layout::annotation_line_showed_range_p): Likewise.
4188         (struct line_corrections): Likewise for field m_row.
4189         (line_corrections::line_corrections): Likewise for param "row".
4190         (layout::print_trailing_fixits): Likewise.
4191         (layout::get_state_at_point): Likewise.
4192         (layout::get_x_bound_for_row): Likewise.
4193         (layout::print_line): Likewise.
4194         (diagnostic_show_locus): Likewise for locals "last_line" and
4195         "row".
4196         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
4197         * input.c (selftest::test_linenum_comparisons): New function.
4198         (selftest::input_c_tests): Call it.
4199         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
4200         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
4201         * selftest.h (ASSERT_GT): New macro.
4202         (ASSERT_GT_AT): New macro.
4203         (ASSERT_LT): New macro.
4204         (ASSERT_LT_AT): New macro.
4206 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
4208         PR rtl-optimization/84780
4209         * combine.c (distribute_links): Don't make a link based on pc_rtx.
4211 2018-03-14  Martin Liska  <mliska@suse.cz>
4213         * tree.c (record_node_allocation_statistics): Use
4214         get_stats_node_kind.
4215         (get_stats_node_kind): New function extracted from
4216         record_node_allocation_statistics.
4217         (free_node): Use get_stats_node_kind.
4219 2018-03-14  Richard Biener  <rguenther@suse.de>
4221         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
4222         that the value-set of ANTIC_IN doesn't grow.
4224         Revert
4225         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
4226         member.
4227         (BB_VISITED_WITH_VISITED_SUCCS): New define.
4228         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
4230 2018-03-14  Julia Koval  <julia.koval@intel.com>
4232         * config.gcc (icelake-client, icelake-server): New.
4233         (icelake): Remove.
4234         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
4235         (initial_ix86_arch_features): Ditto.
4236         (PTA_SKYLAKE): Add SGX.
4237         (PTA_ICELAKE): Remove.
4238         (PTA_ICELAKE_CLIENT): New.
4239         (PTA_ICELAKE_SERVER): New.
4240         (ix86_option_override_internal): Split up icelake on icelake client and
4241         icelake server.
4242         (get_builtin_code_for_version): Ditto.
4243         (fold_builtin_cpu): Ditto.
4244         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
4245         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
4246         * config/i386/i386.h (processor_type): Ditto.
4247         * doc/invoke.texi: Ditto.
4249 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
4251         PR sanitizer/83392
4252         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
4253         INTEGER_CST offset, add it together with bitpos / 8 and
4254         sign extend based on POINTER_SIZE.
4256         PR target/84844
4257         Revert
4258         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
4260         PR target/78090
4261         * config/i386/constraints.md (Yc): New register constraint.
4262         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
4263         Use Yc constraint for alternative 2 of operand 0.  Remove
4264         preferred_for_speed attribute.
4266 2018-03-14  Richard Biener  <rguenther@suse.de>
4268         PR tree-optimization/84830
4269         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
4270         with the old one to avoid oscillations.
4272 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
4274         PR target/83712
4275         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
4276         pseudos.
4277         (assign_by_spills): Return a flag of reload assignment failure.
4278         Do not process the reload assignment failures.  Do not spill other
4279         reload pseudos if they has the same reg class.  Update n if
4280         necessary.
4281         (lra_assign): Add a return arg.  Set up from the result of
4282         assign_by_spills call.
4283         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
4284         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
4285         usage_insns if it is not NULL.
4286         (spill_hard_reg_in_range): New function.
4287         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
4288         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
4289         function prototypes.
4290         (lra_assign): Change prototype.
4291         * lra.c (lra): Add code to deal with fails by splitting hard reg
4292         live ranges.
4294 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
4296         * config/riscv/riscv.opt (mrelax): New option.
4297         * config/riscv/riscv.c (riscv_file_start): Emit ".option
4298         "norelax" when riscv_mrelax is disabled.
4299         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
4301 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
4303         PR target/84743
4304         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
4305         reassociation for int modes.
4307 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
4309         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
4310         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
4311         for big-endian.
4312         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
4313         * config/aarch64/aarch64-sve.md
4314         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
4315         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
4316         (*extend<mode><Vwide>2): Rename to...
4317         (aarch64_sve_extend<mode><Vwide>2): ...this.
4318         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
4319         renaming the old pattern to...
4320         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
4321         unsigned packs.
4322         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
4323         define_expand, renaming the old pattern to...
4324         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
4325         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
4326         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
4327         account when deciding which SVE instruction the optab should use.
4328         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
4330 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
4332         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
4333         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
4334         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
4335         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
4336         (tlsdesc_small_<mode>): Turn a define_expand and use
4337         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
4338         (tlsdesc_small_advsimd_<mode>): ...this.
4339         (tlsdesc_small_sve_<mode>): New pattern.
4341 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
4343         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
4344         (UNSPEC_UMUL_HIGHPART): New constants.
4345         (MUL_HIGHPART): New int iteraor.
4346         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
4347         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
4348         define_expand.
4349         (*<su>mul<mode>3_highpart): New define_insn.
4351 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
4353         PR lto/84805
4354         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
4355         incomplete types.
4357 2018-03-13  Martin Liska  <mliska@suse.cz>
4359         PR ipa/84658.
4360         * (sem_item_optimizer::sem_item_optimizer): Initialize new
4361         vector.
4362         (sem_item_optimizer::~sem_item_optimizer): Release it.
4363         (sem_item_optimizer::merge_classes): Register variable aliases.
4364         (sem_item_optimizer::fixup_pt_set): New function.
4365         (sem_item_optimizer::fixup_points_to_sets): Likewise.
4366         * ipa-icf.h: Declare new variables and functions.
4368 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
4370         PR middle-end/84834
4371         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
4372         integer_pow2p@2 and test integer_pow2p in condition.
4373         (A < 0 ? C : 0): Similarly for @1.
4375         PR middle-end/84831
4376         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
4377         characters starting at p contain '\0' character, don't look beyond
4378         that.
4380         PR target/84827
4381         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
4382         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
4384         PR target/84828
4385         * reg-stack.c (change_stack): Change update_end var from int to
4386         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
4387         also call set_block_for_insn on the newly added insns and rescan.
4389         PR target/84786
4390         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
4391         on the last operand.
4393         PR c++/84704
4394         * tree.c (stabilize_reference_1): Return save_expr (e) for
4395         STATEMENT_LIST even if it doesn't have side-effects.
4397 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
4399         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
4401 2018-03-12  Renlin Li  <renlin.li@arm.com>
4403         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
4404         aarch64_output_scalar_simd_mov_immediate.
4406 2018-03-12  Martin Sebor  <msebor@redhat.com>
4408         PR tree-optimization/83456
4409         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
4410         for perfectly overlapping calls to memcpy.
4411         (gimple_fold_builtin_memory_chk): Same.
4412         (gimple_fold_builtin_strcpy): Handle no-warning.
4413         (gimple_fold_builtin_stxcpy_chk): Same.
4414         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
4416 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
4418         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
4419         parameter.  Use it for SFmode.
4420         (rs6000_function_arg_advance_1): Adjust.
4421         (rs6000_function_arg): Adjust.
4422         (rs6000_gimplify_va_arg): Pass false for that new parameter.
4424 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
4426         PR rtl-optimization/84169
4427         PR rtl-optimization/84780
4428         * combine.c (can_combine_p): Check for a 2-insn combination whether
4429         the destination register is used between the two insns, too.
4431 2018-03-12  Richard Biener  <rguenther@suse.de>
4433         PR tree-optimization/84803
4434         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
4435         for refs DR analysis didn't process.
4437 2018-03-12  Richard Biener  <rguenther@suse.de>
4439         PR tree-optimization/84777
4440         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
4441         force-vectorize loops ignore whether we are optimizing for size.
4443 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
4445         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
4446         (TARGET_MD_ASM_ADJUST): Define.
4448 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
4449             Kito Cheng  <kito.cheng@gmail.com>
4450             Chung-Ju Wu  <jasonwucj@gmail.com>
4452         * config/nds32/nds32.c (nds32_compute_stack_frame,
4453         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
4454         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
4455         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
4456         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
4457         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
4458         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
4459         * config/nds32/nds32.md (prologue, epilogue): Use macro
4460         NDS32_V3PUSH_AVAILABLE_P to do checking.
4462 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
4464         PR debug/58150
4465         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
4466         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
4467         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
4468         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
4469         addition of most attributes on !orig_type_die or the attribute not
4470         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
4472 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
4473             Chung-Ju Wu  <jasonwucj@gmail.com>
4475         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
4476         __NDS32_VH__ macro.
4477         * config/nds32/nds32.opt (mvh): New option.
4479 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
4480             Chung-Ju Wu  <jasonwucj@gmail.com>
4482         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
4483         function.
4484         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
4485         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
4486         definition.
4488 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
4489             Chung-Ju Wu  <jasonwucj@gmail.com>
4491         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
4492         function.
4493         * config/nds32/nds32-multiple.md (strlensi): New pattern.
4494         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
4496 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
4497             Kito Cheng  <kito.cheng@gmail.com>
4498             Chung-Ju Wu  <jasonwucj@gmail.com>
4500         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
4501         UNSPEC_FFMISM and UNSPEC_FLMISM.
4502         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
4503         for ffb, ffmism and flmism.
4504         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
4505         (unspec_ffmism): Ditto.
4506         (unspec_flmism): Ditto.
4507         (nds32_expand_builtin_impl): Check if string extension is available.
4508         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
4509         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
4511 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
4513         Reverting patch:
4514         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
4516         PR target/83712
4517         * lra-assigns.c (assign_by_spills): Return a flag of reload
4518         assignment failure.  Do not process the reload assignment
4519         failures.  Do not spill other reload pseudos if they has the same
4520         reg class.
4521         (lra_assign): Add a return arg.  Set up from the result of
4522         assign_by_spills call.
4523         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
4524         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
4525         usage_insns if it is not NULL.
4526         (spill_hard_reg_in_range): New function.
4527         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
4528         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
4529         function prototypes.
4530         (lra_assign): Change prototype.
4531         * lra.c (lra): Add code to deal with fails by splitting hard reg
4532         live ranges.
4534 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
4536         PR target/84807
4537         * config/i386/i386.opt: Replace Enforcment with Enforcement.
4539 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
4541         PR debug/84620
4542         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
4543         (dw_val_node): Add val_symbolic_view.
4544         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
4545         (symview_upper_bound): New.
4546         (new_line_info_table): Initialize symviews_since_reset.
4547         (dwarf2out_source_line): Count symviews_since_reset and set
4548         symview_upper_bound.
4549         (dw_val_equal_p): Handle symview.
4550         (add_AT_symview): New.
4551         (print_dw_val): Handle symview.
4552         (attr_checksum, attr_checksum_ordered): Likewise.
4553         (same_dw_val_p, size_of_die): Likewise.
4554         (value_format, output_die): Likewise.
4555         (add_high_low_attributes): Use add_AT_symview for entry_view.
4556         (dwarf2out_finish): Reset symview_upper_bound, clear
4557         zero_view_p.
4559 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
4561         PR target/83969
4562         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
4563         Add strict argument and use it.
4564         (rs6000_split_multireg_move): Update for new strict argument.
4565         (mem_operand_gpr): Disallow all non-offsettable addresses.
4566         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
4568 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
4570         PR target/84772
4571         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
4572         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
4573         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
4575         PR c++/84767
4576         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
4577         decl, use remap_type if we want to use the type.
4579 2018-03-09  Martin Sebor  <msebor@redhat.com>
4581         PR tree-optimization/84526
4582         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
4583         Remove dead code.
4584         (builtin_access::generic_overlap): Be prepared to handle non-array
4585         base objects.
4587 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
4589         PR rtl-optimization/84682
4590         * lra-constraints.c (process_address_1): Check is_address flag
4591         for address constraints.
4592         (process_alt_operands): Likewise.
4593         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
4594         preprocess_constraints.
4595         * recog.h (preprocess_constraints): Add oploc parameter.
4596         Adjust callers.
4597         * recog.c (preprocess_constraints): Test address_operand for
4598         CT_ADDRESS constraints.
4600 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
4602         PR target/83712
4603         * lra-assigns.c (assign_by_spills): Return a flag of reload
4604         assignment failure.  Do not process the reload assignment
4605         failures.  Do not spill other reload pseudos if they has the same
4606         reg class.
4607         (lra_assign): Add a return arg.  Set up from the result of
4608         assign_by_spills call.
4609         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
4610         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
4611         usage_insns if it is not NULL.
4612         (spill_hard_reg_in_range): New function.
4613         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
4614         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
4615         function prototypes.
4616         (lra_assign): Change prototype.
4617         * lra.c (lra): Add code to deal with fails by splitting hard reg
4618         live ranges.
4620 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4622         PR target/83193
4623         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
4624         Accept complain bool parameter.  Only emit errors if it is true.
4625         (arm_parse_cpu_option_name): Likewise.
4626         (arm_target_thumb_only): Adjust callers of the above.
4627         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
4628         prototype to take a default true bool parameter.
4629         (arm_parse_arch_option_name): Likewise.
4631 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
4632             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4634         PR jit/64089
4635         PR jit/84288
4636         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
4637         * configure: Regenerate.
4638         * configure.ac ("linker --version-script option"): New.
4639         ("linker soname option"): New.
4641 2018-03-09  Richard Biener  <rguenther@suse.de>
4643         PR tree-optimization/84775
4644         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
4645         immediate uses of predicate stmts and mark them modified.
4647         Revert
4648         PR tree-optimization/84178
4649         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
4650         to caller.
4651         (version_loop_for_if_conversion): Delay update_ssa call.
4652         (tree_if_conversion): Delay update_ssa until after predicate
4653         insertion.
4655 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
4657         PR target/84763
4658         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
4659         when the function accesses prior frames.
4661 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
4663         PR debug/84456
4664         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
4665         gen_llsym, otherwise call maybe_gen_llsym.
4667         PR inline-asm/84742
4668         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
4669         has ',' character inside of it.
4671 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4673         PR target/84748
4674         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
4675         as clobbering CC_REGNUM.
4677 2018-03-08  Richard Biener  <rguenther@suse.de>
4679         PR middle-end/84552
4680         * tree-scalar-evolution.c: Include tree-into-ssa.h.
4681         (follow_copies_to_constant): Do not follow SSA names registered
4682         for update.
4684 2018-03-08  Richard Biener  <rguenther@suse.de>
4686         PR tree-optimization/84178
4687         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
4688         to caller.
4689         (version_loop_for_if_conversion): Delay update_ssa call.
4690         (tree_if_conversion): Delay update_ssa until after predicate
4691         insertion.
4693 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
4695         PR tree-optimization/84178
4696         * tree-if-conv.c (release_bb_predicate): Remove the
4697         the assertion that the stmts have NULL use_ops.
4698         Discard the statements, asserting that they haven't
4699         yet been added to a BB.
4701 2018-03-08  Richard Biener  <rguenther@suse.de>
4703         PR tree-optimization/84746
4704         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
4705         (phi_translate): Pass in destination ANTIC_OUT set.
4706         (phi_translate_1): Likewise.  For a simplified result lookup
4707         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
4708         (phi_translate_set): Adjust.
4709         (do_pre_regular_insertion): Likewise.
4710         (do_pre_partial_partial_insertion): Likewise.
4712 2018-03-08  Martin Liska  <mliska@suse.cz>
4714         PR gcov-profile/84735
4715         * doc/gcov.texi: Document usage of profile files.
4716         * gcov-io.h: Document changes in the format.
4718 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
4720         PR debug/84404
4721         PR debug/84408
4722         * dwarf2out.c (struct dw_line_info_table): Update comments for
4723         view == -1.
4724         (FORCE_RESET_NEXT_VIEW): New.
4725         (FORCE_RESETTING_VIEW_P): New.
4726         (RESETTING_VIEW_P): Check for -1 too.
4727         (ZERO_VIEW_P): Likewise.
4728         (new_line_info_table): Force-reset next view.
4729         (dwarf2out_begin_function): Likewise.
4730         (dwarf2out_source_line): Simplify zero_view_p initialization.
4731         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
4732         view directly.  Omit view when omitting .loc at line 0.
4734 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
4736         PR tree-optimization/84740
4737         * tree-switch-conversion.c (process_switch): Call build_constructors
4738         only if info.phi_count is non-zero.
4740         PR tree-optimization/84739
4741         * tree-tailcall.c (find_tail_calls): Check call arguments against
4742         DECL_ARGUMENTS (current_function_decl) rather than
4743         DECL_ARGUMENTS (func) when checking for tail recursion.
4745 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
4747         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
4748         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
4749         Volker Reichelt's entry and add entries for people that perform
4750         GCC fuzzy testing and report numerous bugs.
4752 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
4754         PR target/82411
4755         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
4756         readonly data in sdata, if that is disabled.
4757         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
4758         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
4759         -mreadonly-in-sdata option.
4761 2018-03-07  Martin Sebor  <msebor@redhat.com>
4763         PR tree-optimization/84468
4764         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
4765         basic block when looking for nul assignment.
4767 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
4769         PR target/84277
4770         * except.h (output_function_exception_table): Adjust prototype.
4771         * except.c (output_function_exception_table): Remove FNNAME parameter
4772         and add SECTION parameter.  Ouput one part of the table at a time.
4773         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
4774         the first part of the exception table and emit unwind directives.
4775         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
4776         (i386_pe_seh_cold_init): Likewise.
4777         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
4778         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
4779         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
4780         (ix86_output_call_insn): Emit a nop in one more case for SEH.
4781         * config/i386/winnt.c: Include except.h.
4782         (struct seh_frame_state): Add reg_offset, after_prologue and
4783         in_cold_section fields.
4784         (i386_pe_seh_end_prologue): Set seh->after_prologue.
4785         (i386_pe_seh_cold_init): New function.
4786         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
4787         to seh->in_cold_section.
4788         (seh_emit_push): Record the offset of the push.
4789         (seh_emit_save): Record the offet of the save.
4790         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
4791         Test seh->after_prologue to disregard the epilogue.
4792         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
4793         (i386_pe_end_cold_function): New function.
4795 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
4797         PR fortran/84565
4798         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
4799         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
4801         PR c++/84704
4802         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
4803         on tmp_var.
4804         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
4805         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
4807         PR middle-end/84723
4808         * multiple_target.c: Include tree-inline.h and intl.h.
4809         (expand_target_clones): Diagnose and fail if node->definition and
4810         !tree_versionable_function_p (node->decl).
4812 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
4814         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
4815         sprint_ul.
4816         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
4817         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
4818         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
4820 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
4822         PR target/84710
4823         * combine.c (try_combine): Use reg_or_subregno instead of handling
4824         just paradoxical SUBREGs and REGs.
4826 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
4828          * config/arc/arc.c (arc_finalize_pic): Remove function.
4829          (arc_must_save_register): We use single base PIC register, remove
4830          checks to save/restore the PIC register.
4831          (arc_expand_prologue): Likewise.
4832          * config/arc/arc-protos.h (arc_set_default_type_attributes):
4833          Remove.
4834          (arc_verify_short): Likewise.
4835          (arc_attr_type): Likewise.
4836          * config/arc/arc.c (arc_set_default_type_attributes): Remove.
4837          (walk_stores): Likewise.
4838          (arc_address_cost): Make it static.
4839          (arc_verify_short): Likewise.
4840          (branch_dest): Likewise.
4841          (arc_attr_type): Likewise.
4842          * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
4843          (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
4844          (arc_final_prescan_insn): Remove inserting the nops due to
4845          hardware hazards.  It is done in reorg step.
4846          (insn_length_variant_t): Remove.
4847          (insn_length_parameters_t): Likewise.
4848          (arc_insn_length_parameters): Likewise.
4849          (arc_get_insn_variants): Likewise.
4850          * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
4852 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
4854         PR inline-asm/84683
4855         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
4856         assertion failure.
4858         PR tree-optimization/84687
4859         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
4860         on new_node->decl.
4861         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
4863 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
4865         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
4866         Rename to ppc_speculation_barrier.
4867         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
4868         __builtin_ppc_speculation_barrier.
4870 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
4872         PR target/84700
4873         * combine.c (combine_simplify_rtx): Don't try to simplify if
4874         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
4875         are equal to x.
4877 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
4879         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
4880         to 32 bytes when compiling for POWER9.
4882 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
4884         PR target/84564
4885         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
4886         regparm >= 3 with no arg reg available also for calls with
4887         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
4889         PR target/84524
4890         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
4891         orig,vex.
4892         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
4894 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
4896         PR target/84264
4897         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
4899 2018-03-05  Richard Biener  <rguenther@suse.de>
4901         PR tree-optimization/84486
4902         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
4903         When inserting a __builtin_assume_aligned call set the LHS
4904         SSA name alignment info accordingly.
4906 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
4908         PR tree-optimization/84114
4909         * config/aarch64/aarch64.c (aarch64_reassociation_width)
4910         Avoid reassociation of FLOAT_MODE addition.
4912 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
4914         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
4915         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
4916         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
4917         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
4918         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
4919         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
4920         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
4921         and -mwbnoinvd.
4922         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
4923         __builtin_ia32_wbinvd): New builtins.
4924         (SPECIAL_ARGS2): New.
4925         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
4926         (SPECIAL_ARGS2): New.
4927         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
4928         (ix86_valid_target_attribute_inner_p): Ditto.
4929         (ix86_init_mmx_sse_builtins): Add special_args2.
4930         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
4931         TARGET_WBNOINVD_P): New.
4932         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
4933         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
4934         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
4935         * config/i386/immintrin.h (_wbinvd): New intrinsic.
4936         * config/i386/pconfigintrin.h: New file.
4937         * config/i386/wbnoinvdintrin.h: Ditto.
4938         * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
4939         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
4941 2018-03-05  Richard Biener  <rguenther@suse.de>
4943         PR tree-optimization/84670
4944         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
4945         member.
4946         (BB_VISITED_WITH_VISITED_SUCCS): New define.
4947         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
4948         (compute_antic_aux): Only assert the number of values in ANTIC_IN
4949         doesn't grow if all successors (recursively) were visited at least
4950         once.
4952 2018-03-05  Richard Biener  <rguenther@suse.de>
4954         PR tree-optimization/84650
4955         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
4956         if executed in the loop pipeline.
4958 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
4960         * doc/configfiles.texi (Configuration Files): Move info about
4961         conditionalizing $target-protos.h to...
4962         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
4963         differs from $target-protos.h.
4965 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
4966             Chung-Ju Wu  <jasonwucj@gmail.com>
4968         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
4969         * config/nds32/nds32-multiple.md (setmemsi): Define.
4970         * config/nds32/nds32-memory-manipulation.c
4971         (nds32_gen_dup_4_byte_to_word_value): New.
4972         (emit_setmem_word_loop): New.
4973         (emit_setmem_byte_loop): New.
4974         (nds32_expand_setmem_loop): New.
4975         (nds32_expand_setmem_loop_v3m): New.
4976         (nds32_expand_setmem_unroll): New.
4977         (nds32_expand_setmem): New.
4979 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
4980             Chung-Ju Wu  <jasonwucj@gmail.com>
4982         * config/nds32/nds32-memory-manipulation.c
4983         (nds32_emit_load_store): New.
4984         (nds32_emit_post_inc_load_store): New.
4985         (nds32_emit_mem_move): New.
4986         (nds32_emit_mem_move_block): New.
4987         (nds32_expand_movmemsi_loop_unknown_size): New.
4988         (nds32_expand_movmemsi_loop_known_size): New.
4989         (nds32_expand_movmemsi_loop): New.
4990         (nds32_expand_movmemsi_unroll): New.
4991         (nds32_expand_movmemqi): Rename ...
4992         (nds32_expand_movmemsi): ... to this.
4993         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
4994         (movmemsi): ... to this.
4995         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
4996         (nds32_expand_movmemsi): ... to this.
4998 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
4999             Monk Chiang  <sh.chiang04@gmail.com>
5000             Chung-Ju Wu  <jasonwucj@gmail.com>
5002         * config/nds32/nds32-protos.h
5003         (nds32_expand_load_multiple): New arguments.
5004         (nds32_expand_store_multiple): Ditto.
5005         (nds32_valid_multiple_load_store): Rename ...
5006         (nds32_valid_multiple_load_store_p): ... to this.
5007         * config/nds32/nds32-memory-manipulation.c
5008         (nds32_expand_load_multiple): Refine implementation.
5009         (nds32_expand_store_multiple): Ditto.
5010         * config/nds32/nds32-multiple.md
5011         (load_multiple): Update nds32_expand_load_multiple interface.
5012         (store_multiple): Update nds32_expand_store_multiple interface.
5013         * config/nds32/nds32-predicates.c
5014         (nds32_valid_multiple_load_store): Rename ...
5015         (nds32_valid_multiple_load_store_p): ... to this and refine
5016         implementation.
5017         * config/nds32/predicates.md
5018         (nds32_load_multiple_and_update_address_operation): New predicate.
5019         (nds32_store_multiple_and_update_address_operation): New predicate.
5021 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
5022             Chung-Ju Wu  <jasonwucj@gmail.com>
5024         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
5025         (combo): New attribute.
5026         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
5028 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
5030         * config/nds32/nds32.opt: Change -mcmodel= default value.
5032 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
5033             Monk Chiang  <sh.chiang04@gmail.com>
5034             Chung-Ju Wu  <jasonwucj@gmail.com>
5036         * config/nds32/constants.md (unspec_element): New enum.
5037         * config/nds32/constraints.md (Umw): New constraint.
5038         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
5039         * config/nds32/nds32-intrinsic.md: Likewise.
5040         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
5041         (nds32_valid_smw_lwm_base_p): New.
5042         (nds32_output_smw_single_word): New.
5043         (nds32_output_lmw_single_word): New.
5044         (nds32_expand_unaligned_load): New.
5045         (nds32_expand_unaligned_store): New.
5046         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
5047         (nds32_output_smw_single_word): Declare.
5048         (nds32_output_lmw_single_word): Declare.
5049         (nds32_expand_unaligned_load): Declare.
5050         (nds32_expand_unaligned_store): Declare.
5051         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
5052         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
5053         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
5054         NDS32_BUILTIN_UASTORE_DW.
5055         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
5056         predicate.
5058 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
5059             Kito Cheng  <kito.cheng@gmail.com>
5060             Chung-Ju Wu  <jasonwucj@gmail.com>
5062         * config/nds32/nds32-intrinsic.c
5063         (nds32_expand_builtin_null_ftype_reg): Delete.
5064         (nds32_expand_builtin_reg_ftype_imm): Ditto.
5065         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
5066         (nds32_read_argument): New.
5067         (nds32_legitimize_target): Ditto.
5068         (nds32_legitimize_argument): Ditto.
5069         (nds32_check_constant_argument): Ditto.
5070         (nds32_expand_unop_builtin): Ditto.
5071         (nds32_expand_unopimm_builtin): Ditto.
5072         (nds32_expand_binop_builtin): Ditto.
5073         (nds32_builtin_decl_impl): Ditto.
5074         (builtin_description): Ditto.
5075         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
5076         (nds32_init_builtins_impl): Ditto.
5077         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
5078         (nds32_builtin_decl): New.
5079         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
5080         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
5082 2018-03-02  Jeff Law  <law@redhat.com>
5084         * reorg.c (stop_search_p): Handle DEBUG_INSN.
5085         (redundant_insn, fill_simple_delay_slots): Likewise.
5086         (fill_slots_from_thread): Likewise.
5087         * resource.c (mark_referenced_resources): Likewise.
5088         (mark_set_resources, find_dead_or_set_registers): Likewise.
5090 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
5092         * substring-locations.h (format_warning_va): Formatting fix for
5093         ATTRIBUTE_GCC_DIAG.
5094         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
5095         argument.
5096         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
5097         * substring-locations.c: Include intl.h.
5098         (format_warning_va): Turned into small wrapper around
5099         format_warning_n_va, renamed to ...
5100         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
5101         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
5102         use ngettext.
5103         (format_warning_at_substring_n): New function.
5104         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
5105         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
5106         format_warning_at_substring with just a shorter name instead of
5107         const function pointer.
5108         (fmtwarn_n): New function.
5109         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
5110         appropriate, get rid of all the fmtstr temporaries, move conditionals
5111         with G_() wrapped string literals directly into fmtwarn arguments,
5112         cast dir.len to (int), formatting fixes.
5114 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
5116         * doc/invoke.texi: Remove "Cilk Plus" references.
5118 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
5119             Richard Biener  <rguenther@suse.de>
5121         PR ipa/84628
5122         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
5123         for error or warning attributes if CALL_FROM_THUNK_P is set.
5124         Formatting fixes.
5126 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
5128         PR target/56540
5129         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
5130         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
5132         PR target/56540
5133         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
5134         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
5136         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
5137         instead of -1U in last predictors element's probability member.
5139 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
5141         PR ipa/83983
5142         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
5143         arguments if they are comparable.
5145 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
5147         PR tree-optimization/84634
5148         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
5149         masks and masked_loop_p with a single loop_masks, making sure it's
5150         null for bb vectorization.
5152 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
5154         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
5155         (vect_analyze_data_ref_access): Use loop->safe_len rather than
5156         loop->force_vectorize to check whether there is no alias.
5158 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
5160         PR target/84614
5161         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
5162         prototypes.
5163         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
5164         comments.
5165         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
5166         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
5167         instead of a loop around prev_real_insn.
5168         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
5169         prev_real_insn.
5171         PR inline-asm/84625
5172         * config/i386/i386.c (ix86_print_operand): Use conditional
5173         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
5174         zero vector.
5176 2018-03-02  Richard Biener  <rguenther@suse.de>
5178         PR tree-optimization/84427
5179         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
5180         (bitmap_set_subtract_values): Rewrite to handle multiple
5181         exprs per value.
5182         (clean): Likewise.
5183         (prune_clobbered_mems): Likewise.
5184         (phi_translate): Take edge instead of pred/phiblock.
5185         (phi_translate_1): Likewise.
5186         (phi_translate_set): Likewise.  Insert all translated
5187         exprs for a value into the set, keeping possibly multiple
5188         expressions per value.
5189         (compute_antic_aux): Adjust for phi_translate changes.
5190         When intersecting union the expressions and prune those
5191         not in the final value set, keeping possibly multiple
5192         expressions per value.  Do not use value-insertion
5193         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
5194         all expressions.  Add verification that the value-sets
5195         only shrink during iteration.
5196         (compute_partial_antic_aux): Adjust for the phi_translate changes.
5197         (do_pre_regular_insertion): Likewise.
5198         (do_pre_partial_partial_insertion): Likewise.
5200 2018-03-02  Richard Biener  <rguenther@suse.de>
5202         PR target/82005
5203         * config/darwin.c (saved_debug_info_level): New static global.
5204         (darwin_asm_lto_start): Disable debug info generation for LTO out.
5205         (darwin_asm_lto_end): Restore debug info generation settings.
5207 2018-03-01  Martin Liska  <mliska@suse.cz>
5209         PR sanitizer/82484
5210         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
5211         volatile arguments.
5213 2018-03-01  Richard Biener  <rguenther@suse.de>
5215         PR debug/84645
5216         * dwarf2out.c (gen_variable_die): Properly handle late VLA
5217         type annotation with LTO when debug was disabled at compile-time.
5219 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
5221         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
5222         XINT with INTVAL.
5223         (mips_final_postscan_insn): Likewise.
5225 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
5227         PR rtl-optimization/84528
5228         * alias.c (init_alias_target): Add commentary.
5229         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
5230         a unique base value if the frame pointer is not eliminated
5231         to the stack pointer.
5233 2018-03-01  Tom de Vries  <tom@codesourcery.com>
5235         PR rtl-optimization/83327
5236         * lra-int.h (hard_regs_spilled_into): Declare.
5237         * lra.c (hard_regs_spilled_into): Define.
5238         (init_reg_info): Init hard_regs_spilled_into.
5239         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
5240         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
5241         (process_bb_lives): Handle hard_regs_spilled_into.
5242         (lra_create_live_ranges_1): Before doing liveness propagation, clear
5243         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
5245 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
5247         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
5248         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
5249         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
5250         * config/rs6000/aix72.h: New file.
5252 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
5254         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
5255         instead of warning_at with conditional singular and plural messages
5256         where possible.
5258         PR target/52991
5259         * stor-layout.c (update_alignment_for_field): For
5260         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
5261         && !DECL_PACKED (field), do the alignment update, just use
5262         only desired_align instead of MAX (type_align, desired_align)
5263         as the alignment.
5264         (place_field): Don't do known_align < desired_align handling
5265         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
5266         is non-NULL, instead do it after rli->prev_field handling and
5267         only if not within a bitfield word.  For DECL_PACKED (field)
5268         use type_align of BITS_PER_UNIT.
5270 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
5272         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
5273         superfluous parentheses and trailing spaces.
5275 2018-02-28  Richard Biener  <rguenther@suse.de>
5277         PR tree-optimization/84584
5278         * graphite-scop-detection.c (scop_detection::add_scop): Discard
5279         SCoPs with fake exit edge.
5281 2018-02-28  Martin Liska  <mliska@suse.cz>
5283         PR testsuite/84597
5284         * timevar.c (timer::print): Fix format to properly print 100%
5285         values.
5287 2018-02-28  Richard Biener  <rguenther@suse.de>
5289         PR middle-end/84607
5290         * genmatch.c (capture_info::walk_match): Do not mark
5291         captured expressions without operands as expr_p given
5292         they act more like predicates and should be subject to
5293         "lost tail" side-effect preserving.
5295 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
5297         PR rtl-optimization/81611
5298         * auto-inc-dec.c (attempt_change): Move dead note from
5299         mem_insn if it's the next use of regno
5300         (find_address): Take address use of reg holding
5301         non-incremented value.  Add parm to limit search to the named
5302         reg only.
5303         (merge_in_block): Attempt to use a mem insn that is the next
5304         use of the original regno.
5306 2018-02-27  Martin Sebor  <msebor@redhat.com>
5308         PR c++/83871
5309         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
5310         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
5312 2018-02-27  Martin Sebor  <msebor@redhat.com>
5314         PR translation/84207
5315         * diagnostic-core.h (warning_n, error_n, inform_n): Change
5316         n argument to unsigned HOST_WIDE_INT.
5317         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
5318         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
5319         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
5320         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
5322 2018-02-27  Richard Biener  <rguenther@suse.de>
5324         PR tree-optimization/84512
5325         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
5326         Do not use the estimate returned from record_stmt_cost for
5327         the scalar iteration cost but sum properly using add_stmt_cost.
5329 2018-02-27  Richard Biener  <rguenther@suse.de>
5331         PR tree-optimization/84466
5332         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
5333         Adjust last change to less strictly validate use operands.
5335 2018-02-27  Martin Liska  <mliska@suse.cz>
5337         PR gcov-profile/84548
5338         * gcov.c (process_file): Allow partial overlap and consider it
5339         also as group functions.
5340         (output_lines): Properly calculate range of lines for a group.
5342 2018-02-27  Martin Liska  <mliska@suse.cz>
5344         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
5345         'ggc' suffixes.  Change first column width.
5346         (timer::print): Fix formatting of the column.
5348 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
5350         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
5351         preserve inline entry blocks for the sake of debug inline
5352         entry point markers alone.
5353         (remove_unused_locals): Suggest in comments a better place to
5354         force the preservation of inline entry blocks that are
5355         otherwise unused, but do not preserve them.
5357 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
5359         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
5361 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
5363         PR target/84039
5364         * config/i386/constraints.md (Bs): Replace
5365         ix86_indirect_branch_register with
5366         TARGET_INDIRECT_BRANCH_REGISTER.
5367         (Bw): Likewise.
5368         * config/i386/i386.md (indirect_jump): Likewise.
5369         (tablejump): Likewise.
5370         (*sibcall_memory): Likewise.
5371         (*sibcall_value_memory): Likewise.
5372         Peepholes of indirect call and jump via memory: Likewise.
5373         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
5374         (*sibcall_value_GOT_32): Likewise.
5375         * config/i386/predicates.md (indirect_branch_operand): Likewise.
5376         (GOT_memory_operand): Likewise.
5377         (call_insn_operand): Likewise.
5378         (sibcall_insn_operand): Likewise.
5379         (GOT32_symbol_operand): Likewise.
5380         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
5382 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
5384         PR rtl-optimization/83496
5385         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
5386         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
5387         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
5388         redundant insn, if any.
5389         (relax_delay_slots): Likewise.
5390         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
5392 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
5394         PR tree-optimization/83965
5395         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
5396         that grouped statements are part of a reduction chain.  Return
5397         true if the statement is not marked as a reduction itself but
5398         is part of a group.
5399         (vect_recog_dot_prod_pattern): Don't check whether the statement
5400         is part of a group here.
5401         (vect_recog_sad_pattern): Likewise.
5402         (vect_recog_widen_sum_pattern): Likewise.
5404 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
5406         PR debug/84545
5407         * final.c (rest_of_clean_state): Also look for calls inside sequences.
5409 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
5411         PR target/84530
5412         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
5413         the bool argument.
5414         (ix86_output_indirect_function_return): New prototype.
5415         (ix86_split_simple_return_pop_internal): Likewise.
5416         * config/i386/i386.c (indirect_return_via_cx): New.
5417         (indirect_return_via_cx_bnd): Likewise.
5418         (indirect_thunk_name): Handle return va CX_REG.
5419         (output_indirect_thunk_function): Create alias for
5420         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
5421         (ix86_output_indirect_jmp): Remove the bool argument.
5422         (ix86_output_indirect_function_return): New function.
5423         (ix86_split_simple_return_pop_internal): Likewise.
5424         * config/i386/i386.md (*indirect_jump): Don't pass false
5425         to ix86_output_indirect_jmp.
5426         (*tablejump_1): Likewise.
5427         (simple_return_pop_internal): Change it to define_insn_and_split.
5428         Call ix86_split_simple_return_pop_internal to split it for
5429         -mfunction-return=.
5430         (simple_return_indirect_internal): Call
5431         ix86_output_indirect_function_return instead of
5432         ix86_output_indirect_jmp.
5434 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
5436         PR bootstrap/84405
5437         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
5438         memset and value initialization afterwards.
5440 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
5442         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
5444 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5446         PR target/84521
5447         * common/config/aarch64/aarch64-common.c
5448         (aarch_option_optimization_table[]): Switch
5449         off fomit-frame-pointer
5451 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
5452             Chung-Ju Wu  <jasonwucj@gmail.com>
5454         * config/nds32/nds32-multiple.md (load_multiple): Disallow
5455         volatile memory.
5456         (store_multiple): Ditto.
5458 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
5460         * config.gcc: Add --with-cpu support for nds32 target.
5461         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
5462         * config/nds32/nds32.opt: Add -mcpu= option.
5464 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
5466         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
5467         isel=yes): Warn for these deprecated options.
5469 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
5471         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
5472         ISA_2_5_MASKS_EMBEDDED.
5474 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
5476         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
5477         p->max as pointers rather than using iterative_hash_expr.
5479 2018-02-23  Carl Love  <cel@us.ibm.com>
5481         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
5482         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
5483         BU_P8V_OVERLOAD_2.
5484         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
5485         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
5486         P8V_BUILTIN_VEC_VUNSIGNED2.
5488 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
5490         PR target/81572
5491         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
5492         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
5493         LRA_UNKNOWN_ALT.
5494         * lra-constraints.c (curr_insn_transform): Set up
5495         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
5496         LRA_UNKNOWN_ALT.
5497         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
5498         * lra-eliminations.c (spill_pseudos): Ditto.
5499         (process_insn_for_elimination): Ditto.
5500         * lra-lives.c (reg_early_clobber_p): Use the new macros.
5501         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
5502         LRA_NON_CLOBBERED_ALT.
5504 2018-02-22  Martin Sebor  <msebor@redhat.com>
5506         PR tree-optimization/84480
5507         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
5508         to maybe_diag_stxncpy_trunc.  Call it.
5509         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
5510         from gimple_fold_builtin_strcpy.  Print inlining stack.
5511         (handle_builtin_stxncpy): Print inlining stack.
5512         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
5514 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
5516         PR target/84176
5517         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
5518         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
5519         and -fcheck-pointer-bounds are used together.
5520         (indirect_thunk_prefix): New enum.
5521         (indirect_thunk_need_prefix): New function.
5522         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
5523         "_nt" instead of "_bnd" for NOTRACK prefix.
5524         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
5525         (output_indirect_thunk_function): Likewise.
5526         (): Likewise.
5527         (ix86_code_end): Update output_indirect_thunk_function calls.
5528         (ix86_output_indirect_branch_via_reg): Replace
5529         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
5530         (ix86_output_indirect_branch_via_push): Likewise.
5531         (ix86_output_function_return): Likewise.
5532         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
5533         incompatible with -fcf-protection=branch and
5534         -fcheck-pointer-bounds.
5536 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
5538         PR target/83335
5539         * config/aarch64/aarch64.c (aarch64_print_address_internal):
5540         Change gcc_assert call to output_operand_lossage.
5542 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
5544         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
5546 2018-02-22  DJ Delorie  <dj@redhat.com>
5547             Sebastian Perta  <sebastian.perta@renesas.com>
5548             Oleg Endo  <olegendo@gcc.gnu.org>
5550         * config/rx/rx.c (rx_rtx_costs): New function.
5551         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
5553 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5555         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
5557 2018-02-22  Martin Liska  <mliska@suse.cz>
5559         PR driver/83193
5560         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
5561         Add "native" as a possible value.
5563 2018-02-22  Martin Liska  <mliska@suse.cz>
5565         PR driver/83193
5566         * config/i386/i386.c (ix86_option_override_internal):
5567         Add "native" as a possible value for -march and -mtune.
5569 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
5571         PR target/84502
5572         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
5573         to all type variants.
5575         PR tree-optimization/84503
5576         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
5577         width as info->bitpos + info->bitsize - start.
5578         (merged_store_group::merge_overlapping): Simplify width computation.
5579         (check_no_overlap): New function.
5580         (imm_store_chain_info::try_coalesce_bswap): Compute expected
5581         start + width and last_order of the group, fail if check_no_overlap
5582         fails.
5583         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
5584         to group if check_no_overlap fails.
5586 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
5588         * config/rs6000/altivec.md: Delete contraint arguments to
5589         define_expand, define_split, and define_peephole2, and in
5590         define_insn_and_split if always unused.
5591         * config/rs6000/darwin.md: Ditto.
5592         * config/rs6000/dfp.md: Ditto.
5593         * config/rs6000/rs6000.md: Ditto.
5594         * config/rs6000/sync.md: Ditto.
5595         * config/rs6000/vector.md: Ditto.
5596         * config/rs6000/vsx.md: Ditto.
5598 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
5600         * config/rs6000/altivec.md: Write output control strings as braced
5601         blocks instead of double-quoted strings.
5602         * config/rs6000/darwin.md: Ditto.
5603         * config/rs6000/rs6000.md: Ditto.
5604         * config/rs6000/vector.md: Ditto.
5605         * config/rs6000/vsx.md: Ditto.
5607 2018-02-21  Jason Merrill  <jason@redhat.com>
5609         PR c++/84314 - ICE with templates and fastcall attribute.
5610         * attribs.c (build_type_attribute_qual_variant): Remove assert.
5612 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
5614         * ipa-cp.c (determine_versionability): Fix comment typos.
5616 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
5618         PR c/84229
5619         * ipa-cp.c (determine_versionability): Do not version functions caling
5620         va_arg_pack.
5622 2018-02-21  Martin Liska  <mliska@suse.cz>
5624         PR driver/83193
5625         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
5626         Add "native" as a possible value.
5627         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
5628         the macro when native cpu detection is available.
5630 2018-02-21  Martin Liska  <mliska@suse.cz>
5632         PR driver/83193
5633         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
5634         Add "native" as a possible value.
5635         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
5636         when native cpu detection is available.
5638 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
5639             Martin Sebor  <msebor@redhat.com>
5641         PR tree-optimization/84478
5642         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
5643         false.
5644         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
5645         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
5646         support which is conservatively correct, for 2 only stay conservative
5647         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
5648         argument to the 2 argument get_range_strlen, adjust 6 arg
5649         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
5650         false.
5651         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
5652         (gimple_fold_builtin_strlen): Pass true as last argument to
5653         get_range_strlen.
5655 2018-02-20  Martin Sebor  <msebor@redhat.com>
5657         PR middle-end/84095
5658         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
5659         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
5660         (builtin_memref::builtin_memref): Factor out parts into
5661         set_base_and_offset and call it.
5663 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
5665         PR middle-end/84406
5666         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
5667         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
5668         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
5669         search at the associated MODE_INT.
5671 2018-02-20  Jeff Law  <law@redhat.com>
5673         PR middle-end/82123
5674         PR tree-optimization/81592
5675         PR middle-end/79257
5676         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
5677         for range data rather than using global data.
5678         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
5679         range data rather than using global data.
5680         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
5681         pass it to children as needed.
5682         (struct directive::fmtresult): Similarly.
5683         (struct directive::set_width): Similarly.
5684         (struct directive::set_precision): Similarly.
5685         (format_integer, format_directive, parse_directive): Similarly.
5686         (format_none): Accept unnamed vr_values parameter.
5687         (format_percent, format_floating, format_character): Similarly.
5688         (format_string, format_plain): Similarly.
5689         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
5690         the EVRP range analyzer for range data rather than using global data.
5691         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and 
5692         gimple-ssa-evrp-analyze.h
5693         (class sprintf_dom_walker): Add after_dom_children member function.
5694         Add evrp_range_analyzer member.
5695         (sprintf_dom_walker::before_dom_children): Call into the EVRP
5696         range analyzer as needed.
5697         (sprintf_dom_walker::after_dom_children): New member function.
5698         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
5699         if not optimizing.
5700         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
5701         (evrp_range_analyzer::pop_to_marker): Likewise.
5703 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
5705         PR tree-optimization/84419
5706         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
5707         with the required type if its current type is compatible but
5708         different.
5710 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
5712         PR middle-end/82004
5713         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
5714         after vectorization.
5716 2018-02-20  Martin Liska  <mliska@suse.cz>
5718         PR driver/83193
5719         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
5720         possible values if we don't have a hint.
5722 2018-02-20  Martin Liska  <mliska@suse.cz>
5724         PR c/84310
5725         PR target/79747
5726         * final.c (shorten_branches): Build align_tab array with one
5727         more element.
5728         * opts.c (finish_options): Add alignment option limit check.
5729         (MAX_CODE_ALIGN): Likewise.
5730         (MAX_CODE_ALIGN_VALUE): Likewise.
5731         * doc/invoke.texi: Document maximum allowed option value for
5732         all -falign-* options.
5734 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
5736         PR target/84146
5737         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
5738         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
5739         * var-tracking.c (emit_note_insn_var_location): Remove all references
5740         to NOTE_INSN_CALL_ARG_LOCATION.
5741         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
5742         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
5743         Use copy_rtx_if_shared.
5744         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
5745         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
5746         (dwarf2out_var_location): Remove handling of
5747         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
5748         on call_insn.
5749         * final.c (final_scan_insn): Remove all references to
5750         NOTE_INSN_CALL_ARG_LOCATION.
5751         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
5752         before dumping final insns.
5753         * except.c (emit_note_eh_region_end): Remove all references to
5754         NOTE_INSN_CALL_ARG_LOCATION.
5755         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
5756         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
5757         * config/arc/arc.c (hwloop_optimize): Likewise.
5758         * config/arm/arm.c (create_fix_barrier): Likewise.
5759         * config/s390/s390.c (s390_chunkify_start): Likewise.
5760         * config/sh/sh.c (find_barrier): Likewise.
5761         * config/i386/i386.c (rest_of_insert_endbranch,
5762         ix86_seh_fixup_eh_fallthru): Likewise.
5763         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
5764         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
5765         * config/frv/frv.c (frv_function_prologue): Likewise.
5766         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
5767         reg note.
5768         (note_outside_basic_block_p): Remove all references to
5769         NOTE_INSN_CALL_ARG_LOCATION.
5770         * gengtype.c (adjust_field_rtx_def): Likewise.
5771         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
5772         Likewise.
5773         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
5774         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
5776         PR c++/84444
5777         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
5778         is ADDR_EXPR.
5780         PR tree-optimization/84452
5781         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
5782         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
5783         is NULL.
5785 2018-02-19  Martin Liska  <mliska@suse.cz>
5787         PR sanitizer/82183
5788         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
5790 2018-02-19  Martin Liska  <mliska@suse.cz>
5791             Richard Sandiford  <richard.sandiford@linaro.org>
5793         PR tree-optimization/82491
5794         * gimple-fold.c (get_base_constructor): Make earlier bail out
5795         to prevent ubsan.
5797 2018-02-19  Carl Love  <cel@us.ibm.com>
5799         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
5800         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
5801         BU_P8V_OVERLOAD_1.
5802         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
5803         P8V_BUILTIN_VEC_NEG.
5805 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
5807         * config/rl78/rl78.md (movdf): New define expand.
5809 2018-02-19  Martin Liska  <mliska@suse.cz>
5811         PR other/80589
5812         * doc/invoke.texi: Fix typo.
5813         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
5815 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
5817         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
5818         handle rs6000_single_float and rs6000_double_float specially for
5819         e500 family CPUs.
5821 2018-02-16  Jeff Law  <law@redhat.com>
5823         * config/rx/rx.c (add_pop_cfi_notes): New function.;
5824         (pop_regs): Use it.
5826 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
5828         PR ipa/84425
5829         * ipa-inline.c (inline_small_functions): Fix a typo.
5831 2018-02-16  Nathan Sidwell  <nathan@acm.org>
5833         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
5835 2018-02-16  Carl Love  <cel@us.ibm.com>
5837         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
5838         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
5839         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
5840         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
5841         expansion to P8V_BUILTIN_VEC_FLOAT2.
5843 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
5845         PR rtl-optimization/70023
5846         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
5847         src_regno into account.
5849 2018-02-16  Carl Love  <cel@us.ibm.com>
5851         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
5852         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
5853         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
5854         * config/rs6000/rs6000.c: Remove case statements for
5855         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
5856         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
5857         and P9V_BUILTIN_VEC_VINSERT4B.
5858         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
5859         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
5860         * config/rs6000/vsx.md:
5861         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
5862         vec_insert4b.
5864 2018-02-16  Carl Love  <cel@us.ibm.com>
5866         * config/rs6000/altivec.h: Add builtin names vec_extract4b
5867         vec_insert4b.
5868         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
5869         definitions.
5870         * config/rs6000/rs6000-c.c: Add the definitions for
5871         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
5872         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
5873         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
5874         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
5875         definition for insert4b and define insn *insert3b_internal.
5876         * doc/extend.texi: Add documentation for vec_extract4b.
5878 2018-02-16  Nathan Sidwell  <nathan@acm.org>
5880         * doc/extend.texi (Backwards Compatibility): Mention friend
5881         injection.  Note for-scope is deprecated.
5882         * doc/invoke.texi (-ffriend-injection): Deprecate.
5884 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
5886         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
5887         that moved to I2, also allow destinations that are a paradoxical
5888         subreg (instead of a normal reg).
5890 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
5892         PR target/83831
5893         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
5894         to QImode.
5896 2018-02-16  Richard Biener  <rguenther@suse.de>
5898         PR tree-optimization/84037
5899         PR tree-optimization/84016
5900         PR target/82862
5901         * config/i386/i386.c (ix86_builtin_vectorization_cost):
5902         Adjust vec_construct for the fact we need additional higher latency
5903         128bit inserts for AVX256 and AVX512 vector builds.
5904         (ix86_add_stmt_cost): Scale vector construction cost for
5905         elementwise loads.
5907 2018-02-16  Richard Biener  <rguenther@suse.de>
5909         PR tree-optimization/84417
5910         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
5911         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
5912         (non_rewritable_lvalue_p): Likewise, use poly-ints.
5914 2018-02-16  Martin Liska  <mliska@suse.cz>
5916         PR sanitizer/84307
5917         * internal-fn.def (ASAN_CHECK): Set proper flags.
5918         (ASAN_MARK): Likewise.
5920 2018-02-16  Julia Koval  <julia.koval@intel.com>
5922         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
5923         from PTA_CANNONLAKE.
5925 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
5927         PR target/84272
5928         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
5929         Use ++iter rather than iter++ for std::list iterators.
5930         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
5931         defer deleting them until all nodes in the forest are processed.  Do
5932         free even leaf nodes.  Change to_process into auto_vec.
5934         PR bootstrap/84405
5935         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
5936         * vec.h (vec_default_construct): Use memset instead of placement new
5937         if BROKEN_VALUE_INITIALIZATION is defined.
5938         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
5939         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
5940         is defined.
5942         PR rtl-optimization/83723
5943         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
5944         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
5945         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
5946         recursive calls.
5947         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
5948         callers.
5949         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
5951 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
5953         PR rtl-optimization/81443
5954         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
5955         from inner REGs to paradoxical SUBREGs.
5957 2018-02-16  Richard Biener  <rguenther@suse.de>
5959         PR tree-optimization/84399
5960         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
5961         For operands we can analyze at their definition make sure we can
5962         analyze them at each use as well.
5964 2018-02-16  Richard Biener  <rguenther@suse.de>
5966         PR tree-optimization/84190
5967         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
5968         volatile accesses if the decl isn't volatile.
5970 2018-02-15  Jason Merrill  <jason@redhat.com>
5972         PR c++/84314 - ICE with templates and fastcall attribute.
5973         * attribs.c (build_type_attribute_qual_variant): Don't clobber
5974         TYPE_CANONICAL on an existing type.
5976 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
5978         PR tree-optimization/84383
5979         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
5980         dstoff nor call operand_equal_p if dstbase is NULL.
5982         PR tree-optimization/84334
5983         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
5984         also a CONSTANT_CLASS_P, punt.
5986 2018-02-14  Jim Wilson  <jimw@sifive.com>
5988         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
5989         first SMALL_OPERAND check.  New local min_second_step.  Move assert
5990         to where locals are set.  Add TARGET_RVC support.
5991         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
5993 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
5995         * doc/invoke.texi: Correct -Wformat-overflow code sample.
5997 2018-02-14  Martin Sebor  <msebor@redhat.com>
5999         PR tree-optimization/83698
6000         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
6001         arrays constrain the offset range to their bounds.
6002         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
6003         (builtin_access::overlap): Avoid setting the size of overlap if it's
6004         already been set.
6005         (maybe_diag_overlap): Also consider arrays when deciding what values
6006         of offsets to include in diagnostics.
6008 2018-02-14  Martin Sebor  <msebor@redhat.com>
6010         PR c/84108
6011         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
6012         that correspond to the kind of a declaration.
6014 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
6016         PR target/83984
6017         * config/pa/pa.md: Load address of PIC label using the linkage table
6018         if the label is nonlocal.
6020 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
6022         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
6023         warning message if user requests -maltivec=be.
6024         * doc/invoke.texi: Document deprecation of -maltivec=be.
6026 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
6028         PR target/84220
6029         * config/rs6000/rs6000-c.c: Update definitions for
6030         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
6031         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
6033 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
6035         PR target/84239
6036         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
6037         add _get_ssp intrinsics. Remove argument from
6038         __builtin_ia32_rdssp[d|q].
6039         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
6040         * config/i386/i386-builtin.def: Remove argument from
6041         __builtin_ia32_rdssp[d|q].
6042         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
6043         ix86_expand_special_args_builtin for _rdssp[d|q].
6044         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
6045         Clear register before usage.
6046         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
6047         Add documentation for new _get_ssp and _inc_ssp intrinsics.
6049 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
6051         PR tree-optimization/84357
6052         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
6053         operand 1 of an ARRAY_REF too.
6055 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
6057         PR target/83831
6058         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
6059         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6060         declarations.
6061         (set_of_reg): New struct.
6062         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
6063         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
6064         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6065         functions.
6066         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
6067         Split into bitclr, bitset, bitinvert patterns if appropriate.
6068         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
6069         use rx_fuse_in_memory_bitop.
6070         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
6071         to named insn, correct maximum insn length.
6073 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
6075         PR target/79242
6076         * machmode.def: Define a complex mode for PARTIAL_INT.
6077         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
6078         MODE_PARTIAL_INT.
6079         * doc/rtl.texi: Document CSPImode.
6080         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
6081         handling.
6082         (msp430_hard_regno_nregs_with_padding): Likewise.
6084 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
6086         PR target/84279
6087         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
6089 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
6091         PR rtl-optimization/84169
6092         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
6093         we generated a parallel as new i3 and we split that to new i2 and i3
6094         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
6095         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
6096         those to i2, not i1.  Partially rewrite this scan code.
6098 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
6100         PR c/82210
6101         * stor-layout.c (place_field): For variable length fields, adjust
6102         offset_align afterwards not just based on the field's alignment,
6103         but also on the size.
6105         PR middle-end/84309
6106         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
6107         of exps and logs in the use_exp2 case.
6109 2018-02-13  Jeff Law  <law@redhat.com>
6111         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
6112         entry for "vector".
6114         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
6115         ARGS as unused.
6117 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
6119         PR debug/84342
6120         PR debug/84319
6121         * common.opt (gas-loc-support, gas-locview-support): New.
6122         (ginline-points, ginternal-reset-location-views): New.
6123         * doc/invoke.texi: Document them.  Use @itemx where intended.
6124         (gvariable-location-views): Adjust.
6125         * target.def (reset_location_view): New.
6126         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
6127         (TARGET_RESET_LOCATION_VIEW): New.
6128         * doc/tm.texi: Rebuilt.
6129         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
6130         (dwarf2out_default_as_locview_support): New.
6131         (output_asm_line_debug_info): Use option variables.
6132         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
6133         (output_loc_list): Likewise.
6134         (add_high_low_attributes): Check option variables.
6135         Don't output entry view attribute in strict mode.
6136         (gen_inlined_subroutine_die): Check option variables.
6137         (dwarf2out_inline_entry): Likewise.
6138         (init_sections_and_labels): Likewise.
6139         (dwarf2out_early_finish): Likewise.
6140         (maybe_reset_location_view): New, from...
6141         (dwarf2out_var_location): ... here.  Call it.
6142         * debug.h (dwarf2out_default_as_loc_support): Declare.
6143         (dwarf2out_default_as_locview_support): Declare.
6144         * hooks.c (hook_int_rtx_insn_0): New.
6145         * hooks.h (hook_int_rtx_insn_0): Declare.
6146         * toplev.c (process_options): Take -gas-loc-support and
6147         -gas-locview-support from dwarf2out.  Enable
6148         -gvariable-location-views by default only with locview
6149         assembler support.  Enable -ginternal-reset-location-views by
6150         default only if the target defines the corresponding hook.
6151         Enable -ginline-points by default if location views are
6152         enabled; force it disabled if statement frontiers are
6153         disabled.
6154         * tree-inline.c (expand_call_inline): Check option variables.
6155         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
6157 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
6159         PR tree-optimization/84321
6160         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
6161         handling.  Also check whether the anti-range contains any values
6162         that satisfy the mask; switch to a VR_RANGE if not.
6164 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
6166         PR sanitizer/84340
6167         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
6169 2018-02-13  Martin Jambor  <mjambor@suse.cz>
6171         PR c++/83990
6172         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
6173         of call statements, also set location of a load to a temporary.
6175 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
6177         * config/rl78/rl78.c (add_vector_labels): New function.
6178         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
6179         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
6180         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert 
6181         which checks that no arguments are passed.
6182         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
6183         * doc/extend.texi: Documentation for the new attribute.
6185 2018-02-13  Andreas Schwab  <schwab@suse.de>
6187         * config/riscv/linux.h (CPP_SPEC): Define.
6189 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
6191         PR target/84335
6192         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
6193         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
6194         OPTION_MASK_ISA_AES as first argument to def_builtin_const
6195         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
6196         instead of OPTION_MASK_ISA_PCLMUL as first argument to
6197         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
6198         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
6199         temporarily for AES and PCLMUL builtins.
6201         PR tree-optimization/84339
6202         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
6203         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
6204         Formatting fixes.
6206         PR middle-end/84309
6207         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
6208         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
6209         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
6210         inline function.
6211         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
6212         inline function.
6213         * omp-simd-clone.h: New file.
6214         * omp-simd-clone.c: Include omp-simd-clone.h.
6215         (expand_simd_clones): No longer static.
6216         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
6217         cgraph.h and omp-simd-clone.h.
6218         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
6219         (vect_recog_widen_shift_pattern): Formatting fix.
6220         (vect_pattern_recog_1): Don't check optab for calls.
6222         PR target/84336
6223         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
6224         operands[2] into a REG before using gen_lowpart on it.
6226 2018-02-12  Jeff Law  <law@redhat.com>
6228         PR target/83760
6229         * config/sh/sh.c (find_barrier): Consider a sibling call
6230         a barrier as well.
6232         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
6233         successfully back substituting a reg.
6235 2018-02-12  Richard Biener  <rguenther@suse.de>
6237         PR tree-optimization/84037
6238         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
6239         parameter, move visited init to caller.
6240         (vect_slp_analyze_operations): Separate cost from validity
6241         check, initialize visited once for all instances.
6242         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
6243         for all instances.
6244         * tree-vect-stmts.c (vect_model_simple_cost): Make early
6245         out an assert.
6246         (vect_model_promotion_demotion_cost): Likewise.
6247         (vectorizable_bswap): Guard cost modeling with !slp_node
6248         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
6249         SLP stmts.
6250         (vectorizable_call): Likewise.
6251         (vectorizable_conversion): Likewise.
6252         (vectorizable_assignment): Likewise.
6253         (vectorizable_shift): Likewise.
6254         (vectorizable_operation): Likewise.
6255         (vectorizable_store): Likewise.
6256         (vectorizable_load): Likewise.
6257         (vectorizable_condition): Likewise.
6258         (vectorizable_comparison): Likewise.
6260 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
6262         PR sanitizer/84307
6263         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
6264         (ASAN_MARK): Fix fnspec to account for return value, change pointer
6265         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
6267 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
6269         PR middle-end/83665
6270         * params.def (inline-min-speedup): Increase from 8 to 15.
6271         (max-inline-insns-auto): Decrease from 40 to 30.
6272         * ipa-split.c (consider_split): Add some buffer for function to
6273         be considered inlining candidate.
6274         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
6275         default values.
6277 2018-02-12  Richard Biener  <rguenther@suse.de>
6279         PR tree-optimization/84037
6280         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
6281         matched stmts if we cannot swap the non-matched ones.
6283 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
6285         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
6286         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
6287         _mm_maskz_scalef_round_ss): New intrinsics.
6288         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
6289         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
6290         __builtin_ia32_scalefss_round): Remove.
6291         (__builtin_ia32_scalefsd_mask_round,
6292         __builtin_ia32_scalefss_mask_round): New intrinsics.
6293         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
6294         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
6295         ((match_operand:VF_128 2 "<round_nimm_predicate>"
6296         "<round_constraint>")): Changed to ...
6297         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
6298         "<round_scalar_constraint>")): ... this.
6299         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
6300         %0, %1, %2<round_op3>}"): Changed to ...
6301         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
6302         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
6303         %2<round_scalar_mask_op3>}"): ... this.
6304         * config/i386/subst.md (round_scalar_nimm_predicate): New.
6306 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
6308         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
6309         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
6310         (_mm_maskz_sqrt_round_ss): New intrinsics.
6311         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
6312         (__builtin_ia32_sqrtsd_mask_round)
6313         (__builtin_ia32_sqrtss_mask_round): New builtins.
6314         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
6315         (__builtin_ia32_sqrtss_round): Remove.
6316         (__builtin_ia32_sqrtsd_mask_round)
6317         (__builtin_ia32_sqrtss_mask_round): New builtins.
6318         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
6319         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
6320         ((match_operand:VF_128 1 "vector_operand"
6321         "xBm,<round_constraint>")): Changed to ...
6322         ((match_operand:VF_128 1 "vector_operand"
6323         "xBm,<round_scalar_constraint>")): ... this.
6324         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
6325         %0, %2, %<iptr>1<round_op3>}): Changed to ...
6326         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
6327         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
6328         %<iptr>1<round_scalar_mask_op3>}): ... this.
6329         ((set_attr "prefix" "<round_prefix>")): Changed to ...
6330         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
6332 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
6334         PR target/84266
6335         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
6336         Cast vec_cmpeq result to correct type.
6337         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
6338         Cast vec_cmpgt result to correct type.
6340 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
6342         * final.c (final_scan_insn_1): Renamed from...
6343         (final_scan_insn): ... this.  New wrapper, to recover
6344         seen from the outermost call in recursive ones.
6345         * config/sparc/sparc.c (output_return): Drop seen from call.
6346         (output_sibcall): Likewise.
6347         * config/visium/visium.c (output_branch): Likewise.
6349 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
6351         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
6352         function label.
6354 2018-02-10  Alan Modra  <amodra@gmail.com>
6356         PR target/84300
6357         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
6358         Specify LR as an input.
6360 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
6362         PR sanitizer/83987
6363         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
6364         remove_member_access_dummy_vars): New functions.
6365         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
6366         lower_omp_1, execute_lower_omp): Use them.
6368         PR rtl-optimization/84308
6369         * shrink-wrap.c (spread_components): Release todo vector.
6371 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
6373         PR rtl-optimization/57193
6374         * ira-color.c (struct allocno_color_data): Add member
6375         conflict_allocno_hard_prefs.
6376         (update_conflict_allocno_hard_prefs): New.
6377         (bucket_allocno_compare_func): Add a preference based on
6378         conflict_allocno_hard_prefs.
6379         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
6380         (color_allocnos): Remove a dead code.  Initiate
6381         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
6383 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
6385         PR target/84226
6386         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
6387         constraint from =wa to wa.  Avoid a subreg on the output operand,
6388         instead use a pseudo and subreg it in a move.
6389         (p9_xxbrd_<mode>): Changed to ...
6390         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
6391         (p9_xxbrd_v2df): New expander.
6392         (p9_xxbrw_<mode>): Changed to ...
6393         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
6394         (p9_xxbrw_v4sf): New expander.
6396 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
6398         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
6400 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
6402         PR target/83926
6403         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
6404         multiply in 32-bit mode.
6405         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
6406         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
6407         mode.
6409 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
6411         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
6412         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
6413         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
6414         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
6416 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
6418         PR lto/84213
6419         * dwarf2out.c (is_trivial_indirect_ref): New function.
6420         (dwarf2out_late_global_decl): Do not generate a location
6421         attribute for variables that have a non-trivial DECL_VALUE_EXPR
6422         and that are not defined in the current unit.
6424 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
6426         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
6427         instead of a libcall for UNORDERED.
6429 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
6431         PR target/82641
6432         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
6433         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
6435 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
6437         PR target/PR84295
6438         * config/s390/s390.c (s390_set_current_function): Invoke
6439         s390_indirect_branch_settings also if fndecl didn't change.
6441 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
6443         * config/rs6000/rs6000.md (blockage): Set length to zero.
6445 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
6447         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
6449 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
6451         PR sanitizer/84285
6452         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
6453         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
6454         -static-lib*san.
6456         PR debug/84252
6457         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
6458         PARALLEL incoming that failed vt_get_decl_and_offset check.
6460         PR middle-end/84237
6461         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
6462         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
6463         TREE_READONLY bit.
6464         (get_variable_section): For decls in named .bss* sections pass true as
6465         second argument to bss_initializer_p.
6467 2018-02-09  Marek Polacek  <polacek@redhat.com>
6468             Jakub Jelinek  <jakub@redhat.com>
6470         PR c++/83659
6471         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
6472         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
6473         Sync some changes from cxx_fold_indirect_ref.
6475 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
6477         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
6478         markers.
6479         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
6480         (BLOCK_INLINE_ENTRY_LABEL): New.
6481         (dwarf2out_var_location): Disregard inline entry markers.
6482         (inline_entry_data): New struct.
6483         (inline_entry_data_hasher): New hashtable type.
6484         (inline_entry_data_hasher::hash): New.
6485         (inline_entry_data_hasher::equal): New.
6486         (inline_entry_data_table): New variable.
6487         (add_high_low_attributes): Add DW_AT_entry_pc and
6488         DW_AT_GNU_entry_view attributes if a pending entry is found
6489         in inline_entry_data_table.  Add old entry_pc attribute only
6490         if debug nonbinding markers are disabled.
6491         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
6492         markers are enabled.
6493         (block_within_block_p, dwarf2out_inline_entry): New.
6494         (dwarf2out_finish): Check that no entries remained in
6495         inline_entry_data_table.
6496         * final.c (reemit_insn_block_notes): Handle inline entry notes.
6497         (final_scan_insn, notice_source_line): Likewise.
6498         (rest_of_clean_state): Skip inline entry markers.
6499         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
6500         markers.
6501         * gimple.c (gimple_build_debug_inline_entry): New.
6502         * gimple.h (enum gimple_debug_subcode): Add
6503         GIMPLE_DEBUG_INLINE_ENTRY.
6504         (gimple_build_debug_inline_entry): Declare.
6505         (gimple_debug_inline_entry_p): New.
6506         (gimple_debug_nonbind_marker_p): Adjust.
6507         * insn-notes.def (INLINE_ENTRY): New.
6508         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
6509         inline entry marker notes.
6510         (print_insn): Likewise.
6511         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
6512         (INSN_DEBUG_MARKER_KIND): Likewise.
6513         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
6514         * tree-inline.c (expand_call_inline): Build and insert
6515         debug_inline_entry stmt.
6516         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
6517         inline entry blocks early, if nonbind markers are enabled.
6518         (dump_scope_block): Dump fragment info.
6519         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
6520         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
6521         (gimple_build_debug_inline_entry): New.
6522         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
6523         Enable/disable inline entry points too.
6524         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
6525         (DEBUG_INSN): Describe inline entry markers.
6527         * common.opt (gvariable-location-views): New.
6528         (gvariable-location-views=incompat5): New.
6529         * config.in: Rebuilt.
6530         * configure: Rebuilt.
6531         * configure.ac: Test assembler for view support.
6532         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
6533         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
6534         * dwarf2out.c (var_loc_view): New typedef.
6535         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
6536         (dwarf2out_locviews_in_attribute): New.
6537         (dwarf2out_locviews_in_loclist): New.
6538         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
6539         (enum dw_line_info_opcode): Add LI_adv_address.
6540         (struct dw_line_info_table): Add view.
6541         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
6542         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
6543         (zero_view_p): New variable.
6544         (ZERO_VIEW_P): New macro.
6545         (output_asm_line_debug_info): New.
6546         (struct var_loc_node): Add view.
6547         (add_AT_view_list, AT_loc_list): New.
6548         (add_var_loc_to_decl): Add view param.  Test it against last.
6549         (new_loc_list): Add view params.  Record them.
6550         (AT_loc_list_ptr): Handle loc and view lists.
6551         (view_list_to_loc_list_val_node): New.
6552         (print_dw_val): Handle dw_val_class_view_list.
6553         (size_of_die): Likewise.
6554         (value_format): Likewise.
6555         (loc_list_has_views): New.
6556         (gen_llsym): Set vl_symbol too.
6557         (maybe_gen_llsym, skip_loc_list_entry): New.
6558         (dwarf2out_maybe_output_loclist_view_pair): New.
6559         (output_loc_list): Output view list or entries too.
6560         (output_view_list_offset): New.
6561         (output_die): Handle dw_val_class_view_list.
6562         (output_dwarf_version): New.
6563         (output_compilation_unit_header): Use it.
6564         (output_skeleton_debug_sections): Likewise.
6565         (output_rnglists, output_line_info): Likewise.
6566         (output_pubnames, output_aranges): Update version comments.
6567         (output_one_line_info_table): Output view numbers in asm comments.
6568         (dw_loc_list): Determine current endview, pass it to new_loc_list.
6569         Call maybe_gen_llsym.
6570         (loc_list_from_tree_1): Adjust.
6571         (add_AT_location_description): Create view list attribute if
6572         needed, check it's absent otherwise.
6573         (convert_cfa_to_fb_loc_list): Adjust.
6574         (maybe_emit_file): Call output_asm_line_debug_info for test.
6575         (dwarf2out_var_location): Reset views as needed.  Precompute
6576         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
6577         attribute.  Set view.
6578         (new_line_info_table): Reset next view.
6579         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
6580         (dwarf2out_source_line): Likewise.  Output view resets and labels to
6581         the assembler, or select appropriate line info opcodes.
6582         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
6583         (optimize_string_length): Catch it.  Adjust.
6584         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
6585         dw_val_class_view_list, and remove it if no longer needed.
6586         (hash_loc_list): Hash view numbers.
6587         (loc_list_hasher::equal): Compare them.
6588         (optimize_location_lists): Check whether a view list symbol is
6589         needed, and whether the locview attribute is present, and
6590         whether they match.  Remove the locview attribute if no longer
6591         needed.
6592         (index_location_lists): Call skip_loc_list_entry for test.
6593         (dwarf2out_finish): Call output_asm_line_debug_info for test.
6594         Use output_dwarf_version.
6595         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
6596         (struct dw_val_node): Add val_view_list.
6597         * final.c (SEEN_NEXT_VIEW): New.
6598         (set_next_view_needed): New.
6599         (clear_next_view_needed): New.
6600         (maybe_output_next_view): New.
6601         (final_start_function): Rename to...
6602         (final_start_function_1): ... this.  Take pointer to FIRST,
6603         add SEEN parameter.  Emit param bindings in the initial view.
6604         (final_start_function): Reintroduce SEEN-less interface.
6605         (final): Rename to...
6606         (final_1): ... this.  Take SEEN parameter.  Output final pending
6607         next view at the end.
6608         (final): Reintroduce seen-less interface.
6609         (final_scan_insn): Output pending next view before switching
6610         sections or ending a block.  Mark the next view as needed when
6611         outputting variable locations.  Notify debug backend of section
6612         changes, and of location view changes.
6613         (rest_of_handle_final): Adjust.
6614         * toplev.c (process_options): Autodetect value for debug variable
6615         location views option.  Warn on incompat5 without -gdwarf-5.
6616         * doc/invoke.texi (gvariable-location-views): New.
6617         (gvariable-location-views=incompat5): New.
6618         (gno-variable-location-views): New.
6620 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
6622         PR tree-optimization/84136
6623         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
6624         that the result of find_edge is non-NULL.
6626 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
6628         PR target/83008
6629         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
6630         storing integer register in SImode.  Fix cost of 256 and 512
6631         byte aligned SSE register store.
6633 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
6635         * config/i386/i386.c (ix86_multiplication_cost): Fix
6636         multiplication cost for TARGET_AVX512DQ.
6638 2018-02-08  Marek Polacek  <polacek@redhat.com>
6640         PR tree-optimization/84238
6641         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
6642         get_range_strlen.
6644 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
6646         PR tree-optimization/84265
6647         * tree-vect-stmts.c (vectorizable_store): Don't treat
6648         VMAT_CONTIGUOUS accesses as grouped.
6649         (vectorizable_load): Likewise.
6651 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
6653         PR tree-optimization/81635
6654         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
6655         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
6656         (test_round_for_mask): New functions.
6657         (wide_int_cc_tests): Call test_round_for_mask.
6658         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
6659         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
6660         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
6661         range returned by get_range_info.
6663 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
6665         PR ipa/81360
6666         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
6667         * symtab.c: Include builtins.h
6668         (symtab_node::output_to_lto_symbol_table_p): Move here
6669         from lto-streamer-out.c:output_symbol_p.
6670         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
6671         (output_symbol_p): Move all logic to symtab.c
6672         (produce_symtab): Update.
6674 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
6676         * config/s390/s390-opts.h (enum indirect_branch): Define.
6677         * config/s390/s390-protos.h (s390_return_addr_from_memory)
6678         (s390_indirect_branch_via_thunk)
6679         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
6680         (enum s390_indirect_branch_type): Define.
6681         * config/s390/s390.c (struct s390_frame_layout, struct
6682         machine_function): Remove.
6683         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
6684         (indirect_branch_table_label_no, indirect_branch_table_name):
6685         Define variables.
6686         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
6687         (enum s390_indirect_branch_option): Define.
6688         (s390_return_addr_from_memory): New function.
6689         (s390_handle_string_attribute): New function.
6690         (s390_attribute_table): Add new attribute handler.
6691         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
6692         (s390_indirect_branch_via_thunk): New function.
6693         (s390_indirect_branch_via_inline_thunk): New function.
6694         (s390_function_ok_for_sibcall): When jumping via thunk disallow
6695         sibling call optimization for non z10 compiles.
6696         (s390_emit_call): Force indirect branch target to be a single
6697         register.  Add r1 clobber for non-z10 compiles.
6698         (s390_emit_epilogue): Emit return jump via return_use expander.
6699         (s390_reorg): Handle JUMP_INSNs as execute targets.
6700         (s390_option_override_internal): Perform validity checks for the
6701         new command line options.
6702         (s390_indirect_branch_attrvalue): New function.
6703         (s390_indirect_branch_settings): New function.
6704         (s390_set_current_function): Invoke s390_indirect_branch_settings.
6705         (s390_output_indirect_thunk_function):  New function.
6706         (s390_code_end): Implement target hook.
6707         (s390_case_values_threshold): Implement target hook.
6708         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
6709         macros.
6710         * config/s390/s390.h (struct s390_frame_layout)
6711         (struct machine_function): Move here from s390.c.
6712         (TARGET_INDIRECT_BRANCH_NOBP_RET)
6713         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
6714         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
6715         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
6716         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
6717         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
6718         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
6719         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
6720         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
6721         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
6722         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
6723         (mnemonic attribute): Add values which aren't recognized
6724         automatically.
6725         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
6726         pattern for branch conversion.  Fix mnemonic attribute.
6727         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
6728         indirect branch via thunk if requested.
6729         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
6730         ("*indirect_jump"): Disable for branch conversion using out of
6731         line thunks.
6732         ("indirect_jump_via_thunk<mode>_z10")
6733         ("indirect_jump_via_thunk<mode>")
6734         ("indirect_jump_via_inlinethunk<mode>_z10")
6735         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
6736         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
6737         ("casesi_jump_via_inlinethunk<mode>_z10")
6738         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
6739         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
6740         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
6741         ("*indirect2_jump"): Disable for branch conversion.
6742         ("casesi_jump"): Turn into expander and expand patterns for branch
6743         conversion.
6744         ("return_use"): New expander.
6745         ("*return"): Emit return via thunk and rename it to ...
6746         ("*return<mode>"): ... this one.
6747         * config/s390/s390.opt: Add new options and and enum for the
6748         option values.
6750 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
6752         * lra-constraints.c (match_reload): Unconditionally use
6753         gen_lowpart_SUBREG, rather than selecting between that
6754         and equivalent gen_rtx_SUBREG code.
6756 2018-02-08  Richard Biener  <rguenther@suse.de>
6758         PR tree-optimization/84233
6759         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
6760         changed flag instead of boguously re-using phi_inserted.
6762 2018-02-08  Martin Jambor  <mjambor@suse.cz>
6764         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
6765         static local variables.
6767 2018-02-08  Richard Biener  <rguenther@suse.de>
6769         PR tree-optimization/84278
6770         * tree-vect-stmts.c (vectorizable_store): When looking for
6771         smaller vector types to perform grouped strided loads/stores
6772         make sure the mode is supported by the target.
6773         (vectorizable_load): Likewise.
6775 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
6777         * config/aarch64/aarch64.c (aarch64_components_for_bb):
6778         Increase LDP/STP opportunities by adding adjacent callee-saves.
6780 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
6782         PR rtl-optimization/84068
6783         PR rtl-optimization/83459
6784         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
6786 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
6788         PR tree-optimization/84224
6789         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
6790         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
6791         non-zero arguments.
6793 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
6795         PR target/84113
6796         * config/rs6000/altivec.md (*restore_world): Remove LR use.
6797         * config/rs6000/predicates.md (restore_world_operation): Adjust op
6798         count, remove one USE.
6800 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
6802         * doc/install.texi (Configuration): Document the
6803         --with-long-double-format={ibm,ieee} PowerPC configuration
6804         options.
6806         PR target/84154
6807         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
6808         Convert from define_expand to be define_insn_and_split.  Rework
6809         float/double/_Float128 conversions to QI/HI/SImode to work with
6810         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
6811         conversions to QI/HImode types did a store and then a load to
6812         truncate the value.  For conversions to VSX registers, don't split
6813         the insn, instead emit the code directly.  Use the code iterator
6814         any_fix to combine signed and unsigned conversions.
6815         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
6816         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
6817         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
6818         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
6819         (fix_<mode>di2_hw): Likewise.
6820         (fixuns_<mode>di2_hw): Likewise.
6821         (fix_<mode>si2_hw): Likewise.
6822         (fixuns_<mode>si2_hw): Likewise.
6823         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
6824         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
6825         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
6826         fix<uns>_trunc<SFDF:mode>si2_p8.
6827         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
6828         used.
6829         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
6830         (fix<uns>_<mode>_mem): Likewise.
6831         (fctiw<u>z_<mode>_mem): Likewise.
6832         (fix<uns>_<mode>_mem): Likewise.
6833         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
6834         the register allocator from doing a direct move to the GPRs to do
6835         a store, and instead use the ISA 3.0 store byte/half-word from
6836         vector register instruction.  For IEEE 128-bit floating point,
6837         also optimize stores of 32-bit ints.
6838         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
6840 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
6842         * genextract.c (push_pathstr_operand): New function to support
6843         [a-zA-Z].
6844         (walk_rtx): Call push_pathstr_operand.
6845         (print_path): Support [a-zA-Z].
6847 2018-02-07  Richard Biener  <rguenther@suse.de>
6849         PR tree-optimization/84037
6850         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
6851         (cse_and_gimplify_to_preheader): Declare.
6852         (vect_get_place_in_interleaving_chain): Likewise.
6853         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
6854         ivexpr_map.
6855         (_loop_vec_info::~_loop_vec_info): Delete it.
6856         (cse_and_gimplify_to_preheader): New function.
6857         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
6858         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
6859         (vectorizable_load): Likewise.  For grouped stores always base
6860         the IV on the first element.
6861         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
6862         condition before gimplifying.
6864 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
6866         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
6867         *DIV_EXPR and *MOD_EXPR.
6869 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
6871         PR target/84248
6872         * config/i386/i386.c (ix86_option_override_internal): Mask out
6873         the CF_SET bit when checking -fcf-protection.
6875 2018-02-07  Tom de Vries  <tom@codesourcery.com>
6877         PR libgomp/84217
6878         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
6879         enough.
6881 2018-02-07  Richard Biener  <rguenther@suse.de>
6883         PR tree-optimization/84204
6884         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
6885         this place.
6887         PR tree-optimization/84205
6888         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
6889         special-case isl_ast_op_zdiv_r.
6891         PR tree-optimization/84223
6892         * graphite-scop-detection.c (gather_bbs::before_dom_children):
6893         Only add conditions from within the region.
6894         (gather_bbs::after_dom_children): Adjust.
6896 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
6898         PR target/84209
6899         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
6900         * config/avr/avr.md: Only post-reload split REG-REG moves if
6901         either register is GENERAL_REG_P.
6903 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
6905         PR tree-optimization/84235
6906         * tree-ssa-scopedtables.c
6907         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
6908         if the subtraction is performed in floating point type where NaNs are
6909         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
6910         build 1.  Formatting fix.
6912 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
6914         PR target/84146
6915         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
6916         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
6917         and skip it regardless of bb boundaries.  Use CALL_P macro,
6918         don't test INSN_P (insn) together with CALL_P or JUMP_P check
6919         unnecessarily, formatting fix.
6921 2018-02-06  Michael Collison  <michael.collison@arm.com>
6923         * config/arm/thumb2.md:
6924         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
6925         (*thumb_mov_notscc): Ditto.
6927 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
6929         PR target/84154
6930         * config/rs6000/rs6000.md (su code attribute): Use "u" for
6931         unsigned_fix, not "s".
6933 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6935         * configure.ac (gcc_fn_eh_frame_ro): New function.
6936         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
6937         correct .eh_frame permissions.
6938         * configure: Regenerate.
6940 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
6942         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
6943         irrelevant options.
6945 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6947         * config/rs6000/rs6000.c (rs6000_option_override_internal):
6948         Display warning message for -mno-speculate-indirect-jumps.
6950 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
6952         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
6953         Undocumented.
6954         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
6956 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
6958         PR tree-optimization/84225
6959         * tree-eh.c (find_trapping_overflow): Only call
6960         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
6962 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
6964         PR target/84145
6965         * config/i386/i386.c: Reimplement the check of possible options
6966         -mibt/-mshstk conbination. Change error messages.
6967         * doc/invoke.texi: Fix a typo: remove extra '='.
6969 2018-02-06  Marek Polacek  <polacek@redhat.com>
6971         PR tree-optimization/84228
6972         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
6974 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
6976         PR target/82641
6977         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
6978         emitted arch directives.
6979         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
6980         __ARM_FEATURE_COPROC before changing architectures.
6982 2018-02-06  Richard Biener  <rguenther@suse.de>
6984         * config/i386/i386.c (print_reg): Fix typo.
6985         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
6987 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
6989         * configure: Regenerate.
6991 2018-02-05  Martin Sebor  <msebor@redhat.com>
6993         PR tree-optimization/83369
6994         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
6995         inlining context.
6997 2018-02-05  Martin Liska  <mliska@suse.cz>
6999         * doc/invoke.texi: Cherry-pick upstream r323995.
7001 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
7003         * ira.c (ira_init_register_move_cost): Adjust comment.
7005 2018-02-05  Martin Liska  <mliska@suse.cz>
7007         PR gcov-profile/84137
7008         * doc/gcov.texi: Fix typo in documentation.
7010 2018-02-05  Martin Liska  <mliska@suse.cz>
7012         PR gcov-profile/83879
7013         * doc/gcov.texi: Document necessity of --dynamic-list-data when
7014         using dlopen functionality.
7016 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
7018         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
7019         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
7020         _mm_maskz_range_ss, _mm_mask_range_round_ss,
7021         _mm_maskz_range_round_ss): New intrinsics.
7022         (__builtin_ia32_rangesd128_round)
7023         (__builtin_ia32_rangess128_round): Remove.
7024         (__builtin_ia32_rangesd128_mask_round,
7025         __builtin_ia32_rangess128_mask_round): New builtins.
7026         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
7027         __builtin_ia32_rangess128_round): Remove.
7028         (__builtin_ia32_rangesd128_mask_round,
7029         __builtin_ia32_rangess128_mask_round): New builtins.
7030         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
7031         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
7032         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
7033         "<round_saeonly_constraint>")): Changed to ...
7034         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
7035         "<round_saeonly_scalar_constraint>")): ... this.
7036         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
7037         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
7038         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
7039         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
7040         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
7042 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
7044         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
7045         options.
7046         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
7047         Remove all values except native, 8540 and 8548.
7049 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
7051         * config/i386/i386.c (ix86_output_function_return): Pass
7052         INVALID_REGNUM, instead of -1, as invalid register number to
7053         indirect_thunk_name and output_indirect_thunk.
7055 2018-02-02  Julia Koval  <julia.koval@intel.com>
7057         * config.gcc: Add -march=icelake.
7058         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
7059         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
7060         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
7061         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
7062         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
7063         (processor_target_table): Add icelake.
7064         (ix86_option_override_internal): Handle new PTAs.
7065         (get_builtin_code_for_version): Handle icelake.
7066         (M_INTEL_COREI7_ICELAKE): New.
7067         (fold_builtin_cpu): Handle icelake.
7068         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
7069         * doc/invoke.texi: Add -march=icelake.
7071 2018-02-02  Julia Koval  <julia.koval@intel.com>
7073         * config/i386/i386.c (ix86_option_override_internal): Change flags type
7074         to wide_int_bitmask.
7075         * wide-int-bitmask.h: New.
7077 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
7079         PR target/84066
7080         * config/i386/i386.md: Replace Pmode with word_mode in
7081         builtin_setjmp_setup and builtin_longjmp to support x32.
7083 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
7085         PR target/56010
7086         PR target/83743
7087         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
7088         #include "opts.h".
7089         (rs6000_supported_cpu_names): New static variable.
7090         (linux_cpu_translation_table): Likewise.
7091         (elf_platform) <cpu>: Define new static variable and use it.
7092         Translate kernel AT_PLATFORM name to canonical name if needed.
7093         Error if platform name is unknown.
7095 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
7097         PR target/84089
7098         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
7100 2018-02-01  Jeff Law  <law@redhat.com>
7102         PR target/84128
7103         * config/i386/i386.c (release_scratch_register_on_entry): Add new
7104         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
7105         the scratch if RELEASE_VIA_POP is false.
7106         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
7107         If we have to save a temporary register, decrement SIZE appropriately.
7108         Pass new arguments to release_scratch_register_on_entry.
7109         (ix86_adjust_stack_and_probe): Likewise.
7110         (ix86_emit_probe_stack_range): Pass new arguments to
7111         release_scratch_register_on_entry.
7113 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
7115         PR rtl-optimization/84157
7116         * combine.c (change_zero_ext): Use REG_P predicate in
7117         front of HARD_REGISTER_P predicate.
7119 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
7121         * config/avr/avr.c (avr_option_override): Move disabling of
7122         -fdelete-null-pointer-checks to...
7123         * common/config/avr/avr-common.c (avr_option_optimization_table):
7124         ...here.
7126 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7128         PR tree-optimization/81635
7129         * tree-data-ref.c (split_constant_offset_1): For types that
7130         wrap on overflow, try to use range info to prove that wrapping
7131         cannot occur.
7133 2018-02-01  Renlin Li  <renlin.li@arm.com>
7135         PR target/83370
7136         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
7137         TAILCALL_ADDR_REGS.
7138         (aarch64_register_move_cost): Likewise.
7139         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
7140         TAILCALL_ADDR_REGS.
7141         (REG_CLASS_NAMES): Likewise.
7142         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
7143         TAILCALL_ADDR_REGS. Remove IP registers.
7144         * config/aarch64/aarch64.md (Ucs): Update register constraint.
7146 2018-02-01  Richard Biener  <rguenther@suse.de>
7148         * domwalk.h (dom_walker::dom_walker): Add additional constructor
7149         for specifying RPO order and allow NULL for that.
7150         * domwalk.c (dom_walker::dom_walker): Likewise.
7151         (dom_walker::walk): Handle NULL RPO order.
7152         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
7153         in RPO order.
7154         (rewrite_update_dom_walker): Likewise.
7155         (mark_def_dom_walker): Likewise.
7157 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7159         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
7160         (aarch64_maybe_expand_sve_subreg_move): Declare.
7161         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
7162         * config/aarch64/predicates.md (aarch64_any_register_operand): New
7163         predicate.
7164         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
7165         that are semantically a reverse operation.
7166         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
7167         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
7168         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
7169         functions.
7170         (aarch64_can_change_mode_class): For big-endian, forbid changes
7171         between two SVE modes if they have different element sizes.
7173 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7175         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
7176         the TImode handling for big-endian targets.
7178 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7180         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
7181         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
7182         not just bytes.
7183         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
7184         Remove BSWAP handing for big-endian targets and use the form of
7185         LD1RQ appropariate for the mode.
7187 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7189         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
7190         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
7191         duplicated element.
7193 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7195         PR tearget/83845
7196         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
7197         check for operands that need to go through aarch64_sve_reload_be.
7199 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
7201         PR tree-optimization/81661
7202         PR tree-optimization/84117
7203         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
7204         * tree-eh.c: Include gimplify.h.
7205         (find_trapping_overflow, replace_trapping_overflow,
7206         rewrite_to_non_trapping_overflow): New functions.
7207         * tree-vect-loop.c: Include tree-eh.h.
7208         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
7209         * tree-data-ref.c: Include tree-eh.h.
7210         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
7212 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
7214         PR rtl-optimization/84123
7215         * combine.c (change_zero_ext): Check if hard register satisfies
7216         can_change_dest_mode before calling gen_lowpart_SUBREG.
7218 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
7220         PR target/82444
7221         * ira.c (ira_init_register_move_cost): Remove assert.
7223 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
7225         PR rtl-optimization/84071
7226         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
7227         * doc/tm.texi: Regenerate.
7229 2018-01-31  Richard Biener  <rguenther@suse.de>
7231         PR tree-optimization/84132
7232         * tree-data-ref.c (analyze_miv_subscript): Properly
7233         check whether evolution_function_is_affine_multivariate_p
7234         before calling gcd_of_steps_may_divide_p.
7236 2018-01-31  Julia Koval  <julia.koval@intel.com>
7238         PR target/83618
7239         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
7240         * config/i386/i386.md (rdpid_rex64) New.
7241         (rdpid): Make 32bit only.
7243 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
7245         PR lto/84105
7246         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
7247         an IDENTIFIER_NODE for FUNCTION_TYPE's.
7249 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
7251         Revert
7252         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
7254         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
7256 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
7258         PR rtl-optimization/84071
7259         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
7260         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
7262 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
7264         * config/arc/arc.c (arc_handle_aux_attribute): New function.
7265         (arc_attribute_table): Add 'aux' attribute.
7266         (arc_in_small_data_p): Consider aux like variables.
7267         (arc_is_aux_reg_p): New function.
7268         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
7269         (arc_get_aux_arg): New function.
7270         (prepare_move_operands): Handle aux-register access.
7271         (arc_handle_aux_attribute): New function.
7272         * doc/extend.texi (ARC Variable attributes): Add subsection.
7274 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
7276         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
7277         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
7278         (arc_attribute_table): Add 'uncached' attribute.
7279         (arc_print_operand): Print '.di' flag for uncached memory
7280         accesses.
7281         (arc_in_small_data_p): Do not consider for small data the uncached
7282         types.
7283         (arc_is_uncached_mem_p): New function.
7284         * config/arc/predicates.md (compact_store_memory_operand): Check
7285         for uncached memory accesses.
7286         (nonvol_nonimm_operand): Likewise.
7287         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
7289 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
7291         PR c/84100
7292         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
7293         falign-loops=): Add Optimization flag.
7295 2018-01-30  Jeff Law  <law@redhat.com>
7297         PR target/84064
7298         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
7299         INT_REGISTERS_SAVED.  Check it prior to calling
7300         get_scratch_register_on_entry.
7301         (ix86_adjust_stack_and_probe): Similarly.
7302         (ix86_emit_probe_stack_range): Similarly.
7303         (ix86_expand_prologue): Corresponding changes.
7305 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7307         PR target/40411
7308         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
7309         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
7311 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
7313         PR target/84112
7314         * lra-constraints.c (curr_insn_transform): Process AND in the
7315         address.
7317 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
7319         PR rtl-optimization/83986
7320         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
7321         dependence against last_pending_memory_flush in addition to
7322         pending_jump_insns.
7324 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
7326         PR tree-optimization/81611
7327         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
7328         copies.
7330 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
7332         PR target/83758
7333         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
7334         a reg rtx.
7336 2018-01-30  Richard Biener  <rguenther@suse.de>
7337             Jakub Jelinek  <jakub@redhat.com>
7339         PR tree-optimization/84111
7340         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
7341         inner loops added during recursion, as they don't have up-to-date
7342         SSA form.
7344 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
7346         PR ipa/81360
7347         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
7348         (can_inline_edge_by_limits_p): ... here.
7349         (can_early_inline_edge_p, check_callers,
7350         update_caller_keys, update_callee_keys, recursive_inlining,
7351         add_new_edges_to_heap, speculation_useful_p,
7352         inline_small_functions,
7353         inline_small_functions, flatten_function,
7354         inline_to_all_callers_1): Update.
7356 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
7358         * profile-count.c (profile_count::combine_with_ipa_count): Handle
7359         zeros correctly.
7361 2018-01-30  Richard Biener  <rguenther@suse.de>
7363         PR tree-optimization/83008
7364         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
7365         invariant and constant vector uses in stmts when they need
7366         more than one stmt.
7368 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7370         PR bootstrap/84017
7371         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
7372         * configure: Regenerate.
7374 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
7376         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
7377         pattern.
7378         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
7379         Use gen_rtx_REG rather than gen_lowpart.
7381 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
7383         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
7384         rather than 0 when creating partial subregs.
7386 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
7388         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
7389         of usage.
7391 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
7393         PR target/81550
7394         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
7395         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
7396         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
7397         flags.  This restores the settings used before the 2017-07-24.
7398         Turning off pre increment/decrement/modify allows IVOPTS to
7399         optimize DF/SF loops where the index is an int.
7401 2018-01-29  Richard Biener  <rguenther@suse.de>
7402             Kelvin Nilsen  <kelvin@gcc.gnu.org>
7404         PR bootstrap/80867
7405         * tree-vect-stmts.c (vectorizable_call): Don't call
7406         targetm.vectorize_builtin_md_vectorized_function if callee is
7407         NULL.
7409 2018-01-22  Carl Love  <cel@us.ibm.com>
7411         * doc/extend.tex: Fix typo in second arg in
7412         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
7414 2018-01-29  Richard Biener  <rguenther@suse.de>
7416         PR tree-optimization/84086
7417         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
7418         (flush_ssaname_freelist): When SSA names were released reset
7419         the SCEV hash table.
7421 2018-01-29  Richard Biener  <rguenther@suse.de>
7423         PR tree-optimization/84057
7424         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
7425         removed paths when removing edges.
7427 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
7429         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
7430         -mfunction-return=@var{choice}.
7432 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
7434         PR diagnostic/84034
7435         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
7436         Handle CR like TAB.
7437         (layout::print_source_line): Likewise.
7438         (test_get_line_width_without_trailing_whitespace): Add test cases.
7440 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
7442         PR middle-end/84040
7443         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
7444         debug insns.
7446 2018-01-26  Jim Wilson  <jimw@sifive.com>
7448         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
7450         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
7451         specified.
7453 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7455         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
7456         and CMP + SUB-immediate -> SUBS.
7458 2018-01-26  Martin Sebor  <msebor@redhat.com>
7460         PR tree-optimization/83896
7461         * tree-ssa-strlen.c (get_string_len): Rename...
7462         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
7463         Avoid assuming length is constant.
7464         (handle_char_store): Use HOST_WIDE_INT for string length.
7466 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
7468         PR target/81763
7469         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
7470         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
7472 2018-01-26  Richard Biener  <rguenther@suse.de>
7474         PR rtl-optimization/84003
7475         * dse.c (record_store): Only record redundant stores when
7476         the earlier store aliases at least all accesses the later one does.
7478 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
7480         PR rtl-optimization/83985
7481         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
7482         REG_CFA_RESTORE insns.
7483         (delete_unmarked_insns): Don't ignore separate shrink wrapping
7484         REG_CFA_RESTORE insns here.
7486         PR c/83989
7487         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
7488         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
7490 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
7492         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
7493         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
7494         (arc_init): Likewise.
7495         (arc_override_options): Likewise.
7496         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
7497         value.
7498         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
7499         support.
7500         * config/arc/arc.h (TARGET_DBNZ): Define.
7501         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
7502         properly set the tune attribute.
7503         (dbnz): Use TARGET_DBNZ guard.
7504         * config/arc/arc.opt (mtune): Add core3 option.
7506 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
7508         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
7509         recognize new pic like addresses.
7510         (arc_delegitimize_address): Clean up.
7512 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
7514         * config/arc/arc-arches.def: Option mrf16 valid for all
7515         architectures.
7516         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
7517         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
7518         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
7519         * config/arc/arc-tables.opt: Regenerate.
7520         * config/arc/arc.c (arc_conditional_register_usage): Handle
7521         reduced register file case.
7522         (arc_file_start): Set must have build attributes.
7523         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
7524         mrf16 option value.
7525         * config/arc/arc.opt (mrf16): Add new option.
7526         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
7527         * config/arc/genmultilib.awk: Handle new mrf16 option.
7528         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
7529         * config/arc/t-multilib: Regenerate.
7530         * doc/invoke.texi (ARC Options): Document mrf16 option.
7532 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
7534         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
7535         * config/arc/arc.c (arc_handle_secure_attribute): New function.
7536         (arc_attribute_table): Add 'secure_call' attribute.
7537         (arc_print_operand): Print secure call operand.
7538         (arc_function_ok_for_sibcall): Don't optimize tail calls when
7539         secure.
7540         (arc_is_secure_call_p): New function.  * config/arc/arc.md
7541         (call_i): Add support for sjli instruction.
7542         (call_value_i): Likewise.
7543         * config/arc/constraints.md (Csc): New constraint.
7545 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
7546             John Eric Martin  <John.Martin@emmicro-us.com>
7548         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
7549         * config/arc/arc.c (_arc_jli_section): New struct.
7550         (arc_jli_section): New type.
7551         (rc_jli_sections): New static variable.
7552         (arc_handle_jli_attribute): New function.
7553         (arc_attribute_table): Add jli_always and jli_fixed attribute.
7554         (arc_file_end): New function.
7555         (TARGET_ASM_FILE_END): Define.
7556         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
7557         (arc_add_jli_section): New function.
7558         (jli_call_scan): Likewise.
7559         (arc_reorg): Call jli_call_scan.
7560         (arc_output_addsi): Remove 'S' from printing asm operand.
7561         (arc_is_jli_call_p): New function.
7562         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
7563         operand.
7564         (movhi_insn): Likewise.
7565         (movsi_insn): Likewise.
7566         (movsi_set_cc_insn): Likewise.
7567         (loadqi_update): Likewise.
7568         (load_zeroextendqisi_update): Likewise.
7569         (load_signextendqisi_update): Likewise.
7570         (loadhi_update): Likewise.
7571         (load_zeroextendhisi_update): Likewise.
7572         (load_signextendhisi_update): Likewise.
7573         (loadsi_update): Likewise.
7574         (loadsf_update): Likewise.
7575         (movsicc_insn): Likewise.
7576         (bset_insn): Likewise.
7577         (bxor_insn): Likewise.
7578         (bclr_insn): Likewise.
7579         (bmsk_insn): Likewise.
7580         (bicsi3_insn): Likewise.
7581         (cmpsi_cc_c_insn): Likewise.
7582         (movsi_ne): Likewise.
7583         (movsi_cond_exec): Likewise.
7584         (clrsbsi2): Likewise.
7585         (norm_f): Likewise.
7586         (normw): Likewise.
7587         (swap): Likewise.
7588         (divaw): Likewise.
7589         (flag): Likewise.
7590         (sr): Likewise.
7591         (kflag): Likewise.
7592         (ffs): Likewise.
7593         (ffs_f): Likewise.
7594         (fls): Likewise.
7595         (call_i): Remove 'S' asm letter, add jli instruction.
7596         (call_value_i): Likewise.
7597         * config/arc/arc.op (mjli-always): New option.
7598         * config/arc/constraints.md (Cji): New constraint.
7599         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
7600         operand.
7601         (subsf3_fpx): Likewise.
7602         (mulsf3_fpx): Likewise.
7603         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
7604         asm operand.
7605         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
7606         function attrbutes.
7607         * doc/invoke.texi (ARC): Document mjli-always option.
7609 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
7611         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const 
7612         avoid addition with 0 and use incw and decw where possible.
7614 2018-01-26  Richard Biener  <rguenther@suse.de>
7616         PR tree-optimization/81082
7617         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
7618         association if it requires casting to unsigned.
7619         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
7620         from fold_plusminus_mult_expr to catch important cases late when
7621         range info is available.
7623 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7625         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
7626         * configure.ac (hidden_linkonce): New test.
7627         * configure: Regenerate.
7628         * config.in: Regenerate.
7630 2018-01-26  Julia Koval  <julia.koval@intel.com>
7632         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
7633         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
7634         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
7635         _mm_mask_bitshuffle_epi64_mask): Fix type.
7636         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
7637         USI_FTYPE_V4DI_V4DI_USI): Remove.
7638         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
7639         __builtin_ia32_vpshufbitqmb256_mask,
7640         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
7641         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
7642         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
7644 2018-01-26  Alan Modra  <amodra@gmail.com>
7646         PR target/84033
7647         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
7648         UNSPEC_VBPERMQ.  Sort other unspecs.
7650 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
7652         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
7654 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
7656         PR middle-end/83055
7657         * predict.c (drop_profile): Do not push/pop cfun; update also
7658         node->count.
7659         (handle_missing_profiles): Fix logic looking for zero profiles.
7661 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
7663         PR middle-end/83977
7664         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
7665         on functions with #pragma omp declare simd or functions with simd
7666         attribute.
7667         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
7668         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
7669         Remove trailing \n from warning_at calls.
7671 2018-01-25  Tom de Vries  <tom@codesourcery.com>
7673         PR target/84028
7674         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
7675         for neutered workers.
7677 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
7679         PR target/68467
7680         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
7681         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
7683 2018-01-24  Jeff Law  <law@redhat.com>
7685         PR target/83994
7686         * i386.c (get_probe_interval): Move to earlier point.
7687         (ix86_compute_frame_layout): If -fstack-clash-protection and
7688         the frame is larger than the probe interval, then use pushes
7689         to save registers rather than reg->mem moves.
7690         (ix86_expand_prologue): Remove conditional for int_registers_saved
7691         assertion.
7693 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
7695         PR target/84014
7696         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
7697         min/max for never referenced object.
7699 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
7701         PR middle-end/83977
7702         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
7703         here.
7704         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
7705         attributes from DECL_ATTRIBUTES (decl) without affecting
7706         DECL_ATTRIBUTES (current_function_decl).
7707         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
7708         functions with non-NULL DECL_ABSTRACT_ORIGIN.
7710 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
7712         PR tree-optimization/83979
7713         * fold-const.c (fold_comparison): Use constant_boolean_node
7714         instead of boolean_{true,false}_node.
7716 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
7718         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
7719         with zero counts.
7721 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
7723         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
7724         Simplify the clause that sets the length attribute.
7725         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
7726         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
7727         clause that sets the length attribute.
7728         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
7730 2018-01-24  Tom de Vries  <tom@codesourcery.com>
7732         PR target/83589
7733         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
7734         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
7735         Add strict parameter.
7736         (prevent_branch_around_nothing): Insert dummy insn between branch to
7737         label and label with no ptx insn inbetween.
7738         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
7740 2018-01-24  Tom de Vries  <tom@codesourcery.com>
7742         PR target/81352
7743         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
7744         for neutered threads in warp.
7745         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
7747 2018-01-24  Richard Biener  <rguenther@suse.de>
7749         PR tree-optimization/83176
7750         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
7751         operands.
7753 2018-01-24  Richard Biener  <rguenther@suse.de>
7755         PR tree-optimization/82819
7756         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
7757         code generating pluses that are no-ops in the target precision.
7759 2018-01-24  Richard Biener  <rguenther@suse.de>
7761         PR middle-end/84000
7762         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
7764 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
7766         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
7767         to merge probabilities.
7768         * predict.c (probably_never_executed): Also mark as cold functions
7769         with global 0 profile and guessed local profile.
7770         * profile-count.c (profile_probability::combine_with_count): New
7771         member function.
7772         * profile-count.h (profile_probability::operator*,
7773         profile_probability::operator*=, profile_probability::operator/,
7774         profile_probability::operator/=): Reduce precision to adjusted
7775         and set value to guessed on contradictory divisions.
7776         (profile_probability::combine_with_freq): Remove.
7777         (profile_probability::combine_wiht_count): Declare.
7778         (profile_count::force_nonzero):: Set to adjusted.
7779         (profile_count::probability_in):: Set quality to adjusted.
7780         * tree-ssa-tail-merge.c (replace_block_by): Use
7781         combine_with_count.
7783 2018-01-23  Andrew Waterman  <andrew@sifive.com>
7784             Jim Wilson  <jimw@sifive.com>
7786         * config/riscv/riscv.c (riscv_stack_boundary): New.
7787         (riscv_option_override): Set riscv_stack_boundary.  Handle
7788         riscv_preferred_stack_boundary_arg.
7789         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
7790         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
7791         (STACK_BOUNDARY): Set to riscv_stack_boundary.
7792         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
7793         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
7794         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
7796 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
7798         PR target/83905
7799         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
7800         of struct ix86_frame.
7801         (ix86_expand_epilogue): Likewise.  Add a local variable for
7802         the reg_save_offset field in struct ix86_frame.
7804 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
7806         PR tree-optimization/82604
7807         * tree-loop-distribution.c (enum partition_kind): New enum item
7808         PKIND_PARTIAL_MEMSET.
7809         (partition_builtin_p): Support above new enum item.
7810         (generate_code_for_partition): Ditto.
7811         (compute_access_range): Differentiate cases that equality can be
7812         proven at all loops, the innermost loops or no loops.
7813         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
7814         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
7815         (finalize_partitions, distribute_loop): Don't fuse partition of
7816         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
7817         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
7818         parloop is enabled.
7820 2018-01-23  Martin Liska  <mliska@suse.cz>
7822         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
7823         order to ignore the predictor.
7824         (PRED_POLYMORPHIC_CALL): Likewise.
7825         (PRED_RECURSIVE_CALL): Likewise.
7827 2018-01-23  Martin Liska  <mliska@suse.cz>
7829         * tree-profile.c (tree_profiling): Print function header to
7830         aware reader which function we are working on.
7831         * value-prof.c (gimple_find_values_to_profile): Do not print
7832         not interesting value histograms.
7834 2018-01-23  Martin Liska  <mliska@suse.cz>
7836         * profile-count.h (enum profile_quality): Add
7837         profile_uninitialized as the first value. Do not number values
7838         as they are zero based.
7839         (profile_count::verify): Update sanity check.
7840         (profile_probability::verify): Likewise.
7842 2018-01-23  Nathan Sidwell  <nathan@acm.org>
7844         * doc/invoke.texi (ffor-scope): Deprecate.
7846 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
7848         PR tree-optimization/83510
7849         * domwalk.c (set_all_edges_as_executable): New function.
7850         (dom_walker::dom_walker): Convert bool param
7851         "skip_unreachable_blocks" to enum reachability.  Move setup of
7852         edge flags to set_all_edges_as_executable and only do it when
7853         reachability is REACHABLE_BLOCKS.
7854         * domwalk.h (enum dom_walker::reachability): New enum.
7855         (dom_walker::dom_walker): Convert bool param
7856         "skip_unreachable_blocks" to enum reachability.
7857         (set_all_edges_as_executable): New decl.
7858         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
7859         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
7860         "reachability".
7861         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
7862         but converting true to REACHABLE_BLOCKS.
7863         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
7864         * tree-vrp.c
7865         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
7866         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
7867         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
7868         REACHABLE_BLOCKS.
7869         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
7870         if check_all_array_refs will be called.
7872 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
7874         * tree.c (selftest::test_location_wrappers): Add more test
7875         coverage.
7877 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
7879         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
7880         (selftest::test_bit_in_range): Likewise.
7882 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
7884         PR testsuite/83888
7885         * doc/sourcebuild.texi (vect_float): Say that the selector
7886         only describes the situation when -funsafe-math-optimizations is on.
7887         (vect_float_strict): Document.
7889 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
7891         PR tree-optimization/83965
7892         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
7893         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
7894         instead of checking only for a reduction.
7895         (vect_recog_widen_sum_pattern): Likewise.
7897 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
7899         * predict.c (probably_never_executed): Only use precise profile info.
7900         (compute_function_frequency): Skip after inlining hack since we now
7901         have quality checking.
7903 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
7905         * profile-count.h (profile_probability::very_unlikely,
7906         profile_probability::unlikely, profile_probability::even): Set
7907         precision to guessed.
7909 2018-01-23  Richard Biener  <rguenther@suse.de>
7911         PR tree-optimization/83963
7912         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
7913         Properly terminate dominator walk when crossing the exit edge not
7914         when visiting its source block.
7916 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
7918         PR c++/83918
7919         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
7920         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
7922 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
7924         PR tree-optimization/83957
7925         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
7926         semicolon after for body surrounded by braces.
7928         PR tree-optimization/83081
7929         * profile-count.h (profile_probability::split): New method.
7930         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
7931         Use profile_probability::split.
7932         (do_compare_rtx_and_jump): Fix adjustment of probabilities
7933         when splitting a single conditional jump into 2.
7935 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
7937         PR tree-optimization/69452
7938         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
7939         decl.
7941 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7943         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
7944         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
7945         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
7947 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7949         * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
7950         * config/rl78/rl78.md (movdi): New define_expand.
7951         * config/rl78/rl78.c (rl78_split_movdi): New function.
7953 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
7955         PR target/83862
7956         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
7957         no longer used.
7958         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
7959         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
7960         128-bit to produce an UNSPEC move to get the double word with the
7961         signbit and then a shift directly to do signbit.
7962         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
7963         implementation with a new version that just does either a direct
7964         move or a regular move.  Move memory interface to separate insns.
7965         Move insns so they are next to the expander.
7966         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
7967         with signbit move.  Split big and little endian case.
7968         (signbit<mode>2_dm_mem_le): Likewise.
7969         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
7970         (signbit<mode>2_dm2): Likewise.
7972 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7974         * config/rl78/rl78.md (anddi3): New define_expand.
7976 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7978         * config/rl78/rl78.md (umindi3): New define_expand.
7980 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7982         * config/rl78/rl78.md (smindi3): New define_expand.
7984 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7986         * config/rl78/rl78.md (smaxdi3): New define_expand.
7988 2018-01-22  Carl Love  <cel@us.ibm.com>
7990         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
7991         LVX_V1TI): Add macro expansion.
7992         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
7993         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
7994         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
7995         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
7996         Change check to determine if the instruction is a byte reversing
7997         entry.  Fix typo in comment.
7998         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
7999         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
8000         Add def_builtin calls for new builtins.
8001         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
8002         Add define_insn expansion.
8004 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8006         * config/rl78/rl78.md (umaxdi3): New define_expand.
8008 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8010         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
8011         for non-QImode registers.
8013 2018-01-22  Richard Biener  <rguenther@suse.de>
8015         PR tree-optimization/83963
8016         * graphite-scop-detection.c (scop_detection::get_sese): Delay
8017         including the loop exit block.
8018         (scop_detection::merge_sese): Likewise.
8019         (scop_detection::add_scop): Do it here instead.
8021 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8023         * doc/sourcebuild.texi (arm_softfloat): Document.
8025 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
8027         PR gcc/77734
8028         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
8029         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
8030         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
8032 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8033             David Edelsohn  <dje.gcc@gmail.com>
8035         PR target/83946
8036         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8037         Change "crset eq" to "crset 2".
8038         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8039         (*call_indirect_aix<mode>_nospec): Likewise.
8040         (*call_value_indirect_aix<mode>_nospec): Likewise.
8041         (*call_indirect_elfv2<mode>_nospec): Likewise.
8042         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
8043         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
8044         change assembly output from . to $.
8045         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8046         (indirect_jump<mode>_nospec): Change assembly output from . to $.
8047         (*tablejump<mode>_internal1_nospec): Likewise.
8049 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
8051         PR target/80870
8052         * config/sh/sh_optimize_sett_clrt.cc:
8053         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
8055 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
8057         PR tree-optimization/83940
8058         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
8059         offset_dt to vect_constant_def rather than vect_unknown_def_type.
8060         (vect_check_load_store_mask): Add a mask_dt_out parameter and
8061         use it to pass back the definition type.
8062         (vect_check_store_rhs): Likewise rhs_dt_out.
8063         (vect_build_gather_load_calls): Add a mask_dt argument and use
8064         it instead of a call to vect_is_simple_use.
8065         (vectorizable_store): Update calls to vect_check_load_store_mask
8066         and vect_check_store_rhs.  Use the dt returned by the latter instead
8067         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
8068         instead of calls to vect_is_simple_use.  Pass the scalar rather
8069         than the vector operand to vect_is_simple_use when handling
8070         second and subsequent copies of an rhs value.
8071         (vectorizable_load): Update calls to vect_check_load_store_mask
8072         and vect_build_gather_load_calls.  Use the cached mask_dt and
8073         gs_info.offset_dt instead of calls to vect_is_simple_use.
8075 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
8077         PR middle-end/83945
8078         * tree-emutls.c: Include gimplify.h.
8079         (lower_emutls_2): New function.
8080         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
8081         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
8082         it before further processing.
8084         PR target/83930
8085         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
8086         UINTVAL (trueop1) instead of INTVAL (op1).
8088 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
8090         PR debug/81570
8091         PR debug/83728
8092         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
8093         INCOMING_FRAME_SP_OFFSET if not defined.
8094         (scan_trace): Add ENTRY argument.  If true and
8095         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
8096         emit a note to adjust the CFA offset.
8097         (create_cfi_notes): Adjust scan_trace callers.
8098         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
8099         INCOMING_FRAME_SP_OFFSET in the CIE.
8100         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
8101         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
8102         Likewise.
8103         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
8104         * doc/tm.texi: Regenerated.
8106 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8108         PR rtl-optimization/83147
8109         * lra-constraints.c (remove_inheritance_pseudos): Use
8110         lra_substitute_pseudo_within_insn.
8112 2018-01-19  Tom de Vries  <tom@codesourcery.com>
8113             Cesar Philippidis  <cesar@codesourcery.com>
8115         PR target/83920
8116         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
8118 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
8120         PR target/83790
8121         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
8122         spaces for function labels.
8124 2018-01-19  Martin Liska  <mliska@suse.cz>
8126         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
8127         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
8128         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
8129         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
8130         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
8131         (PRED_CONST_RETURN): Change from 69 to 65.
8132         (PRED_NULL_RETURN): Change from 91 to 71.
8133         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
8134         (PRED_LOOP_GUARD): Change from 66 to 73.
8136 2018-01-19  Martin Liska  <mliska@suse.cz>
8138         * predict.c (predict_insn_def): Add new assert.
8139         (struct branch_predictor): Change type to signed integer.
8140         (test_prediction_value_range): Amend test to cover
8141         PROB_UNINITIALIZED.
8142         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
8143         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
8144         (PRED_LOOP_ITERATIONS_MAX): Likewise.
8145         (PRED_LOOP_IV_COMPARE): Likewise.
8146         * predict.h (PROB_UNINITIALIZED): Define new constant.
8148 2018-01-19  Martin Liska  <mliska@suse.cz>
8150         * predict.c (dump_prediction): Add new format for
8151         analyze_brprob.py script which is enabled with -details
8152         suboption.
8153         * profile-count.h (precise_p): New function.
8155 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
8157         PR tree-optimization/83922
8158         * tree-vect-loop.c (vect_verify_full_masking): Return false if
8159         there are no statements that need masking.
8160         (vect_active_double_reduction_p): New function.
8161         (vect_analyze_loop_operations): Use it when handling phis that
8162         are not in the loop header.
8164 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
8166         PR tree-optimization/83914
8167         * tree-vect-loop.c (vectorizable_induction): Don't convert
8168         init_expr or apply the peeling adjustment for inductions
8169         that are nested within the vectorized loop.
8171 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8173         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
8174         instead of NEG.
8176 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
8178         PR sanitizer/81715
8179         PR testsuite/83882
8180         * function.h (gimplify_parameters): Add gimple_seq * argument.
8181         * function.c: Include gimple.h and options.h.
8182         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
8183         for the added local temporaries if needed.
8184         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
8185         if there are any parameter cleanups, wrap whole body into a
8186         try/finally with the cleanups.
8188 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
8190         PR target/82964
8191         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
8192         Use GET_MODE_CLASS for scalar floating point.
8194 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
8196         PR ipa/82256
8197         patch by PaX Team
8198         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
8199         Fix call of call_cgraph_insertion_hooks.
8201 2018-01-18  Martin Sebor  <msebor@redhat.com>
8203         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
8205 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
8207         PR ipa/83619
8208         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
8209         frequencies.
8211 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
8213         PR other/70268
8214         * common.opt: (-ffile-prefix-map): New option.
8215         * opts.c (common_handle_option): Defer it.
8216         * opts-global.c (handle_common_deferred_options): Handle it.
8217         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
8218         * file-prefix-map.h: New file.
8219         (remap_debug_filename, add_debug_prefix_map): ...here.
8220         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
8221         * final.c (debug_prefix_map, add_debug_prefix_map
8222         remap_debug_filename): Move to...
8223         * file-prefix-map.c: New file.
8224         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
8225         generalize, get rid of alloca(), use strrchr() instead of strchr().
8226         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
8227         Implement in terms of add_prefix_map().
8228         (remap_macro_filename, remap_debug_filename): Implement in term of
8229         remap_filename().
8230         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
8231         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
8232         * dbxout.c: Include file-prefix-map.h.
8233         * varasm.c: Likewise.
8234         * vmsdbgout.c: Likewise.
8235         * xcoffout.c: Likewise.
8236         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
8237         * doc/cppopts.texi (-fmacro-prefix-map): Document.
8238         * doc/invoke.texi (-ffile-prefix-map): Document.
8239         (-fdebug-prefix-map): Update description.
8241 2018-01-18  Martin Liska  <mliska@suse.cz>
8243         * config/i386/i386.c (indirect_thunk_name): Document that also
8244         lfence is emitted.
8245         (output_indirect_thunk): Document why both instructions
8246         (pause and lfence) are generated.
8248 2018-01-18  Richard Biener  <rguenther@suse.de>
8250         PR tree-optimization/83887
8251         * graphite-scop-detection.c
8252         (scop_detection::get_nearest_dom_with_single_entry): Remove.
8253         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
8254         (scop_detection::merge_sese): Re-implement with a flood-fill
8255         algorithm that properly finds a SESE region if it exists.
8257 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
8259         PR c/61240
8260         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
8261         pointer_diff optimizations use view_convert instead of convert.
8263 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8265         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8266         Generate different code for -mno-speculate-indirect-jumps.
8267         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8268         (*call_indirect_aix<mode>): Disable for
8269         -mno-speculate-indirect-jumps.
8270         (*call_indirect_aix<mode>_nospec): New define_insn.
8271         (*call_value_indirect_aix<mode>): Disable for
8272         -mno-speculate-indirect-jumps.
8273         (*call_value_indirect_aix<mode>_nospec): New define_insn.
8274         (*sibcall_nonlocal_sysv<mode>): Generate different code for
8275         -mno-speculate-indirect-jumps.
8276         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8278 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
8280         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
8281         long double type, set the flags for noting the default long double
8282         type, even if we don't pass or return a long double type.
8284 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
8286         PR ipa/83051
8287         * ipa-inline.c (flatten_function): Do not overwrite final inlining
8288         failure.
8290 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
8292         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
8293         support for merge[hl].
8294         (fold_mergehl_helper): New helper function.
8295         (tree-vector-builder.h): New #include for tree_vector_builder usage.
8296         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
8297         (altivec_vmrglw_direct): Add xxmrglw insn.
8299 2018-01-17  Andrew Waterman  <andrew@sifive.com>
8301         * config/riscv/riscv.c (riscv_conditional_register_usage): If
8302         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
8304 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
8306         PR lto/83121
8307         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
8308         call the lto_location_cache before reading the
8309         DECL_SOURCE_LOCATION of the types.
8311 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
8312             Richard Sandiford  <richard.sandiford@linaro.org>
8314         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
8315         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
8316         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
8317         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
8318         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
8319         Add declaration.
8320         * config/aarch64/constraints.md (aarch64_movti_operand):
8321         Limit immediates.
8322         * config/aarch64/predicates.md (Uti): Add new constraint.
8324 2018-01-17 Carl Love  <cel@us.ibm.com>
8326         * config/rs6000/vsx.md (define_expand xl_len_r,
8327         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
8328         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
8329         lxvll.
8330         (define_expand, define_insn): Move the shift left from  the
8331         define_insn to the define_expand for lxvl and stxvl instructions.
8332         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
8333         and XL_LEN_R definitions to PURE.
8335 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
8337         * config/i386/i386.c (indirect_thunk_name): Declare regno
8338         as unsigned int.  Compare regno with INVALID_REGNUM.
8339         (output_indirect_thunk): Ditto.
8340         (output_indirect_thunk_function): Ditto.
8341         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
8342         in the call to output_indirect_thunk_function.
8344 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
8346         PR middle-end/83884
8347         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
8348         rather than the size of inner_type to determine the stack slot size
8349         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
8351 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
8353         PR target/83546
8354         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
8355         to PTA_SILVERMONT.
8357 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
8359         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
8360         endian Linux systems to optionally enable multilibs for selecting
8361         the long double type if the user configured an explicit type.
8362         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
8363         have no long double multilibs if not defined.
8364         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
8365         warn if the user used -mabi={ieee,ibm}longdouble and we built
8366         multilibs for long double.
8367         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
8368         appropriate multilib option.
8369         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
8370         multilib options.
8371         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
8372         for building long double multilibs.
8373         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
8375 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
8377         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
8378         copies.
8380         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
8381         64 bits.
8382         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
8383         128 bits.
8385         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
8386         variables.
8388         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
8389         return value.
8391 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
8393         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
8394         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
8396 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
8398         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
8399         different rtl trees depending on TARGET_64BIT.
8400         (rs6000_gen_lvx): Likewise.
8402 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
8404         * config/visium/visium.md (nop): Tweak comment.
8405         (hazard_nop): Likewise.
8407 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8409         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
8410         -mspeculate-indirect-jumps.
8411         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
8412         for -mno-speculate-indirect-jumps.
8413         (*call_indirect_elfv2<mode>_nospec): New define_insn.
8414         (*call_value_indirect_elfv2<mode>): Disable for
8415         -mno-speculate-indirect-jumps.
8416         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
8417         (indirect_jump): Emit different RTL for
8418         -mno-speculate-indirect-jumps.
8419         (*indirect_jump<mode>): Disable for
8420         -mno-speculate-indirect-jumps.
8421         (*indirect_jump<mode>_nospec): New define_insn.
8422         (tablejump): Emit different RTL for
8423         -mno-speculate-indirect-jumps.
8424         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
8425         (tablejumpsi_nospec): New define_expand.
8426         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
8427         (tablejumpdi_nospec): New define_expand.
8428         (*tablejump<mode>_internal1): Disable for
8429         -mno-speculate-indirect-jumps.
8430         (*tablejump<mode>_internal1_nospec): New define_insn.
8431         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
8432         option.
8434 2018-01-16  Artyom Skrobov tyomitch@gmail.com
8436         * caller-save.c (insert_save): Drop unnecessary parameter.  All
8437         callers updated.
8439 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
8440             Richard Biener  <rguenth@suse.de>
8442         PR libgomp/83590
8443         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
8444         return early, inline manually is_gimple_sizepos.  Make sure if we
8445         call gimplify_expr we don't end up with a gimple constant.
8446         * tree.c (variably_modified_type_p): Don't return true for
8447         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
8448         * gimplify.h (is_gimple_sizepos): Remove.
8450 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
8452         PR tree-optimization/83857
8453         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
8454         vectorizable_live_operation for pure SLP statements.
8455         (vectorizable_live_operation): Handle PHIs.
8457 2018-01-16  Richard Biener  <rguenther@suse.de>
8459         PR tree-optimization/83867
8460         * tree-vect-stmts.c (vect_transform_stmt): Precompute
8461         nested_in_vect_loop_p since the scalar stmt may get invalidated.
8463 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
8465         PR c/83844
8466         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
8467         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
8468         If off is not INTEGER_CST, issue a may not be aligned warning
8469         rather than isn't aligned.  Use isn%'t rather than isn't.
8470         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
8471         into MULT_EXPR.
8472         <case MULT_EXPR>: Improve the case when bottom and one of the
8473         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
8474         operand, in that case check if the other operand is multiple of
8475         bottom divided by the INTEGER_CST operand.
8477 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
8479         PR target/83858
8480         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
8481         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
8482         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
8483         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
8484         * config/pa/pa.c (pa_function_arg_advance): Likewise.
8485         (pa_function_arg, pa_arg_partial_bytes): Likewise.
8486         (pa_function_arg_size): New function.
8488 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
8490         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
8491         in a separate statement.
8493 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
8495         PR tree-optimization/83847
8496         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
8497         group gathers and scatters.
8499 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
8501         PR rtl-optimization/86620
8502         * params.def (max-sched-ready-insns): Bump minimum value to 1.
8504         PR rtl-optimization/83213
8505         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
8506         to last if both are JUMP_INSNs.
8508         PR tree-optimization/83843
8509         * gimple-ssa-store-merging.c
8510         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
8511         store_immediate_info for bswap/nop orig_stores.
8513 2018-01-15  Andrew Waterman  <andrew@sifive.com>
8515         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
8516         !TARGET_MUL.
8517         <UDIV>: Increase cost if !TARGET_DIV.
8519 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
8521         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
8522         (define_attr "cr_logical_3op"): New.
8523         (cceq_ior_compare): Adjust.
8524         (cceq_ior_compare_complement): Adjust.
8525         (*cceq_rev_compare): Adjust.
8526         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
8527         (is_cracked_insn): Adjust.
8528         (insn_must_be_first_in_group): Adjust.
8529         * config/rs6000/40x.md: Adjust.
8530         * config/rs6000/440.md: Adjust.
8531         * config/rs6000/476.md: Adjust.
8532         * config/rs6000/601.md: Adjust.
8533         * config/rs6000/603.md: Adjust.
8534         * config/rs6000/6xx.md: Adjust.
8535         * config/rs6000/7450.md: Adjust.
8536         * config/rs6000/7xx.md: Adjust.
8537         * config/rs6000/8540.md: Adjust.
8538         * config/rs6000/cell.md: Adjust.
8539         * config/rs6000/e300c2c3.md: Adjust.
8540         * config/rs6000/e500mc.md: Adjust.
8541         * config/rs6000/e500mc64.md: Adjust.
8542         * config/rs6000/e5500.md: Adjust.
8543         * config/rs6000/e6500.md: Adjust.
8544         * config/rs6000/mpc.md: Adjust.
8545         * config/rs6000/power4.md: Adjust.
8546         * config/rs6000/power5.md: Adjust.
8547         * config/rs6000/power6.md: Adjust.
8548         * config/rs6000/power7.md: Adjust.
8549         * config/rs6000/power8.md: Adjust.
8550         * config/rs6000/power9.md: Adjust.
8551         * config/rs6000/rs64.md: Adjust.
8552         * config/rs6000/titan.md: Adjust.
8554 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
8556         * config/i386/predicates.md (indirect_branch_operand): Rewrite
8557         ix86_indirect_branch_register logic.
8559 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
8561         * config/i386/constraints.md (Bs): Update
8562         ix86_indirect_branch_register check.  Don't check
8563         ix86_indirect_branch_register with GOT_memory_operand.
8564         (Bw): Likewise.
8565         * config/i386/predicates.md (GOT_memory_operand): Don't check
8566         ix86_indirect_branch_register here.
8567         (GOT32_symbol_operand): Likewise.
8569 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
8571         * config/i386/predicates.md (constant_call_address_operand):
8572         Rewrite ix86_indirect_branch_register logic.
8573         (sibcall_insn_operand): Likewise.
8575 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
8577         * config/i386/constraints.md (Bs): Replace
8578         ix86_indirect_branch_thunk_register with
8579         ix86_indirect_branch_register.
8580         (Bw): Likewise.
8581         * config/i386/i386.md (indirect_jump): Likewise.
8582         (tablejump): Likewise.
8583         (*sibcall_memory): Likewise.
8584         (*sibcall_value_memory): Likewise.
8585         Peepholes of indirect call and jump via memory: Likewise.
8586         * config/i386/i386.opt: Likewise.
8587         * config/i386/predicates.md (indirect_branch_operand): Likewise.
8588         (GOT_memory_operand): Likewise.
8589         (call_insn_operand): Likewise.
8590         (sibcall_insn_operand): Likewise.
8591         (GOT32_symbol_operand): Likewise.
8593 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
8595         PR middle-end/83837
8596         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
8597         type rather than type addr's type points to.
8598         (expand_omp_atomic_mutex): Likewise.
8599         (expand_omp_atomic): Likewise.
8601 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
8603         PR target/83839
8604         * config/i386/i386.c (output_indirect_thunk_function): Use
8605         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
8606         for  __x86_return_thunk.
8608 2018-01-15  Richard Biener  <rguenther@suse.de>
8610         PR middle-end/83850
8611         * expmed.c (extract_bit_field_1): Fix typo.
8613 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8615         PR target/83687
8616         * config/arm/iterators.md (VF): New mode iterator.
8617         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
8618         Remove integer-related logic from pattern.
8619         (neon_vabd<mode>_3): Likewise.
8621 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
8623         PR middle-end/82694
8624         * common.opt (fstrict-overflow): No longer an alias.
8625         (fwrapv-pointer): New option.
8626         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
8627         also for pointer types based on flag_wrapv_pointer.
8628         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
8629         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
8630         opts->x_flag_wrapv got set.
8631         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
8632         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
8633         POINTER_TYPE_OVERFLOW_UNDEFINED.
8634         * match.pd: Likewise in address comparison pattern.
8635         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
8637 2018-01-15  Richard Biener  <rguenther@suse.de>
8639         PR lto/83804
8640         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
8641         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
8642         Reset type names to their identifier if their TYPE_DECL doesn't
8643         have linkage (and thus is used for ODR and devirt).
8644         (save_debug_info_for_decl): Remove.
8645         (save_debug_info_for_type): Likewise.
8646         (add_tree_to_fld_list): Adjust.
8647         * tree-pretty-print.c (dump_generic_node): Make dumping of
8648         type names more robust.
8650 2018-01-15  Richard Biener  <rguenther@suse.de>
8652         * BASE-VER: Bump to 8.0.1.
8654 2018-01-14  Martin Sebor  <msebor@redhat.com>
8656         PR other/83508
8657         * builtins.c (check_access): Avoid warning when the no-warning bit
8658         is set.
8660 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
8662         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
8663         * ira-color (allocno_hard_regs_compare): Likewise.
8665 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
8667         PR target/83013
8668         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
8669         Use .pushsection/.popsection.
8671 2018-01-14  Martin Sebor  <msebor@redhat.com>
8673         PR c++/81327
8674         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
8676 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
8678         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
8679         entry from extra_headers.
8680         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
8681         extra_headers, make the list bitwise identical to the i?86-*-* one.
8683 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
8685         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
8686         -mcmodel=large with -mindirect-branch=thunk,
8687         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
8688         -mfunction-return=thunk-extern.
8689         * doc/invoke.texi: Document -mcmodel=large is incompatible with
8690         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
8691         -mfunction-return=thunk and -mfunction-return=thunk-extern.
8693 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
8695         * config/i386/i386.c (print_reg): Print the name of the full
8696         integer register without '%'.
8697         (ix86_print_operand): Handle 'V'.
8698          * doc/extend.texi: Document 'V' modifier.
8700 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
8702         * config/i386/constraints.md (Bs): Disallow memory operand for
8703         -mindirect-branch-register.
8704         (Bw): Likewise.
8705         * config/i386/predicates.md (indirect_branch_operand): Likewise.
8706         (GOT_memory_operand): Likewise.
8707         (call_insn_operand): Likewise.
8708         (sibcall_insn_operand): Likewise.
8709         (GOT32_symbol_operand): Likewise.
8710         * config/i386/i386.md (indirect_jump): Call convert_memory_address
8711         for -mindirect-branch-register.
8712         (tablejump): Likewise.
8713         (*sibcall_memory): Likewise.
8714         (*sibcall_value_memory): Likewise.
8715         Disallow peepholes of indirect call and jump via memory for
8716         -mindirect-branch-register.
8717         (*call_pop): Replace m with Bw.
8718         (*call_value_pop): Likewise.
8719         (*sibcall_pop_memory): Replace m with Bs.
8720         * config/i386/i386.opt (mindirect-branch-register): New option.
8721         * doc/invoke.texi: Document -mindirect-branch-register option.
8723 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
8725         * config/i386/i386-protos.h (ix86_output_function_return): New.
8726         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
8727         set function_return_type.
8728         (indirect_thunk_name): Add ret_p to indicate thunk for function
8729         return.
8730         (output_indirect_thunk_function): Pass false to
8731         indirect_thunk_name.
8732         (ix86_output_indirect_branch_via_reg): Likewise.
8733         (ix86_output_indirect_branch_via_push): Likewise.
8734         (output_indirect_thunk_function): Create alias for function
8735         return thunk if regno < 0.
8736         (ix86_output_function_return): New function.
8737         (ix86_handle_fndecl_attribute): Handle function_return.
8738         (ix86_attribute_table): Add function_return.
8739         * config/i386/i386.h (machine_function): Add
8740         function_return_type.
8741         * config/i386/i386.md (simple_return_internal): Use
8742         ix86_output_function_return.
8743         (simple_return_internal_long): Likewise.
8744         * config/i386/i386.opt (mfunction-return=): New option.
8745         (indirect_branch): Mention -mfunction-return=.
8746         * doc/extend.texi: Document function_return function attribute.
8747         * doc/invoke.texi: Document -mfunction-return= option.
8749 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
8751         * config/i386/i386-opts.h (indirect_branch): New.
8752         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
8753         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
8754         with local indirect jump when converting indirect call and jump.
8755         (ix86_set_indirect_branch_type): New.
8756         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
8757         (indirectlabelno): New.
8758         (indirect_thunk_needed): Likewise.
8759         (indirect_thunk_bnd_needed): Likewise.
8760         (indirect_thunks_used): Likewise.
8761         (indirect_thunks_bnd_used): Likewise.
8762         (INDIRECT_LABEL): Likewise.
8763         (indirect_thunk_name): Likewise.
8764         (output_indirect_thunk): Likewise.
8765         (output_indirect_thunk_function): Likewise.
8766         (ix86_output_indirect_branch_via_reg): Likewise.
8767         (ix86_output_indirect_branch_via_push): Likewise.
8768         (ix86_output_indirect_branch): Likewise.
8769         (ix86_output_indirect_jmp): Likewise.
8770         (ix86_code_end): Call output_indirect_thunk_function if needed.
8771         (ix86_output_call_insn): Call ix86_output_indirect_branch if
8772         needed.
8773         (ix86_handle_fndecl_attribute): Handle indirect_branch.
8774         (ix86_attribute_table): Add indirect_branch.
8775         * config/i386/i386.h (machine_function): Add indirect_branch_type
8776         and has_local_indirect_jump.
8777         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
8778         to true.
8779         (tablejump): Likewise.
8780         (*indirect_jump): Use ix86_output_indirect_jmp.
8781         (*tablejump_1): Likewise.
8782         (simple_return_indirect_internal): Likewise.
8783         * config/i386/i386.opt (mindirect-branch=): New option.
8784         (indirect_branch): New.
8785         (keep): Likewise.
8786         (thunk): Likewise.
8787         (thunk-inline): Likewise.
8788         (thunk-extern): Likewise.
8789         * doc/extend.texi: Document indirect_branch function attribute.
8790         * doc/invoke.texi: Document -mindirect-branch= option.
8792 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
8794         PR ipa/83051
8795         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
8797 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
8799         * ipa-inline.c (want_inline_small_function_p): Return false if
8800         inlining has already failed with CIF_FINAL_ERROR.
8801         (update_caller_keys): Call want_inline_small_function_p before
8802         can_inline_edge_p.
8803         (update_callee_keys): Likewise.
8805 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
8807         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
8808         New function.
8809         (rs6000_quadword_masked_address_p): Likewise.
8810         (quad_aligned_load_p): Likewise.
8811         (quad_aligned_store_p): Likewise.
8812         (const_load_sequence_p): Add comment to describe the outer-most loop.
8813         (mimic_memory_attributes_and_flags): New function.
8814         (rs6000_gen_stvx): Likewise.
8815         (replace_swapped_aligned_store): Likewise.
8816         (rs6000_gen_lvx): Likewise.
8817         (replace_swapped_aligned_load): Likewise.
8818         (replace_swapped_load_constant): Capitalize argument name in
8819         comment describing this function.
8820         (rs6000_analyze_swaps): Add a third pass to search for vector loads
8821         and stores that access quad-word aligned addresses and replace
8822         with stvx or lvx instructions when appropriate.
8823         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
8824         New function prototype.
8825         (rs6000_quadword_masked_address_p): Likewise.
8826         (rs6000_gen_lvx): Likewise.
8827         (rs6000_gen_stvx): Likewise.
8828         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
8829         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
8830         when memory address is aligned.
8831         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
8832         this split to select lvx instruction when memory address is aligned.
8833         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
8834         instruction when memory address is aligned.
8835         (*vsx_le_perm_load_v16qi): Likewise.
8836         (four unnamed splitters): Modify to select the stvx instruction
8837         when memory is aligned.
8839 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
8841         * predict.c (determine_unlikely_bbs): Handle correctly BBs
8842         which appears in the queue multiple times.
8844 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8845             Alan Hayward  <alan.hayward@arm.com>
8846             David Sherwood  <david.sherwood@arm.com>
8848         * tree-vectorizer.h (vec_lower_bound): New structure.
8849         (_loop_vec_info): Add check_nonzero and lower_bounds.
8850         (LOOP_VINFO_CHECK_NONZERO): New macro.
8851         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
8852         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
8853         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
8854         fields.  Make seg_len the distance travelled, not including the
8855         access size.
8856         (dr_direction_indicator): Declare.
8857         (dr_zero_step_indicator): Likewise.
8858         (dr_known_forward_stride_p): Likewise.
8859         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
8860         tree-ssanames.h.
8861         (runtime_alias_check_p): Allow runtime alias checks with
8862         variable strides.
8863         (operator ==): Compare access_size and align.
8864         (prune_runtime_alias_test_list): Rework for new distinction between
8865         the access_size and seg_len.
8866         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
8867         segment lengths.
8868         (get_segment_min_max): New function.
8869         (create_intersect_range_checks): Use it.
8870         (dr_step_indicator): New function.
8871         (dr_direction_indicator): Likewise.
8872         (dr_zero_step_indicator): Likewise.
8873         (dr_known_forward_stride_p): Likewise.
8874         * tree-loop-distribution.c (data_ref_segment_size): Return
8875         DR_STEP * (niters - 1).
8876         (compute_alias_check_pairs): Update call to the dr_with_seg_len
8877         constructor.
8878         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
8879         (vect_preserves_scalar_order_p): New function, split out from...
8880         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
8881         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
8882         (vect_vfa_access_size): New function.
8883         (vect_vfa_align): Likewise.
8884         (vect_compile_time_alias): Take access_size_a and access_b arguments.
8885         (dump_lower_bound): New function.
8886         (vect_check_lower_bound): Likewise.
8887         (vect_small_gap_p): Likewise.
8888         (vectorizable_with_step_bound_p): Likewise.
8889         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
8890         depencies if the vectorization factor is 1.  Convert the checks
8891         for nonzero steps into checks on the bounds of DR_STEP.  Try using
8892         a bunds check for variable steps if the minimum required step is
8893         relatively small. Update calls to the dr_with_seg_len
8894         constructor and to vect_compile_time_alias.
8895         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
8896         function.
8897         (vect_loop_versioning): Call it.
8898         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
8899         when retrying.
8900         (vect_estimate_min_profitable_iters): Account for any bounds checks.
8902 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8903             Alan Hayward  <alan.hayward@arm.com>
8904             David Sherwood  <david.sherwood@arm.com>
8906         * doc/sourcebuild.texi (vect_scatter_store): Document.
8907         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
8908         optabs.
8909         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
8910         Document.
8911         * genopinit.c (main): Add supports_vec_scatter_store and
8912         supports_vec_scatter_store_cached to target_optabs.
8913         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
8914         IFN_MASK_SCATTER_STORE.
8915         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
8916         functions.
8917         * internal-fn.h (internal_store_fn_p): Declare.
8918         (internal_fn_stored_value_index): Likewise.
8919         * internal-fn.c (scatter_store_direct): New macro.
8920         (expand_scatter_store_optab_fn): New function.
8921         (direct_scatter_store_optab_supported_p): New macro.
8922         (internal_store_fn_p): New function.
8923         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
8924         IFN_MASK_SCATTER_STORE.
8925         (internal_fn_mask_index): Likewise.
8926         (internal_fn_stored_value_index): New function.
8927         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
8928         for scatter stores.
8929         * optabs-query.h (supports_vec_scatter_store_p): Declare.
8930         * optabs-query.c (supports_vec_scatter_store_p): New function.
8931         * tree-vectorizer.h (vect_get_store_rhs): Declare.
8932         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
8933         true for scatter stores.
8934         (vect_gather_scatter_fn_p): Handle scatter stores too.
8935         (vect_check_gather_scatter): Consider using scatter stores if
8936         supports_vec_scatter_store_p.
8937         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
8938         scatter stores too.
8939         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
8940         internal_fn_stored_value_index.
8941         (check_load_store_masking): Handle scatter stores too.
8942         (vect_get_store_rhs): Make public.
8943         (vectorizable_call): Use internal_store_fn_p.
8944         (vectorizable_store): Handle scatter store internal functions.
8945         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
8946         when deciding whether the end of the group has been reached.
8947         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
8948         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
8949         (mask_scatter_store<mode>): New insns.
8951 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8952             Alan Hayward  <alan.hayward@arm.com>
8953             David Sherwood  <david.sherwood@arm.com>
8955         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
8956         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
8957         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
8958         function.
8959         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
8960         Use vect_truncate_gather_scatter_offset if we can't treat the
8961         operation as a normal gather load or scatter store.
8962         (get_group_load_store_type): Take the gather_scatter_info
8963         as argument.  Try using a gather load or scatter store for
8964         single-element groups.
8965         (get_load_store_type): Update calls to get_group_load_store_type
8966         and vect_use_strided_gather_scatters_p.
8968 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8969             Alan Hayward  <alan.hayward@arm.com>
8970             David Sherwood  <david.sherwood@arm.com>
8972         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
8973         optional tree argument.
8974         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
8975         null target hooks.
8976         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
8977         but continue to use the current value as a fallback.
8978         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
8979         to compare the updates.
8980         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
8981         (get_load_store_type): Use it when handling a strided access.
8982         (vect_get_strided_load_store_ops): New function.
8983         (vect_get_data_ptr_increment): Likewise.
8984         (vectorizable_load): Handle strided gather loads.  Always pass
8985         a step to vect_create_data_ref_ptr and bump_vector_ptr.
8987 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8988             Alan Hayward  <alan.hayward@arm.com>
8989             David Sherwood  <david.sherwood@arm.com>
8991         * doc/md.texi (gather_load@var{m}): Document.
8992         (mask_gather_load@var{m}): Likewise.
8993         * genopinit.c (main): Add supports_vec_gather_load and
8994         supports_vec_gather_load_cached to target_optabs.
8995         * optabs-tree.c (init_tree_optimization_optabs): Use
8996         ggc_cleared_alloc to allocate target_optabs.
8997         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
8998         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
8999         functions.
9000         * internal-fn.h (internal_load_fn_p): Declare.
9001         (internal_gather_scatter_fn_p): Likewise.
9002         (internal_fn_mask_index): Likewise.
9003         (internal_gather_scatter_fn_supported_p): Likewise.
9004         * internal-fn.c (gather_load_direct): New macro.
9005         (expand_gather_load_optab_fn): New function.
9006         (direct_gather_load_optab_supported_p): New macro.
9007         (direct_internal_fn_optab): New function.
9008         (internal_load_fn_p): Likewise.
9009         (internal_gather_scatter_fn_p): Likewise.
9010         (internal_fn_mask_index): Likewise.
9011         (internal_gather_scatter_fn_supported_p): Likewise.
9012         * optabs-query.c (supports_at_least_one_mode_p): New function.
9013         (supports_vec_gather_load_p): Likewise.
9014         * optabs-query.h (supports_vec_gather_load_p): Declare.
9015         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
9016         and memory_type field.
9017         (NUM_PATTERNS): Bump to 15.
9018         * tree-vect-data-refs.c: Include internal-fn.h.
9019         (vect_gather_scatter_fn_p): New function.
9020         (vect_describe_gather_scatter_call): Likewise.
9021         (vect_check_gather_scatter): Try using internal functions for
9022         gather loads.  Recognize existing calls to a gather load function.
9023         (vect_analyze_data_refs): Consider using gather loads if
9024         supports_vec_gather_load_p.
9025         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
9026         (vect_get_gather_scatter_offset_type): Likewise.
9027         (vect_convert_mask_for_vectype): Likewise.
9028         (vect_add_conversion_to_patterm): Likewise.
9029         (vect_try_gather_scatter_pattern): Likewise.
9030         (vect_recog_gather_scatter_pattern): New pattern recognizer.
9031         (vect_vect_recog_func_ptrs): Add it.
9032         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9033         internal_fn_mask_index and internal_gather_scatter_fn_p.
9034         (check_load_store_masking): Take the gather_scatter_info as an
9035         argument and handle gather loads.
9036         (vect_get_gather_scatter_ops): New function.
9037         (vectorizable_call): Check internal_load_fn_p.
9038         (vectorizable_load): Likewise.  Handle gather load internal
9039         functions.
9040         (vectorizable_store): Update call to check_load_store_masking.
9041         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
9042         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
9043         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
9044         (aarch64_gather_scale_operand_d): New predicates.
9045         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
9046         (mask_gather_load<mode>): New insns.
9048 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9049             Alan Hayward  <alan.hayward@arm.com>
9050             David Sherwood  <david.sherwood@arm.com>
9052         * optabs.def (fold_left_plus_optab): New optab.
9053         * doc/md.texi (fold_left_plus_@var{m}): Document.
9054         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
9055         * internal-fn.c (fold_left_direct): Define.
9056         (expand_fold_left_optab_fn): Likewise.
9057         (direct_fold_left_optab_supported_p): Likewise.
9058         * fold-const-call.c (fold_const_fold_left): New function.
9059         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
9060         * tree-parloops.c (valid_reduction_p): New function.
9061         (gather_scalar_reductions): Use it.
9062         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
9063         (vect_finish_replace_stmt): Declare.
9064         * tree-vect-loop.c (fold_left_reduction_fn): New function.
9065         (needs_fold_left_reduction_p): New function, split out from...
9066         (vect_is_simple_reduction): ...here.  Accept reductions that
9067         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
9068         (vect_force_simple_reduction): Also store the reduction type in
9069         the assignment's STMT_VINFO_REDUC_TYPE.
9070         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
9071         (merge_with_identity): New function.
9072         (vect_expand_fold_left): Likewise.
9073         (vectorize_fold_left_reduction): Likewise.
9074         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
9075         scalar phi in place for it.  Check for target support and reject
9076         cases that would reassociate the operation.  Defer the transform
9077         phase to vectorize_fold_left_reduction.
9078         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
9079         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
9080         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
9082 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9084         * tree-if-conv.c (predicate_mem_writes): Remove redundant
9085         call to ifc_temp_var.
9087 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9088             Alan Hayward  <alan.hayward@arm.com>
9089             David Sherwood  <david.sherwood@arm.com>
9091         * target.def (legitimize_address_displacement): Take the original
9092         offset as a poly_int.
9093         * targhooks.h (default_legitimize_address_displacement): Update
9094         accordingly.
9095         * targhooks.c (default_legitimize_address_displacement): Likewise.
9096         * doc/tm.texi: Regenerate.
9097         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
9098         as an argument, moving assert of ad->disp == ad->disp_term to...
9099         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
9100         Try calling targetm.legitimize_address_displacement before expanding
9101         the address rather than afterwards, and adjust for the new interface.
9102         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
9103         Match the new hook interface.  Handle SVE addresses.
9104         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
9105         new hook interface.
9107 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9109         * Makefile.in (OBJS): Add early-remat.o.
9110         * target.def (select_early_remat_modes): New hook.
9111         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
9112         * doc/tm.texi: Regenerate.
9113         * targhooks.h (default_select_early_remat_modes): Declare.
9114         * targhooks.c (default_select_early_remat_modes): New function.
9115         * timevar.def (TV_EARLY_REMAT): New timevar.
9116         * passes.def (pass_early_remat): New pass.
9117         * tree-pass.h (make_pass_early_remat): Declare.
9118         * early-remat.c: New file.
9119         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
9120         function.
9121         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
9123 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9124             Alan Hayward  <alan.hayward@arm.com>
9125             David Sherwood  <david.sherwood@arm.com>
9127         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
9128         vfm1 with a bound_epilog parameter.
9129         (vect_do_peeling): Update calls accordingly, and move the prologue
9130         call earlier in the function.  Treat the base bound_epilog as 0 for
9131         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
9132         this base when peeling for gaps.
9133         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
9134         with fully-masked loops.
9135         (vect_estimate_min_profitable_iters): Handle the single peeled
9136         iteration in that case.
9138 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9139             Alan Hayward  <alan.hayward@arm.com>
9140             David Sherwood  <david.sherwood@arm.com>
9142         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
9143         single-element interleaving even if the size is not a power of 2.
9144         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
9145         accesses for single-element interleaving if the group size is
9146         not a power of 2.
9148 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9149             Alan Hayward  <alan.hayward@arm.com>
9150             David Sherwood  <david.sherwood@arm.com>
9152         * doc/md.texi (fold_extract_last_@var{m}): Document.
9153         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
9154         * optabs.def (fold_extract_last_optab): New optab.
9155         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
9156         * internal-fn.c (fold_extract_direct): New macro.
9157         (expand_fold_extract_optab_fn): Likewise.
9158         (direct_fold_extract_optab_supported_p): Likewise.
9159         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
9160         * tree-vect-loop.c (vect_model_reduction_cost): Handle
9161         EXTRACT_LAST_REDUCTION.
9162         (get_initial_def_for_reduction): Do not create an initial vector
9163         for EXTRACT_LAST_REDUCTION reductions.
9164         (vectorizable_reduction): Leave the scalar phi in place for
9165         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
9166         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
9167         epilogue code for EXTRACT_LAST_REDUCTION and defer the
9168         transform phase to vectorizable_condition.
9169         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
9170         split out from...
9171         (vect_finish_stmt_generation): ...here.
9172         (vect_finish_replace_stmt): New function.
9173         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
9174         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
9175         pattern.
9176         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
9178 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9179             Alan Hayward  <alan.hayward@arm.com>
9180             David Sherwood  <david.sherwood@arm.com>
9182         * doc/md.texi (extract_last_@var{m}): Document.
9183         * optabs.def (extract_last_optab): New optab.
9184         * internal-fn.def (EXTRACT_LAST): New internal function.
9185         * internal-fn.c (cond_unary_direct): New macro.
9186         (expand_cond_unary_optab_fn): Likewise.
9187         (direct_cond_unary_optab_supported_p): Likewise.
9188         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
9189         loops using EXTRACT_LAST.
9190         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
9191         (extract_last_<mode>): ...this optab.
9192         (vec_extract<mode><Vel>): Update accordingly.
9194 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9195             Alan Hayward  <alan.hayward@arm.com>
9196             David Sherwood  <david.sherwood@arm.com>
9198         * target.def (empty_mask_is_expensive): New hook.
9199         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
9200         * doc/tm.texi: Regenerate.
9201         * targhooks.h (default_empty_mask_is_expensive): Declare.
9202         * targhooks.c (default_empty_mask_is_expensive): New function.
9203         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
9204         if the target says that empty masks are expensive.
9205         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
9206         New function.
9207         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
9209 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9210             Alan Hayward  <alan.hayward@arm.com>
9211             David Sherwood  <david.sherwood@arm.com>
9213         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
9214         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
9215         (vect_use_loop_mask_for_alignment_p): New function.
9216         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
9217         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
9218         niters_skip argument.  Make sure that the first niters_skip elements
9219         of the first iteration are inactive.
9220         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
9221         Update call to vect_set_loop_masks_directly.
9222         (get_misalign_in_elems): New function, split out from...
9223         (vect_gen_prolog_loop_niters): ...here.
9224         (vect_update_init_of_dr): Take a code argument that specifies whether
9225         the adjustment should be added or subtracted.
9226         (vect_update_init_of_drs): Likewise.
9227         (vect_prepare_for_masked_peels): New function.
9228         (vect_do_peeling): Skip prologue peeling if we're using a mask
9229         instead.  Update call to vect_update_inits_of_drs.
9230         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
9231         mask_skip_niters.
9232         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
9233         alignment.  Do not include the number of peeled iterations in
9234         the minimum threshold in that case.
9235         (vectorizable_induction): Adjust the start value down by
9236         LOOP_VINFO_MASK_SKIP_NITERS iterations.
9237         (vect_transform_loop): Call vect_prepare_for_masked_peels.
9238         Take the number of skipped iterations into account when calculating
9239         the loop bounds.
9240         * tree-vect-stmts.c (vect_gen_while_not): New function.
9242 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9243             Alan Hayward  <alan.hayward@arm.com>
9244             David Sherwood  <david.sherwood@arm.com>
9246         * doc/sourcebuild.texi (vect_fully_masked): Document.
9247         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
9248         default value to 0.
9249         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
9250         split out from...
9251         (vect_analyze_loop_2): ...here. Don't check the vectorization
9252         factor against the number of loop iterations if the loop is
9253         fully-masked.
9255 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9256             Alan Hayward  <alan.hayward@arm.com>
9257             David Sherwood  <david.sherwood@arm.com>
9259         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
9260         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
9261         (dump_groups): Update accordingly.
9262         (iv_use::mem_type): New member variable.
9263         (address_p): New function.
9264         (record_use): Add a mem_type argument and initialize the new
9265         mem_type field.
9266         (record_group_use): Add a mem_type argument.  Use address_p.
9267         Remove obsolete null checks of base_object.  Update call to record_use.
9268         (find_interesting_uses_op): Update call to record_group_use.
9269         (find_interesting_uses_cond): Likewise.
9270         (find_interesting_uses_address): Likewise.
9271         (get_mem_type_for_internal_fn): New function.
9272         (find_address_like_use): Likewise.
9273         (find_interesting_uses_stmt): Try find_address_like_use before
9274         calling find_interesting_uses_op.
9275         (addr_offset_valid_p): Use the iv mem_type field as the type
9276         of the addressed memory.
9277         (add_autoinc_candidates): Likewise.
9278         (get_address_cost): Likewise.
9279         (split_small_address_groups_p): Use address_p.
9280         (split_address_groups): Likewise.
9281         (add_iv_candidate_for_use): Likewise.
9282         (autoinc_possible_for_pair): Likewise.
9283         (rewrite_groups): Likewise.
9284         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
9285         (determine_group_iv_cost): Update after split of USE_ADDRESS.
9286         (get_alias_ptr_type_for_ptr_address): New function.
9287         (rewrite_use_address): Rewrite address uses in calls that were
9288         identified by find_address_like_use.
9290 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9291             Alan Hayward  <alan.hayward@arm.com>
9292             David Sherwood  <david.sherwood@arm.com>
9294         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
9295         TARGET_MEM_REFs.
9296         * gimple-expr.h (is_gimple_addressable: Likewise.
9297         * gimple-expr.c (is_gimple_address): Likewise.
9298         * internal-fn.c (expand_call_mem_ref): New function.
9299         (expand_mask_load_optab_fn): Use it.
9300         (expand_mask_store_optab_fn): Likewise.
9302 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9303             Alan Hayward  <alan.hayward@arm.com>
9304             David Sherwood  <david.sherwood@arm.com>
9306         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
9307         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
9308         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
9309         (cond_umax@var{mode}): Document.
9310         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
9311         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
9312         (cond_umin_optab, cond_umax_optab): New optabs.
9313         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
9314         (COND_IOR, COND_XOR): New internal functions.
9315         * internal-fn.h (get_conditional_internal_fn): Declare.
9316         * internal-fn.c (cond_binary_direct): New macro.
9317         (expand_cond_binary_optab_fn): Likewise.
9318         (direct_cond_binary_optab_supported_p): Likewise.
9319         (get_conditional_internal_fn): New function.
9320         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
9321         Cope with reduction statements that are vectorized as calls rather
9322         than assignments.
9323         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
9324         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
9325         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
9326         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
9327         (UNSPEC_COND_EOR): New unspecs.
9328         (optab): Add mappings for them.
9329         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
9330         (sve_int_op, sve_fp_op): New int attributes.
9332 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9333             Alan Hayward  <alan.hayward@arm.com>
9334             David Sherwood  <david.sherwood@arm.com>
9336         * optabs.def (while_ult_optab): New optab.
9337         * doc/md.texi (while_ult@var{m}@var{n}): Document.
9338         * internal-fn.def (WHILE_ULT): New internal function.
9339         * internal-fn.h (direct_internal_fn_supported_p): New override
9340         that takes two types as argument.
9341         * internal-fn.c (while_direct): New macro.
9342         (expand_while_optab_fn): New function.
9343         (convert_optab_supported_p): Likewise.
9344         (direct_while_optab_supported_p): New macro.
9345         * wide-int.h (wi::udiv_ceil): New function.
9346         * tree-vectorizer.h (rgroup_masks): New structure.
9347         (vec_loop_masks): New typedef.
9348         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
9349         and fully_masked_p.
9350         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
9351         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
9352         (vect_max_vf): New function.
9353         (slpeel_make_loop_iterate_ntimes): Delete.
9354         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
9355         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
9356         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
9357         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
9358         internal-fn.h, stor-layout.h and optabs-query.h.
9359         (vect_set_loop_mask): New function.
9360         (add_preheader_seq): Likewise.
9361         (add_header_seq): Likewise.
9362         (interleave_supported_p): Likewise.
9363         (vect_maybe_permute_loop_masks): Likewise.
9364         (vect_set_loop_masks_directly): Likewise.
9365         (vect_set_loop_condition_masked): Likewise.
9366         (vect_set_loop_condition_unmasked): New function, split out from
9367         slpeel_make_loop_iterate_ntimes.
9368         (slpeel_make_loop_iterate_ntimes): Rename to..
9369         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
9370         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
9371         (vect_do_peeling): Update call accordingly.
9372         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
9373         loops.
9374         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
9375         mask_compare_type, can_fully_mask_p and fully_masked_p.
9376         (release_vec_loop_masks): New function.
9377         (_loop_vec_info): Use it to free the loop masks.
9378         (can_produce_all_loop_masks_p): New function.
9379         (vect_get_max_nscalars_per_iter): Likewise.
9380         (vect_verify_full_masking): Likewise.
9381         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
9382         retries, and free the mask rgroups before retrying.  Check loop-wide
9383         reasons for disallowing fully-masked loops.  Make the final decision
9384         about whether use a fully-masked loop or not.
9385         (vect_estimate_min_profitable_iters): Do not assume that peeling
9386         for the number of iterations will be needed for fully-masked loops.
9387         (vectorizable_reduction): Disable fully-masked loops.
9388         (vectorizable_live_operation): Likewise.
9389         (vect_halve_mask_nunits): New function.
9390         (vect_double_mask_nunits): Likewise.
9391         (vect_record_loop_mask): Likewise.
9392         (vect_get_loop_mask): Likewise.
9393         (vect_transform_loop): Handle the case in which the final loop
9394         iteration might handle a partial vector.  Call vect_set_loop_condition
9395         instead of slpeel_make_loop_iterate_ntimes.
9396         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
9397         (check_load_store_masking): New function.
9398         (prepare_load_store_mask): Likewise.
9399         (vectorizable_store): Handle fully-masked loops.
9400         (vectorizable_load): Likewise.
9401         (supportable_widening_operation): Use vect_halve_mask_nunits for
9402         booleans.
9403         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
9404         (vect_gen_while): New function.
9405         * config/aarch64/aarch64.md (umax<mode>3): New expander.
9406         (aarch64_uqdec<mode>): New insn.
9408 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9409             Alan Hayward  <alan.hayward@arm.com>
9410             David Sherwood  <david.sherwood@arm.com>
9412         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
9413         (reduc_xor_scal_optab): New optabs.
9414         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
9415         (reduc_xor_scal_@var{m}): Document.
9416         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
9417         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
9418         internal functions.
9419         * fold-const-call.c (fold_const_call): Handle them.
9420         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
9421         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
9422         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
9423         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
9424         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
9425         (UNSPEC_XORV): New unspecs.
9426         (optab): Add entries for them.
9427         (BITWISEV): New int iterator.
9428         (bit_reduc_op): New int attributes.
9430 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9431             Alan Hayward  <alan.hayward@arm.com>
9432             David Sherwood  <david.sherwood@arm.com>
9434         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
9435         * internal-fn.def (VEC_SHL_INSERT): New internal function.
9436         * optabs.def (vec_shl_insert_optab): New optab.
9437         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
9438         (duplicate_and_interleave): Likewise.
9439         * tree-vect-loop.c: Include internal-fn.h.
9440         (neutral_op_for_slp_reduction): New function, split out from
9441         get_initial_defs_for_reduction.
9442         (get_initial_def_for_reduction): Handle option 2 for variable-length
9443         vectors by loading the neutral value into a vector and then shifting
9444         the initial value into element 0.
9445         (get_initial_defs_for_reduction): Replace the code argument with
9446         the neutral value calculated by neutral_op_for_slp_reduction.
9447         Use gimple_build_vector for constant-length vectors.
9448         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
9449         but the first group_size elements have a neutral value.
9450         Use duplicate_and_interleave otherwise.
9451         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
9452         Update call to get_initial_defs_for_reduction.  Handle SLP
9453         reductions for variable-length vectors by creating one vector
9454         result for each scalar result, with the elements associated
9455         with other scalar results stubbed out with the neutral value.
9456         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
9457         Require IFN_VEC_SHL_INSERT for double reductions on
9458         variable-length vectors, or SLP reductions that have
9459         a neutral value.  Require can_duplicate_and_interleave_p
9460         support for variable-length unchained SLP reductions if there
9461         is no neutral value, such as for MIN/MAX reductions.  Also require
9462         the number of vector elements to be a multiple of the number of
9463         SLP statements when doing variable-length unchained SLP reductions.
9464         Update call to vect_create_epilog_for_reduction.
9465         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
9466         and remove initial values.
9467         (duplicate_and_interleave): Make public.
9468         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
9469         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
9471 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9472             Alan Hayward  <alan.hayward@arm.com>
9473             David Sherwood  <david.sherwood@arm.com>
9475         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
9476         (can_duplicate_and_interleave_p): New function.
9477         (vect_get_and_check_slp_defs): Take the vector of statements
9478         rather than just the current one.  Remove excess parentheses.
9479         Restriction rejectinon of vect_constant_def and vect_external_def
9480         for variable-length vectors to boolean types, or types for which
9481         can_duplicate_and_interleave_p is false.
9482         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
9483         (duplicate_and_interleave): New function.
9484         (vect_get_constant_vectors): Use gimple_build_vector for
9485         constant-length vectors and suitable variable-length constant
9486         vectors.  Use duplicate_and_interleave for other variable-length
9487         vectors.  Don't defer the update when inserting new statements.
9489 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9490             Alan Hayward  <alan.hayward@arm.com>
9491             David Sherwood  <david.sherwood@arm.com>
9493         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
9494         min_profitable_iters doesn't go negative.
9496 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9497             Alan Hayward  <alan.hayward@arm.com>
9498             David Sherwood  <david.sherwood@arm.com>
9500         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
9501         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
9502         * optabs.def (vec_mask_load_lanes_optab): New optab.
9503         (vec_mask_store_lanes_optab): Likewise.
9504         * internal-fn.def (MASK_LOAD_LANES): New internal function.
9505         (MASK_STORE_LANES): Likewise.
9506         * internal-fn.c (mask_load_lanes_direct): New macro.
9507         (mask_store_lanes_direct): Likewise.
9508         (expand_mask_load_optab_fn): Handle masked operations.
9509         (expand_mask_load_lanes_optab_fn): New macro.
9510         (expand_mask_store_optab_fn): Handle masked operations.
9511         (expand_mask_store_lanes_optab_fn): New macro.
9512         (direct_mask_load_lanes_optab_supported_p): Likewise.
9513         (direct_mask_store_lanes_optab_supported_p): Likewise.
9514         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
9515         parameter.
9516         (vect_load_lanes_supported): Likewise.
9517         * tree-vect-data-refs.c (strip_conversion): New function.
9518         (can_group_stmts_p): Likewise.
9519         (vect_analyze_data_ref_accesses): Use it instead of checking
9520         for a pair of assignments.
9521         (vect_store_lanes_supported): Take a masked_p parameter.
9522         (vect_load_lanes_supported): Likewise.
9523         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
9524         vect_store_lanes_supported and vect_load_lanes_supported.
9525         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
9526         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
9527         parameter.  Don't allow gaps for masked accesses.
9528         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
9529         and vect_load_lanes_supported.
9530         (get_load_store_type): Take a masked_p parameter and update
9531         call to get_group_load_store_type.
9532         (vectorizable_store): Update call to get_load_store_type.
9533         Handle IFN_MASK_STORE_LANES.
9534         (vectorizable_load): Update call to get_load_store_type.
9535         Handle IFN_MASK_LOAD_LANES.
9537 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9538             Alan Hayward  <alan.hayward@arm.com>
9539             David Sherwood  <david.sherwood@arm.com>
9541         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
9542         modes for SVE.
9543         * config/aarch64/aarch64-protos.h
9544         (aarch64_sve_struct_memory_operand_p): Declare.
9545         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
9546         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
9547         (VPRED, vpred): Handle SVE structure modes.
9548         * config/aarch64/constraints.md (Utx): New constraint.
9549         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
9550         (aarch64_sve_struct_nonimmediate_operand): New predicates.
9551         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
9552         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
9553         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
9554         structure modes.  Split into pieces after RA.
9555         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
9556         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
9557         New patterns.
9558         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
9559         SVE structure modes.
9560         (aarch64_classify_address): Likewise.
9561         (sizetochar): Move earlier in file.
9562         (aarch64_print_operand): Handle SVE register lists.
9563         (aarch64_array_mode): New function.
9564         (aarch64_sve_struct_memory_operand_p): Likewise.
9565         (TARGET_ARRAY_MODE): Redefine.
9567 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9568             Alan Hayward  <alan.hayward@arm.com>
9569             David Sherwood  <david.sherwood@arm.com>
9571         * target.def (array_mode): New target hook.
9572         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
9573         * doc/tm.texi: Regenerate.
9574         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
9575         * hooks.c (hook_optmode_mode_uhwi_none): New function.
9576         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
9577         targetm.array_mode.
9578         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
9579         type sizes.
9581 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9582             Alan Hayward  <alan.hayward@arm.com>
9583             David Sherwood  <david.sherwood@arm.com>
9585         * fold-const.c (fold_binary_loc): Check the argument types
9586         rather than the result type when testing for a vector operation.
9588 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9590         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
9591         * doc/tm.texi: Regenerate.
9593 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9594             Alan Hayward  <alan.hayward@arm.com>
9595             David Sherwood  <david.sherwood@arm.com>
9597         * doc/invoke.texi (-msve-vector-bits=): Document new option.
9598         (sve): Document new AArch64 extension.
9599         * doc/md.texi (w): Extend the description of the AArch64
9600         constraint to include SVE vectors.
9601         (Upl, Upa): Document new AArch64 predicate constraints.
9602         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
9603         enum.
9604         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
9605         (msve-vector-bits=): New option.
9606         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
9607         SVE when these are disabled.
9608         (sve): New extension.
9609         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
9610         modes.  Adjust their number of units based on aarch64_sve_vg.
9611         (MAX_BITSIZE_MODE_ANY_MODE): Define.
9612         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
9613         aarch64_addr_query_type.
9614         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
9615         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
9616         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
9617         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
9618         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
9619         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
9620         (aarch64_simd_imm_zero_p): Delete.
9621         (aarch64_check_zero_based_sve_index_immediate): Declare.
9622         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
9623         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
9624         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
9625         (aarch64_sve_float_mul_immediate_p): Likewise.
9626         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
9627         rather than an rtx.
9628         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
9629         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
9630         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
9631         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
9632         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
9633         (aarch64_regmode_natural_size): Likewise.
9634         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
9635         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
9636         left one place.
9637         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
9638         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
9639         for VG and the SVE predicate registers.
9640         (V_ALIASES): Add a "z"-prefixed alias.
9641         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
9642         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
9643         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
9644         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
9645         (REG_CLASS_NAMES): Add entries for them.
9646         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
9647         and the predicate registers.
9648         (aarch64_sve_vg): Declare.
9649         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
9650         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
9651         (REGMODE_NATURAL_SIZE): Define.
9652         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
9653         SVE macros.
9654         * config/aarch64/aarch64.c: Include cfgrtl.h.
9655         (simd_immediate_info): Add a constructor for series vectors,
9656         and an associated step field.
9657         (aarch64_sve_vg): New variable.
9658         (aarch64_dbx_register_number): Handle VG and the predicate registers.
9659         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
9660         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
9661         (VEC_ANY_DATA, VEC_STRUCT): New constants.
9662         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
9663         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
9664         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
9665         (aarch64_get_mask_mode): New functions.
9666         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
9667         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
9668         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
9669         predicate modes and predicate registers.  Explicitly restrict
9670         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
9671         to store a vector mode if it is recognized by
9672         aarch64_classify_vector_mode.
9673         (aarch64_regmode_natural_size): New function.
9674         (aarch64_hard_regno_caller_save_mode): Return the original mode
9675         for predicates.
9676         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
9677         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
9678         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
9679         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
9680         functions.
9681         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
9682         does not overlap dest if the function is frame-related.  Handle
9683         SVE constants.
9684         (aarch64_split_add_offset): New function.
9685         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
9686         them aarch64_add_offset.
9687         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
9688         and update call to aarch64_sub_sp.
9689         (aarch64_add_cfa_expression): New function.
9690         (aarch64_expand_prologue): Pass extra temporary registers to the
9691         functions above.  Handle the case in which we need to emit new
9692         DW_CFA_expressions for registers that were originally saved
9693         relative to the stack pointer, but now have to be expressed
9694         relative to the frame pointer.
9695         (aarch64_output_mi_thunk): Pass extra temporary registers to the
9696         functions above.
9697         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
9698         IP0 and IP1 values for SVE frames.
9699         (aarch64_expand_vec_series): New function.
9700         (aarch64_expand_sve_widened_duplicate): Likewise.
9701         (aarch64_expand_sve_const_vector): Likewise.
9702         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
9703         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
9704         into the register, rather than emitting a SET directly.
9705         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
9706         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
9707         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
9708         (offset_9bit_signed_scaled_p): New functions.
9709         (aarch64_replicate_bitmask_imm): New function.
9710         (aarch64_bitmask_imm): Use it.
9711         (aarch64_cannot_force_const_mem): Reject expressions involving
9712         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
9713         (aarch64_classify_index): Handle SVE indices, by requiring
9714         a plain register index with a scale that matches the element size.
9715         (aarch64_classify_address): Handle SVE addresses.  Assert that
9716         the mode of the address is VOIDmode or an integer mode.
9717         Update call to aarch64_classify_symbol.
9718         (aarch64_classify_symbolic_expression): Update call to
9719         aarch64_classify_symbol.
9720         (aarch64_const_vec_all_in_range_p): New function.
9721         (aarch64_print_vector_float_operand): Likewise.
9722         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
9723         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
9724         and the FP immediates 1.0 and 0.5.
9725         (aarch64_print_address_internal): Handle SVE addresses.
9726         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
9727         (aarch64_regno_regclass): Handle predicate registers.
9728         (aarch64_secondary_reload): Handle big-endian reloads of SVE
9729         data modes.
9730         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
9731         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
9732         (aarch64_convert_sve_vector_bits): New function.
9733         (aarch64_override_options): Use it to handle -msve-vector-bits=.
9734         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
9735         rather than an rtx.
9736         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
9737         Handle SVE vector and predicate modes.  Accept VL-based constants
9738         that need only one temporary register, and VL offsets that require
9739         no temporary registers.
9740         (aarch64_conditional_register_usage): Mark the predicate registers
9741         as fixed if SVE isn't available.
9742         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
9743         Return true for SVE vector and predicate modes.
9744         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
9745         rather than an unsigned int.  Handle SVE modes.
9746         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
9747         SVE modes.
9748         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
9749         if SVE is enabled.
9750         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
9751         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
9752         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
9753         (aarch64_sve_float_mul_immediate_p): New functions.
9754         (aarch64_sve_valid_immediate): New function.
9755         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
9756         Explicitly reject structure modes.  Check for INDEX constants.
9757         Handle PTRUE and PFALSE constants.
9758         (aarch64_check_zero_based_sve_index_immediate): New function.
9759         (aarch64_simd_imm_zero_p): Delete.
9760         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
9761         vector modes.  Accept constants in the range of CNT[BHWD].
9762         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
9763         ask for an Advanced SIMD mode.
9764         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
9765         (aarch64_simd_vector_alignment): Handle SVE predicates.
9766         (aarch64_vectorize_preferred_vector_alignment): New function.
9767         (aarch64_simd_vector_alignment_reachable): Use it instead of
9768         the vector size.
9769         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
9770         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
9771         functions.
9772         (MAX_VECT_LEN): Delete.
9773         (expand_vec_perm_d): Add a vec_flags field.
9774         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
9775         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
9776         (aarch64_evpc_ext): Don't apply a big-endian lane correction
9777         for SVE modes.
9778         (aarch64_evpc_rev): Rename to...
9779         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
9780         (aarch64_evpc_rev_global): New function.
9781         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
9782         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
9783         MAX_VECT_LEN.
9784         (aarch64_evpc_sve_tbl): New function.
9785         (aarch64_expand_vec_perm_const_1): Update after rename of
9786         aarch64_evpc_rev.  Handle SVE permutes too, trying
9787         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
9788         than aarch64_evpc_tbl.
9789         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
9790         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
9791         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
9792         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
9793         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
9794         (aarch64_expand_sve_vcond): New functions.
9795         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
9796         of aarch64_vector_mode_p.
9797         (aarch64_dwarf_poly_indeterminate_value): New function.
9798         (aarch64_compute_pressure_classes): Likewise.
9799         (aarch64_can_change_mode_class): Likewise.
9800         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
9801         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
9802         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
9803         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
9804         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
9805         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
9806         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
9807         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
9808         constraints.
9809         (Dn, Dl, Dr): Accept const as well as const_vector.
9810         (Dz): Likewise.  Compare against CONST0_RTX.
9811         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
9812         of "vector" where appropriate.
9813         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
9814         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
9815         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
9816         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
9817         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
9818         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
9819         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
9820         (v_int_equiv): Extend to SVE modes.
9821         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
9822         mode attributes.
9823         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
9824         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
9825         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
9826         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
9827         (SVE_COND_FP_CMP): New int iterators.
9828         (perm_hilo): Handle the new unpack unspecs.
9829         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
9830         attributes.
9831         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
9832         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
9833         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
9834         (aarch64_equality_operator, aarch64_constant_vector_operand)
9835         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
9836         (aarch64_sve_nonimmediate_operand): Likewise.
9837         (aarch64_sve_general_operand): Likewise.
9838         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
9839         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
9840         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
9841         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
9842         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
9843         (aarch64_sve_float_arith_immediate): Likewise.
9844         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
9845         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
9846         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
9847         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
9848         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
9849         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
9850         (aarch64_sve_float_arith_operand): Likewise.
9851         (aarch64_sve_float_arith_with_sub_operand): Likewise.
9852         (aarch64_sve_float_mul_operand): Likewise.
9853         (aarch64_sve_vec_perm_operand): Likewise.
9854         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
9855         (aarch64_mov_operand): Accept const_poly_int and const_vector.
9856         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
9857         as well as const_vector.
9858         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
9859         in file.  Use CONST0_RTX and CONSTM1_RTX.
9860         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
9861         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
9862         Use aarch64_simd_imm_zero.
9863         * config/aarch64/aarch64-sve.md: New file.
9864         * config/aarch64/aarch64.md: Include it.
9865         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
9866         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
9867         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
9868         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
9869         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
9870         (sve): New attribute.
9871         (enabled): Disable instructions with the sve attribute unless
9872         TARGET_SVE.
9873         (movqi, movhi): Pass CONST_POLY_INT operaneds through
9874         aarch64_expand_mov_immediate.
9875         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
9876         CNT[BHSD] immediates.
9877         (movti): Split CONST_POLY_INT moves into two halves.
9878         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
9879         Split additions that need a temporary here if the destination
9880         is the stack pointer.
9881         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
9882         (*add<mode>3_poly_1): New instruction.
9883         (set_clobber_cc): New expander.
9885 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9887         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
9888         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
9889         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
9890         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
9891         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
9892         Change innermode from fixed_mode_size to machine_mode.
9893         (simplify_subreg): Update call accordingly.  Handle a constant-sized
9894         subreg of a variable-length CONST_VECTOR.
9896 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9897             Alan Hayward  <alan.hayward@arm.com>
9898             David Sherwood  <david.sherwood@arm.com>
9900         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
9901         (add_offset_to_base): New function, split out from...
9902         (create_mem_ref): ...here.  When handling a scale other than 1,
9903         check first whether the address is valid without the offset.
9904         Add it into the base if so, leaving the index and scale as-is.
9906 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
9908         PR c++/83778
9909         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
9910         fold_for_warn before checking if arg2 is INTEGER_CST.
9912 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
9914         * config/rs6000/predicates.md (load_multiple_operation): Delete.
9915         (store_multiple_operation): Delete.
9916         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
9917         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
9918         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
9919         guarded by TARGET_STRING.
9920         (rs6000_output_load_multiple): Delete.
9921         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
9922         OPTION_MASK_STRING / TARGET_STRING handling.
9923         (print_operand) <'N', 'O'>: Add comment that these are unused now.
9924         (const rs6000_opt_masks) <"string">: Change mask to 0.
9925         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
9926         (MASK_STRING): Delete.
9927         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
9928         parts.  Simplify.
9929         (load_multiple): Delete.
9930         (*ldmsi8): Delete.
9931         (*ldmsi7): Delete.
9932         (*ldmsi6): Delete.
9933         (*ldmsi5): Delete.
9934         (*ldmsi4): Delete.
9935         (*ldmsi3): Delete.
9936         (store_multiple): Delete.
9937         (*stmsi8): Delete.
9938         (*stmsi7): Delete.
9939         (*stmsi6): Delete.
9940         (*stmsi5): Delete.
9941         (*stmsi4): Delete.
9942         (*stmsi3): Delete.
9943         (movmemsi_8reg): Delete.
9944         (corresponding unnamed define_insn): Delete.
9945         (movmemsi_6reg): Delete.
9946         (corresponding unnamed define_insn): Delete.
9947         (movmemsi_4reg): Delete.
9948         (corresponding unnamed define_insn): Delete.
9949         (movmemsi_2reg): Delete.
9950         (corresponding unnamed define_insn): Delete.
9951         (movmemsi_1reg): Delete.
9952         (corresponding unnamed define_insn): Delete.
9953         * config/rs6000/rs6000.opt (mno-string): New.
9954         (mstring): Replace by deprecation warning stub.
9955         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
9957 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
9959         * regrename.c (regrename_do_replace): If replacing the same
9960         reg multiple times, try to reuse last created gen_raw_REG.
9962         PR debug/81155
9963         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
9964         main to workaround a bug in GDB.
9966 2018-01-12  Tom de Vries  <tom@codesourcery.com>
9968         PR target/83737
9969         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
9971 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
9973         PR rtl-optimization/80481
9974         * ira-color.c (get_cap_member): New function.
9975         (allocnos_conflict_by_live_ranges_p): Use it.
9976         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
9977         (setup_slot_coalesced_allocno_live_ranges): Ditto.
9979 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
9981         PR target/83628
9982         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
9983         (*saddl_se_1): Ditto.
9984         (*ssubsi_1): Ditto.
9985         (*ssubl_se_1): Ditto.
9987 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
9989         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
9990         rather than wi::to_widest for DR_INITs.
9991         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
9992         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
9993         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
9994         INTEGER_CSTs.
9995         (vect_analyze_group_access_1): Note that here.
9997 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
9999         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
10000         polynomial type sizes.
10002 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
10004         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
10005         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
10006         (gimple_add_tmp_var): Likewise.
10008 2018-01-12  Martin Liska  <mliska@suse.cz>
10010         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
10011         (gimple_alloc_sizes): Likewise.
10012         (dump_gimple_statistics): Use PRIu64 in printf format.
10013         * gimple.h: Change uint64_t to int.
10015 2018-01-12  Martin Liska  <mliska@suse.cz>
10017         * tree-core.h: Use uint64_t instead of int.
10018         * tree.c (tree_node_counts): Likewise.
10019         (tree_node_sizes): Likewise.
10020         (dump_tree_statistics): Use PRIu64 in printf format.
10022 2018-01-12  Martin Liska  <mliska@suse.cz>
10024         * Makefile.in: As qsort_chk is implemented in vec.c, add
10025         vec.o to linkage of gencfn-macros.
10026         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
10027         passing the info to record_node_allocation_statistics.
10028         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
10029         and pass the info.
10030         * ggc-common.c (struct ggc_usage): Add operator== and use
10031         it in operator< and compare function.
10032         * mem-stats.h (struct mem_usage): Likewise.
10033         * vec.c (struct vec_usage): Remove operator< and compare
10034         function. Can be simply inherited.
10036 2018-01-12  Martin Jambor  <mjambor@suse.cz>
10038         PR target/81616
10039         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
10040         * tree-ssa-math-opts.c: Include domwalk.h.
10041         (convert_mult_to_fma_1): New function.
10042         (fma_transformation_info): New type.
10043         (fma_deferring_state): Likewise.
10044         (cancel_fma_deferring): New function.
10045         (result_of_phi): Likewise.
10046         (last_fma_candidate_feeds_initial_phi): Likewise.
10047         (convert_mult_to_fma): Added deferring logic, split actual
10048         transformation to convert_mult_to_fma_1.
10049         (math_opts_dom_walker): New type.
10050         (math_opts_dom_walker::after_dom_children): New method, body moved
10051         here from pass_optimize_widening_mul::execute, added deferring logic
10052         bits.
10053         (pass_optimize_widening_mul::execute): Moved most of code to
10054         math_opts_dom_walker::after_dom_children.
10055         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
10056         * config/i386/i386.c (ix86_option_override_internal): Added
10057         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
10059 2018-01-12  Richard Biener  <rguenther@suse.de>
10061         PR debug/83157
10062         * dwarf2out.c (gen_variable_die): Do not reset old_die for
10063         inline instance vars.
10065 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
10067         PR target/81819
10068         * config/rx/rx.c (rx_is_restricted_memory_address):
10069         Handle SUBREG case.
10071 2018-01-12  Richard Biener  <rguenther@suse.de>
10073         PR tree-optimization/80846
10074         * target.def (split_reduction): New target hook.
10075         * targhooks.c (default_split_reduction): New function.
10076         * targhooks.h (default_split_reduction): Declare.
10077         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
10078         target requests first reduce vectors by combining low and high
10079         parts.
10080         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
10081         (get_vectype_for_scalar_type_and_size): Export.
10082         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
10083         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
10084         * doc/tm.texi: Regenerate.
10085         * config/i386/i386.c (ix86_split_reduction): Implement
10086         TARGET_VECTORIZE_SPLIT_REDUCTION.
10088 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
10090         PR target/83368
10091         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
10092         in PIC mode except for TARGET_VXWORKS_RTP.
10093         * config/sparc/sparc.c: Include cfgrtl.h.
10094         (TARGET_INIT_PIC_REG): Define.
10095         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
10096         (sparc_pic_register_p): New predicate.
10097         (sparc_legitimate_address_p): Use it.
10098         (sparc_legitimize_pic_address): Likewise.
10099         (sparc_delegitimize_address): Likewise.
10100         (sparc_mode_dependent_address_p): Likewise.
10101         (gen_load_pcrel_sym): Remove 4th parameter.
10102         (load_got_register): Adjust call to above.  Remove obsolete stuff.
10103         (sparc_expand_prologue): Do not call load_got_register here.
10104         (sparc_flat_expand_prologue): Likewise.
10105         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
10106         (sparc_use_pseudo_pic_reg): New function.
10107         (sparc_init_pic_reg): Likewise.
10108         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
10109         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
10111 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
10113         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
10114         Add item for branch_cost.
10116 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
10118         PR rtl-optimization/83565
10119         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
10120         not extend the result to a larger mode for rotate operations.
10121         (num_sign_bit_copies1): Likewise.
10123 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
10125         PR target/40411
10126         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
10127         -symbolic.
10128         Use values-Xc.o for -pedantic.
10129         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
10131 2018-01-12  Martin Liska  <mliska@suse.cz>
10133         PR ipa/83054
10134         * ipa-devirt.c (final_warning_record::grow_type_warnings):
10135         New function.
10136         (possible_polymorphic_call_targets): Use it.
10137         (ipa_devirt): Likewise.
10139 2018-01-12  Martin Liska  <mliska@suse.cz>
10141         * profile-count.h (enum profile_quality): Use 0 as invalid
10142         enum value of profile_quality.
10144 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
10146         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
10147         -mext-string options.
10149 2018-01-12  Richard Biener  <rguenther@suse.de>
10151         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
10152         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
10153         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
10154         Likewise.
10155         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
10157 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
10159         * configure.ac (--with-long-double-format): Add support for the
10160         configuration option to change the default long double format on
10161         PowerPC systems.
10162         * config.gcc (powerpc*-linux*-*): Likewise.
10163         * configure: Regenerate.
10164         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
10165         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
10166         used without modification.
10168 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10170         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
10171         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
10172         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
10173         MISC_BUILTIN_SPEC_BARRIER.
10174         (rs6000_init_builtins): Likewise.
10175         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
10176         enum value.
10177         (speculation_barrier): New define_insn.
10178         * doc/extend.texi: Document __builtin_speculation_barrier.
10180 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
10182         PR target/83203
10183         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
10184         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
10185         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
10186         iterators.
10187         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
10188         integral modes instead of "ss" and "sd".
10189         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
10190         vectors with 32-bit and 64-bit elements.
10191         (vecdupssescalarmodesuffix): New mode attribute.
10192         (vec_dup<mode>): Use it.
10194 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
10196         PR target/83330
10197         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
10198         frame if argument is passed on stack.
10200 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
10202         PR target/82682
10203         * ree.c (combine_reaching_defs): Optimize also
10204         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
10205         reg2=any_extend(exp); reg1=reg2;, formatting fix.
10207 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
10209         PR middle-end/83189
10210         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
10212 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
10214         PR middle-end/83718
10215         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
10216         after they are computed.
10218 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
10220         PR tree-optimization/83695
10221         * gimple-loop-linterchange.cc
10222         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
10223         reset cached scev information after interchange.
10224         (pass_linterchange::execute): Remove call to scev_reset_htab.
10226 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10228         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
10229         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
10230         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
10231         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
10232         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
10233         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
10234         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
10235         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
10236         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
10237         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
10238         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
10239         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
10240         (V_lane_reg): Likewise.
10241         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
10242         New define_expand.
10243         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
10244         (vfmal_lane_low<mode>_intrinsic,
10245         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
10246         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
10247         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
10248         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
10249         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
10250         vfmsl_lane_high<mode>_intrinsic): New define_insns.
10252 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10254         * config/arm/arm-cpus.in (fp16fml): New feature.
10255         (ALL_SIMD): Add fp16fml.
10256         (armv8.2-a): Add fp16fml as an option.
10257         (armv8.3-a): Likewise.
10258         (armv8.4-a): Add fp16fml as part of fp16.
10259         * config/arm/arm.h (TARGET_FP16FML): Define.
10260         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
10261         when appropriate.
10262         * config/arm/arm-modes.def (V2HF): Define.
10263         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
10264         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
10265         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
10266         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
10267         vfmsl_low, vfmsl_high): New set of builtins.
10268         * config/arm/iterators.md (PLUSMINUS): New code iterator.
10269         (vfml_op): New code attribute.
10270         (VFMLHALVES): New int iterator.
10271         (VFML, VFMLSEL): New mode attributes.
10272         (V_reg): Define mapping for V2HF.
10273         (V_hi, V_lo): New mode attributes.
10274         (VF_constraint): Likewise.
10275         (vfml_half, vfml_half_selector): New int attributes.
10276         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
10277         define_expand.
10278         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
10279         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
10280         New define_insn.
10281         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
10282         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
10283         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
10284         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
10285         documentation.
10286         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
10287         Document new effective target and option set.
10289 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10291         * config/arm/arm-cpus.in (armv8_4): New feature.
10292         (ARMv8_4a): New fgroup.
10293         (armv8.4-a): New arch.
10294         * config/arm/arm-tables.opt: Regenerate.
10295         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
10296         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
10297         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
10298         Add matching rules for -march=armv8.4-a and extensions.
10299         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
10301 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
10303         PR target/81821
10304         * config/rx/rx.md (BW): New mode attribute.
10305         (sync_lock_test_and_setsi): Add mode suffix to insn output.
10307 2018-01-11  Richard Biener  <rguenther@suse.de>
10309         PR tree-optimization/83435
10310         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
10311         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
10312         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
10314 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10315             Alan Hayward  <alan.hayward@arm.com>
10316             David Sherwood  <david.sherwood@arm.com>
10318         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
10319         field.
10320         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
10321         (aarch64_print_address_internal): Use it to check for a zero offset.
10323 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10324             Alan Hayward  <alan.hayward@arm.com>
10325             David Sherwood  <david.sherwood@arm.com>
10327         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
10328         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
10329         Return a poly_int64 rather than a HOST_WIDE_INT.
10330         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
10331         rather than a HOST_WIDE_INT.
10332         * config/aarch64/aarch64.h (aarch64_frame): Protect with
10333         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
10334         hard_fp_offset, frame_size, initial_adjust, callee_offset and
10335         final_offset from HOST_WIDE_INT to poly_int64.
10336         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
10337         to_constant when getting the number of units in an Advanced SIMD
10338         mode.
10339         (aarch64_builtin_vectorized_function): Check for a constant number
10340         of units.
10341         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
10342         GET_MODE_SIZE.
10343         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
10344         attribute instead of GET_MODE_NUNITS.
10345         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
10346         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
10347         GET_MODE_SIZE for fixed-size registers.
10348         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
10349         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
10350         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
10351         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
10352         (aarch64_print_operand, aarch64_print_address_internal)
10353         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
10354         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
10355         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
10356         Handle polynomial GET_MODE_SIZE.
10357         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
10358         wider than SImode without modification.
10359         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
10360         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
10361         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
10362         passing and returning SVE modes.
10363         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
10364         rather than GEN_INT.
10365         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
10366         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
10367         (aarch64_allocate_and_probe_stack_space): Likewise.
10368         (aarch64_layout_frame): Cope with polynomial offsets.
10369         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
10370         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
10371         polynomial offsets.
10372         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
10373         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
10374         poly_int64 rather than a HOST_WIDE_INT.
10375         (aarch64_get_separate_components, aarch64_process_components)
10376         (aarch64_expand_prologue, aarch64_expand_epilogue)
10377         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
10378         (aarch64_anchor_offset): New function, split out from...
10379         (aarch64_legitimize_address): ...here.
10380         (aarch64_builtin_vectorization_cost): Handle polynomial
10381         TYPE_VECTOR_SUBPARTS.
10382         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
10383         GET_MODE_NUNITS.
10384         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
10385         number of elements from the PARALLEL rather than the mode.
10386         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
10387         rather than GET_MODE_BITSIZE.
10388         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
10389         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
10390         (aarch64_expand_vec_perm_const_1): Handle polynomial
10391         d->perm.length () and d->perm elements.
10392         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
10393         Apply to_constant to d->perm elements.
10394         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
10395         polynomial CONST_VECTOR_NUNITS.
10396         (aarch64_move_pointer): Take amount as a poly_int64 rather
10397         than an int.
10398         (aarch64_progress_pointer): Avoid temporary variable.
10399         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
10400         the mode attribute instead of GET_MODE.
10402 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10403             Alan Hayward  <alan.hayward@arm.com>
10404             David Sherwood  <david.sherwood@arm.com>
10406         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
10407         x exists before using it.
10408         (aarch64_add_constant_internal): Rename to...
10409         (aarch64_add_offset_1): ...this.  Replace regnum with separate
10410         src and dest rtxes.  Handle the case in which they're different,
10411         including when the offset is zero.  Replace scratchreg with an rtx.
10412         Use 2 additions if there is no spare register into which we can
10413         move a 16-bit constant.
10414         (aarch64_add_constant): Delete.
10415         (aarch64_add_offset): Replace reg with separate src and dest
10416         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
10417         Use aarch64_add_offset_1.
10418         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
10419         an rtx rather than an int.  Take the delta as a poly_int64
10420         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
10421         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
10422         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
10423         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
10424         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
10425         and aarch64_add_sp.
10426         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
10427         aarch64_add_constant.
10429 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10431         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
10432         Use scalar_float_mode.
10434 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10436         * config/aarch64/aarch64-simd.md
10437         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
10438         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
10439         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
10440         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
10441         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
10442         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
10443         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
10444         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
10445         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
10446         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
10448 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
10450         PR target/83514
10451         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
10452         targ_options->x_arm_arch_string is non NULL.
10454 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
10456         * config/aarch64/aarch64.h
10457         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
10459 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
10461         PR target/82096
10462         * expmed.c (emit_store_flag_force): Swap if const op0
10463         and change VOIDmode to mode of op0.
10465 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10467         PR rtl-optimization/83761
10468         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
10469         than bytes to mode_for_size.
10471 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
10473         PR middle-end/83189
10474         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
10475         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
10476         profile.
10478 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
10480         PR middle-end/83575
10481         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
10482         when in layout mode.
10483         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
10484         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
10485         partition fixup.
10487 2018-01-10  Michael Collison  <michael.collison@arm.com>
10489         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
10490         * config/aarch64/aarch64-option-extension.def: Add
10491         AARCH64_OPT_EXTENSION of 'fp16fml'.
10492         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
10493         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
10494         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
10495         * config/aarch64/constraints.md (Ui7): New constraint.
10496         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
10497         (VFMLA_SEL_W): Ditto.
10498         (f16quad): Ditto.
10499         (f16mac1): Ditto.
10500         (VFMLA16_LOW): New int iterator.
10501         (VFMLA16_HIGH): Ditto.
10502         (UNSPEC_FMLAL): New unspec.
10503         (UNSPEC_FMLSL): Ditto.
10504         (UNSPEC_FMLAL2): Ditto.
10505         (UNSPEC_FMLSL2): Ditto.
10506         (f16mac): New code attribute.
10507         * config/aarch64/aarch64-simd-builtins.def
10508         (aarch64_fmlal_lowv2sf): Ditto.
10509         (aarch64_fmlsl_lowv2sf): Ditto.
10510         (aarch64_fmlalq_lowv4sf): Ditto.
10511         (aarch64_fmlslq_lowv4sf): Ditto.
10512         (aarch64_fmlal_highv2sf): Ditto.
10513         (aarch64_fmlsl_highv2sf): Ditto.
10514         (aarch64_fmlalq_highv4sf): Ditto.
10515         (aarch64_fmlslq_highv4sf): Ditto.
10516         (aarch64_fmlal_lane_lowv2sf): Ditto.
10517         (aarch64_fmlsl_lane_lowv2sf): Ditto.
10518         (aarch64_fmlal_laneq_lowv2sf): Ditto.
10519         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
10520         (aarch64_fmlalq_lane_lowv4sf): Ditto.
10521         (aarch64_fmlsl_lane_lowv4sf): Ditto.
10522         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
10523         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
10524         (aarch64_fmlal_lane_highv2sf): Ditto.
10525         (aarch64_fmlsl_lane_highv2sf): Ditto.
10526         (aarch64_fmlal_laneq_highv2sf): Ditto.
10527         (aarch64_fmlsl_laneq_highv2sf): Ditto.
10528         (aarch64_fmlalq_lane_highv4sf): Ditto.
10529         (aarch64_fmlsl_lane_highv4sf): Ditto.
10530         (aarch64_fmlalq_laneq_highv4sf): Ditto.
10531         (aarch64_fmlsl_laneq_highv4sf): Ditto.
10532         * config/aarch64/aarch64-simd.md:
10533         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
10534         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
10535         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
10536         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
10537         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
10538         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
10539         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
10540         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
10541         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
10542         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
10543         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
10544         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
10545         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
10546         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
10547         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
10548         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
10549         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
10550         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
10551         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
10552         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
10553         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
10554         (vfmlsl_low_u32): Ditto.
10555         (vfmlalq_low_u32): Ditto.
10556         (vfmlslq_low_u32): Ditto.
10557         (vfmlal_high_u32): Ditto.
10558         (vfmlsl_high_u32): Ditto.
10559         (vfmlalq_high_u32): Ditto.
10560         (vfmlslq_high_u32): Ditto.
10561         (vfmlal_lane_low_u32): Ditto.
10562         (vfmlsl_lane_low_u32): Ditto.
10563         (vfmlal_laneq_low_u32): Ditto.
10564         (vfmlsl_laneq_low_u32): Ditto.
10565         (vfmlalq_lane_low_u32): Ditto.
10566         (vfmlslq_lane_low_u32): Ditto.
10567         (vfmlalq_laneq_low_u32): Ditto.
10568         (vfmlslq_laneq_low_u32): Ditto.
10569         (vfmlal_lane_high_u32): Ditto.
10570         (vfmlsl_lane_high_u32): Ditto.
10571         (vfmlal_laneq_high_u32): Ditto.
10572         (vfmlsl_laneq_high_u32): Ditto.
10573         (vfmlalq_lane_high_u32): Ditto.
10574         (vfmlslq_lane_high_u32): Ditto.
10575         (vfmlalq_laneq_high_u32): Ditto.
10576         (vfmlslq_laneq_high_u32): Ditto.
10577         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
10578         (AARCH64_FL_FOR_ARCH8_4): New.
10579         (AARCH64_ISA_F16FML): New ISA flag.
10580         (TARGET_F16FML): New feature flag for fp16fml.
10581         (doc/invoke.texi): Document new fp16fml option.
10583 2018-01-10  Michael Collison  <michael.collison@arm.com>
10585         * config/aarch64/aarch64-builtins.c:
10586         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
10587         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
10588         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
10589         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
10590         (AARCH64_ISA_SHA3): New ISA flag.
10591         (TARGET_SHA3): New feature flag for sha3.
10592         * config/aarch64/iterators.md (sha512_op): New int attribute.
10593         (CRYPTO_SHA512): New int iterator.
10594         (UNSPEC_SHA512H): New unspec.
10595         (UNSPEC_SHA512H2): Ditto.
10596         (UNSPEC_SHA512SU0): Ditto.
10597         (UNSPEC_SHA512SU1): Ditto.
10598         * config/aarch64/aarch64-simd-builtins.def
10599         (aarch64_crypto_sha512hqv2di): New builtin.
10600         (aarch64_crypto_sha512h2qv2di): Ditto.
10601         (aarch64_crypto_sha512su0qv2di): Ditto.
10602         (aarch64_crypto_sha512su1qv2di): Ditto.
10603         (aarch64_eor3qv8hi): Ditto.
10604         (aarch64_rax1qv2di): Ditto.
10605         (aarch64_xarqv2di): Ditto.
10606         (aarch64_bcaxqv8hi): Ditto.
10607         * config/aarch64/aarch64-simd.md:
10608         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
10609         (aarch64_crypto_sha512su0qv2di): Ditto.
10610         (aarch64_crypto_sha512su1qv2di): Ditto.
10611         (aarch64_eor3qv8hi): Ditto.
10612         (aarch64_rax1qv2di): Ditto.
10613         (aarch64_xarqv2di): Ditto.
10614         (aarch64_bcaxqv8hi): Ditto.
10615         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
10616         (vsha512h2q_u64): Ditto.
10617         (vsha512su0q_u64): Ditto.
10618         (vsha512su1q_u64): Ditto.
10619         (veor3q_u16): Ditto.
10620         (vrax1q_u64): Ditto.
10621         (vxarq_u64): Ditto.
10622         (vbcaxq_u16): Ditto.
10623         * config/arm/types.md (crypto_sha512): New type attribute.
10624         (crypto_sha3): Ditto.
10625         (doc/invoke.texi): Document new sha3 option.
10627 2018-01-10  Michael Collison  <michael.collison@arm.com>
10629         * config/aarch64/aarch64-builtins.c:
10630         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
10631         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
10632         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
10633         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
10634         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
10635         (AARCH64_ISA_SM4): New ISA flag.
10636         (TARGET_SM4): New feature flag for sm4.
10637         * config/aarch64/aarch64-simd-builtins.def
10638         (aarch64_sm3ss1qv4si): Ditto.
10639         (aarch64_sm3tt1aq4si): Ditto.
10640         (aarch64_sm3tt1bq4si): Ditto.
10641         (aarch64_sm3tt2aq4si): Ditto.
10642         (aarch64_sm3tt2bq4si): Ditto.
10643         (aarch64_sm3partw1qv4si): Ditto.
10644         (aarch64_sm3partw2qv4si): Ditto.
10645         (aarch64_sm4eqv4si): Ditto.
10646         (aarch64_sm4ekeyqv4si): Ditto.
10647         * config/aarch64/aarch64-simd.md:
10648         (aarch64_sm3ss1qv4si): Ditto.
10649         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
10650         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
10651         (aarch64_sm4eqv4si): Ditto.
10652         (aarch64_sm4ekeyqv4si): Ditto.
10653         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
10654         (sm3part_op): Ditto.
10655         (CRYPTO_SM3TT): Ditto.
10656         (CRYPTO_SM3PART): Ditto.
10657         (UNSPEC_SM3SS1): New unspec.
10658         (UNSPEC_SM3TT1A): Ditto.
10659         (UNSPEC_SM3TT1B): Ditto.
10660         (UNSPEC_SM3TT2A): Ditto.
10661         (UNSPEC_SM3TT2B): Ditto.
10662         (UNSPEC_SM3PARTW1): Ditto.
10663         (UNSPEC_SM3PARTW2): Ditto.
10664         (UNSPEC_SM4E): Ditto.
10665         (UNSPEC_SM4EKEY): Ditto.
10666         * config/aarch64/constraints.md (Ui2): New constraint.
10667         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
10668         * config/arm/types.md (crypto_sm3): New type attribute.
10669         (crypto_sm4): Ditto.
10670         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
10671         (vsm3tt1aq_u32): Ditto.
10672         (vsm3tt1bq_u32): Ditto.
10673         (vsm3tt2aq_u32): Ditto.
10674         (vsm3tt2bq_u32): Ditto.
10675         (vsm3partw1q_u32): Ditto.
10676         (vsm3partw2q_u32): Ditto.
10677         (vsm4eq_u32): Ditto.
10678         (vsm4ekeyq_u32): Ditto.
10679         (doc/invoke.texi): Document new sm4 option.
10681 2018-01-10  Michael Collison  <michael.collison@arm.com>
10683         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
10684         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
10685         (AARCH64_FL_FOR_ARCH8_4): New.
10686         (AARCH64_FL_V8_4): New flag.
10687         (doc/invoke.texi): Document new armv8.4-a option.
10689 2018-01-10  Michael Collison  <michael.collison@arm.com>
10691         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
10692         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
10693         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
10694         * config/aarch64/aarch64-option-extension.def: Add
10695         AARCH64_OPT_EXTENSION of 'sha2'.
10696         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
10697         (crypto): Disable sha2 and aes if crypto disabled.
10698         (crypto): Enable aes and sha2 if enabled.
10699         (simd): Disable sha2 and aes if simd disabled.
10700         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
10701         New flags.
10702         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
10703         (TARGET_SHA2): New feature flag for sha2.
10704         (TARGET_AES): New feature flag for aes.
10705         * config/aarch64/aarch64-simd.md:
10706         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
10707         conditional on TARGET_AES.
10708         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
10709         (aarch64_crypto_sha1hsi): Make pattern conditional
10710         on TARGET_SHA2.
10711         (aarch64_crypto_sha1hv4si): Ditto.
10712         (aarch64_be_crypto_sha1hv4si): Ditto.
10713         (aarch64_crypto_sha1su1v4si): Ditto.
10714         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
10715         (aarch64_crypto_sha1su0v4si): Ditto.
10716         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
10717         (aarch64_crypto_sha256su0v4si): Ditto.
10718         (aarch64_crypto_sha256su1v4si): Ditto.
10719         (doc/invoke.texi): Document new aes and sha2 options.
10721 2018-01-10  Martin Sebor  <msebor@redhat.com>
10723         PR tree-optimization/83781
10724         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
10725         as string arrays.
10727 2018-01-11  Martin Sebor  <msebor@gmail.com>
10728             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
10730         PR tree-optimization/83501
10731         PR tree-optimization/81703
10733         * tree-ssa-strlen.c (get_string_cst): Rename...
10734         (get_string_len): ...to this.  Handle global constants.
10735         (handle_char_store): Adjust.
10737 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
10738             Jim Wilson  <jimw@sifive.com>
10740         * config/riscv/riscv-protos.h (riscv_output_return): New.
10741         * config/riscv/riscv.c (struct machine_function): New naked_p field.
10742         (riscv_attribute_table, riscv_output_return),
10743         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
10744         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
10745         (riscv_compute_frame_info): Only compute frame->mask if not a naked
10746         function.
10747         (riscv_expand_prologue): Add early return for naked function.
10748         (riscv_expand_epilogue): Likewise.
10749         (riscv_function_ok_for_sibcall): Return false for naked function.
10750         (riscv_set_current_function): New.
10751         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
10752         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
10753         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
10754         * doc/extend.texi (RISC-V Function Attributes): New.
10756 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
10758         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
10759         check for 128-bit long double before checking TCmode.
10760         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
10761         128-bit long doubles before checking TFmode or TCmode.
10762         (FLOAT128_IBM_P): Likewise.
10764 2018-01-10  Martin Sebor  <msebor@redhat.com>
10766         PR tree-optimization/83671
10767         * builtins.c (c_strlen): Unconditionally return zero for the empty
10768         string.
10769         Use -Warray-bounds for warnings.
10770         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
10771         for non-constant array indices with COMPONENT_REF, arrays of
10772         arrays, and pointers to arrays.
10773         (gimple_fold_builtin_strlen): Determine and set length range for
10774         non-constant character arrays.
10776 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
10778         PR middle-end/81897
10779         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
10780         empty blocks.
10782 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
10784         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
10786 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
10788         PR target/83399
10789         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
10790         VECTOR_MEM_ALTIVEC_OR_VSX_P.
10791         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
10792         indexed_or_indirect_operand predicate.
10793         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
10794         (*vsx_le_perm_load_v8hi): Likewise.
10795         (*vsx_le_perm_load_v16qi): Likewise.
10796         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
10797         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
10798         (*vsx_le_perm_store_v8hi): Likewise.
10799         (*vsx_le_perm_store_v16qi): Likewise.
10800         (eight unnamed splitters): Likewise.
10802 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
10804         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
10805         * config/rs6000/emmintrin.h: Likewise.
10806         * config/rs6000/mmintrin.h: Likewise.
10807         * config/rs6000/xmmintrin.h: Likewise.
10809 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
10811         PR c++/43486
10812         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
10813         "public_flag".
10814         * tree.c (tree_nop_conversion): Return true for location wrapper
10815         nodes.
10816         (maybe_wrap_with_location): New function.
10817         (selftest::check_strip_nops): New function.
10818         (selftest::test_location_wrappers): New function.
10819         (selftest::tree_c_tests): Call it.
10820         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
10821         (maybe_wrap_with_location): New decl.
10822         (EXPR_LOCATION_WRAPPER_P): New macro.
10823         (location_wrapper_p): New inline function.
10824         (tree_strip_any_location_wrapper): New inline function.
10826 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
10828         PR target/83735
10829         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
10830         stack_realign_offset for the largest alignment of stack slot
10831         actually used.
10832         (ix86_find_max_used_stack_alignment): New function.
10833         (ix86_finalize_stack_frame_flags): Use it.  Set
10834         max_used_stack_alignment if we don't realign stack.
10835         * config/i386/i386.h (machine_function): Add
10836         max_used_stack_alignment.
10838 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
10840         * config/arm/arm.opt (-mbranch-cost): New option.
10841         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
10842         account.
10844 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
10846         PR target/83629
10847         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
10848         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
10850 2018-01-10  Richard Biener  <rguenther@suse.de>
10852         PR debug/83765
10853         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
10854         early out so it also covers the case where we have a non-NULL
10855         origin.
10857 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
10859         PR tree-optimization/83753
10860         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
10861         for non-strided grouped accesses if the number of elements is 1.
10863 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
10865         PR target/81616
10866         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
10867         * i386.h (TARGET_USE_GATHER): Define.
10868         * x86-tune.def (X86_TUNE_USE_GATHER): New.
10870 2018-01-10  Martin Liska  <mliska@suse.cz>
10872         PR bootstrap/82831
10873         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
10874         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
10875         partitioning.
10876         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
10877         CLEANUP_NO_PARTITIONING is not set.
10879 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
10881         * doc/rtl.texi: Remove documentation of (const ...) wrappers
10882         for vectors, as a partial revert of r254296.
10883         * rtl.h (const_vec_p): Delete.
10884         (const_vec_duplicate_p): Don't test for vector CONSTs.
10885         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
10886         * expmed.c (make_tree): Likewise.
10888         Revert:
10889         * common.md (E, F): Use CONSTANT_P instead of checking for
10890         CONST_VECTOR.
10891         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
10892         checking for CONST_VECTOR.
10894 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
10896         PR middle-end/83575
10897         * predict.c (force_edge_cold): Handle in more sane way edges
10898         with no prediction.
10900 2018-01-09  Carl Love  <cel@us.ibm.com>
10902         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
10903         V4SI, V4SF types.
10904         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
10905         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
10906         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
10907         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
10908         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
10909         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
10910         * config/rs6000/rs6000-protos.h: Add extern defition for
10911         rs6000_generate_float2_double_code.
10912         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
10913         function.
10914         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
10915         (float2_v2df): Add define_expand.
10917 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
10919         PR target/83628
10920         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
10921         op_mode in the force_to_mode call.
10923 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
10925         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
10926         instead of checking each element individually.
10927         (aarch64_evpc_uzp): Likewise.
10928         (aarch64_evpc_zip): Likewise.
10929         (aarch64_evpc_ext): Likewise.
10930         (aarch64_evpc_rev): Likewise.
10931         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
10932         instead of checking each element individually.  Return true without
10933         generating rtl if
10934         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
10935         whether all selected elements come from the same input, instead of
10936         checking each element individually.  Remove calls to gen_rtx_REG,
10937         start_sequence and end_sequence and instead assert that no rtl is
10938         generated.
10940 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
10942         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
10943         order of HIGH and CONST checks.
10945 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
10947         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
10948         if the destination isn't an SSA_NAME.
10950 2018-01-09  Richard Biener  <rguenther@suse.de>
10952         PR tree-optimization/83668
10953         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
10954         move prologue...
10955         (canonicalize_loop_form): ... here, renamed from ...
10956         (canonicalize_loop_closed_ssa_form): ... this and amended to
10957         swap successor edges for loop exit blocks to make us use
10958         the RPO order we need for initial schedule generation.
10960 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
10962         PR tree-optimization/64811
10963         * match.pd: When optimizing comparisons with Inf, avoid
10964         introducing or losing exceptions from comparisons with NaN.
10966 2018-01-09  Martin Liska  <mliska@suse.cz>
10968         PR sanitizer/82517
10969         * asan.c (shadow_mem_size): Add gcc_assert.
10971 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
10973         Don't save registers in main().
10975         PR target/83738
10976         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
10977         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
10978         * config/avr/avr.c (avr_set_current_function): Don't error if
10979         naked, OS_task or OS_main are specified at the same time.
10980         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
10981         OS_main.
10982         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
10983         attribute.
10984         * common/config/avr/avr-common.c (avr_option_optimization_table):
10985         Switch on -mmain-is-OS_task for optimizing compilations.
10987 2018-01-09  Richard Biener  <rguenther@suse.de>
10989         PR tree-optimization/83572
10990         * graphite.c: Include cfganal.h.
10991         (graphite_transform_loops): Connect infinite loops to exit
10992         and remove fake edges at the end.
10994 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
10996         * ipa-inline.c (edge_badness): Revert accidental checkin.
10998 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
11000         PR ipa/80763
11001         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
11002         symbols; not inline clones.
11004 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
11006         PR target/83507
11007         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
11008         hard registers.  Formatting fixes.
11010         PR preprocessor/83722
11011         * gcc.c (try_generate_repro): Pass
11012         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
11013         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
11014         do_report_bug.
11016 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
11017             Kito Cheng  <kito.cheng@gmail.com>
11019         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
11020         (riscv_leaf_function_p): Delete.
11021         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
11023 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
11025         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
11026         function.
11027         (do_ifelse): New function.
11028         (do_isel): New function.
11029         (do_sub3): New function.
11030         (do_add3): New function.
11031         (do_load_mask_compare): New function.
11032         (do_overlap_load_compare): New function.
11033         (expand_compare_loop): New function.
11034         (expand_block_compare): Call expand_compare_loop() when appropriate.
11035         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
11036         option description.
11037         (-mblock-compare-inline-loop-limit): New option.
11039 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
11041         PR target/83677
11042         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
11043         Reverse order of second and third operands in first alternative.
11044         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
11045         of first and second elements in UNSPEC_VPERMR vector.
11046         (altivec_expand_vec_perm_le): Likewise.
11048 2018-01-08  Jeff Law  <law@redhat.com>
11050         PR rtl-optimizatin/81308
11051         * tree-switch-conversion.c (cfg_altered): New file scoped static.
11052         (process_switch): If group_case_labels makes a change, then set
11053         cfg_altered.
11054         (pass_convert_switch::execute): If a switch is converted, then
11055         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
11057         PR rtl-optimization/81308
11058         * recog.c (split_all_insns): Conditionally cleanup the CFG after
11059         splitting insns.
11061 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
11063         PR target/83663 - Revert r255946
11064         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
11065         generation for cases where splatting a value is not useful.
11066         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
11067         across a vec_duplicate and a paradoxical subreg forming a vector
11068         mode to a vec_concat.
11070 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11072         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
11073         -march=armv8.3-a variants.
11074         * config/arm/t-multilib: Likewise.
11075         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
11077 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
11079         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
11080         to generate rtl.
11081         (cceq_ior_compare_complement): Give it a name so I can use it, and
11082         change boolean_or_operator predicate to boolean_operator so it can
11083         be used to generate a crand.
11084         (eqne): New code iterator.
11085         (bd/bd_neg): New code_attrs.
11086         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
11087         a single define_insn.
11088         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
11089         decrement (bdnzt/bdnzf/bdzt/bdzf).
11090         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
11091         with the new names of the branch decrement patterns, and added the
11092         names of the branch decrement conditional patterns.
11094 2018-01-08  Richard Biener  <rguenther@suse.de>
11096         PR tree-optimization/83563
11097         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
11098         cache.
11100 2018-01-08  Richard Biener  <rguenther@suse.de>
11102         PR middle-end/83713
11103         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
11105 2018-01-08  Richard Biener  <rguenther@suse.de>
11107         PR tree-optimization/83685
11108         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
11109         references to abnormals.
11111 2018-01-08  Richard Biener  <rguenther@suse.de>
11113         PR lto/83719
11114         * dwarf2out.c (output_indirect_strings): Handle empty
11115         skeleton_debug_str_hash.
11116         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
11118 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
11120         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
11121         (emit_store_direct): Likewise.
11122         (arc_trampoline_adjust_address): Likewise.
11123         (arc_asm_trampoline_template): New function.
11124         (arc_initialize_trampoline): Use asm_trampoline_template.
11125         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
11126         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
11127         * config/arc/arc.md (flush_icache): Delete pattern.
11129 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
11131         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
11132         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
11133         munaligned-access.
11135 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
11137         PR target/83681
11138         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
11139         by not USED_FOR_TARGET.
11140         (make_pass_resolve_sw_modes): Likewise.
11142 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
11144         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
11145         USED_FOR_TARGET.
11147 2018-01-08  Richard Biener  <rguenther@suse.de>
11149         PR middle-end/83580
11150         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
11152 2018-01-08  Richard Biener  <rguenther@suse.de>
11154         PR middle-end/83517
11155         * match.pd ((t * 2) / 2) -> t): Add missing :c.
11157 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
11159         PR middle-end/81897
11160         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
11161         basic blocks with a small number of successors.
11162         (convert_control_dep_chain_into_preds): Improve handling of
11163         forwarder blocks.
11164         (dump_predicates): Split apart into...
11165         (dump_pred_chain): ...here...
11166         (dump_pred_info): ...and here.
11167         (can_one_predicate_be_invalidated_p): Add debugging printfs.
11168         (can_chain_union_be_invalidated_p): Improve check for invalidation
11169         of paths.
11170         (uninit_uses_cannot_happen): Avoid unnecessary if
11171         convert_control_dep_chain_into_preds yielded nothing.
11173 2018-01-06  Martin Sebor  <msebor@redhat.com>
11175         PR tree-optimization/83640
11176         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
11177         subtracting negative offset from size.
11178         (builtin_access::overlap): Adjust offset bounds of the access to fall
11179         within the size of the object if possible.
11181 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
11183         PR rtl-optimization/83699
11184         * expmed.c (extract_bit_field_1): Restrict the vector usage of
11185         extract_bit_field_as_subreg to cases in which the extracted
11186         value is also a vector.
11188         * lra-constraints.c (process_alt_operands): Test for the equivalence
11189         substitutions when detecting a possible reload cycle.
11191 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
11193         PR debug/83480
11194         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
11195         by default if flag_selective_schedling{,2}.  Formatting fixes.
11197         PR rtl-optimization/83682
11198         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
11199         if it has non-VECTOR_MODE element mode.
11200         (vec_duplicate_p): Likewise.
11202         PR middle-end/83694
11203         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
11204         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
11206 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
11208         PR target/83604
11209         * config/i386/i386-builtin.def
11210         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
11211         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
11212         Require also OPTION_MASK_ISA_AVX512F in addition to
11213         OPTION_MASK_ISA_GFNI.
11214         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
11215         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
11216         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
11217         to OPTION_MASK_ISA_GFNI.
11218         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
11219         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
11220         OPTION_MASK_ISA_AVX512BW.
11221         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
11222         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
11223         addition to OPTION_MASK_ISA_GFNI.
11224         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
11225         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
11226         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
11227         to OPTION_MASK_ISA_GFNI.
11228         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
11229         a requirement for all ISAs rather than any of them with a few
11230         exceptions.
11231         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
11232         processing.
11233         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
11234         bitmasks to be enabled with 3 exceptions, instead of requiring any
11235         enabled ISA with lots of exceptions.
11236         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
11237         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
11238         Change avx512bw in isa attribute to avx512f.
11239         * config/i386/sgxintrin.h: Add license boilerplate.
11240         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
11241         to __AVX512F__ and __AVX512VL to __AVX512VL__.
11242         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
11243         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
11244         defined.
11245         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
11246         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
11247         temporarily sse2 rather than sse if not enabled already.
11249         PR target/83604
11250         * config/i386/sse.md (VI248_VLBW): Rename to ...
11251         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
11252         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
11253         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
11254         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
11255         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
11256         mode iterator instead of VI248_VLBW.
11258 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
11260         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
11261         (record_modified): Skip clobbers; add debug output.
11262         (param_change_prob): Use sreal frequencies.
11264 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
11266         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
11267         punt for user-aligned variables.
11269 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
11271         * tree-chrec.c (chrec_contains_symbols): Return true for
11272         POLY_INT_CST.
11274 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
11276         PR target/82439
11277         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
11278         of (x|y) == x for BICS pattern.
11280 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
11282         PR tree-optimization/83605
11283         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
11284         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
11285         can throw.
11287 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
11289         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
11290         * config/epiphany/rtems.h: New file.
11292 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
11293             Uros Bizjak  <ubizjak@gmail.com>
11295         PR target/83554
11296         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
11297         QIreg_operand instead of register_operand predicate.
11298         * config/i386/i386.c (ix86_rop_should_change_byte_p,
11299         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
11300         comments instead of -fmitigate[-_]rop.
11302 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
11304         PR bootstrap/81926
11305         * cgraphunit.c (symbol_table::compile): Switch to text_section
11306         before calling assembly_start debug hook.
11307         * run-rtl-passes.c (run_rtl_passes): Likewise.
11308         Include output.h.
11310 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11312         * tree-vrp.c (extract_range_from_binary_expr_1): Check
11313         range_int_cst_p rather than !symbolic_range_p before calling
11314         extract_range_from_multiplicative_op_1.
11316 2018-01-04  Jeff Law  <law@redhat.com>
11318         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
11319         redundant test in assertion.
11321 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11323         * doc/rtl.texi: Document machine_mode wrapper classes.
11325 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11327         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
11328         using tree_to_uhwi.
11330 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11332         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
11333         the VEC_PERM_EXPR fold to fail.
11335 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
11337         PR debug/83585
11338         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
11339         to switched_sections.
11341 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11343         PR target/83680
11344         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
11345         test for d.testing.
11347 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
11349         PR target/83387
11350         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
11351         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
11353 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
11355         PR debug/83666
11356         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
11357         is BLKmode and bitpos not zero or mode change is needed.
11359 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11361         PR target/83675
11362         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
11363         TARGET_VIS2.
11365 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
11367         PR target/83628
11368         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
11369         instead of MULT rtx.  Update all corresponding splitters.
11370         (*saddl_se): Ditto.
11371         (*ssub<modesuffix>): Ditto.
11372         (*ssubl_se): Ditto.
11373         (*cmp_sadd_di): Update split patterns.
11374         (*cmp_sadd_si): Ditto.
11375         (*cmp_sadd_sidi): Ditto.
11376         (*cmp_ssub_di): Ditto.
11377         (*cmp_ssub_si): Ditto.
11378         (*cmp_ssub_sidi): Ditto.
11379         * config/alpha/predicates.md (const23_operand): New predicate.
11380         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
11381         Look for ASHIFT, not MULT inner operand.
11382         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
11384 2018-01-04  Martin Liska  <mliska@suse.cz>
11386         PR gcov-profile/83669
11387         * gcov.c (output_intermediate_file): Add version to intermediate
11388         gcov file.
11389         * doc/gcov.texi: Document new field 'version' in intermediate
11390         file format. Fix location of '-k' option of gcov command.
11392 2018-01-04  Martin Liska  <mliska@suse.cz>
11394         PR ipa/82352
11395         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
11397 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
11399         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
11401 2018-01-03  Martin Sebor  <msebor@redhat.com>
11403         PR tree-optimization/83655
11404         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
11405         checking calls with invalid arguments.
11407 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11409         * tree-vect-stmts.c (vect_get_store_rhs): New function.
11410         (vectorizable_mask_load_store): Delete.
11411         (vectorizable_call): Return false for masked loads and stores.
11412         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
11413         instead of gimple_assign_rhs1.
11414         (vectorizable_load): Handle IFN_MASK_LOAD.
11415         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
11417 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11419         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
11420         split out from..,
11421         (vectorizable_mask_load_store): ...here.
11422         (vectorizable_load): ...and here.
11424 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11426         * tree-vect-stmts.c (vect_build_all_ones_mask)
11427         (vect_build_zero_merge_argument): New functions, split out from...
11428         (vectorizable_load): ...here.
11430 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11432         * tree-vect-stmts.c (vect_check_store_rhs): New function,
11433         split out from...
11434         (vectorizable_mask_load_store): ...here.
11435         (vectorizable_store): ...and here.
11437 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11439         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
11440         split out from...
11441         (vectorizable_mask_load_store): ...here.
11443 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11445         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
11446         (vect_model_store_cost): Take a vec_load_store_type instead of a
11447         vect_def_type.
11448         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
11449         (vect_model_store_cost): Take a vec_load_store_type instead of a
11450         vect_def_type.
11451         (vectorizable_mask_load_store): Update accordingly.
11452         (vectorizable_store): Likewise.
11453         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
11455 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11457         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
11458         IFN_MASK_LOAD calls here rather than...
11459         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
11461 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11462             Alan Hayward  <alan.hayward@arm.com>
11463             David Sherwood  <david.sherwood@arm.com>
11465         * expmed.c (extract_bit_field_1): For vector extracts,
11466         fall back to extract_bit_field_as_subreg if vec_extract
11467         isn't available.
11469 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11470             Alan Hayward  <alan.hayward@arm.com>
11471             David Sherwood  <david.sherwood@arm.com>
11473         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
11474         they are variable or constant sized.
11475         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
11476         slots for constant-sized data.
11478 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11479             Alan Hayward  <alan.hayward@arm.com>
11480             David Sherwood  <david.sherwood@arm.com>
11482         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
11483         handling COND_EXPRs with boolean comparisons, try to find a better
11484         basis for the mask type than the boolean itself.
11486 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11488         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
11489         is calculated and how it can be overridden.
11490         * genmodes.c (max_bitsize_mode_any_mode): New variable.
11491         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
11492         if defined.
11493         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
11494         if nonzero.
11496 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11497             Alan Hayward  <alan.hayward@arm.com>
11498             David Sherwood  <david.sherwood@arm.com>
11500         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
11501         Remove the mode argument.
11502         (aarch64_simd_valid_immediate): Remove the mode and inverse
11503         arguments.
11504         * config/aarch64/iterators.md (bitsize): New iterator.
11505         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
11506         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
11507         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
11508         aarch64_simd_valid_immediate.
11509         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
11510         (aarch64_reg_or_bic_imm): Likewise.
11511         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
11512         with an insn_type enum and msl with a modifier_type enum.
11513         Replace element_width with a scalar_mode.  Change the shift
11514         to unsigned int.  Add constructors for scalar_float_mode and
11515         scalar_int_mode elements.
11516         (aarch64_vect_float_const_representable_p): Delete.
11517         (aarch64_can_const_movi_rtx_p)
11518         (aarch64_simd_scalar_immediate_valid_for_move)
11519         (aarch64_simd_make_constant): Update call to
11520         aarch64_simd_valid_immediate.
11521         (aarch64_advsimd_valid_immediate_hs): New function.
11522         (aarch64_advsimd_valid_immediate): Likewise.
11523         (aarch64_simd_valid_immediate): Remove mode and inverse
11524         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
11525         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
11526         and aarch64_float_const_representable_p on the result.
11527         (aarch64_output_simd_mov_immediate): Remove mode argument.
11528         Update call to aarch64_simd_valid_immediate and use of
11529         simd_immediate_info.
11530         (aarch64_output_scalar_simd_mov_immediate): Update call
11531         accordingly.
11533 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11534             Alan Hayward  <alan.hayward@arm.com>
11535             David Sherwood  <david.sherwood@arm.com>
11537         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
11538         (mode_nunits): Likewise CONST_MODE_NUNITS.
11539         * machmode.def (ADJUST_NUNITS): Document.
11540         * genmodes.c (mode_data::need_nunits_adj): New field.
11541         (blank_mode): Update accordingly.
11542         (adj_nunits): New variable.
11543         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
11544         parameter.
11545         (emit_mode_size_inline): Set need_bytesize_adj for all modes
11546         listed in adj_nunits.
11547         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
11548         listed in adj_nunits.  Don't emit case statements for such modes.
11549         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
11550         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
11551         nothing if adj_nunits is nonnull.
11552         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
11553         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
11554         (emit_mode_fbit): Update use of print_maybe_const_decl.
11555         (emit_move_size): Likewise.  Treat the array as non-const
11556         if adj_nunits.
11557         (emit_mode_adjustments): Handle adj_nunits.
11559 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11561         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
11562         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
11563         (VECTOR_MODES): Use it.
11564         (make_vector_modes): Take the prefix as an argument.
11566 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11567             Alan Hayward  <alan.hayward@arm.com>
11568             David Sherwood  <david.sherwood@arm.com>
11570         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
11571         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
11572         for MODE_VECTOR_BOOL.
11573         * machmode.def (VECTOR_BOOL_MODE): Document.
11574         * genmodes.c (VECTOR_BOOL_MODE): New macro.
11575         (make_vector_bool_mode): New function.
11576         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
11577         MODE_VECTOR_BOOL.
11578         * lto-streamer-in.c (lto_input_mode_table): Likewise.
11579         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
11580         Likewise.
11581         * stor-layout.c (int_mode_for_mode): Likewise.
11582         * tree.c (build_vector_type_for_mode): Likewise.
11583         * varasm.c (output_constant_pool_2): Likewise.
11584         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
11585         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
11586         for MODE_VECTOR_BOOL.
11587         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
11588         of mode class checks.
11589         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
11590         instead of a list of mode class checks.
11591         (expand_vector_scalar_condition): Likewise.
11592         (type_for_widest_vector_mode): Handle BImode as an inner mode.
11594 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11595             Alan Hayward  <alan.hayward@arm.com>
11596             David Sherwood  <david.sherwood@arm.com>
11598         * machmode.h (mode_size): Change from unsigned short to
11599         poly_uint16_pod.
11600         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
11601         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
11602         or if measurement_type is not polynomial.
11603         (fixed_size_mode::includes_p): Check for constant-sized modes.
11604         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
11605         return a poly_uint16 rather than an unsigned short.
11606         (emit_mode_size): Change the type of mode_size from unsigned short
11607         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
11608         (emit_mode_adjustments): Cope with polynomial vector sizes.
11609         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
11610         for GET_MODE_SIZE.
11611         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
11612         for GET_MODE_SIZE.
11613         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
11614         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
11615         * caller-save.c (setup_save_areas): Likewise.
11616         (replace_reg_with_saved_mem): Likewise.
11617         * calls.c (emit_library_call_value_1): Likewise.
11618         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
11619         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
11620         (gen_lowpart_for_combine): Likewise.
11621         * convert.c (convert_to_integer_1): Likewise.
11622         * cse.c (equiv_constant, cse_insn): Likewise.
11623         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
11624         (cselib_subst_to_values): Likewise.
11625         * dce.c (word_dce_process_block): Likewise.
11626         * df-problems.c (df_word_lr_mark_ref): Likewise.
11627         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
11628         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
11629         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
11630         (rtl_for_decl_location): Likewise.
11631         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
11632         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
11633         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
11634         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
11635         (expand_expr_real_1): Likewise.
11636         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
11637         (pad_below): Likewise.
11638         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
11639         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
11640         * ira.c (get_subreg_tracking_sizes): Likewise.
11641         * ira-build.c (ira_create_allocno_objects): Likewise.
11642         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
11643         (ira_sort_regnos_for_alter_reg): Likewise.
11644         * ira-costs.c (record_operand_costs): Likewise.
11645         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
11646         (resolve_simple_move): Likewise.
11647         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
11648         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
11649         (lra_constraints): Likewise.
11650         (CONST_POOL_OK_P): Reject variable-sized modes.
11651         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
11652         (add_pseudo_to_slot, lra_spill): Likewise.
11653         * omp-low.c (omp_clause_aligned_alignment): Likewise.
11654         * optabs-query.c (get_best_extraction_insn): Likewise.
11655         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
11656         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
11657         (expand_mult_highpart, valid_multiword_target_p): Likewise.
11658         * recog.c (offsettable_address_addr_space_p): Likewise.
11659         * regcprop.c (maybe_mode_change): Likewise.
11660         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
11661         * regrename.c (build_def_use): Likewise.
11662         * regstat.c (dump_reg_info): Likewise.
11663         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
11664         (find_reloads, find_reloads_subreg_address): Likewise.
11665         * reload1.c (eliminate_regs_1): Likewise.
11666         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
11667         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
11668         (simplify_binary_operation_1, simplify_subreg): Likewise.
11669         * targhooks.c (default_function_arg_padding): Likewise.
11670         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
11671         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
11672         (verify_gimple_assign_ternary): Likewise.
11673         * tree-inline.c (estimate_move_cost): Likewise.
11674         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
11675         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
11676         (get_address_cost_ainc): Likewise.
11677         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
11678         (vect_supportable_dr_alignment): Likewise.
11679         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
11680         (vectorizable_reduction): Likewise.
11681         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
11682         (vectorizable_operation, vectorizable_load): Likewise.
11683         * tree.c (build_same_sized_truth_vector_type): Likewise.
11684         * valtrack.c (cleanup_auto_inc_dec): Likewise.
11685         * var-tracking.c (emit_note_insn_var_location): Likewise.
11686         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
11687         (ADDR_VEC_ALIGN): Likewise.
11689 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11690             Alan Hayward  <alan.hayward@arm.com>
11691             David Sherwood  <david.sherwood@arm.com>
11693         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
11694         unsigned short.
11695         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
11696         or if measurement_type is polynomial.
11697         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
11698         * combine.c (make_extraction): Likewise.
11699         * dse.c (find_shift_sequence): Likewise.
11700         * dwarf2out.c (mem_loc_descriptor): Likewise.
11701         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
11702         (extract_bit_field, extract_low_bits): Likewise.
11703         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
11704         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
11705         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
11706         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
11707         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
11708         * reload.c (find_reloads): Likewise.
11709         * reload1.c (alter_reg): Likewise.
11710         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
11711         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
11712         * tree-if-conv.c (predicate_mem_writes): Likewise.
11713         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
11714         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
11715         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
11716         * valtrack.c (dead_debug_insert_temp): Likewise.
11717         * varasm.c (mergeable_constant_section): Likewise.
11718         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
11720 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11721             Alan Hayward  <alan.hayward@arm.com>
11722             David Sherwood  <david.sherwood@arm.com>
11724         * expr.c (expand_assignment): Cope with polynomial mode sizes
11725         when assigning to a CONCAT.
11727 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11728             Alan Hayward  <alan.hayward@arm.com>
11729             David Sherwood  <david.sherwood@arm.com>
11731         * machmode.h (mode_precision): Change from unsigned short to
11732         poly_uint16_pod.
11733         (mode_to_precision): Return a poly_uint16 rather than an unsigned
11734         short.
11735         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
11736         or if measurement_type is not polynomial.
11737         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
11738         in which the mode is already known to be a scalar_int_mode.
11739         * genmodes.c (emit_mode_precision): Change the type of mode_precision
11740         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
11741         initializer.
11742         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
11743         for GET_MODE_PRECISION.
11744         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
11745         for GET_MODE_PRECISION.
11746         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
11747         as polynomial.
11748         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
11749         (expand_field_assignment, make_extraction): Likewise.
11750         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
11751         (get_last_value): Likewise.
11752         * convert.c (convert_to_integer_1): Likewise.
11753         * cse.c (cse_insn): Likewise.
11754         * expr.c (expand_expr_real_1): Likewise.
11755         * lra-constraints.c (simplify_operand_subreg): Likewise.
11756         * optabs-query.c (can_atomic_load_p): Likewise.
11757         * optabs.c (expand_atomic_load): Likewise.
11758         (expand_atomic_store): Likewise.
11759         * ree.c (combine_reaching_defs): Likewise.
11760         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
11761         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
11762         * tree.h (type_has_mode_precision_p): Likewise.
11763         * ubsan.c (instrument_si_overflow): Likewise.
11765 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11766             Alan Hayward  <alan.hayward@arm.com>
11767             David Sherwood  <david.sherwood@arm.com>
11769         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
11770         polynomial numbers of units.
11771         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
11772         (valid_vector_subparts_p): New function.
11773         (build_vector_type): Remove temporary shim and take the number
11774         of units as a poly_uint64 rather than an int.
11775         (build_opaque_vector_type): Take the number of units as a
11776         poly_uint64 rather than an int.
11777         * tree.c (build_vector_from_ctor): Handle polynomial
11778         TYPE_VECTOR_SUBPARTS.
11779         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
11780         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
11781         (build_vector_from_val): If the number of units is variable,
11782         use build_vec_duplicate_cst for constant operands and
11783         VEC_DUPLICATE_EXPR otherwise.
11784         (make_vector_type): Remove temporary is_constant ().
11785         (build_vector_type, build_opaque_vector_type): Take the number of
11786         units as a poly_uint64 rather than an int.
11787         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
11788         VECTOR_CST_NELTS.
11789         * cfgexpand.c (expand_debug_expr): Likewise.
11790         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
11791         (store_constructor, expand_expr_real_1): Likewise.
11792         (const_scalar_mask_from_tree): Likewise.
11793         * fold-const-call.c (fold_const_reduction): Likewise.
11794         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
11795         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
11796         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
11797         (fold_relational_const): Likewise.
11798         (native_interpret_vector): Likewise.  Change the size from an
11799         int to an unsigned int.
11800         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
11801         TYPE_VECTOR_SUBPARTS.
11802         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
11803         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
11804         duplicating a non-constant operand into a variable-length vector.
11805         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
11806         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
11807         * ipa-icf.c (sem_variable::equals): Likewise.
11808         * match.pd: Likewise.
11809         * omp-simd-clone.c (simd_clone_subparts): Likewise.
11810         * print-tree.c (print_node): Likewise.
11811         * stor-layout.c (layout_type): Likewise.
11812         * targhooks.c (default_builtin_vectorization_cost): Likewise.
11813         * tree-cfg.c (verify_gimple_comparison): Likewise.
11814         (verify_gimple_assign_binary): Likewise.
11815         (verify_gimple_assign_ternary): Likewise.
11816         (verify_gimple_assign_single): Likewise.
11817         * tree-pretty-print.c (dump_generic_node): Likewise.
11818         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
11819         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
11820         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
11821         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
11822         (vect_shift_permute_load_chain): Likewise.
11823         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
11824         (expand_vector_condition, optimize_vector_constructor): Likewise.
11825         (lower_vec_perm, get_compute_type): Likewise.
11826         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
11827         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
11828         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
11829         (vect_recog_mask_conversion_pattern): Likewise.
11830         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
11831         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
11832         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
11833         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
11834         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
11835         (vectorizable_shift, vectorizable_operation, vectorizable_store)
11836         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
11837         (supportable_widening_operation): Likewise.
11838         (supportable_narrowing_operation): Likewise.
11839         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
11840         Likewise.
11841         * varasm.c (output_constant): Likewise.
11843 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11844             Alan Hayward  <alan.hayward@arm.com>
11845             David Sherwood  <david.sherwood@arm.com>
11847         * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
11848         so that both the length == 3 and length != 3 cases set up their
11849         own permute vectors.  Add comments explaining why we know the
11850         number of elements is constant.
11851         (vect_permute_load_chain): Likewise.
11853 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11854             Alan Hayward  <alan.hayward@arm.com>
11855             David Sherwood  <david.sherwood@arm.com>
11857         * machmode.h (mode_nunits): Change from unsigned char to
11858         poly_uint16_pod.
11859         (ONLY_FIXED_SIZE_MODES): New macro.
11860         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
11861         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
11862         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
11863         New typedefs.
11864         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
11865         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
11866         or if measurement_type is not polynomial.
11867         * genmodes.c (ZERO_COEFFS): New macro.
11868         (emit_mode_nunits_inline): Make mode_nunits_inline return a
11869         poly_uint16.
11870         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
11871         Use ZERO_COEFFS when emitting initializers.
11872         * data-streamer.h (bp_pack_poly_value): New function.
11873         (bp_unpack_poly_value): Likewise.
11874         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
11875         for GET_MODE_NUNITS.
11876         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
11877         for GET_MODE_NUNITS.
11878         * tree.c (make_vector_type): Remove temporary shim and make
11879         the real function take the number of units as a poly_uint64
11880         rather than an int.
11881         (build_vector_type_for_mode): Handle polynomial nunits.
11882         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
11883         * emit-rtl.c (const_vec_series_p_1): Likewise.
11884         (gen_rtx_CONST_VECTOR): Likewise.
11885         * fold-const.c (test_vec_duplicate_folding): Likewise.
11886         * genrecog.c (validate_pattern): Likewise.
11887         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
11888         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
11889         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
11890         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
11891         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
11892         * rtlanal.c (subreg_get_info): Likewise.
11893         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
11894         (vect_grouped_load_supported): Likewise.
11895         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
11896         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
11897         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
11898         (simplify_const_unary_operation, simplify_binary_operation_1)
11899         (simplify_const_binary_operation, simplify_ternary_operation)
11900         (test_vector_ops_duplicate, test_vector_ops): Likewise.
11901         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
11902         instead of CONST_VECTOR_NUNITS.
11903         * varasm.c (output_constant_pool_2): Likewise.
11904         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
11905         explicit-encoded elements in the XVEC for variable-length vectors.
11907 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11909         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
11911 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11912             Alan Hayward  <alan.hayward@arm.com>
11913             David Sherwood  <david.sherwood@arm.com>
11915         * coretypes.h (fixed_size_mode): Declare.
11916         (fixed_size_mode_pod): New typedef.
11917         * builtins.h (target_builtins::x_apply_args_mode)
11918         (target_builtins::x_apply_result_mode): Change type to
11919         fixed_size_mode_pod.
11920         * builtins.c (apply_args_size, apply_result_size, result_vector)
11921         (expand_builtin_apply_args_1, expand_builtin_apply)
11922         (expand_builtin_return): Update accordingly.
11924 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11926         * cse.c (hash_rtx_cb): Hash only the encoded elements.
11927         * cselib.c (cselib_hash_rtx): Likewise.
11928         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
11929         CONST_VECTOR encoding.
11931 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
11932             Jeff Law  <law@redhat.com>
11934         PR target/83641
11935         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
11936         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
11937         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
11938         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
11940         PR target/83641
11941         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
11942         explicitly probe *sp in a noreturn function if there were any callee
11943         register saves or frame pointer is needed.
11945 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
11947         PR debug/83621
11948         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
11949         BLKmode for ternary, binary or unary expressions.
11951         PR debug/83645
11952         * var-tracking.c (delete_vta_debug_insn): New inline function.
11953         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
11954         insns from get_insns () to NULL instead of each bb separately.
11955         Use delete_vta_debug_insn.  No longer static.
11956         (vt_debug_insns_local, variable_tracking_main_1): Adjust
11957         delete_vta_debug_insns callers.
11958         * rtl.h (delete_vta_debug_insns): Declare.
11959         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
11960         instead of variable_tracking_main.
11962 2018-01-03  Martin Sebor  <msebor@redhat.com>
11964         PR tree-optimization/83603
11965         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
11966         arguments past the endof the argument list in functions declared
11967         without a prototype.
11968         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
11969         Avoid checking when arguments are null.
11971 2018-01-03  Martin Sebor  <msebor@redhat.com>
11973         PR c/83559
11974         * doc/extend.texi (attribute const): Fix a typo.
11975         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
11976         issuing -Wsuggest-attribute for void functions.
11978 2018-01-03  Martin Sebor  <msebor@redhat.com>
11980         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
11981         offset_int::from instead of wide_int::to_shwi.
11982         (maybe_diag_overlap): Remove assertion.
11983         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
11984         * gimple-ssa-sprintf.c (format_directive): Same.
11985         (parse_directive): Same.
11986         (sprintf_dom_walker::compute_format_length): Same.
11987         (try_substitute_return_value): Same.
11989 2018-01-03  Jeff Law  <law@redhat.com>
11991         PR middle-end/83654
11992         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
11993         non-constant residual for zero at runtime and avoid probing in
11994         that case.  Reorganize code for trailing problem to mirror handling
11995         of the residual.
11997 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
11999         PR tree-optimization/83501
12000         * tree-ssa-strlen.c (get_string_cst): New.
12001         (handle_char_store): Call get_string_cst.
12003 2018-01-03  Martin Liska  <mliska@suse.cz>
12005         PR tree-optimization/83593
12006         * tree-ssa-strlen.c: Include tree-cfg.h.
12007         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
12008         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
12009         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
12010         to false.
12011         (strlen_dom_walker::before_dom_children): Call
12012         gimple_purge_dead_eh_edges. Dump tranformation with details
12013         dump flags.
12014         (strlen_dom_walker::before_dom_children): Update call by adding
12015         new argument cleanup_eh.
12016         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
12018 2018-01-03  Martin Liska  <mliska@suse.cz>
12020         PR ipa/83549
12021         * cif-code.def (VARIADIC_THUNK): New enum value.
12022         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
12023         thunks.
12025 2018-01-03  Jan Beulich  <jbeulich@suse.com>
12027         * sse.md (mov<mode>_internal): Tighten condition for when to use
12028         vmovdqu<ssescalarsize> for TI and OI modes.
12030 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
12032         Update copyright years.
12034 2018-01-03  Martin Liska  <mliska@suse.cz>
12036         PR ipa/83594
12037         * ipa-visibility.c (function_and_variable_visibility): Skip
12038         functions with noipa attribure.
12040 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
12042         * gcc.c (process_command): Update copyright notice dates.
12043         * gcov-dump.c (print_version): Ditto.
12044         * gcov.c (print_version): Ditto.
12045         * gcov-tool.c (print_version): Ditto.
12046         * gengtype.c (create_file): Ditto.
12047         * doc/cpp.texi: Bump @copying's copyright year.
12048         * doc/cppinternals.texi: Ditto.
12049         * doc/gcc.texi: Ditto.
12050         * doc/gccint.texi: Ditto.
12051         * doc/gcov.texi: Ditto.
12052         * doc/install.texi: Ditto.
12053         * doc/invoke.texi: Ditto.
12055 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12057         * vector-builder.h (vector_builder::m_full_nelts): Change from
12058         unsigned int to poly_uint64.
12059         (vector_builder::full_nelts): Update prototype accordingly.
12060         (vector_builder::new_vector): Likewise.
12061         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
12062         (vector_builder::operator ==): Likewise.
12063         (vector_builder::finalize): Likewise.
12064         * int-vector-builder.h (int_vector_builder::int_vector_builder):
12065         Take the number of elements as a poly_uint64 rather than an
12066         unsigned int.
12067         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
12068         from unsigned int to poly_uint64.
12069         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
12070         (vec_perm_indices::new_vector): Likewise.
12071         (vec_perm_indices::length): Likewise.
12072         (vec_perm_indices::nelts_per_input): Likewise.
12073         (vec_perm_indices::input_nelts): Likewise.
12074         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
12075         number of elements per input as a poly_uint64 rather than an
12076         unsigned int.  Use the original encoding for variable-length
12077         vectors, rather than clamping each individual element.
12078         For the second and subsequent elements in each pattern,
12079         clamp the step and base before clamping their sum.
12080         (vec_perm_indices::series_p): Handle polynomial element counts.
12081         (vec_perm_indices::all_in_range_p): Likewise.
12082         (vec_perm_indices_to_tree): Likewise.
12083         (vec_perm_indices_to_rtx): Likewise.
12084         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
12085         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
12086         (tree_vector_builder::new_binary_operation): Handle polynomial
12087         element counts.  Return false if we need to know the number
12088         of elements at compile time.
12089         * fold-const.c (fold_vec_perm): Punt if the number of elements
12090         isn't known at compile time.
12092 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12094         * vec-perm-indices.h (vec_perm_builder): Change element type
12095         from HOST_WIDE_INT to poly_int64.
12096         (vec_perm_indices::element_type): Update accordingly.
12097         (vec_perm_indices::clamp): Handle polynomial element_types.
12098         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
12099         (vec_perm_indices::all_in_range_p): Likewise.
12100         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
12101         than shwi trees.
12102         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
12103         polynomial vec_perm_indices element types.
12104         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
12105         * fold-const.c (fold_vec_perm): Likewise.
12106         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
12107         * tree-vect-generic.c (lower_vec_perm): Likewise.
12108         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
12109         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
12110         element type to HOST_WIDE_INT.
12112 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12113             Alan Hayward  <alan.hayward@arm.com>
12114             David Sherwood  <david.sherwood@arm.com>
12116         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
12117         rather than an int.  Use plus_constant.
12118         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
12119         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
12121 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12122             Alan Hayward  <alan.hayward@arm.com>
12123             David Sherwood  <david.sherwood@arm.com>
12125         * calls.c (emit_call_1, expand_call): Change struct_value_size from
12126         a HOST_WIDE_INT to a poly_int64.
12128 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12129             Alan Hayward  <alan.hayward@arm.com>
12130             David Sherwood  <david.sherwood@arm.com>
12132         * calls.c (load_register_parameters): Cope with polynomial
12133         mode sizes.  Require a constant size for BLKmode parameters
12134         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
12135         forces a parameter to be padded at the lsb end in order to
12136         fill a complete number of words, require the parameter size
12137         to be ordered wrt UNITS_PER_WORD.
12139 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12140             Alan Hayward  <alan.hayward@arm.com>
12141             David Sherwood  <david.sherwood@arm.com>
12143         * reload1.c (spill_stack_slot_width): Change element type
12144         from unsigned int to poly_uint64_pod.
12145         (alter_reg): Treat mode sizes as polynomial.
12147 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12148             Alan Hayward  <alan.hayward@arm.com>
12149             David Sherwood  <david.sherwood@arm.com>
12151         * reload.c (complex_word_subreg_p): New function.
12152         (reload_inner_reg_of_subreg, push_reload): Use it.
12154 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12155             Alan Hayward  <alan.hayward@arm.com>
12156             David Sherwood  <david.sherwood@arm.com>
12158         * lra-constraints.c (process_alt_operands): Reject matched
12159         operands whose sizes aren't ordered.
12160         (match_reload): Refer to this check here.
12162 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12163             Alan Hayward  <alan.hayward@arm.com>
12164             David Sherwood  <david.sherwood@arm.com>
12166         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
12167         that the mode size is in the set {1, 2, 4, 8, 16}.
12169 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12170             Alan Hayward  <alan.hayward@arm.com>
12171             David Sherwood  <david.sherwood@arm.com>
12173         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
12174         Use plus_constant instead of gen_rtx_PLUS.
12176 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12177             Alan Hayward  <alan.hayward@arm.com>
12178             David Sherwood  <david.sherwood@arm.com>
12180         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
12181         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
12182         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
12183         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
12184         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
12185         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
12186         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
12187         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
12188         * config/i386/i386.c (ix86_push_rounding): ...this new function.
12189         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
12190         a poly_int64.
12191         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
12192         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
12193         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
12194         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
12195         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
12196         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
12197         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
12198         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
12199         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
12200         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
12201         function.
12202         * expr.c (emit_move_resolve_push): Treat the input and result
12203         of PUSH_ROUNDING as a poly_int64.
12204         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
12205         (emit_push_insn): Likewise.
12206         * lra-eliminations.c (mark_not_eliminable): Likewise.
12207         * recog.c (push_operand): Likewise.
12208         * reload1.c (elimination_effects): Likewise.
12209         * rtlanal.c (nonzero_bits1): Likewise.
12210         * calls.c (store_one_arg): Likewise.  Require the padding to be
12211         known at compile time.
12213 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12214             Alan Hayward  <alan.hayward@arm.com>
12215             David Sherwood  <david.sherwood@arm.com>
12217         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
12218         Use plus_constant instead of gen_rtx_PLUS.
12220 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12221             Alan Hayward  <alan.hayward@arm.com>
12222             David Sherwood  <david.sherwood@arm.com>
12224         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
12225         rather than an int.
12227 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12228             Alan Hayward  <alan.hayward@arm.com>
12229             David Sherwood  <david.sherwood@arm.com>
12231         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
12232         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
12233         via stack temporaries.  Treat the mode size as polynomial too.
12235 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12236             Alan Hayward  <alan.hayward@arm.com>
12237             David Sherwood  <david.sherwood@arm.com>
12239         * expr.c (expand_expr_real_2): When handling conversions involving
12240         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
12241         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
12242         as a poly_uint64 too.
12244 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12245             Alan Hayward  <alan.hayward@arm.com>
12246             David Sherwood  <david.sherwood@arm.com>
12248         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
12250 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12251             Alan Hayward  <alan.hayward@arm.com>
12252             David Sherwood  <david.sherwood@arm.com>
12254         * combine.c (can_change_dest_mode): Handle polynomial
12255         REGMODE_NATURAL_SIZE.
12256         * expmed.c (store_bit_field_1): Likewise.
12257         * expr.c (store_constructor): Likewise.
12258         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
12259         and polynomial REGMODE_NATURAL_SIZE.
12260         (gen_lowpart_common): Likewise.
12261         * reginfo.c (record_subregs_of_mode): Likewise.
12262         * rtlanal.c (read_modify_subreg_p): Likewise.
12264 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12265             Alan Hayward  <alan.hayward@arm.com>
12266             David Sherwood  <david.sherwood@arm.com>
12268         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
12269         numbers of elements.
12271 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12272             Alan Hayward  <alan.hayward@arm.com>
12273             David Sherwood  <david.sherwood@arm.com>
12275         * match.pd: Cope with polynomial numbers of vector elements.
12277 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12278             Alan Hayward  <alan.hayward@arm.com>
12279             David Sherwood  <david.sherwood@arm.com>
12281         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
12282         in a POINTER_PLUS_EXPR.
12284 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12285             Alan Hayward  <alan.hayward@arm.com>
12286             David Sherwood  <david.sherwood@arm.com>
12288         * omp-simd-clone.c (simd_clone_subparts): New function.
12289         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
12290         (ipa_simd_modify_function_body): Likewise.
12292 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12293             Alan Hayward  <alan.hayward@arm.com>
12294             David Sherwood  <david.sherwood@arm.com>
12296         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
12297         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
12298         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
12299         (expand_vector_condition, vector_element): Likewise.
12300         (subparts_gt): New function.
12301         (get_compute_type): Use subparts_gt.
12302         (count_type_subparts): Delete.
12303         (expand_vector_operations_1): Use subparts_gt instead of
12304         count_type_subparts.
12306 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12307             Alan Hayward  <alan.hayward@arm.com>
12308             David Sherwood  <david.sherwood@arm.com>
12310         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
12311         (vect_compile_time_alias): ...this new function.  Do the calculation
12312         on poly_ints rather than trees.
12313         (vect_prune_runtime_alias_test_list): Update call accordingly.
12315 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12316             Alan Hayward  <alan.hayward@arm.com>
12317             David Sherwood  <david.sherwood@arm.com>
12319         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
12320         numbers of units.
12321         (vect_schedule_slp_instance): Likewise.
12323 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12324             Alan Hayward  <alan.hayward@arm.com>
12325             David Sherwood  <david.sherwood@arm.com>
12327         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
12328         constant and extern definitions for variable-length vectors.
12329         (vect_get_constant_vectors): Note that the number of units
12330         is known to be constant.
12332 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12333             Alan Hayward  <alan.hayward@arm.com>
12334             David Sherwood  <david.sherwood@arm.com>
12336         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
12337         of units as polynomial.  Choose between WIDE and NARROW based
12338         on multiple_p.
12340 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12341             Alan Hayward  <alan.hayward@arm.com>
12342             David Sherwood  <david.sherwood@arm.com>
12344         * tree-vect-stmts.c (simd_clone_subparts): New function.
12345         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
12347 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12348             Alan Hayward  <alan.hayward@arm.com>
12349             David Sherwood  <david.sherwood@arm.com>
12351         * tree-vect-stmts.c (vectorizable_call): Treat the number of
12352         vectors as polynomial.  Use build_index_vector for
12353         IFN_GOMP_SIMD_LANE.
12355 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12356             Alan Hayward  <alan.hayward@arm.com>
12357             David Sherwood  <david.sherwood@arm.com>
12359         * tree-vect-stmts.c (get_load_store_type): Treat the number of
12360         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
12361         for variable-length vectors.
12362         (vectorizable_mask_load_store): Treat the number of units as
12363         polynomial, asserting that it is constant if the condition has
12364         already been enforced.
12365         (vectorizable_store, vectorizable_load): Likewise.
12367 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12368             Alan Hayward  <alan.hayward@arm.com>
12369             David Sherwood  <david.sherwood@arm.com>
12371         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
12372         of units as polynomial.  Punt if we can't tell at compile time
12373         which vector contains the final result.
12375 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12376             Alan Hayward  <alan.hayward@arm.com>
12377             David Sherwood  <david.sherwood@arm.com>
12379         * tree-vect-loop.c (vectorizable_induction): Treat the number
12380         of units as polynomial.  Punt on SLP inductions.  Use an integer
12381         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
12382         cast of such a series for variable-length floating-point
12383         reductions.
12385 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12386             Alan Hayward  <alan.hayward@arm.com>
12387             David Sherwood  <david.sherwood@arm.com>
12389         * tree.h (build_index_vector): Declare.
12390         * tree.c (build_index_vector): New function.
12391         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
12392         of units as polynomial, forcibly converting it to a constant if
12393         vectorizable_reduction has already enforced the condition.
12394         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
12395         to create a {1,2,3,...} vector.
12396         (vectorizable_reduction): Treat the number of units as polynomial.
12397         Choose vectype_in based on the largest scalar element size rather
12398         than the smallest number of units.  Enforce the restrictions
12399         relied on above.
12401 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12402             Alan Hayward  <alan.hayward@arm.com>
12403             David Sherwood  <david.sherwood@arm.com>
12405         * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
12406         number of units as polynomial.
12408 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12409             Alan Hayward  <alan.hayward@arm.com>
12410             David Sherwood  <david.sherwood@arm.com>
12412         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
12413         * target.def (autovectorize_vector_sizes): Return the vector sizes
12414         by pointer, using vector_sizes rather than a bitmask.
12415         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
12416         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
12417         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
12418         Likewise.
12419         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
12420         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
12421         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
12422         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
12423         * omp-general.c (omp_max_vf): Likewise.
12424         * omp-low.c (omp_clause_aligned_alignment): Likewise.
12425         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
12426         * tree-vect-loop.c (vect_analyze_loop): Likewise.
12427         * tree-vect-slp.c (vect_slp_bb): Likewise.
12428         * doc/tm.texi: Regenerate.
12429         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
12430         to a poly_uint64.
12431         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
12432         the vector size as a poly_uint64 rather than an unsigned int.
12433         (current_vector_size): Change from an unsigned int to a poly_uint64.
12434         (get_vectype_for_scalar_type): Update accordingly.
12435         * tree.h (build_truth_vector_type): Take the size and number of
12436         units as a poly_uint64 rather than an unsigned int.
12437         (build_vector_type): Add a temporary overload that takes
12438         the number of units as a poly_uint64 rather than an unsigned int.
12439         * tree.c (make_vector_type): Likewise.
12440         (build_truth_vector_type): Take the number of units as a poly_uint64
12441         rather than an unsigned int.
12443 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12444             Alan Hayward  <alan.hayward@arm.com>
12445             David Sherwood  <david.sherwood@arm.com>
12447         * target.def (get_mask_mode): Take the number of units and length
12448         as poly_uint64s rather than unsigned ints.
12449         * targhooks.h (default_get_mask_mode): Update accordingly.
12450         * targhooks.c (default_get_mask_mode): Likewise.
12451         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
12452         * doc/tm.texi: Regenerate.
12454 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12455             Alan Hayward  <alan.hayward@arm.com>
12456             David Sherwood  <david.sherwood@arm.com>
12458         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
12459         * omp-general.c (omp_max_vf): Likewise.
12460         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
12461         (expand_omp_simd): Handle polynomial safelen.
12462         * omp-low.c (omplow_simd_context): Add a default constructor.
12463         (omplow_simd_context::max_vf): Change from int to poly_uint64.
12464         (lower_rec_simd_input_clauses): Update accordingly.
12465         (lower_rec_input_clauses): Likewise.
12467 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12468             Alan Hayward  <alan.hayward@arm.com>
12469             David Sherwood  <david.sherwood@arm.com>
12471         * tree-vectorizer.h (vect_nunits_for_cost): New function.
12472         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
12473         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
12474         (vect_analyze_slp_cost): Likewise.
12475         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
12476         (vect_model_load_cost): Likewise.
12478 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12479             Alan Hayward  <alan.hayward@arm.com>
12480             David Sherwood  <david.sherwood@arm.com>
12482         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
12483         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
12484         from an unsigned int * to a poly_uint64_pod *.
12485         (calculate_unrolling_factor): New function.
12486         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
12488 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12489             Alan Hayward  <alan.hayward@arm.com>
12490             David Sherwood  <david.sherwood@arm.com>
12492         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
12493         from an unsigned int to a poly_uint64.
12494         (_loop_vec_info::slp_unrolling_factor): Likewise.
12495         (_loop_vec_info::vectorization_factor): Change from an int
12496         to a poly_uint64.
12497         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
12498         (vect_get_num_vectors): New function.
12499         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
12500         (vect_get_num_copies): Use vect_get_num_vectors.
12501         (vect_analyze_data_ref_dependences): Change max_vf from an int *
12502         to an unsigned int *.
12503         (vect_analyze_data_refs): Change min_vf from an int * to a
12504         poly_uint64 *.
12505         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
12506         than an unsigned HOST_WIDE_INT.
12507         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
12508         (vect_analyze_data_ref_dependence): Change max_vf from an int *
12509         to an unsigned int *.
12510         (vect_analyze_data_ref_dependences): Likewise.
12511         (vect_compute_data_ref_alignment): Handle polynomial vf.
12512         (vect_enhance_data_refs_alignment): Likewise.
12513         (vect_prune_runtime_alias_test_list): Likewise.
12514         (vect_shift_permute_load_chain): Likewise.
12515         (vect_supportable_dr_alignment): Likewise.
12516         (dependence_distance_ge_vf): Take the vectorization factor as a
12517         poly_uint64 rather than an unsigned HOST_WIDE_INT.
12518         (vect_analyze_data_refs): Change min_vf from an int * to a
12519         poly_uint64 *.
12520         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
12521         vfm1 as a poly_uint64 rather than an int.  Make the same change
12522         for the returned bound_scalar.
12523         (vect_gen_vector_loop_niters): Handle polynomial vf.
12524         (vect_do_peeling): Likewise.  Update call to
12525         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
12526         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
12527         be constant.
12528         * tree-vect-loop.c (vect_determine_vectorization_factor)
12529         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
12530         (vect_get_known_peeling_cost): Likewise.
12531         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
12532         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
12533         (vect_transform_loop): Likewise.  Use the lowest possible VF when
12534         updating the upper bounds of the loop.
12535         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
12536         rather than an int.
12537         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
12538         polynomial unroll factors.
12539         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
12540         (vect_make_slp_decision): Likewise.
12541         (vect_supported_load_permutation_p): Likewise, and polynomial
12542         vf too.
12543         (vect_analyze_slp_cost): Handle polynomial vf.
12544         (vect_slp_analyze_node_operations): Likewise.
12545         (vect_slp_analyze_bb_1): Likewise.
12546         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
12547         than an unsigned HOST_WIDE_INT.
12548         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
12549         (vectorizable_load): Handle polynomial vf.
12550         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
12551         a poly_uint64.
12552         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
12554 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12555             Alan Hayward  <alan.hayward@arm.com>
12556             David Sherwood  <david.sherwood@arm.com>
12558         * match.pd: Handle bit operations involving three constants
12559         and try to fold one pair.
12561 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12563         * tree-vect-loop-manip.c: Include gimple-fold.h.
12564         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
12565         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
12566         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
12567         Add a path that uses a step of VF instead of 1, but disable it
12568         for now.
12569         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
12570         and niters_no_overflow parameters.  Update calls to
12571         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
12572         Create a new SSA name if the latter choses to use a ste other
12573         than zero, and return it via niters_vector_mult_vf_var.
12574         * tree-vect-loop.c (vect_transform_loop): Update calls to
12575         vect_do_peeling, vect_gen_vector_loop_niters and
12576         slpeel_make_loop_iterate_ntimes.
12577         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
12578         (vect_gen_vector_loop_niters): Update declarations after above changes.
12580 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
12582         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
12583         128-bit round to integer instructions.
12584         (ceil<mode>2): Likewise.
12585         (btrunc<mode>2): Likewise.
12586         (round<mode>2): Likewise.
12588 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
12590         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
12591         unaligned VSX load/store on P8/P9.
12592         (expand_block_clear): Allow the use of unaligned VSX
12593         load/store on P8/P9.
12595 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12597         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
12598         New function.
12599         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
12600         swap associated with both a load and a store.
12602 2018-01-02  Andrew Waterman  <andrew@sifive.com>
12604         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
12605         * config/riscv/riscv.md (clear_cache): Use it.
12607 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
12609         * web.c: Remove out-of-date comment.
12611 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12613         * expr.c (fixup_args_size_notes): Check that any existing
12614         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
12615         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
12616         (emit_single_push_insn): ...here.
12618 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12620         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
12621         (const_vector_encoded_nelts): New function.
12622         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
12623         (const_vector_int_elt, const_vector_elt): Declare.
12624         * emit-rtl.c (const_vector_int_elt_1): New function.
12625         (const_vector_elt): Likewise.
12626         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
12627         of CONST_VECTOR_ELT.
12629 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12631         * expr.c: Include rtx-vector-builder.h.
12632         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
12633         directly on the tree encoding.
12634         (const_vector_from_tree): Likewise.
12635         * optabs.c: Include rtx-vector-builder.h.
12636         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
12637         sequence of "u" values.
12638         * vec-perm-indices.c: Include rtx-vector-builder.h.
12639         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
12640         directly on the vec_perm_indices encoding.
12642 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12644         * doc/rtl.texi (const_vector): Describe new encoding scheme.
12645         * Makefile.in (OBJS): Add rtx-vector-builder.o.
12646         * rtx-vector-builder.h: New file.
12647         * rtx-vector-builder.c: Likewise.
12648         * rtl.h (rtx_def::u2): Add a const_vector field.
12649         (CONST_VECTOR_NPATTERNS): New macro.
12650         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
12651         (CONST_VECTOR_DUPLICATE_P): Likewise.
12652         (CONST_VECTOR_STEPPED_P): Likewise.
12653         (CONST_VECTOR_ENCODED_ELT): Likewise.
12654         (const_vec_duplicate_p): Check for a duplicated vector encoding.
12655         (unwrap_const_vec_duplicate): Likewise.
12656         (const_vec_series_p): Check for a non-duplicated vector encoding.
12657         Say that the function only returns true for integer vectors.
12658         * emit-rtl.c: Include rtx-vector-builder.h.
12659         (gen_const_vec_duplicate_1): Delete.
12660         (gen_const_vector): Call gen_const_vec_duplicate instead of
12661         gen_const_vec_duplicate_1.
12662         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
12663         (gen_const_vec_duplicate): Use rtx_vector_builder.
12664         (gen_const_vec_series): Likewise.
12665         (gen_rtx_CONST_VECTOR): Likewise.
12666         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
12667         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
12668         Build a new vector rather than modifying a CONST_VECTOR in-place.
12669         (handle_special_swappables): Update call accordingly.
12670         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
12671         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
12672         Build a new vector rather than modifying a CONST_VECTOR in-place.
12673         (handle_special_swappables): Update call accordingly.
12675 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12677         * simplify-rtx.c (simplify_const_binary_operation): Use
12678         CONST_VECTOR_ELT instead of XVECEXP.
12680 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12682         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
12683         the selector elements to be different from the data elements
12684         if the selector is a VECTOR_CST.
12685         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
12686         ssizetype for the selector.
12688 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12690         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
12691         before testing each element individually.
12692         * tree-vect-generic.c (lower_vec_perm): Likewise.
12694 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12696         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
12697         * selftest-run-tests.c (selftest::run_tests): Call it.
12698         * vector-builder.h (vector_builder::operator ==): New function.
12699         (vector_builder::operator !=): Likewise.
12700         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
12701         (vec_perm_indices::all_from_input_p): New function.
12702         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
12703         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
12704         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
12705         instead of reading the VECTOR_CST directly.  Detect whether both
12706         vector inputs are the same before constructing the vec_perm_indices,
12707         and update the number of inputs argument accordingly.  Use the
12708         utility functions added above.  Only construct sel2 if we need to.
12710 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12712         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
12713         the broadcast of the low byte.
12714         (expand_mult_highpart): Use an explicit encoding for the permutes.
12715         * optabs-query.c (can_mult_highpart_p): Likewise.
12716         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
12717         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
12718         (vectorizable_bswap): Likewise.
12719         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
12720         explicit encoding for the power-of-2 permutes.
12721         (vect_permute_store_chain): Likewise.
12722         (vect_grouped_load_supported): Likewise.
12723         (vect_permute_load_chain): Likewise.
12725 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12727         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
12728         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
12729         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
12730         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
12731         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
12732         (vect_gen_perm_mask_any): Likewise.
12734 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12736         * int-vector-builder.h: New file.
12737         * vec-perm-indices.h: Include int-vector-builder.h.
12738         (vec_perm_indices): Redefine as an int_vector_builder.
12739         (auto_vec_perm_indices): Delete.
12740         (vec_perm_builder): Redefine as a stand-alone class.
12741         (vec_perm_indices::vec_perm_indices): New function.
12742         (vec_perm_indices::clamp): Likewise.
12743         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
12744         (vec_perm_indices::new_vector): New function.
12745         (vec_perm_indices::new_expanded_vector): Update for new
12746         vec_perm_indices class.
12747         (vec_perm_indices::rotate_inputs): New function.
12748         (vec_perm_indices::all_in_range_p): Operate directly on the
12749         encoded form, without computing elided elements.
12750         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
12751         encoding.  Update for new vec_perm_indices class.
12752         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
12753         the given vec_perm_builder.
12754         (expand_vec_perm_var): Update vec_perm_builder constructor.
12755         (expand_mult_highpart): Use vec_perm_builder instead of
12756         auto_vec_perm_indices.
12757         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
12758         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
12759         or double series encoding as appropriate.
12760         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
12761         vec_perm_indices instead of auto_vec_perm_indices.
12762         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12763         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
12764         (vect_permute_store_chain): Likewise.
12765         (vect_grouped_load_supported): Likewise.
12766         (vect_permute_load_chain): Likewise.
12767         (vect_shift_permute_load_chain): Likewise.
12768         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
12769         (vect_transform_slp_perm_load): Likewise.
12770         (vect_schedule_slp_instance): Likewise.
12771         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
12772         (vectorizable_mask_load_store): Likewise.
12773         (vectorizable_bswap): Likewise.
12774         (vectorizable_store): Likewise.
12775         (vectorizable_load): Likewise.
12776         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
12777         vec_perm_indices instead of auto_vec_perm_indices.  Use
12778         tree_to_vec_perm_builder to read the vector from a tree.
12779         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
12780         vec_perm_builder instead of a vec_perm_indices.
12781         (have_whole_vector_shift): Use vec_perm_builder and
12782         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
12783         truncation to calc_vec_perm_mask_for_shift.
12784         (vect_create_epilog_for_reduction): Likewise.
12785         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
12786         from auto_vec_perm_indices to vec_perm_indices.
12787         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
12788         instead of changing individual elements.
12789         (aarch64_vectorize_vec_perm_const): Use new_vector to install
12790         the vector in d.perm.
12791         * config/arm/arm.c (expand_vec_perm_d::perm): Change
12792         from auto_vec_perm_indices to vec_perm_indices.
12793         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
12794         instead of changing individual elements.
12795         (arm_vectorize_vec_perm_const): Use new_vector to install
12796         the vector in d.perm.
12797         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
12798         Update vec_perm_builder constructor.
12799         (rs6000_expand_interleave): Likewise.
12800         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
12801         (rs6000_expand_interleave): Likewise.
12803 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12805         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
12806         to qimode could truncate the indices.
12807         * optabs.c (expand_vec_perm_var): Likewise.
12809 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12811         * Makefile.in (OBJS): Add vec-perm-indices.o.
12812         * vec-perm-indices.h: New file.
12813         * vec-perm-indices.c: Likewise.
12814         * target.h (vec_perm_indices): Replace with a forward class
12815         declaration.
12816         (auto_vec_perm_indices): Move to vec-perm-indices.h.
12817         * optabs.h: Include vec-perm-indices.h.
12818         (expand_vec_perm): Delete.
12819         (selector_fits_mode_p, expand_vec_perm_var): Declare.
12820         (expand_vec_perm_const): Declare.
12821         * target.def (vec_perm_const_ok): Replace with...
12822         (vec_perm_const): ...this new hook.
12823         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
12824         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
12825         * doc/tm.texi: Regenerate.
12826         * optabs.def (vec_perm_const): Delete.
12827         * doc/md.texi (vec_perm_const): Likewise.
12828         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
12829         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
12830         expand_vec_perm for constant permutation vectors.  Assert that
12831         the mode of variable permutation vectors is the integer equivalent
12832         of the mode that is being permuted.
12833         * optabs-query.h (selector_fits_mode_p): Declare.
12834         * optabs-query.c: Include vec-perm-indices.h.
12835         (selector_fits_mode_p): New function.
12836         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
12837         is defined, instead of checking whether the vec_perm_const_optab
12838         exists.  Use targetm.vectorize.vec_perm_const instead of
12839         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
12840         fit in the vector mode before using a variable permute.
12841         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
12842         vec_perm_indices instead of an rtx.
12843         (expand_vec_perm): Replace with...
12844         (expand_vec_perm_const): ...this new function.  Take the selector
12845         as a vec_perm_indices rather than an rtx.  Also take the mode of
12846         the selector.  Update call to shift_amt_for_vec_perm_mask.
12847         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
12848         Use vec_perm_indices::new_expanded_vector to expand the original
12849         selector into bytes.  Check whether the indices fit in the vector
12850         mode before using a variable permute.
12851         (expand_vec_perm_var): Make global.
12852         (expand_mult_highpart): Use expand_vec_perm_const.
12853         * fold-const.c: Includes vec-perm-indices.h.
12854         * tree-ssa-forwprop.c: Likewise.
12855         * tree-vect-data-refs.c: Likewise.
12856         * tree-vect-generic.c: Likewise.
12857         * tree-vect-loop.c: Likewise.
12858         * tree-vect-slp.c: Likewise.
12859         * tree-vect-stmts.c: Likewise.
12860         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
12861         Delete.
12862         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
12863         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
12864         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
12865         (aarch64_vectorize_vec_perm_const): ...this new function.
12866         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
12867         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
12868         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
12869         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
12870         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
12871         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
12872         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
12873         into...
12874         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
12875         check for NEON modes.
12876         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
12877         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
12878         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
12879         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
12880         into...
12881         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
12882         the old VEC_PERM_CONST conditions.
12883         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
12884         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
12885         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
12886         (ia64_vectorize_vec_perm_const_ok): Merge into...
12887         (ia64_vectorize_vec_perm_const): ...this new function.
12888         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
12889         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
12890         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
12891         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
12892         * config/mips/mips.c (mips_expand_vec_perm_const)
12893         (mips_vectorize_vec_perm_const_ok): Merge into...
12894         (mips_vectorize_vec_perm_const): ...this new function.
12895         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
12896         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
12897         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
12898         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
12899         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
12900         (rs6000_expand_vec_perm_const): Delete.
12901         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
12902         Delete.
12903         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
12904         (altivec_expand_vec_perm_const_le): Take each operand individually.
12905         Operate on constant selectors rather than rtxes.
12906         (altivec_expand_vec_perm_const): Likewise.  Update call to
12907         altivec_expand_vec_perm_const_le.
12908         (rs6000_expand_vec_perm_const): Delete.
12909         (rs6000_vectorize_vec_perm_const_ok): Delete.
12910         (rs6000_vectorize_vec_perm_const): New function.
12911         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
12912         an element count and rtx array.
12913         (rs6000_expand_extract_even): Update call accordingly.
12914         (rs6000_expand_interleave): Likewise.
12915         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
12916         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
12917         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
12918         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
12919         (rs6000_expand_vec_perm_const): Delete.
12920         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
12921         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
12922         (altivec_expand_vec_perm_const_le): Take each operand individually.
12923         Operate on constant selectors rather than rtxes.
12924         (altivec_expand_vec_perm_const): Likewise.  Update call to
12925         altivec_expand_vec_perm_const_le.
12926         (rs6000_expand_vec_perm_const): Delete.
12927         (rs6000_vectorize_vec_perm_const_ok): Delete.
12928         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
12929         reference to the SPE evmerge intructions.
12930         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
12931         an element count and rtx array.
12932         (rs6000_expand_extract_even): Update call accordingly.
12933         (rs6000_expand_interleave): Likewise.
12934         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
12935         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
12936         new function.
12937         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
12939 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12941         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
12942         vector mode and that that mode matches the mode of the data
12943         being permuted.
12944         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
12945         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
12946         directly using expand_vec_perm_1 when forcing selectors into
12947         registers.
12948         (expand_vec_perm_var): New function, split out from expand_vec_perm.
12950 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12952         * optabs-query.h (can_vec_perm_p): Delete.
12953         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
12954         * optabs-query.c (can_vec_perm_p): Split into...
12955         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
12956         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
12957         particular selector is valid.
12958         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12959         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
12960         (vect_grouped_load_supported): Likewise.
12961         (vect_shift_permute_load_chain): Likewise.
12962         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
12963         (vect_transform_slp_perm_load): Likewise.
12964         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
12965         (vectorizable_bswap): Likewise.
12966         (vect_gen_perm_mask_checked): Likewise.
12967         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
12968         implementations of variable permutation vectors into account
12969         when deciding which selector to use.
12970         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
12971         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
12972         with a false third argument.
12973         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
12974         to test whether the constant selector is valid and can_vec_perm_var_p
12975         to test whether a variable selector is valid.
12977 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12979         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
12980         * optabs-query.c (can_vec_perm_p): Likewise.
12981         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
12982         instead of vec_perm_indices.
12983         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
12984         (vect_gen_perm_mask_checked): Likewise,
12985         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
12986         (vect_gen_perm_mask_checked): Likewise,
12988 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12990         * optabs-query.h (qimode_for_vec_perm): Declare.
12991         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
12992         (qimode_for_vec_perm): ...this new function.
12993         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
12995 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
12997         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
12998         does not have a conditional at the top.
13000 2018-01-02  Richard Biener  <rguenther@suse.de>
13002         * ipa-inline.c (big_speedup_p): Fix expression.
13004 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
13006         PR target/81616
13007         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
13008         for generic 4->6.
13010 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
13012         PR target/81616
13013         Generic tuning.
13014         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
13015         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
13016         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
13017         cond_taken_branch_cost 3->4.
13019 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
13021         PR tree-optimization/83581
13022         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
13023         TODO_cleanup_cfg if any changes have been made.
13025         PR middle-end/83608
13026         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
13027         convert_modes if target mode has the right side, but different mode
13028         class.
13030         PR middle-end/83609
13031         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
13032         last argument when extracting from CONCAT.  If either from_real or
13033         from_imag is NULL, use expansion through memory.  If result is not
13034         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
13035         the parts directly to inner mode, if even that fails, use expansion
13036         through memory.
13038         PR middle-end/83623
13039         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
13040         check for bswap in mode rather than HImode and use that in expand_unop
13041         too.
13043 Copyright (C) 2018 Free Software Foundation, Inc.
13045 Copying and distribution of this file, with or without modification,
13046 are permitted in any medium without royalty provided the copyright
13047 notice and this notice are preserved.