re PR target/85657 (Make __ibm128 a separate type, even if long double uses the IBM...
[gcc.git] / gcc / ChangeLog
1 2018-06-05 Michael Meissner <meissner@linux.ibm.com>
2
3 * config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to
4 track if we pass or return IEEE 128-bit floating point.
5 (ieee128_mangling_gcc_8_1): New boolean to say whether to generate
6 C++ mangling that is compatible with GCC 8.1.
7 (TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook.
8 (init_cumulative_args): Note if we pass or return IEEE 128-bit
9 floating point types.
10 (rs6000_function_arg_advance_1): Likewise.
11 (rs6000_mangle_type): Optionally generate mangled names that match
12 what GCC 8.1 generated for IEEE 128-bit floating point types.
13 (rs6000_globalize_decl_name): If we have an external function that
14 passes or returns IEEE 128-bit types, generate a weak reference
15 from the mangled name used in GCC 8.1 to the current mangled
16 name.
17 (rs6000_init_builtins): Make __ibm128 use the long double type if
18 long double is IBM extended double. Make __float128 use the long
19 double type if long double is IEEE 128-bit.
20
21 2018-06-06 Jim Wilson <jimw@sifive.com>
22
23 * config/riscv/riscv.c (enum riscv_privilege_levels): New.
24 (struct machine_function): New field interrupt_mode.
25 (riscv_handle_type_attribute): New function. Add forward declaration.
26 (riscv_attribute_table) <interrupt>: Use riscv_handle_type_attribute.
27 (riscv_expand_epilogue): Check interrupt_mode field.
28 (riscv_set_current_function): Check interrupt attribute args and
29 set interrupt_mode field.
30 * config/riscv/riscv.md (UNSPECV_SRET, UNSPECV_URET): New.
31 (riscv_sret, riscv_uret): New.
32 * doc/extend.texi (RISC-V Function Attributes) <interrupt>: Document
33 new arguments to interrupt attribute.
34
35 2018-06-06 Peter Bergner <bergner@vnet.ibm.com>
36
37 PR target/63177
38 * /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9.
39 Don't handle -mcpu=power8 if -mpower9-vector is also used.
40
41 2018-06-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
42
43 * config/rs6000/rs6000-builtin.def (VSX_BUILTIN_VEC_LD,
44 VSX_BUILTIN_VEC_ST): Add comment to explain non-traditional uses.
45 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
46 several redundant entries.
47
48 2018-06-06 David Malcolm <dmalcolm@redhat.com>
49
50 * config/i386/i386-protos.h (ix86_expand_call): Strengthen return
51 type from "rtx" to "rtx_insn *".
52 * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise
53 for local "call_insn", removing cast.
54 (ix86_expand_call): Likewise, introducing a "call_insn" local.
55
56 2018-06-06 Eric Botcazou <ebotcazou@adacore.com>
57
58 PR tree-optimization/86066
59 * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR
60 for BIT_INSERT_EXPR stores.
61
62 2018-06-06 Richard Biener <rguenther@suse.de>
63
64 PR tree-optimization/86062
65 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
66 component refs ontop
67 of to be offsetted base.
68
69 2018-06-06 Jozef Lawrynowicz <jozef.l@mittosystems.com>
70
71 * gcc/config/msp430/msp430.c (msp430_attr): Allow interrupt handlers
72 to be static and remove check on interrupt attribute name.
73
74 gcc/testsuite/gcc.target/msp430/
75 * function-attributes-4.c: New test.
76 * static-interrupts.c: New test.
77
78 2018-06-05 Kelvin Nilsen <kelvin@gcc.gnu.org>
79
80 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
81 volatile qualifier from vec_lvsl and vec_lvsr argument prototypes.
82
83 2018-06-05 Steve Ellcey <sellcey@cavium.com>
84
85 PR target/79924
86 * config/aarch64/aarch64-protos.h (aarch64_err_no_fpadvsimd): Remove
87 second argument.
88 * config/aarch64/aarch64-protos..c (aarch64_err_no_fpadvsimd):
89 Remove second argument, change how error is called.
90 (aarch64_layout_arg): Remove second argument from
91 aarch64_err_no_fpadvsimd call.
92 (aarch64_init_cumulative_args): Ditto.
93 (aarch64_gimplify_va_arg_expr): Ditto.
94 * config/aarch64/aarch64.md (mov<mode>): Ditto.
95
96 2018-06-05 Uros Bizjak <ubizjak@gmail.com>
97
98 * config/i386/i386.md (simple_return_indirect_internal): New expander.
99 (*simple_return_indirect_internal<mode>): Rename from
100 simple_return_indirect_internal. Use W mode iterator.
101 (rstorssp): New expander.
102 (*rstorssp<mode>): Rename from rstorssp. Use P mode iterator.
103 (clrssbsy): New expander.
104 (*clrssbsy<mode>): Rename from clrssbsy. Use P mode iterator.
105
106 2018-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
107
108 * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to
109 __typeof__.
110 (cmse_check_pointed_object): Likewise.
111
112 2018-06-05 Martin Liska <mliska@suse.cz>
113
114 PR gcov-profile/47618
115 * doc/invoke.texi: Document how -fprofile-dir format
116 is extended.
117
118 2018-06-05 Richard Biener <rguenther@suse.de>
119
120 * tree-cfgcleanup.c (cleanup_control_flow_pre): For edge
121 removal pretend DOM info isn't available so we do not update
122 it and only remove edges, not dominated blocks. Actually free
123 DOM info in case we removed something. Remove unreachable blocks.
124 (mfb_keep_latches): Work with either DOM info or marked backedges.
125 (cleanup_tree_cfg_noloop): Do not remove unreachable blocks
126 first. Mark backedges if DOM info isn't available.
127 (Re-)compute DOM info after cleanup_control_flow_pre.
128
129 2018-06-05 Richard Biener <rguenther@suse.de>
130
131 * tree-cfg.c (struct locus_discrim_map): Store line, not location.
132 (locus_discrim_hasher::hash): Adjust.
133 (locus_discrim_hasher::equal): Likewise.
134 (next_discriminator_for_locus): Work on line directly.
135 (same_line_p): Pass in expanded locus1 as well.
136 (assign_discriminators): Avoid redundant location expansions.
137
138 2018-06-05 Richard Biener <rguenther@suse.de>
139
140 PR tree-optimization/86046
141 * tree-ssa.c (maybe_optimize_var): Clear DECL_GIMPLE_REG_P
142 if required after clearing TREE_ADDRESSABLE.
143
144 2018-06-05 Richard Biener <rguenther@suse.de>
145
146 PR tree-optimization/86047
147 * tree-ssa-loop.c (for_each_index): Glob handling of all
148 decls and constants and really handle all of them.
149
150 2018-06-05 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
151
152 PR target/81497
153 * config/arm/arm-builtins.c (arm_type_qualifiers): Add
154 qualifier_void_pointer and qualifier_const_void_pointer.
155 (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above.
156 (arm_init_builtins): Handle the above.
157 * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc,
158 __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2,
159 __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for
160 void intrinsics.
161
162 2018-06-05 Martin Liska <mliska@suse.cz>
163
164 * auto-profile.c (read_autofdo_file): Do not use
165 gcov_ctr_summary struct.
166 (afdo_callsite_hot_enough_for_early_inline): Likewise.
167 * coverage.c (struct counts_entry): Likewise.
168 (read_counts_file): Read just single summary entry.
169 (get_coverage_counts): Use gcov_summary struct.
170 * coverage.h (get_coverage_counts): Likewise.
171 * gcov-dump.c (dump_working_sets): Likewise.
172 (tag_summary): Dump just single summary.
173 * gcov-io.c (gcov_write_summary): Write just histogram
174 summary.
175 (gcov_read_summary): Read just single summary.
176 (compute_working_sets): Use gcov_summary struct.
177 * gcov-io.h (GCOV_TAG_SUMMARY_LENGTH): Remove usage
178 of GCOV_COUNTERS_SUMMABLE.
179 (GCOV_COUNTERS_SUMMABLE): Remove.
180 (GCOV_FIRST_VALUE_COUNTER): Replace with
181 GCOV_COUNTER_V_INTERVAL.
182 (struct gcov_ctr_summary): Remove.
183 (struct gcov_summary): Directly use fields of former
184 gcov_ctr_summary.
185 (compute_working_sets): Use gcov_summary struct.
186 * gcov.c (read_count_file): Do not use ctrs fields.
187 * lto-cgraph.c (merge_profile_summaries): Use gcov_summary
188 struct.
189 * lto-streamer.h (struct GTY): Make profile_info gcov_summary
190 struct.
191 * profile.c: Likewise.
192 * profile.h: Likewise.
193
194 2018-06-05 Martin Liska <mliska@suse.cz>
195
196 PR gcov-profile/84846
197 * gcov.c (output_lines): Print working directory only
198 in intermediate format.
199
200 2018-06-05 Andreas Krebbel <krebbel@linux.ibm.com>
201
202 * config/s390/s390-builtin-types.def: Add void function type.
203 * config/s390/s390-builtins.def: Use the function type for the
204 tbeginc builtin.
205
206 2018-06-04 Jim Wilson <jimw@sifive.com>
207
208 * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg
209 to int.
210 * config/riscv/riscv.c (riscv_for_each_saved_reg): New args epilogue
211 and maybe_eh_return. Change regno to unsigned int. Use new args to
212 handle EH_RETURN_DATA_REGNO registers properly.
213 (riscv_expand_prologue): Pass new args to riscv_for_each_saved_reg.
214 (riscv_expand_epilogue): Update comment. Change argument name and
215 type. Update code to use new name and type. Pass new args to
216 riscv_for_each_saved_reg. Only use EH_RETURN_STACKADJ_RTX when
217 EXCEPTION_RETURN.
218 * config/riscv/riscv.md (NORMAL_RETURN): New.
219 (SIBCALL_RETURN, EXCEPTION_RETURN): New.
220 (epilogue, sibcall_epilogue): Update riscv_expand_epilogue arg.
221 (eh_return): Call gen_eh_return_internal and emit barrier.
222 (eh_return_internal): Call riscv_expand_epilogue.
223
224 2018-06-04 Eric Botcazou <ebotcazou@adacore.com>
225
226 * gimple-ssa-store-merging.c (struct merged_store_group): Move up
227 bit_insertion field and declare can_be_merged_into method.
228 (merged_store_group::can_be_merged_into): New method.
229 (imm_store_chain_info::coalesce_immediate): Call it to decide whether
230 consecutive non-overlapping stores can be merged. Turn MEM_REF stores
231 into BIT_INSERT_EXPR stores if the group contains a non-MEM_REF store.
232
233 2018-06-04 Richard Biener <rguenther@suse.de>
234
235 PR tree-optimization/85955
236 * builtins.c (fold_builtin_sincos): Convert pointers to
237 destination to appropriate type before dereferencing.
238
239 2018-06-04 Segher Boessenkool <segher@kernel.crashing.org>
240
241 * config/rs6000/rs6000.md (abs<mode>2 for FLOAT128): Handle IFmode.
242
243 2018-06-04 Richard Sandiford <richard.sandiford@linaro.org>
244
245 * expr.c (expand_expr_real_1): Force the operand into memory if
246 its TYPE_MODE is BLKmode and if there is no integer mode for
247 the number of bits being extracted.
248
249 2018-06-04 Jakub Jelinek <jakub@redhat.com>
250
251 PR target/85832
252 PR target/86036
253 * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
254 Use vptestnm rather than vptestm in (=Yc,v,C) variant.
255
256 2018-06-04 Richard Biener <rguenther@suse.de>
257
258 * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into...
259 (cleanup_tree_cfg_noloop): ... single caller. Do
260 start_recording_case_labels later.
261
262 2018-06-04 Sebastian Peryt <sebastian.peryt@intel.com>
263
264 * config/i386/cldemoteintrin.h: Change define from _X86INTRIN_H_INCLUDED
265 to _IMMINTRIN_H_INCLUDED.
266 * config/i386/pconfigintrin.h: Ditto.
267 * config/i386/waitpkgintrin.h: Ditto.
268 * config/i386/immintrin.h: Add includes for sgxintrin.h,
269 pconfigintrin.h, waitpkgintrin.h and cldemoteintrin.h.
270 * config/i386/x86intrin.h: Remove includes for mintrin.h, xmmintrin.h,
271 emmintrin.h, pmmintrin.h, tmmintrin.h, smmintrin.h, wmmintrin.h,
272 bmiintrin.h, bmi2intrin.h, lzcntintrin.h, sgxintrin.h, pconfigintrin.h,
273 waitpkgintrin.h and cldemoteintrin.h.
274
275 2018-06-04 Richard Biener <rguenther@suse.de>
276
277 PR tree-optimization/86038
278 * tracer.c (find_best_successor): Check probability for
279 being initialized, bail out if not.
280
281 2018-06-04 Richard Earnshaw <rearnsha@arm.com>
282
283 PR target/86003
284 * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list
285 of bits to ignore when comparing architectures.
286
287 2018-06-04 Jakub Jelinek <jakub@redhat.com>
288
289 PR tree-optimization/69615
290 * fold-const.c (merge_ranges): If range1 is - [x, x] and x is the
291 maximum or minimum of the type, try to merge it also as if
292 range1 is + [-, x - 1] or + [x + 1, -].
293
294 PR c++/86025
295 * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
296
297 2018-06-03 Eric Botcazou <ebotcazou@adacore.com>
298
299 PR tree-optimization/86034
300 * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to
301 the unsigned bitfield type in a bit insertion sequence if it does not
302 have a larger precision than the bitfield size.
303 (process_store): Also bypass widening conversions for BIT_INSERT_EXPR.
304
305 2018-06-03 Kito Cheng <kito.cheng@gmail.com>
306
307 * config/nds32/nds32-peephole2.md: Add new patterns for code size.
308
309 2018-06-03 Chung-Ju Wu <jasonwucj@gmail.com>
310
311 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J.
312 * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J.
313 * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking.
314 * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J).
315
316 2018-06-03 Chung-Ju Wu <jasonwucj@gmail.com>
317
318 * common/config/nds32/nds32-common.c (nds32_option_optimization_table):
319 Disable -fdelete-null-pointer-checks for ELF toolchain.
320
321 2018-06-02 Chung-Ju Wu <jasonwucj@gmail.com>
322 Kito Cheng <kito.cheng@gmail.com>
323
324 * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt.
325 (nds32le-*-*, nds32be-*-*): Integrate checking process.
326 (nds32*-*-*): Add glibc and uclibc conditions.
327 * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New.
328 (TARGET_EXCEPT_UNWIND_INFO): Define.
329 * config/nds32/elf.h: New file.
330 * config/nds32/linux.h: New file.
331 * config/nds32/nds32-elf.opt: New file.
332 * config/nds32/nds32-linux.opt: New file.
333 * config/nds32/nds32-fp-as-gp.c
334 (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI.
335 * config/nds32/nds32.c (nds32_conditional_register_usage): Consider
336 TARGET_LINUX_ABI.
337 (nds32_asm_file_end): Ditto.
338 (nds32_print_operand): Ditto.
339 (nds32_insert_attributes): Ditto.
340 (nds32_init_libfuncs): New function.
341 (TARGET_HAVE_TLS): Define.
342 (TARGET_INIT_LIBFUNCS): Define.
343 * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax
344 spec content.
345 (TARGET_ELF): Apply different mcmodel setting.
346 (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has
347 been migrated into elf.h and linux.h files.
348 * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI.
349 * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI.
350 (mcmodel): The content has been migrated into nds32-elf.opt and
351 nds32-linux.opt files.
352 * config/nds32/t-elf: New file.
353 * config/nds32/t-linux: New file.
354
355 2018-06-02 Chung-Ju Wu <jasonwucj@gmail.com>
356 Shiva Chen <shiva0217@gmail.com>
357
358 * config/nds32/constants.md (unspec_volatile_element): Add
359 UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END.
360 * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp
361 optimization.
362 * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare.
363 (make_pass_nds32_fp_as_gp): Declare.
364 * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one
365 optmization pass.
366 (nds32_asm_function_end_prologue): Remove unused asm output.
367 (nds32_asm_function_begin_epilogue): Remove unused asm output.
368 (nds32_asm_file_start): Output necessary fp_as_gp information.
369 (nds32_option_override): Adjust register usage.
370 (nds32_expand_prologue): Consider fp_as_gp situation.
371 (nds32_expand_prologue_v3push): Consider fp_as_gp situation.
372 * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p.
373 (epilogue): Ditto.
374 (return): Ditto.
375 (simple_return): Ditto.
376 (omit_fp_begin): Output special directive for fp_as_gp.
377 (omit_fp_end): Output special directive for fp_as_gp.
378 * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp,
379 mforbid-fp-as-gp): New options.
380
381 2018-06-01 Mark Wielaard <mark@klomp.org>
382
383 * dwarf2out.c (dwarf2out_finish): Remove generation of
384 DW_AT_loclists_base.
385
386 2018-06-01 Eric Botcazou <ebotcazou@adacore.com>
387
388 * gimple-ssa-store-merging.c: Include gimple-fold.h.
389 (struct store_immediate_info): Document BIT_INSERT_EXPR stores.
390 (struct merged_store_group): Add bit_insertion field.
391 (dump_char_array): Use standard hexadecimal format.
392 (merged_store_group::merged_store_group): Set bit_insertion to false.
393 (merged_store_group::apply_stores): Use optimal buffer size. Deal
394 with BIT_INSERT_EXPR stores. Move up code updating the mask and
395 also print the mask in the dump file.
396 (pass_store_merging::gate): Minor tweak.
397 (imm_store_chain_info::coalesce_immediate): Fix wrong association
398 of stores with groups in dump. Allow coalescing of BIT_INSERT_EXPR
399 stores with INTEGER_CST stores.
400 (count_multiple_uses) <BIT_INSERT_EXPR>: New case.
401 (imm_store_chain_info::output_merged_store): Add try_bitpos variable
402 and use it throughout. Generate bit insertion sequences if need be.
403 (pass_store_merging::process_store): Remove redundant condition.
404 Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.
405
406 2018-06-01 Segher Boessenkool <segher@kernel.crashing.org>
407
408 * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
409 the 128-bit floating point types. Fix function comment.
410
411 2018-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
412
413 * config/aarch64/aarch64-simd.md
414 (aarch64_simd_vec_unpack<su>_lo_<mode>): Use UXTL and SXTL assembler
415 mnemonics.
416 (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
417 mnemonics.
418
419 2018-06-01 Richard Sandiford <richard.sandiford@linaro.org>
420
421 PR tree-optimization/85989
422 * gimple-ssa-backprop.c (backprop::m_visited_phis): New member
423 variable.
424 (backprop::intersect_uses): Check it when deciding whether this
425 is a backedge reference.
426 (backprop::process_block): Add each phi to m_visited_phis
427 after visiting it, then clear it at the end.
428
429 2018-06-01 Richard Biener <rguenther@suse.de>
430
431 * tree-vectorizer.h (vect_dr_stmt): New function.
432 (vect_get_load_cost): Adjust.
433 (vect_get_store_cost): Likewise.
434 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
435 Use vect_dr_stmt instead of DR_SMTT.
436 (vect_record_base_alignments): Likewise.
437 (vect_calculate_target_alignment): Likewise.
438 (vect_compute_data_ref_alignment): Likewise and make static.
439 (vect_update_misalignment_for_peel): Likewise.
440 (vect_verify_datarefs_alignment): Likewise.
441 (vector_alignment_reachable_p): Likewise.
442 (vect_get_data_access_cost): Likewise. Pass down
443 vinfo to vect_get_load_cost/vect_get_store_cost instead of DR.
444 (vect_get_peeling_costs_all_drs): Likewise.
445 (vect_peeling_hash_get_lowest_cost): Likewise.
446 (vect_enhance_data_refs_alignment): Likewise.
447 (vect_find_same_alignment_drs): Likewise.
448 (vect_analyze_data_refs_alignment): Likewise.
449 (vect_analyze_group_access_1): Likewise.
450 (vect_analyze_group_access): Likewise.
451 (vect_analyze_data_ref_access): Likewise.
452 (vect_analyze_data_ref_accesses): Likewise.
453 (vect_vfa_segment_size): Likewise.
454 (vect_small_gap_p): Likewise.
455 (vectorizable_with_step_bound_p): Likewise.
456 (vect_prune_runtime_alias_test_list): Likewise.
457 (vect_analyze_data_refs): Likewise.
458 (vect_supportable_dr_alignment): Likewise.
459 * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
460 (vect_gen_prolog_loop_niters): Likewise.
461 * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
462 * tree-vect-patterns.c (vect_recog_bool_pattern): Do not
463 modify DR_STMT.
464 (vect_recog_mask_conversion_pattern): Likewise.
465 (vect_try_gather_scatter_pattern): Likewise.
466 * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info
467 to vect_get_store_cost.
468 (vect_get_store_cost): Get stmt_info instead of DR.
469 (vect_model_load_cost): Pass stmt_info to vect_get_load_cost.
470 (vect_get_load_cost): Get stmt_info instead of DR.
471
472 2018-06-01 Richard Biener <rguenther@suse.de>
473
474 PR middle-end/86017
475 * gimple-fold.c (var_decl_component_p): Also allow offsetted
476 vars wrapped in MEM_REFs.
477
478 2018-06-01 Richard Sandiford <richard.sandiford@linaro.org>
479
480 * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
481 Fix subreg tests so that we only return a choice between
482 GENERAL_REGS and FP_REGS if the original classes included both.
483
484 2018-06-01 Richard Biener <rguenther@suse.de>
485
486 PR ipa/85960
487 * tree-ssa-structalias.c (get_function_part_constraint):
488 Handle NULL fi->decl.
489 (find_func_aliases_for_call): Properly handle indirect
490 fi from direct call.
491 (find_func_clobbers): Likewise.
492 (ipa_pta_execute): Likewise.
493 (create_variable_info_for): For functions that are ifunc_resolver
494 resolve to a varinfo that contains the result of the resolver call.
495 (associate_varinfo_to_alias): Do not treat ifunc resolvers as
496 aliases.
497
498 2018-05-31 Michael Collison <michael.collison@arm.com>
499
500 * config/aarch64/aarch64.md:
501 (*fix_to_zero_extenddfdi2): New pattern.
502 * gcc.target/aarch64/fix_extend1.c: New testcase.
503
504 2018-05-31 Qing Zhao <qing.zhao@oracle.com>
505
506 PR middle-end/78809
507 PR middle-end/83026
508 * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ
509 and BUILT_IN_STRNCMP_EQ.
510 * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and
511 BUILT_IN_STRNCMP_EQ.
512 * gimple-fold.c (gimple_fold_builtin_string_compare): Add the
513 handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
514 (gimple_fold_builtin): Likewise.
515 * tree-ssa-strlen.c (compute_string_length): New function.
516 (determine_min_obsize): New function.
517 (handle_builtin_string_cmp): New function to handle calls to
518 string compare functions.
519 (strlen_optimize_stmt): Add handling to builtin string compare
520 calls.
521 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
522 Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
523 * tree.c (build_common_builtin_nodes): Add new defines of
524 BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ.
525
526 2018-05-31 Jakub Jelinek <jakub@redhat.com>
527
528 PR target/85984
529 * bb-reorder.c (pass_partition_blocks::gate): Return false for
530 functions with naked attribute.
531
532 2018-05-31 Uros Bizjak <ubizjak@gmail.com>
533
534 * config/i386/sse.md (avx_vec_concat<mode>):
535 Substitute concat_tg_mode mode attribute with xtg_mode.
536 (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
537 (concat_tg_mode): Remove mode attribute.
538
539 2018-05-31 Martin Sebor <msebor@redhat.com>
540
541 PR c/82063
542 * calls.c (alloc_max_size): Correct a logic error/typo.
543 Treat excessive arguments as infinite. Warn for invalid arguments.
544 * doc/invoke.texi (-Walloc-size-larger-than): Update.
545
546 2018-05-31 H.J. Lu <hongjiu.lu@intel.com>
547
548 PR target/85829
549 * config/i386/x86-tune.def: Re-enable partial_reg_dependency
550 and movx for Haswell.
551
552 2018-05-31 Chung-Lin Tang <cltang@codesourcery.com>
553 Cesar Philippidis <cesar@codesourcery.com>
554
555 PR middle-end/85879
556 * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
557 when emitting error on private/firstprivate reductions.
558 * omp-low.c (lower_omp_target): Avoid reference-type processing
559 on pointers for firstprivate clause.
560
561 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
562
563 * config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
564 (st1x2): Likewise.
565 (st1x3): Likewise.
566 * config/aarch64/aarch64-simd.md
567 (aarch64_ld1x3<VALLDIF:mode>): New pattern.
568 (aarch64_ld1_x3_<mode>): Likewise
569 (aarch64_st1x2<VALLDIF:mode>): Likewise
570 (aarch64_st1_x2_<mode>): Likewise
571 (aarch64_st1x3<VALLDIF:mode>): Likewise
572 (aarch64_st1_x3_<mode>): Likewise
573 * config/aarch64/arm_neon.h (vld1_u8_x3): New function.
574 (vld1_s8_x3): Likewise.
575 (vld1_u16_x3): Likewise.
576 (vld1_s16_x3): Likewise.
577 (vld1_u32_x3): Likewise.
578 (vld1_s32_x3): Likewise.
579 (vld1_u64_x3): Likewise.
580 (vld1_s64_x3): Likewise.
581 (vld1_f16_x3): Likewise.
582 (vld1_f32_x3): Likewise.
583 (vld1_f64_x3): Likewise.
584 (vld1_p8_x3): Likewise.
585 (vld1_p16_x3): Likewise.
586 (vld1_p64_x3): Likewise.
587 (vld1q_u8_x3): Likewise.
588 (vld1q_s8_x3): Likewise.
589 (vld1q_u16_x3): Likewise.
590 (vld1q_s16_x3): Likewise.
591 (vld1q_u32_x3): Likewise.
592 (vld1q_s32_x3): Likewise.
593 (vld1q_u64_x3): Likewise.
594 (vld1q_s64_x3): Likewise.
595 (vld1q_f16_x3): Likewise.
596 (vld1q_f32_x3): Likewise.
597 (vld1q_f64_x3): Likewise.
598 (vld1q_p8_x3): Likewise.
599 (vld1q_p16_x3): Likewise.
600 (vld1q_p64_x3): Likewise.
601 (vst1_s64_x2): Likewise.
602 (vst1_u64_x2): Likewise.
603 (vst1_f64_x2): Likewise.
604 (vst1_s8_x2): Likewise.
605 (vst1_p8_x2): Likewise.
606 (vst1_s16_x2): Likewise.
607 (vst1_p16_x2): Likewise.
608 (vst1_s32_x2): Likewise.
609 (vst1_u8_x2): Likewise.
610 (vst1_u16_x2): Likewise.
611 (vst1_u32_x2): Likewise.
612 (vst1_f16_x2): Likewise.
613 (vst1_f32_x2): Likewise.
614 (vst1_p64_x2): Likewise.
615 (vst1q_s8_x2): Likewise.
616 (vst1q_p8_x2): Likewise.
617 (vst1q_s16_x2): Likewise.
618 (vst1q_p16_x2): Likewise.
619 (vst1q_s32_x2): Likewise.
620 (vst1q_s64_x2): Likewise.
621 (vst1q_u8_x2): Likewise.
622 (vst1q_u16_x2): Likewise.
623 (vst1q_u32_x2): Likewise.
624 (vst1q_u64_x2): Likewise.
625 (vst1q_f16_x2): Likewise.
626 (vst1q_f32_x2): Likewise.
627 (vst1q_f64_x2): Likewise.
628 (vst1q_p64_x2): Likewise.
629 (vst1_s64_x3): Likewise.
630 (vst1_u64_x3): Likewise.
631 (vst1_f64_x3): Likewise.
632 (vst1_s8_x3): Likewise.
633 (vst1_p8_x3): Likewise.
634 (vst1_s16_x3): Likewise.
635 (vst1_p16_x3): Likewise.
636 (vst1_s32_x3): Likewise.
637 (vst1_u8_x3): Likewise.
638 (vst1_u16_x3): Likewise.
639 (vst1_u32_x3): Likewise.
640 (vst1_f16_x3): Likewise.
641 (vst1_f32_x3): Likewise.
642 (vst1_p64_x3): Likewise.
643 (vst1q_s8_x3): Likewise.
644 (vst1q_p8_x3): Likewise.
645 (vst1q_s16_x3): Likewise.
646 (vst1q_p16_x3): Likewise.
647 (vst1q_s32_x3): Likewise.
648 (vst1q_s64_x3): Likewise.
649 (vst1q_u8_x3): Likewise.
650 (vst1q_u16_x3): Likewise.
651 (vst1q_u32_x3): Likewise.
652 (vst1q_u64_x3): Likewise.
653 (vst1q_f16_x3): Likewise.
654 (vst1q_f32_x3): Likewise.
655 (vst1q_f64_x3): Likewise.
656 (vst1q_p64_x3): Likewise.
657
658 2018-05-30 Jozef Lawrynowicz <jozef.l@mittosystems.com>
659
660 * config/msp430/msp430.c (msp430_output_labelref): Prepend
661 user_label_prefix to name.
662
663 * tree-core.h: Update comment about the format of NAME string
664 passed to handler in attribute_spec.
665
666 * config/msp430/msp430.md: Remove erroneous subreg expression from
667 zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
668 zero_extend{q,h}isi2.
669
670 2018-05-30 Borislav Petkov <bp@suse.de>
671
672 * doc/extend.texi: Document some architecture specific
673 constraints and sort entries.
674
675 2018-05-30 Martin Sebor <msebor@redhat.com>
676
677 PR middle-end/85369
678 * builtins.c (expand_builtin_stpcpy_1): New function.
679 (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
680 only if the former succeeds.
681
682 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
683
684 * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4
685 in saphira.
686
687 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
688
689 * doc/invoke.texi (-flinker-output): Document
690
691 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
692
693 * passes.c (ipa_write_summaries): Only modify statements if body
694 is in memory.
695 * cgraphunit.c (ipa_passes): Also produce intermeidate code when
696 incrementally linking.
697 (ipa_passes): Likewise.
698 * lto-cgraph.c (lto_output_node): When incrementally linking do not
699 pass down resolution info.
700 * common.opt (flag_incremental_link): Update info.
701 * gcc.c (plugin specs): Turn flinker-output=* to
702 -plugin-opt=-linker-output-known
703 * toplev.c (compile_file): Also cut compilation when doing incremental
704 link.
705 * flag-types. (enum lto_partition_model): Add
706 LTO_LINKER_OUTPUT_NOLTOREL.
707 (invoke.texi): Add -flinker-output docs.
708 * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
709 link same way as WPA; do not stream in dead initializers.
710
711 * dwarf2out.c (dwarf2out_die_ref_for_decl,
712 darf2out_register_external_decl): Support incremental link.
713
714 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
715
716 * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_.
717
718 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
719
720 * lto-wrapper.c (debug_objcopy): Add rename parameter; pass
721 it down to simple_object_copy_lto_debug_sections.
722 (run_gcc): Determine incremental LTO link time and configure
723 lto1 into non-wpa mode, disable renaming of debug sections.
724
725 2018-05-30 Kelvin Nilsen <kelvin@gcc.gnu.org>
726
727 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
728 descriptions of various incorrectly documented functions.
729
730 2018-05-30 Andre Vieira <andre.simoesdiasvieira@arm.com>
731
732 Revert:
733 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
734 address check not strict.
735
736 2018-05-30 Richard Biener <rguenther@suse.de>
737
738 PR tree-optimization/85964
739 * tracer.c (better_p): Drop initialized count check, we only
740 call the function with initialized counts now.
741 (find_best_successor): Do find a best edge if one
742 has uninitialized count.
743 (find_best_predecessor): Likewise. Do BB frequency check only
744 if count is initialized.
745
746 2017-05-30 Jackson Woodruff <jackson.woodruff@arm.com>
747
748 * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
749 (aarch64_ldrstr_offset_compare): New.
750 (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
751 load/store orderings.
752 (aarch64_gen_adjusted_ldpstp): Likewise.
753
754 2018-05-30 Wilco Dijkstra <wdijkstr@arm.com>
755
756 * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
757 Check for subset of GENERAL_REGS and FP_REGS.
758 * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
759 r=w alternative.
760
761 2018-05-30 Richard Sandiford <richard.sandiford@linaro.org>
762
763 * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p
764 and wi::to_poly_offset. Add the current offset and then check
765 whether the sum fits, rather than using an unchecked addition of
766 a checked term. Check for a shwi rather than a uhwi.
767 * expr.c (get_bit_range): Use tree_to_poly_uint64.
768 (store_constructor): Use poly_int_tree_p.
769 (expand_expr_real_1): Likewise.
770 * function.c (assign_temp): Likewise.
771 * fold-const.c (const_binop): Use poly_int_tree_p and
772 wi::to_poly_offset.
773 (fold_indirect_ref_1): Likewise. Use multiple_p to attempt an exact
774 division.
775 * ipa-icf-gimple.c (func_checker::compare_operand): Use
776 to_poly_offset for MEM offsets.
777 * ipa-icf.c (sem_variable::equals): Likewise.
778 * stor-layout.c (compute_record_mode): Use poly_int_tree_p.
779 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
780 wi::to_poly_offset for BIT_FIELD_REF offsets.
781 (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and
782 wi::to_poly_offset.
783 * var-tracking.c (emit_note_insn_var_location): Use
784 tree_to_poly_uint64.
785
786 2018-05-29 Jim Wilson <jimw@sifive.com>
787
788 * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo.
789
790 2018-05-29 Uros Bizjak <ubizjak@gmail.com>
791
792 PR target/85950
793 * config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
794 Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
795 sequence.
796 (sse4_1_round<mode>2): Use nonimmediate_operand
797 for operand 1 predicate.
798
799 2018-05-29 Martin Sebor <msebor@redhat.com>
800 Richard Biener <rguenther@suse.de>
801
802 PR testsuite/85888
803 * calls.c (get_size_range): Call determine_value_range instead
804 of get_value_range..
805 * tree-vrp.h (determine_value_range): Declared new function.
806 * tree-vrp.c (determine_value_range_1, determine_value_range): New.
807
808 2018-05-29 Richard Biener <rguenther@suse.de>
809
810 * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
811 sure to use non-pattern stmts for get_earlier_stmt arguments.
812 * tree-vectorizer.h (get_earlier_stmt): Assert we do not get
813 called on pattern stmts.
814 (get_later_stmt): Likewise.
815
816 2018-05-29 Martin Liska <mliska@suse.cz>
817
818 PR gcov-profile/85759
819 * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
820 env variables.
821
822 2018-05-29 Jakub Jelinek <jakub@redhat.com>
823
824 * tree-cfg.c (verify_gimple_assign_unary): Add checking for
825 VEC_UNPACK_*_EXPR.
826 (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
827 VEC_PACK_*_EXPR.
828
829 PR target/85918
830 * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
831 VEC_PACK_FLOAT_EXPR): New tree codes.
832 * tree-pretty-print.c (op_code_prio): Handle
833 VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
834 (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
835 VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
836 * tree-inline.c (estimate_operator_cost): Likewise.
837 * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
838 * fold-const.c (const_binop): Likewise.
839 (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
840 VEC_UNPACK_FIX_TRUNC_LO_EXPR.
841 * tree-cfg.c (verify_gimple_assign_unary): Likewise.
842 (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
843 * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
844 VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
845 * expr.c (expand_expr_real_2): Likewise.
846 * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
847 vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
848 vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
849 optabs.
850 * optabs.c (expand_widen_pattern_expr): For
851 VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
852 sign from result type rather than operand's type.
853 (expand_binop_directly): For vec_packu_float_optab and
854 vec_packs_float_optab allow result type to be different from operand's
855 type.
856 * optabs-tree.c (optab_for_tree_code): Handle
857 VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
858 VEC_PACK_FLOAT_EXPR. Formatting fixes.
859 * tree-vect-generic.c (expand_vector_operations_1): Handle
860 VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
861 VEC_PACK_FLOAT_EXPR.
862 * tree-vect-stmts.c (supportable_widening_operation): Handle
863 FIX_TRUNC_EXPR.
864 (supportable_narrowing_operation): Handle FLOAT_EXPR.
865 * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
866 * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
867 (float<floatunssuffix>v2div2sf2): ... this. Formatting fix.
868 (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
869 mode attributes.
870 (vec_pack<floatprefix>_float_<mode>): New expander.
871 (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
872 attributes.
873 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
874 vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
875 * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
876 vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
877 vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
878 Document.
879 * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
880 VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
881 (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
882 VEC_PACK_FLOAT_EXPR): Document.
883
884 2018-05-29 Richard Biener <rguenther@suse.de>
885
886 * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
887 member.
888 (stmt_vec_info_vec): Make pointer.
889 (init_stmt_vec_info_vec): Remove.
890 (free_stmt_vec_info_vec): Likewise.
891 (set_stmt_vec_info_vec): New function.
892 (free_stmt_vec_infos): Likewise.
893 (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
894 (set_vinfo_for_stmt): Likewise.
895 (get_earlier_stmt): Likewise.
896 (get_later_stmt): Likewise.
897 * tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
898 (vec_info::vec_info): Allocate stmt_vec_infos and set the global.
899 (vec_info::~vec_info): Free stmt_vec_infos.
900 (vectorize_loops): Set the global stmt_vec_info_vec to NULL.
901 Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
902 (pass_slp_vectorize::execute): Likewise.
903 * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
904 (free_stmt_vec_info_vec): Likewise.
905 (set_stmt_vec_info_vec): New function.
906 (free_stmt_vec_infos): Likewise.
907 * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
908 the global stmt_vec_info_vec.
909 * tree-parloops.c (gather_scalar_reductions): Use
910 set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
911 vector.
912
913 2018-05-29 Richard Biener <rguenther@suse.de>
914
915 * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
916
917 2018-05-29 Martin Liska <mliska@suse.cz>
918 David Malcolm <dmalcolm@redhat.com>
919
920 * vec.c (test_reverse): New.
921 (vec_c_tests): Add new test.
922 * vec.h (vl_ptr>::reverse): New function.
923
924 2018-05-29 Gerald Pfeifer <gerald@pfeifer.com>
925
926 * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
927
928 * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
929 and later.
930
931 2018-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de>
932
933 * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
934
935 2018-05-28 Richard Biener <rguenther@suse.de>
936
937 PR tree-optimization/85933
938 * tree-vect-data-refs.c (vect_record_base_alignments): Only
939 look at stmts marked as vectorizable.
940
941 2018-05-28 Richard Biener <rguenther@suse.de>
942
943 PR tree-optimization/85934
944 * tree-vect-generic.c (expand_vector_operations_1): Hoist
945 vector boolean check before scalar optimization.
946
947 2018-05-28 Jakub Jelinek <jakub@redhat.com>
948
949 * doc/invoke.texi (ARM Options): Use @item instead of @itemx
950 for armv5te.
951
952 2018-05-28 Mark Wielaard <mark@klomp.org>
953
954 * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2
955 if it is an expression containing a minus sign.
956
957 2018-05-27 John David Anglin <danglin@gcc.gnu.org>
958
959 * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
960
961 2018-05-27 Paul Koning <ni1d@arrl.net>
962
963 * config/pdp11/pdp11.md (truncsihi2): Remove.
964
965 2018-05-27 Monk Chiang <sh.chiang04@gmail.com>
966 Chung-Ju Wu <jasonwucj@gmail.com>
967
968 * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
969 implementation.
970 (unaligned_store_dw): Ditto.
971 * config/nds32/nds32-memory-manipulation.c
972 (nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
973 (nds32_gen_dup_4_byte_to_word_value): Rename to ...
974 (nds32_gen_dup_4_byte_to_word_value_aux): ... this.
975 (emit_setmem_word_loop): Rename to ...
976 (emit_setmem_doubleword_loop): ... this.
977 (nds32_gen_dup_4_byte_to_word_value): New function.
978 (nds32_gen_dup_8_byte_to_double_word_value): New function.
979 (nds32_expand_setmem_loop): Refine implementation.
980 (nds32_expand_setmem_loop_v3m): Ditto.
981 * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
982 pattern.
983
984 2018-05-27 Chung-Ju Wu <jasonwucj@gmail.com>
985
986 * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
987
988 2018-05-27 Chung-Ju Wu <jasonwucj@gmail.com>
989
990 * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
991 (nds32_init_machine_status): Initialize machine->attr_naked_p and
992 machine->attr_no_prologue_p.
993 (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
994 (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
995 (nds32_expand_epilogue): Consider attr_naked_p.
996 (nds32_expand_epilogue_v3pop): Likewise.
997 (nds32_can_use_return_insn): Likewise.
998 * config/nds32/nds32.h (machine_function): Add attr_naked_p and
999 attr_no_prologue_p fields.
1000 * config/nds32/nds32.opt (mret-in-naked-func): New option.
1001
1002 2018-05-27 Jakub Jelinek <jakub@redhat.com>
1003
1004 PR target/85918
1005 * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
1006 attributes.
1007 * config/i386/sse.md
1008 (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
1009 Rename to ...
1010 (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
1011 ... this.
1012 (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
1013 Rename to ...
1014 (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
1015 ... this.
1016 (*<floatsuffix>floatv2div2sf2): Rename to ...
1017 (*float<floatunssuffix>v2div2sf2): ... this.
1018 (<floatsuffix>floatv2div2sf2_mask): Rename to ...
1019 (float<floatunssuffix>v2div2sf2_mask): ... this.
1020 (*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
1021 (*float<floatunssuffix>v2div2sf2_mask_1): ... this.
1022 (<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
1023 to ...
1024 (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
1025 ... this.
1026 (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
1027 Rename to ...
1028 (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
1029 ... this.
1030 (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
1031 Rename to ...
1032 (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
1033 ... this.
1034 (<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
1035 (fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
1036 (vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
1037 gen_ufix_truncv8dfv8si2.
1038 * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
1039 __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
1040 __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
1041 __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
1042 __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
1043 __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
1044 __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
1045 Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
1046
1047 2018-05-24 H.J. Lu <hongjiu.lu@intel.com>
1048
1049 PR target/85900
1050 PR target/85345
1051 * varasm.c (assemble_alias): Lookup ifunc attribute on error.
1052
1053 2018-05-25 Jim Wilson <jimw@sifive.com>
1054
1055 * config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
1056 * config/riscv/riscv.c (struct machine_function): Add
1057 interrupt_handler_p and attribute_checked_p fields.
1058 (riscv_attribute_table): Add interrupt.
1059 (riscv_interrupt_type_p): New.
1060 (riscv_save_reg_p): Save extra regs for interrupt handler.
1061 (riscv_use_save_libcall): Return false for interrupt handler.
1062 (riscv_first_stack_step): Add forward declaration.
1063 (riscv_compute_frame_info): New local interrupt_save_t1. Set it
1064 for interrupt handler with large frame. Use it for saved reg list.
1065 (riscv_expand_prologue): Move flag_stack_usage_info support to
1066 eliminate duplication.
1067 (riscv_expand_epilogue): Generate mret for interrupt handler.
1068 (riscv_epilogue_uses): New.
1069 (riscv_can_use_return_insn): Return false for interrupt handler.
1070 (riscv_function_ok_for_sibcall): Likewise.
1071 (riscv_set_current_function): Add interrupt handler support.
1072 * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
1073 * config/riscv/riscv.md (UNSPECV_MRET): New.
1074 (GP_REGNUM): New.
1075 (riscv_frflags, riscv_fsflags): Use tab after opcode.
1076 (riscv_mret): New.
1077 * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
1078
1079 2018-05-25 Bill Schmidt <wschmidt@linux.ibm.com>
1080
1081 PR tree-optimization/85712
1082 * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
1083 this candidate has already been replaced in-situ by a copy.
1084
1085 2018-05-25 Jason Merrill <jason@redhat.com>
1086
1087 PR c++/80485 - inline function non-zero address.
1088 * symtab.c (nonzero_address): Check DECL_COMDAT.
1089
1090 2018-05-25 Uros Bizjak <ubizjak@gmail.com>
1091
1092 PR target/83628
1093 * config/alpha/alpha.md (ashlsi3): New insn pattern.
1094 (*ashlsi_se): Rename from *ashldi_se. Define as sign
1095 extension of SImode operation. Use const123_operand predicate.
1096 (*saddsi_1): Remove.
1097 (*saddl_se_1): Ditto.
1098 (*ssubsi_1): Ditto.
1099 (*ssubl_se_1): Ditto.
1100 * config/alpha/predicates.md (const123_operand): New predicate.
1101 * config/alpha/constraints.md (P): Use IN_RANGE.
1102
1103 2018-05-25 Richard Biener <rguenther@suse.de>
1104
1105 * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
1106 defaulted to true.
1107 (ref_maybe_used_by_stmt_p): Likewise.
1108 (stmt_may_clobber_ref_p): Likewise.
1109 (stmt_may_clobber_ref_p_1): Likewise.
1110 * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
1111 and pass it along.
1112 (ref_maybe_used_by_stmt_p): Likewise.
1113 (stmt_may_clobber_ref_p): Likewise.
1114 (stmt_may_clobber_ref_p_1): Likewise.
1115 * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
1116 the alias oracle to disambiguate DRs with stmts DR analysis
1117 couldn't handle.
1118 (vect_analyze_data_refs): Do not give up on not analyzable
1119 DRs for BB vectorization. Remove code truncating the dataref
1120 vector.
1121
1122 2018-05-25 Jakub Jelinek <jakub@redhat.com>
1123
1124 PR target/85832
1125 * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
1126 Add (=Yk,v,C) variant using vptestm insn. Use TARGET_AVX512BW
1127 in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
1128
1129 2018-05-25 Richard Biener <rguenther@suse.de>
1130
1131 * tree-vect-data-refs.c (vect_find_stmt_data_reference): New
1132 function, combining stmt data ref gathering and fatal analysis
1133 parts.
1134 (vect_analyze_data_refs): Remove now redudnant code and simplify.
1135 * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
1136 vect_analyze_loop_2 and use vect_find_stmt_data_reference.
1137 * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
1138 * tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
1139
1140 2018-05-25 Bin Cheng <bin.cheng@arm.com>
1141
1142 PR tree-optimization/85720
1143 * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
1144 SCC if all partitions are builtins.
1145 (version_loop_by_alias_check): New parameter. Generate cancelable
1146 runtime alias check if all partitions are builtins.
1147 (distribute_loop): Update call to above function.
1148
1149 2018-05-25 Bin Cheng <bin.cheng@arm.com>
1150
1151 * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
1152 (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
1153 (parm_default_def_partition_arg): Ditto.
1154 (set_parm_default_def_partition): Ditto.
1155 (get_parm_default_def_partitions): Ditto and make it static.
1156 (get_undefined_value_partitions): Ditto and make it static.
1157 (remove_ssa_form): Refactor call to init_var_map here.
1158 * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
1159 computation for loop region.
1160 (coalesce_partitions, compute_optimized_partition_bases): Ditto.
1161 (register_default_def): Delete.
1162 (for_all_parms, create_default_def): Move to tree-outof-ssa.c.
1163 (parm_default_def_partition_arg): Ditto.
1164 (set_parm_default_def_partition): Ditto.
1165 (get_parm_default_def_partitions): Ditto and make it static.
1166 (get_undefined_value_partitions): Ditto and make it static.
1167 (coalesce_with_default, coalesce_with_default): Update comment.
1168 (create_coalesce_list_for_region): New func factored out from
1169 create_outofssa_var_map.
1170 (populate_coalesce_list_for_outofssa): New func factored out from
1171 create_outofssa_var_map and coalesce_ssa_name.
1172 (create_outofssa_var_map): Delete.
1173 (coalesce_ssa_name): Refactor to support live range computation.
1174 * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
1175 (get_parm_default_def_partitions): Delete.
1176 (get_undefined_value_partitions): Ditto.
1177 * tree-ssa-live.c (init_var_map, delete_var_map): Support live range
1178 computation for loop region.
1179 (new_tree_live_info, loe_visit_block): Ditto.
1180 (live_worklist, set_var_live_on_entry): Ditto.
1181 (calculate_live_on_exit, verify_live_on_entry): Ditto.
1182 * tree-ssa-live.h (struct _var_map): New fields.
1183 (init_var_map): Change decl.
1184 (region_contains_p): New.
1185
1186 2018-05-25 Bin Cheng <bin.cheng@arm.com>
1187
1188 * tree-ssa-live.h (live_merge_and_clear): Delete.
1189
1190 2018-05-25 Richard Biener <rguenther@suse.de>
1191
1192 PR c++/85912
1193 * tree-dump.c (dequeue_and_dump): Remove access to removed
1194 operand 2 of a SWITCH_EXPR.
1195
1196 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
1197
1198 * doc/sourcebuild.texi (vect_double_cond_arith): Include
1199 multiplication and division.
1200 * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m})
1201 (cond_udiv@var{m}, cond_umod@var{m}): Document.
1202 * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab)
1203 (cond_udiv_optab, cond_umod_optab): New optabs.
1204 * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD)
1205 (IFN_COND_RDIV): New internal functions.
1206 * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR,
1207 TRUNC_MOD_EXPR and RDIV_EXPR.
1208 * match.pd (UNCOND_BINARY, COND_BINARY): Handle them.
1209 * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV):
1210 New unspecs.
1211 (SVE_INT_BINARY): Include mult.
1212 (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV.
1213 (optab, sve_int_op): Handle mult.
1214 (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and
1215 UNSPEC_COND_DIV.
1216 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New pattern
1217 for SVE_INT_BINARY_SD.
1218
1219 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
1220
1221 * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator.
1222 (optab, sve_int_op): Handle div and udiv.
1223 * config/aarch64/aarch64-sve.md (<optab><mode>3): New expander
1224 for SVE_INT_BINARY_SD.
1225 (*<optab><mode>3): New insn for the same.
1226
1227 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
1228
1229 * tree-vect-patterns.c: Include predict.h.
1230 (vect_recog_divmod_pattern): Restrict check for division support
1231 to when optimizing for size.
1232
1233 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
1234
1235 * doc/sourcebuild.texi (vect_double_cond_arith: Document.
1236 * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4.
1237 (gimple_match_op::gimple_match_op): Add an overload for 4 operands.
1238 (gimple_match_op::set_op): Likewise.
1239 (gimple_resimplify4): Declare.
1240 * genmatch.c (get_operand_type): Handle CFN_COND_* functions.
1241 (expr::gen_transform): Likewise.
1242 (decision_tree::gen): Generate a simplification routine for 4 operands.
1243 * gimple-match-head.c (gimple_simplify): Add an overload for
1244 4 operands. In the top-level function, handle up to 4 call
1245 arguments and call gimple_resimplify4.
1246 (gimple_resimplify4): New function.
1247 (build_call_internal): Pass a fourth operand.
1248 (maybe_push_to_seq): Likewise.
1249 * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists.
1250 Fold VEC_COND_EXPRs of an operation and a default value into
1251 an IFN_COND_* function if possible.
1252 * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN):
1253 New unspecs.
1254 (SVE_COND_FP_BINARY): Include them.
1255 (optab, sve_fp_op): Handle them.
1256 (SVE_INT_BINARY_REV): New code iterator.
1257 (SVE_COND_FP_BINARY_REV): New int iterator.
1258 (commutative): New int attribute.
1259 * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op):
1260 Declare.
1261 * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
1262 function.
1263 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Use it.
1264 (*cond_<optab><mode>): New patterns for reversed operands.
1265
1266 2018-05-25 Richard Biener <rguenther@suse.de>
1267
1268 * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove.
1269 (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info.
1270 (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info.
1271 (STMT_VINFO_GROUPED_ACCESS): Adjust.
1272 * tree-vect-data-refs.c (everywhere): Adjust users.
1273 * tree-vect-loop.c (everywhere): Likewise.
1274 * tree-vect-slp.c (everywhere): Likewise.
1275 * tree-vect-stmts.c (everywhere): Likewise.
1276 * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
1277
1278 2018-05-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1279
1280 * configure.ac (gcc_cv_as_section_has_e): Move to common section.
1281 Rename to...
1282 (gcc_cv_as_section_exclude): ... this.
1283 Try Solaris as #exclude syntax.
1284 * configure: Regenerate.
1285 * config.in: Regenerate.
1286 * config/i386/i386.c (i386_solaris_elf_named_section): Handle
1287 SECTION_EXCLUDE.
1288 * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section)
1289 [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE.
1290
1291 * varasm.c (default_elf_asm_named_section): Don't check if
1292 HAVE_GAS_SECTION_EXCLUDE is defined.
1293
1294 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
1295
1296 * doc/md.texi: Update the documentation of the cond_* optabs
1297 to mention the new final operand. Fix GET_MODE_NUNITS call.
1298 Describe the scalar case too.
1299 * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left.
1300 * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands
1301 instead of 2.
1302 (expand_cond_binary_optab_fn): Expect 4 operands instead of 3.
1303 (get_conditional_internal_fn): Update comment.
1304 * tree-vect-loop.c (vectorizable_reduction): Pass the original
1305 accumulator value as a final argument to conditional functions.
1306 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Turn into
1307 a define_expand and add an "else" operand. Assert for now that
1308 the else operand is equal to operand 2. Use SVE_INT_BINARY and
1309 SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP.
1310 (*cond_<optab><mode>): New patterns.
1311 * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX)
1312 (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
1313 (UNSPEC_COND_EOR): Delete.
1314 (optab): Remove associated mappings.
1315 (SVE_INT_BINARY): New code iterator.
1316 (sve_int_op): Remove int attribute and add "minus" to the code
1317 attribute.
1318 (SVE_COND_INT_OP): Delete.
1319 (SVE_COND_FP_OP): Rename to...
1320 (SVE_COND_FP_BINARY): ...this.
1321
1322 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
1323
1324 * optabs.c (can_reuse_operands_p): New function.
1325 (maybe_legitimize_operands): Try to reuse the results for
1326 earlier operands.
1327
1328 2018-05-24 Uros Bizjak <ubizjak@gmail.com>
1329
1330 * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
1331 Add {q} suffix to insn mnemonic.
1332
1333 2018-05-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
1334
1335 * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define.
1336 (msp430_warn_func_return): New.
1337
1338 2018-05-24 Roger Sayle <roger@nextmovesoftware.com>
1339
1340 * fold-const.c (tree_nonzero_bits): New function.
1341 * fold-const.h (tree_nonzero_bits): Likewise.
1342 * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and
1343 friends. POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc.
1344
1345 2018-05-24 H.J. Lu <hongjiu.lu@intel.com>
1346
1347 PR target/85900
1348 PR target/85345
1349 * varasm.c (assemble_alias): Check ifunc_resolver only on
1350 FUNCTION_DECL.
1351
1352 2018-05-24 Uros Bizjak <ubizjak@gmail.com>
1353
1354 PR target/85903
1355 * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
1356 when memory input operand is handled.
1357
1358 2018-05-24 Luis Machado <luis.machado@linaro.org>
1359
1360 * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
1361 global.
1362 (qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
1363
1364 2018-05-24 Richard Sandiford <richard.sandiford@linaro.org>
1365
1366 * match.pd: Delay FMA folds until after vectorization.
1367
1368 2018-05-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
1369
1370 PR target/83009
1371 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
1372 address check not strict.
1373
1374 2018-05-24 Richard Sandiford <richard.sandiford@linaro.org>
1375
1376 * gimple-match.h (gimple_match_op): New class.
1377 (mprts_hook): Replace parameters with a gimple_match_op *.
1378 (maybe_build_generic_op): Likewise.
1379 (gimple_simplified_result_is_gimple_val): Replace parameters with
1380 a const gimple_match_op *.
1381 (gimple_simplify): Replace code_helper * and tree * parameters with
1382 a gimple_match_op * parameter.
1383 (gimple_resimplify1): Replace code_helper *, tree and tree *
1384 parameters with a gimple_match_op * parameter.
1385 (gimple_resimplify2): Likewise.
1386 (gimple_resimplify3): Likewise.
1387 (maybe_push_res_to_seq): Replace code_helper, tree and tree *
1388 parameters with a gimple_match_op * parameter.
1389 * gimple-match-head.c (gimple_simplify): Change prototypes of
1390 auto-generated functions to take a gimple_match_op * instead of
1391 separate code_helper * and tree * parameters. Make the same
1392 change in the top-level overload and update calls to the
1393 gimple_resimplify routines. Update calls to the auto-generated
1394 functions and to maybe_push_res_to_seq in the publicly-facing
1395 operation-specific gimple_simplify overloads.
1396 (gimple_match_op::MAX_NUM_OPS): Define.
1397 (gimple_resimplify1): Replace rcode and ops with a single res_op
1398 parameter. Update call to gimple_simplify.
1399 (gimple_resimplify2): Likewise.
1400 (gimple_resimplify3): Likewise.
1401 (mprts_hook): Replace parameters with a gimple_match_op *.
1402 (maybe_build_generic_op): Likewise.
1403 (build_call_internal): Replace type, nargs and ops with
1404 a gimple_match_op *.
1405 (maybe_push_res_to_seq): Replace res_code, type and ops parameters
1406 with a single gimple_match_op *. Update calls to mprts_hook,
1407 build_call_internal and gimple_simplified_result_is_gimple_val.
1408 Factor out code that is common to the tree_code and combined_fn cases.
1409 * genmatch.c (expr::gen_transform): Replace tem_code and
1410 tem_ops with a gimple_match_op called tem_op. Update calls
1411 to the gimple_resimplify functions and maybe_push_res_to_seq.
1412 (dt_simplify::gen_1): Manipulate res_op instead of res_code and
1413 res_ops. Update call to the gimple_resimplify functions.
1414 (dt_simplify::gen): Pass res_op instead of res_code and res_ops.
1415 (decision_tree::gen): Make the functions take a gimple_match_op *
1416 called res_op instead of separate res_code and res_ops parameters.
1417 Update call accordingly.
1418 * gimple-fold.c (replace_stmt_with_simplification): Replace rcode
1419 and ops with a single res_op parameter. Update calls to
1420 maybe_build_generic_op and maybe_push_res_to_seq.
1421 (fold_stmt_1): Update calls to gimple_simplify and
1422 replace_stmt_with_simplification.
1423 (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify
1424 and gimple_simplified_result_is_gimple_val.
1425 * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to
1426 gimple_simplify.
1427 * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters
1428 with a gimple_match_op *.
1429 (vn_nary_build_or_lookup): Likewise. Update call to
1430 vn_nary_build_or_lookup_1.
1431 (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a
1432 gimple_match_op *. Update calls to the gimple_resimplify routines
1433 and to gimple_simplified_result_is_gimple_val.
1434 (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1.
1435 Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3.
1436 (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup.
1437 (visit_nary_op): Likewise.
1438 (visit_reference_op_load): Likewise.
1439
1440 2018-05-23 Luis Machado <luis.machado@linaro.org>
1441
1442 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type
1443 modifier for printing the step amount.
1444
1445 2018-05-23 Jozef Lawrynowicz <jozef.l@somniumtech.com>
1446
1447 PR target/78849
1448 * gcc/tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
1449 types.
1450
1451 2018-05-23 Segher Boessenkool <segher@kernel.crashing.org>
1452
1453 * doc/sourcebuild.texi (Endianness): New subsubsection.
1454
1455 2018-05-23 Luis Machado <luis.machado@linaro.org>
1456
1457 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1458 <prefetch_dynamic_strides>: New const bool field.
1459 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1460 prefetch_dynamic_strides.
1461 (exynosm1_prefetch_tune): Likewise.
1462 (thunderxt88_prefetch_tune): Likewise.
1463 (thunderx_prefetch_tune): Likewise.
1464 (thunderx2t99_prefetch_tune): Likewise.
1465 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to
1466 false.
1467 (aarch64_override_options_internal): Update to set
1468 PARAM_PREFETCH_DYNAMIC_STRIDES.
1469 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1470 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1471 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1472 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1473 prefetch-dynamic-strides setting.
1474
1475 2018-05-23 Luis Machado <luis.machado@linaro.org>
1476
1477 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1478 <minimum_stride>: New const int field.
1479 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1480 minimum_stride field defaulting to -1.
1481 (exynosm1_prefetch_tune): Likewise.
1482 (thunderxt88_prefetch_tune): Likewise.
1483 (thunderx_prefetch_tune): Likewise.
1484 (thunderx2t99_prefetch_tune): Likewise.
1485 (qdf24xx_prefetch_tune) <minimum_stride>: Set to 2048.
1486 <default_opt_level>: Set to 3.
1487 (aarch64_override_options_internal): Update to set
1488 PARAM_PREFETCH_MINIMUM_STRIDE.
1489 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1490 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1491 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1492 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1493 stride is constant and is below the minimum stride threshold.
1494
1495 2018-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1496
1497 * config/arm/arm-cpus.in (mode26): Delete.
1498 (armv4): Delete mode26 reference.
1499 * config/arm/arm.c (arm_configure_build_target): Delete use of
1500 isa_bit_mode26.
1501
1502 2018-05-23 Uros Bizjak <ubizjak@gmail.com>
1503
1504 * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
1505 New insn pattern.
1506 (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
1507 Rewrite expander pattern. Emit gen_floatunssi<mode>2_i387_with_xmm
1508 for non-SSE modes.
1509 (floatunsdisf2): Rewrite expander pattern. Hanlde TARGET_AVX512F.
1510 (floatunsdidf2): Ditto.
1511
1512 2018-05-23 Uros Bizjak <ubizjak@gmail.com>
1513
1514 * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
1515 (fixuns_trunc<mode>si2_avx512f): Ditto.
1516 (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
1517 (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
1518 Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
1519
1520 2018-05-23 Alexander Monakov <amonakov@ispras.ru>
1521
1522 PR rtl-optimization/79985
1523 * df-scan.c (df_insn_refs_collect): Remove special case for
1524 global registers and asm statements.
1525
1526 2018-05-23 Alexander Monakov <amonakov@ispras.ru>
1527
1528 * extend.texi (Global Register Variables): Rewrite the bullet list.
1529 Note that the register is available for allocation. Note that access
1530 via inline asm must use constraints. Add note about async-signal
1531 handlers. Remove paragraph about automagic register selection.
1532
1533 2018-05-23 Richard Biener <rguenther@suse.de>
1534
1535 * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
1536 of fixed offset from memset VN.
1537
1538 2018-05-23 Bill Schmidt <wschmidt@linux.ibm.com>
1539
1540 * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
1541 first_interp field.
1542 (alloc_cand_and_find_basis): Initialize first_interp field.
1543 (slsr_process_mul): Modify first_interp field.
1544 (slsr_process_add): Likewise.
1545 (slsr_process_cast): Modify first_interp field for each new
1546 interpretation.
1547 (slsr_process_copy): Likewise.
1548 (dump_candidate): Dump first_interp field.
1549 (replace_mult_candidate): Process all interpretations, not just
1550 subsequent ones.
1551 (replace_rhs_if_not_dup): Likewise.
1552 (replace_one_candidate): Likewise.
1553
1554 2018-05-23 Wilco Dijkstra <wdijkstr@arm.com>
1555
1556 * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
1557 Add new boolean.
1558 (aarch64_needs_frame_chain): New function.
1559 (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
1560
1561 2018-05-23 Sudakshina Das <sudi.das@arm.com>
1562
1563 PR target/84882
1564 * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
1565 Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
1566 * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
1567 * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
1568 as true for strict-align.
1569 (aarch64_can_inline_p): Perform checks even when callee has no
1570 attributes to check for strict alignment.
1571 * doc/extend.texi (AArch64 Function Attributes): Document
1572 no-strict-align.
1573 * doc/invoke.texi: (AArch64 Options): Likewise.
1574
1575 2018-05-23 Richard Sandiford <richard.sandiford@linaro.org>
1576
1577 PR tree-optimization/85853
1578 * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
1579 the handling of the root of the node to...
1580 (vect_slp_analyze_node_operations_1): ...this new function,
1581 and run the whole thing with the child nodes' def types
1582 set according to their SLP node's def type.
1583
1584 2018-05-23 Richard Biener <rguenther@suse.de>
1585
1586 PR middle-end/85874
1587 * tree-data-ref.c (create_runtime_alias_checks): Defer
1588 and ignore overflow warnings.
1589
1590 2018-05-23 Yury Gribov <tetra2005@gmail.com>
1591
1592 PR tree-optimization/85822
1593 * tree-vrp.c (is_masked_range_test): Fix handling of negative
1594 constants.
1595
1596 2018-05-23 Richard Biener <rguenther@suse.de>
1597
1598 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
1599 memset constants via native_interpret_expr.
1600
1601 2018-05-22 H.J. Lu <hongjiu.lu@intel.com>
1602
1603 PR target/85345
1604 * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
1605 attribute.
1606 (cgraph_node::create_alias): Likewise.
1607 (cgraph_node::get_availability): Check ifunc_resolver instead
1608 of looking up ifunc attribute.
1609 * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
1610 * varasm.c (do_assemble_alias): Likewise.
1611 (assemble_alias): Likewise.
1612 (default_binds_local_p_3): Likewise.
1613 * cgraph.h (cgraph_node): Add ifunc_resolver.
1614 (cgraph_node::only_called_directly_or_aliased_p): Return false
1615 for IFUNC resolver.
1616 * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
1617 attribute.
1618 * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
1619 is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
1620 (symtab_node::binds_to_current_def_p): Check ifunc_resolver
1621 instead of looking up ifunc attribute.
1622
1623 2018-05-22 Luis Machado <luis.machado@linaro.org>
1624
1625 * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
1626
1627 2018-05-22 Martin Sebor <msebor@redhat.com>
1628
1629 PR middle-end/85359
1630 * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
1631 only when expasion succeeds.
1632 (expand_builtin_strcmp): Same.
1633 (expand_builtin_strncmp): Same.
1634
1635 2018-05-22 Martin Sebor <msebor@redhat.com>
1636
1637 * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
1638
1639 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
1640 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1641
1642 * config/aarch64/aarch64-ldpstp.md: Replace uses of
1643 aarch64_mem_pair_operand with memory_operand and delete operand swapping
1644 code.
1645 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
1646 Add check for legitimate_address.
1647 (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
1648 (aarch64_swap_ldrstr_operands): New.
1649 * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
1650 Define prototype.
1651
1652 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
1653 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1654
1655 * config/aarch64/aarch64.md: New patterns to generate stp
1656 and ldp.
1657 (store_pair_sw, store_pair_dw): New patterns to generate stp for
1658 single words and double words.
1659 (load_pair_sw, load_pair_dw): Likewise.
1660 (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
1661 Delete.
1662 (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
1663 Delete.
1664 * config/aarch64/aarch64-ldpstp.md: Modify peephole
1665 for different mode ldpstp and add peephole for merged zero stores.
1666 Likewise for loads.
1667 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
1668 Add size check.
1669 (aarch64_gen_store_pair): Rename calls to match new patterns.
1670 (aarch64_gen_load_pair): Rename calls to match new patterns.
1671 * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
1672 (load_pair<DREG:mode><DREG2:mode>): ... This.
1673 (store_pair<mode>): Rename to...
1674 (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
1675 * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
1676 New mode iterators.
1677 (V_INT_EQUIV): Handle SImode.
1678 * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
1679 New predicate.
1680
1681 2018-05-22 Martin Sebor <msebor@redhat.com>
1682
1683 PR c/85623
1684 * calls.c (maybe_warn_nonstring_arg): Use string length to set
1685 or ajust the presumed bound on an operation to avoid unnecessary
1686 warnings.
1687
1688 2018-05-22 Martin Sebor <msebor@redhat.com>
1689
1690 PR tree-optimization/85826
1691 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
1692 assuming that a DECL necesarily has a constant size.
1693
1694 2018-05-22 Richard Sandiford <richard.sandiford@linaro.org>
1695
1696 PR middle-end/85862
1697 * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
1698
1699 2018-05-22 Richard Biener <rguenther@suse.de>
1700
1701 PR tree-optimization/85834
1702 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
1703 non-constant and non-zero memset arguments.
1704
1705 2018-05-22 Martin Liska <mliska@suse.cz>
1706
1707 PR ipa/85607
1708 * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
1709
1710 2018-05-22 Richard Biener <rguenther@suse.de>
1711
1712 PR tree-optimization/85863
1713 * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
1714 comparisons when vectype is specified.
1715 (vectorizable_condition): Do not specify vectype for
1716 vect_is_simple_cond when SLP vectorizing.
1717
1718 2018-05-21 Michael Meissner <meissner@linux.ibm.com>
1719
1720 PR target/85657
1721 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
1722 define __ibm128 as long double.
1723 * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
1724 as a distinct type when IEEE 128-bit support is enabled.
1725 (init_float128_ieee): Fix up conversions between IFmode and IEEE
1726 128-bit types to use the correct functions.
1727 (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
1728 convert between 128-bit floating point types that have different
1729 modes but the same representation, instead of using gen_lowpart to
1730 makean alias.
1731 * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
1732 KFmode.
1733 (IFKF_reg): New attributes to give the register constraints for
1734 IFmode and KFmode.
1735 (extend<mode>tf2_internal): New insns to mark an explicit
1736 conversion between 128-bit floating point types that have a
1737 different mode but share the same representation.
1738
1739 2018-05-21 Richard Sandiford <richard.sandiford@linaro.org>
1740
1741 PR tree-optimization/85814
1742 * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
1743 a null return from get_strinfo when unsharing the next
1744 strinfo in the chain.
1745
1746 2018-05-21 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
1747
1748 PR gcc/84923
1749 * varasm.c (weak_finish): Clean up weak_decls.
1750
1751 2018-05-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1752
1753 * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
1754 UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
1755 UNSPEC_UADALP values.
1756 * config/aarch64/iterators.md (ABAL): New int iterator.
1757 (ABDL2): Likewise.
1758 (ADALP): Likewise.
1759 (sur): Add mappings for the above.
1760 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
1761 New define_insn.
1762 (aarch64_<sur>abal<mode>_4): Likewise.
1763 (aarch64_<sur>adalp<mode>_3): Likewise.
1764 (<sur>sadv16qi): New define_expand.
1765
1766 2018-05-21 Alexander Nesterovskiy <alexander.nesterovskiy@intel.com>
1767
1768 * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
1769 (*movdf_internal): Ditto.
1770 (*rcpsf2_sse): Ditto.
1771 (*rsqrtsf2_sse): Ditto.
1772 (*sqrt<mode>2_sse): Ditto.
1773
1774 2018-05-21 Tamar Christina <tamar.christina@arm.com>
1775
1776 * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
1777 eor3q<mode>4.
1778 (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
1779 * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
1780 veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
1781 vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
1782 vbcaxq_s64): New.
1783 * config/aarch64/arm_neon.h: Likewise.
1784 * config/aarch64/iterators.md (VQ_I): New.
1785
1786 2018-05-21 Alexey Brodkin <abrodkin@synopsys.com>
1787
1788 * config.gcc: Add arc/t-multilib-linux to tmake_file for
1789 arc*-*-linux*.
1790 * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
1791 MULTILIB_DIRNAMES
1792
1793 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
1794
1795 * config/nds32/constraints.md (S): New constraint.
1796 * config/nds32/nds32.md (call_internal): Use constraint S.
1797 (call_value_internal): Likewise.
1798 (sibcall_internal): Likewise.
1799 (sibcall_value_internal): Likewise.
1800
1801 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
1802 Chung-Ju Wu <jasonwucj@gmail.com>
1803
1804 * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
1805 into consideration.
1806
1807 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
1808 Chung-Ju Wu <jasonwucj@gmail.com>
1809
1810 * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
1811 (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
1812 (nds32_rtx_costs_impl): Simplify.
1813 (nds32_address_cost_impl): Simplify.
1814 (nds32_init_rtx_costs): New function.
1815 (nds32_rtx_costs_speed_prefer): Likewise.
1816 (nds32_rtx_costs_size_prefer): Likewise.
1817 (nds32_address_cost_speed_prefer): Likewise.
1818 (nds32_address_cost_speed_fwprop): Likewise.
1819 (nds32_address_cost_size_prefer): Likewise.
1820 * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
1821 * config/nds32/nds32.c (nds32_option_override): Use
1822 nds32_init_rtx_costs function.
1823
1824 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
1825
1826 * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
1827 * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
1828 (TARGET_PIPELINE_N8): Likewise.
1829 (TARGET_PIPELINE_N10): Likewise.
1830 (TARGET_PIPELINE_N13): Likewise.
1831 (TARGET_PIPELINE_GRAYWOLF): Likewise.
1832
1833 2018-05-19 Monk Chiang <sh.chiang04@gmail.com>
1834
1835 * config/nds32/nds32-fpu.md: Update copyright year.
1836
1837 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
1838
1839 * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
1840
1841 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
1842
1843 * config/nds32/nds32.c
1844 (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
1845 * config/nds32/nds32.opt (minline-asm-r15): New option.
1846
1847 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
1848
1849 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
1850 MASK_HW_ABS.
1851 * config/nds32/nds32.md (abssi2): New pattern.
1852
1853 2018-05-19 Uros Bizjak <ubizjak@gmail.com>
1854
1855 * config/i386/i386.md (rex64namesuffix): New mode attribute.
1856 * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
1857 Merge insn pattern from sse_cvtsi2ss<round_name> and
1858 sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
1859 (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
1860 from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
1861 using SWI48 mode iterator.
1862 (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
1863 sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
1864 (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
1865 pattern from sse_cvttss2si<round_saeonly_name>
1866 and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
1867 (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
1868 from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
1869 using SWI48 mode iterator.
1870 (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
1871 insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
1872 avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
1873 (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
1874 from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
1875 using SWI48 mode iterator.
1876 (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
1877 insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
1878 avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
1879 (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
1880 sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
1881 SWI48 mode iterator.
1882 (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
1883 sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
1884 (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
1885 pattern from sse_cvttsd2si<round_saeonly_name>
1886 and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
1887
1888 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
1889
1890 * config/nds32/nds32-md-auxiliary.c
1891 (nds32_valid_smw_lwm_base_p): Refine.
1892 (nds32_output_smw_single_word): Refine.
1893 (nds32_output_smw_double_word): New.
1894 * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
1895
1896 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
1897
1898 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
1899 (nds32_output_stack_pop): Refine.
1900 (nds32_expand_unaligned_load): Refine.
1901 (nds32_expand_unaligned_store): Refine.
1902
1903 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
1904 Chung-Ju Wu <jasonwucj@gmail.com>
1905
1906 * config/nds32/constants.md: Add TP_REGNUM constant.
1907 (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
1908 UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
1909 UNSPEC_ADD32.
1910 * config/nds32/nds32-doubleword.md: Consider flag_pic.
1911 * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
1912 * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
1913 * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
1914 and PIC code generation.
1915 * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
1916 code generation.
1917 * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
1918 optimization.
1919 * config/nds32/nds32.md: Support TLS and PIC.
1920 * config/nds32/nds32.c: Support TLS and PIC.
1921 * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
1922 * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
1923 predicate.
1924
1925 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
1926
1927 * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
1928 mode with E_ prefix.
1929
1930 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
1931 Chung-Ju Wu <jasonwucj@gmail.com>
1932
1933 * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
1934 * config/nds32/nds32-md-auxiliary.c
1935 (symbolic_reference_mentioned_p): New.
1936 (nds32_legitimize_ict_address): New.
1937 (nds32_expand_ict_move): New.
1938 (nds32_indirect_call_referenced_p): New.
1939 (nds32_symbol_binds_local_p): Delete.
1940 (nds32_long_call_p): Modify.
1941 * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
1942 * config/nds32/nds32-protos.h
1943 (symbolic_reference_mentioned_p): Declare.
1944 (nds32_legitimize_ict_address): Declare.
1945 (nds32_expand_ict_move): Declare.
1946 (nds32_indirect_call_referenced_p): Declare.
1947 * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
1948 (nds32_relax_group): Use nds32_ict_const_p as condition.
1949 * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
1950 (nds32_asm_file_start): Output ict_model directive in asm code.
1951 (nds32_legitimate_address_p): Consider indirect call.
1952 (nds32_print_operand): Consider indirect call.
1953 (nds32_print_operand_address): Consider indirect call.
1954 (nds32_insert_attributes): Handle "indirect_call" attribute.
1955 (TARGET_LEGITIMATE_ADDRESS_P): Define.
1956 (TARGET_LEGITIMATE_CONSTANT_P): Define.
1957 (TARGET_CANNOT_FORCE_CONST_MEM): Define.
1958 (TARGET_DELEGITIMIZE_ADDRESS): Define.
1959 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
1960 * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
1961 (TARGET_ICT_MODEL_SMALL): Define.
1962 (TARGET_ICT_MODEL_LARGE): Define.
1963 * config/nds32/nds32.md (movsi): Consider ict model.
1964 (call, call_value): Consider ict model.
1965 (sibcall, sibcall_value): Consider ict model.
1966 * config/nds32/nds32.opt (mict-model): New option.
1967 * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
1968 model.
1969
1970 2018-05-18 Kito Cheng <kito.cheng@gmail.com>
1971 Monk Chiang <sh.chiang04@gmail.com>
1972 Jim Wilson <jimw@sifive.com>
1973
1974 * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
1975 Add support to parse rv32e*. Clear MASK_RVE for rv32i and rv64i.
1976 * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
1977 * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
1978 __riscv_32e when TARGET_RVE. Handle ABI_ILP32E as soft-float ABI.
1979 * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
1980 * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
1981 compute save_libcall_adjustment properly.
1982 (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
1983 (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
1984 * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
1985 (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
1986 (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
1987 (ABI_SPEC): Handle mabi=ilp32e.
1988 * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
1989 (RVE): Add RVE mask.
1990 * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
1991 <-march>: Add rv32e as an example.
1992
1993 2018-05-18 Marc Glisse <marc.glisse@inria.fr>
1994
1995 PR c++/82899
1996 * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
1997 (intra_create_variable_infos): Handle C++ constructors.
1998
1999 2018-05-18 Martin Liska <mliska@suse.cz>
2000
2001 * passes.def: Remove a redundant pass.
2002
2003 2018-05-18 Eric Botcazou <ebotcazou@adacore.com>
2004
2005 PR bootstrap/85838
2006 * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
2007
2008 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2009
2010 * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
2011 (ARMv4): Update.
2012 (ARMv2, ARMv3, ARMv3m): Delete fgroups.
2013 (ARMv6m): Update.
2014 (armv2, armv2a, armv3, armv3m): Delete architectures.
2015 (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
2016 arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
2017 arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
2018 Delete cpus.
2019 * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
2020 (*mulsidi3adddi): Likewise.
2021 (mulsidi3): Likewise.
2022 (*mulsidi3_nov6): Likewise.
2023 (umulsidi3): Likewise.
2024 (umulsidi3_nov6): Likewise.
2025 (umaddsidi4): Likewise.
2026 (*umulsidi3adddi): Likewise.
2027 (smulsi3_highpart): Likewise.
2028 (*smulsi3_highpart_nov6): Likewise.
2029 (umulsi3_highpart): Likewise.
2030 (*umulsi3_highpart_nov6): Likewise.
2031 * config/arm/arm.h (arm_arch3m): Delete.
2032 * config/arm/arm.c (arm_arch3m): Delete.
2033 (arm_option_override_internal): Update armv3-related comment.
2034 (arm_configure_build_target): Delete use of isa_bit_mode32.
2035 (arm_option_reconfigure_globals): Delete set of arm_ach3m.
2036 (arm_rtx_costs_internal): Delete check of arm_arch3m.
2037 * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
2038 (mulsa3): Likewise.
2039 (mulusa3): Likewise.
2040 * config/arm/arm-protos.h (arm_arch3m): Delete.
2041 * config/arm/arm-tables.opt: Regenerate.
2042 * config/arm/arm-tune.md: Likewise.
2043 * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
2044 deleted architectures.
2045
2046 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2047
2048 * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
2049 (armv5t, armv5te): New features.
2050 (ARMv5, ARMv5e): Delete fgroups.
2051 (ARMv5t, ARMv5te): Adjust for above changes.
2052 (ARMv6m): Likewise.
2053 (armv5, armv5e): Delete arches.
2054 * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
2055 arm_arch5.
2056 (*call_reg_arm): Likewise.
2057 (*call_value_reg_armv5): Likewise.
2058 (*call_value_reg_arm): Likewise.
2059 (*call_symbol): Likewise.
2060 (*call_value_symbol): Likewise.
2061 (*sibcall_insn): Likewise.
2062 (*sibcall_value_insn): Likewise.
2063 (clzsi2): Likewise.
2064 (prefetch): Likewise.
2065 (define_split and define_peephole2 dependent on arm_arch5):
2066 Likewise.
2067 * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
2068 arm_arch5e.
2069 (TARGET_ARM_QBIT): Likewise.
2070 (TARGET_DSP_MULTIPLY): Likewise.
2071 (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
2072 (arm_arch5, arm_arch5e): Delete.
2073 (arm_arch5t, arm_arch5te): Declare.
2074 * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
2075 (arm_arch5t): Declare.
2076 (arm_option_reconfigure_globals): Update for the above.
2077 (arm_options_perform_arch_sanity_checks): Update comment, replace
2078 use of arm_arch5 with arm_arch5t.
2079 (use_return_insn): Likewise.
2080 (arm_emit_call_insn): Likewise.
2081 (output_return_instruction): Likewise.
2082 (arm_final_prescan_insn): Likewise.
2083 (arm_coproc_builtin_available): Likewise.
2084 * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
2085 arm_arch5e with arm_arch5t and arm_arch5te.
2086 * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
2087 (arm_arch5t, arm_arch5te): Declare.
2088 * config/arm/arm-tables.opt: Regenerate.
2089 * config/arm/t-arm-elf: Remove references to armv5, armv5e.
2090 * config/arm/t-multilib: Likewise.
2091 * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
2092 instead of arm_arch5.
2093 (*call_reg_thumb1): Likewise.
2094 (*call_value_reg_thumb1_v5): Likewise.
2095 (*call_value_reg_thumb1): Likewise.
2096 * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
2097 unreachable path.
2098 * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
2099
2100 2018-05-18 Martin Liska <mliska@suse.cz>
2101
2102 PR gcov-profile/84846
2103 * doc/gcov.texi: Document -t option of gcov tool.
2104
2105 2018-05-18 Martin Liska <mliska@suse.cz>
2106
2107 PR gcov-profile/84846
2108 * gcov.c (print_usage): Add new -t option.
2109 (process_args): Handle the option.
2110 (generate_results): Use stdout as output when requested by
2111 the option.
2112
2113 2018-05-18 Martin Liska <mliska@suse.cz>
2114
2115 PR gcov-profile/84846
2116 * coverage.c (coverage_init): Write PWD to .gcno file.
2117 * doc/gcov.texi: Document how working directory is printed.
2118 * gcov-dump.c (dump_gcov_file): Print PWD.
2119 * gcov.c (output_intermediate_file): Likewise.
2120 (read_graph_file): Read PWD string.
2121 (output_lines): Print PWD.
2122
2123 2018-05-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
2124
2125 PR middle-end/85817
2126 * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
2127 for retval and return false if all args to phi are zero.
2128
2129 2018-05-18 Richard Biener <rguenther@suse.de>
2130
2131 * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
2132 method.
2133 (evrp_dom_walker::before_dom_children): Call it.
2134
2135 2018-05-18 Richard Biener <rguenther@suse.de>
2136
2137 * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
2138 results when processing array refs with variable index.
2139
2140 2018-05-18 Toon Moene <toon@moene.org>
2141
2142 * doc/invoke.texi: Move -floop-unroll-and-jam documentation
2143 directly after that of -floop-interchange. Indicate that both
2144 options are enabled by default when specifying -O3.
2145
2146 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2147
2148 * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
2149 iterator. Delete separate integer-mode vec_set<mode> expander.
2150 (aarch64_simd_vec_setv2di): Delete.
2151 (vec_setv2di): Delete.
2152 (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
2153 Use VALL_F16 mode iterator. Add LD1 alternative and use vwcore for
2154 the "w, r" alternative.
2155
2156 2018-05-18 Martin Liska <mliska@suse.cz>
2157
2158 * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
2159 * tree-pass.h (make_pass_lower_switch_O0): New function.
2160 * tree-switch-conversion.c (node_has_low_bound): Remove.
2161 (node_has_high_bound): Likewise.
2162 (node_is_bounded): Likewise.
2163 (class pass_lower_switch): Make it a template type and create
2164 two instances.
2165 (pass_lower_switch::execute): Add template argument.
2166 (make_pass_lower_switch): New function.
2167 (make_pass_lower_switch_O0): New function.
2168 (do_jump_if_equal): Remove.
2169 (emit_case_nodes): Simplify to just handle all 3 cases and leave
2170 all the hard work to tree optimization passes.
2171
2172 2018-05-18 Martin Liska <mliska@suse.cz>
2173
2174 * dbgcnt.c (limit_low): Renamed from limit.
2175 (limit_high): New variable.
2176 (dbg_cnt_is_enabled): Check for upper limit.
2177 (dbg_cnt): Adjust dumping.
2178 (dbg_cnt_set_limit_by_index): Add new argument for high
2179 value.
2180 (dbg_cnt_set_limit_by_name): Likewise.
2181 (dbg_cnt_process_single_pair): Parse new format.
2182 (dbg_cnt_process_opt): Use strtok.
2183 (dbg_cnt_list_all_counters): Remove 'value' and add
2184 'limit_high'.
2185 * doc/invoke.texi: Document changes.
2186
2187 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
2188
2189 * doc/sourcebuild.texi (scalar_all_fma): Document.
2190 * tree.def (FMA_EXPR): Delete.
2191 * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
2192 * internal-fn.c (ternary_direct): New macro.
2193 (expand_ternary_optab_fn): Likewise.
2194 (direct_ternary_optab_supported_p): Likewise.
2195 * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
2196 * builtins.c (fold_builtin_fma): Delete.
2197 (fold_builtin_3): Don't call it.
2198 * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
2199 * expr.c (expand_expr_real_2): Likewise.
2200 * fold-const.c (operand_equal_p): Likewise.
2201 (fold_ternary_loc): Likewise.
2202 * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
2203 * gimple.c (DEFTREECODE): Likewise.
2204 * gimplify.c (gimplify_expr): Likewise.
2205 * optabs-tree.c (optab_for_tree_code): Likewise.
2206 * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
2207 * tree-eh.c (operation_could_trap_p): Likewise.
2208 (stmt_could_throw_1_p): Likewise.
2209 * tree-inline.c (estimate_operator_cost): Likewise.
2210 * tree-pretty-print.c (dump_generic_node): Likewise.
2211 (op_code_prio): Likewise.
2212 * tree-ssa-loop-im.c (stmt_cost): Likewise.
2213 * tree-ssa-operands.c (get_expr_operands): Likewise.
2214 * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
2215 * fold-const-call.h (fold_fma): Delete.
2216 * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
2217 CFN_FNMA and CFN_FNMS.
2218 (fold_fma): Delete.
2219 * genmatch.c (combined_fn): New enum.
2220 (commutative_ternary_tree_code): Remove FMA_EXPR handling.
2221 (commutative_op): New function.
2222 (commutate): Use it. Handle more than 2 operands.
2223 (dt_operand::gen_gimple_expr): Use commutative_op.
2224 (parser::parse_expr): Allow :c to be used with non-binary
2225 operators if the commutative operand is known.
2226 * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
2227 CFN_FMS, CFN_FNMA and CFN_FNMS.
2228 (backprop::process_assign_use): Remove FMA_EXPR handling.
2229 * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
2230 (gen_hsa_fma): New function.
2231 (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
2232 IFN_FNMA and IFN_FNMS.
2233 * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
2234 * gimple-fold.h (follow_all_ssa_edges): Declare.
2235 * gimple-fold.c (follow_all_ssa_edges): New function.
2236 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
2237 gimple_build interface and use follow_all_ssa_edges to fold the result.
2238 (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
2239 instead of checking for optabs directly.
2240 * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
2241 rather than FMA_EXPRs.
2242 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
2243 call to IFN_FMA instead of an FMA_EXPR.
2244
2245 2018-05-17 Jim Wilson <jimw@sifive.com>
2246
2247 * expr.c (do_tablejump): When converting index to Pmode, if we have a
2248 sign extended promoted subreg, and the range does not have the sign bit
2249 set, then do a sign extend.
2250
2251 * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
2252 test, check for sign extended subreg and/or constant operands, and
2253 do a sign extend in that case.
2254
2255 2018-05-17 Steve Ellcey <sellcey@cavium.com>
2256
2257 * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
2258 (thunderx2t99_multiple): Delete psuedo-units from used cpus.
2259 Add untyped.
2260 (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
2261 Change logics_shift_reg to logics_shift_imm.
2262 (thunderx2t99_fp_loadpair_basic): Delete.
2263 (thunderx2t99_fp_storepair_basic): Delete.
2264 (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
2265 (thunderx2t99_asimd_polynomial): Delete.
2266 (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
2267 and neon_fp_mul_d_scalar_q.
2268 (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
2269 (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
2270 (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
2271 (thunderx2t99_asimd_lut): Add missing tbl types.
2272 (thunderx2t99_asimd_ext): Delete.
2273 (thunderx2t99_asimd_load1_1_mult): Delete.
2274 (thunderx2t99_asimd_load1_2_mult): Delete.
2275 (thunderx2t99_asimd_load1_ldp): New.
2276 (thunderx2t99_asimd_load1): New.
2277 (thunderx2t99_asimd_load2): Add missing *load2* types.
2278 (thunderx2t99_asimd_load3): New.
2279 (thunderx2t99_asimd_load4): New.
2280 (thunderx2t99_asimd_store1_1_mult): Delete.
2281 (thunderx2t99_asimd_store1_2_mult): Delete.
2282 (thunderx2t99_asimd_store2_mult): Delete.
2283 (thunderx2t99_asimd_store2_onelane): Delete.
2284 (thunderx2t99_asimd_store_stp): New.
2285 (thunderx2t99_asimd_store1): New.
2286 (thunderx2t99_asimd_store2): New.
2287 (thunderx2t99_asimd_store3): New.
2288 (thunderx2t99_asimd_store4): New.
2289
2290 2018-05-17 Jerome Lambourg <lambourg@adacore.com>
2291
2292 * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
2293 #include <stdint.h>. Replace intptr_t with __INTPTR_TYPE__.
2294
2295 2018-05-17 Pat Haugen <pthaugen@us.ibm.com>
2296 Segher Boessenkool <segher@kernel.crashing.org>
2297
2298 PR target/85698
2299 * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
2300 operand.
2301
2302 2018-05-17 Richard Biener <rguenther@suse.de>
2303
2304 * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
2305 for pruning loop and prune defs feeding only already visited PHIs.
2306
2307 2018-05-17 Richard Biener <rguenther@suse.de>
2308
2309 * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
2310
2311 2018-05-17 Bin Cheng <bin.cheng@arm.com>
2312 Richard Biener <rguenther@suse.de>
2313
2314 PR tree-optimization/85793
2315 * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
2316 for VMAT_ELEMENTWISE.
2317
2318 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
2319
2320 * internal-fn.h (lookup_internal_fn): Declare
2321 * internal-fn.c (lookup_internal_fn): New function.
2322 * gimple.c (gimple_build_call_from_tree): Handle calls to
2323 internal functions.
2324 * gimple-pretty-print.c (dump_gimple_call): Print "." before
2325 internal function names.
2326 * tree-pretty-print.c (dump_generic_node): Likewise.
2327 * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
2328
2329 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
2330
2331 * gimple-fold.h (gimple_build): Make the function forms take
2332 combined_fn rather than built_in_function.
2333 (gimple_simplify): Likewise.
2334 * gimple-match-head.c (gimple_simplify): Likewise.
2335 * gimple-fold.c (gimple_build): Likewise.
2336 * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
2337 rather than gimple_build_call_internal.
2338 (get_initial_defs_for_reduction): Likewise.
2339 (vect_create_epilog_for_reduction): Likewise.
2340 (vectorizable_live_operation): Likewise.
2341
2342 2018-05-17 Martin Liska <mliska@suse.cz>
2343
2344 * gimple-ssa-sprintf.c (format_directive): Do not use
2345 space in between 'G_' and '('.
2346
2347 2018-05-17 Jakub Jelinek <jakub@redhat.com>
2348
2349 PR target/85323
2350 * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
2351 even if the mask is not all ones.
2352
2353 PR target/85323
2354 * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
2355 vector.
2356 (ix86_gimple_fold_builtin): Likewise.
2357
2358 PR target/85323
2359 * config/i386/i386.c: Include tree-vector-builder.h.
2360 (ix86_vector_shift_count): New function.
2361 (ix86_fold_builtin): Fold shift builtins by scalar count.
2362 (ix86_gimple_fold_builtin): Likewise.
2363
2364 * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
2365 _mm512_setzero): New intrinsics.
2366
2367 2018-05-17 James Greenhalgh <james.greenhalgh@arm.com>
2368 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2369
2370 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
2371 code generation for cases where splatting a value is not useful.
2372 * simplify-rtx.c (simplify_ternary_operation): Simplify
2373 vec_merge across a vec_duplicate and a paradoxical subreg forming
2374 a vector mode to a vec_concat.
2375
2376 2018-05-17 Olga Makhotina <olga.makhotina@intel.com>
2377
2378 * config.gcc: Support "goldmont-plus".
2379 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
2380 "goldmont-plus".
2381 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2382 PROCESSOR_GOLDMONT_PLUS.
2383 * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
2384 (processor_target_table): Add "goldmont-plus".
2385 (PTA_GOLDMONT_PLUS): Define.
2386 (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
2387 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
2388 (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
2389 (fold_builtin_cpu): Add "goldmont-plus".
2390 (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
2391 (ix86_option_override_internal): Add "goldmont-plus".
2392 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
2393 (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
2394 * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
2395 * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
2396
2397 2018-05-17 Richard Biener <rguenther@suse.de>
2398
2399 PR tree-optimization/85757
2400 * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
2401 remove defs that only feed that PHI from further processing.
2402
2403 2018-05-16 Jim Wilson <jimw@sifive.com>
2404
2405 * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
2406 asterisk to name.
2407 (<optab>di3_mask, <optab>di3_mask_1): Likewise.
2408
2409 2018-05-16 Mark Wielaard <mark@klomp.org>
2410
2411 * dwarf2out.c (count_index_strings): New function.
2412 (output_indirect_strings): Call count_index_strings and generate
2413 header for dwarf_version >= 5.
2414
2415 2018-05-16 Mark Wielaard <mark@klomp.org>
2416
2417 * dwarf2out.c (dwarf_FORM): New function.
2418 (set_indirect_string): Use dwarf_FORM.
2419 (reset_indirect_string): Likewise.
2420 (size_of_die): Likewise.
2421 (value_format): Likewise.
2422 (output_die): Likewise.
2423 (add_skeleton_AT_string): Likewise.
2424 (output_macinfo_op): Likewise.
2425 (index_string): Likewise.
2426 (output_index_string_offset): Likewise.
2427 (output_index_string): Likewise.
2428 (count_index_strings): Likewise.
2429
2430 2018-05-16 Carl Love <cel@us.ibm.com>
2431
2432 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
2433 dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
2434
2435 2018-05-16 Martin Jambor <mjambor@suse.cz>
2436
2437 * ipa-prop.c (ipa_free_all_edge_args): Remove.
2438 * ipa-prop.h (ipa_free_all_edge_args): Likewise.
2439
2440 2018-05-16 Wilco Dijkstra <wdijkstr@arm.com>
2441
2442 * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
2443 (fnma<mode>4): Likewise.
2444 (fms<mode>4): Likewise.
2445 (fnms<mode>4): Likewise.
2446 (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
2447 (aarch64_fnma<mode>4): Likewise.
2448 (aarch64_fms<mode>4): Likewise.
2449 (aarch64_fnms<mode>4): Likewise.
2450 (aarch64_fnmadd<mode>4): Likewise.
2451
2452 2018-05-16 Jason Merrill <jason@redhat.com>
2453
2454 * tree.c (warn_deprecated_use): Return bool. Simplify logic.
2455
2456 2018-05-16 Richard Biener <rguenther@suse.de>
2457
2458 * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
2459 (dump_stmt_cost): Declare.
2460 (add_stmt_cost): Dump cost we add.
2461 (add_stmt_costs): New function.
2462 (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
2463 No longer exported.
2464 (vect_analyze_stmt): Adjust prototype.
2465 (vectorizable_condition): Likewise.
2466 (vectorizable_live_operation): Likewise.
2467 (vectorizable_reduction): Likewise.
2468 (vectorizable_induction): Likewise.
2469 * tree-vect-loop.c (vect_analyze_loop_operations): Create local
2470 cost vector to pass to vectorizable_ and record afterwards.
2471 (vect_model_reduction_cost): Take cost vector argument and adjust.
2472 (vect_model_induction_cost): Likewise.
2473 (vectorizable_reduction): Likewise.
2474 (vectorizable_induction): Likewise.
2475 (vectorizable_live_operation): Likewise.
2476 * tree-vect-slp.c (vect_create_new_slp_node): Initialize
2477 SLP_TREE_NUMBER_OF_VEC_STMTS.
2478 (vect_analyze_slp_cost_1): Remove.
2479 (vect_analyze_slp_cost): Likewise.
2480 (vect_slp_analyze_node_operations): Take visited args and
2481 a target cost vector. Avoid processing already visited stmt sets.
2482 (vect_slp_analyze_operations): Use a local cost vector to gather
2483 costs and register those of non-discarded instances.
2484 (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
2485 (vect_schedule_slp_instance): Remove copying of
2486 SLP_TREE_NUMBER_OF_VEC_STMTS. Instead assert that it is not
2487 zero.
2488 * tree-vect-stmts.c (record_stmt_cost): Remove path directly
2489 adding cost. Record cost entry location.
2490 (vect_prologue_cost_for_slp_op): Function to compute cost of
2491 a constant or invariant generated for SLP vect in the prologue,
2492 split out from vect_analyze_slp_cost_1.
2493 (vect_model_simple_cost): Make static. Adjust for SLP costing.
2494 (vect_model_promotion_demotion_cost): Likewise.
2495 (vect_model_store_cost): Likewise, make static.
2496 (vect_model_load_cost): Likewise.
2497 (vectorizable_bswap): Add cost vector arg and adjust.
2498 (vectorizable_call): Likewise.
2499 (vectorizable_simd_clone_call): Likewise.
2500 (vectorizable_conversion): Likewise.
2501 (vectorizable_assignment): Likewise.
2502 (vectorizable_shift): Likewise.
2503 (vectorizable_operation): Likewise.
2504 (vectorizable_store): Likewise.
2505 (vectorizable_load): Likewise.
2506 (vectorizable_condition): Likewise.
2507 (vectorizable_comparison): Likewise.
2508 (can_vectorize_live_stmts): Likewise.
2509 (vect_analyze_stmt): Likewise.
2510 (vect_transform_stmt): Adjust calls to vectorizable_*.
2511 * tree-vectorizer.c: Include gimple-pretty-print.h.
2512 (dump_stmt_cost): New function.
2513
2514 2018-05-16 Richard Biener <rguenther@suse.de>
2515
2516 * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
2517 * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
2518 * tree-ssa-dse.c: Include tree-ssa-loop.h.
2519 (check_name): New callback.
2520 (dse_classify_store): Track cycles via a visited bitmap of PHI
2521 defs and simplify handling of in-loop and across loop dead stores
2522 and properly fail for loop-variant refs. Handle byte-tracking with
2523 multiple defs. Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
2524 limiting the walk.
2525
2526 2018-05-16 Richard Sandiford <richard.sandiford@linaro.org>
2527
2528 * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
2529 (vect_get_mask_type_for_stmt): Likewise.
2530 * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
2531 split out from...
2532 (vect_build_slp_tree_1): ...here. Use vect_get_vector_types_for_stmt
2533 to determine the statement's vector type and the vector type that
2534 should be used for calculating nunits. Deal with cases in which
2535 the type has to be deferred.
2536 (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
2537 and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
2538 * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
2539 (vect_determine_vf_for_stmt): New functions, split out from...
2540 (vect_determine_vectorization_factor): ...here.
2541 * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
2542 (vect_get_mask_type_for_stmt): New functions, split out from
2543 vect_determine_vectorization_factor.
2544
2545 2018-05-16 Richard Biener <rguenther@suse.de>
2546
2547 * tree-cfg.c (verify_gimple_assign_ternary): Properly
2548 verify the [VEC_]COND_EXPR embedded comparison.
2549
2550 2018-05-15 Martin Sebor <msebor@redhat.com>
2551
2552 PR tree-optimization/85753
2553 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
2554 RECORD_TYPE in addition to ARRAY_TYPE.
2555
2556 2018-05-15 Martin Sebor <msebor@redhat.com>
2557
2558 PR middle-end/85643
2559 * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
2560
2561 2018-05-15 Richard Biener <rguenther@suse.de>
2562
2563 * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
2564 add by_clobber_p one. Change algorithm to collect all defs
2565 representing uses we need to walk and try reducing them to
2566 a single one before failing.
2567 (dse_dom_walker::dse_optimize_stmt): Adjust.
2568
2569 2018-05-13 Mark Wielaard <mark@klomp.org>
2570
2571 * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
2572 (size_of_loc_descr): Likewise.
2573 (output_loc_operands): Likewise.
2574 (output_loc_operands_raw): Likewise.
2575 (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
2576 (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
2577 (hash_loc_operands): Likewise.
2578 (compare_loc_operands): Likewise.
2579
2580 2018-05-14 Mark Wielaard <mark@klomp.org>
2581
2582 * dwarf2out.c (count_index_addrs): New function.
2583 (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
2584
2585 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
2586
2587 PR tree-optimization/83648
2588 * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
2589 return value as malloc candidate.
2590
2591 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
2592
2593 PR ipa/85734
2594 * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite
2595 param as true in call to suggest_attribute.
2596
2597 2018-05-14 Segher Boessenkool <segher@kernel.crashing.org>
2598
2599 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
2600 -mreadonly-in-sdata.
2601
2602 2018-05-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2603
2604 * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
2605 New pattern.
2606 (aarch64_crypto_aesd_fused): Likewise.
2607
2608 2018-05-14 Wilco Dijkstra <wdijkstr@arm.com>
2609
2610 * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
2611 (movsi_aarch64): Likewise.
2612 (load_pairsi): Likewise.
2613 (load_pairdi): Likewise.
2614 (store_pairsi): Likewise.
2615 (store_pairdi): Likewise.
2616 (load_pairsf): Likewise.
2617 (load_pairdf): Likewise.
2618 (store_pairsf): Likewise.
2619 (store_pairdf): Likewise.
2620 (zero_extend): Likewise.
2621 (trunc): Swap alternatives.
2622 (fcvt_target): Add '?' to prefer w over r.
2623
2624 2018-05-14 Jakub Jelinek <jakub@redhat.com>
2625
2626 PR target/85756
2627 * config/i386/i386.md: Disallow non-commutative arithmetics in
2628 last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
2629 optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS
2630 in the peephole2 before it.
2631
2632 2018-05-14 Sebastian Peryt <sebastian.peryt@intel.com>
2633
2634 * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
2635 OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
2636 (ix86_handle_option): Handle -mcldemote.
2637 * config.gcc: New header.
2638 * config/i386/cldemoteintrin.h: New file.
2639 * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
2640 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
2641 -mcldemote.
2642 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2643 OPTION_MASK_ISA_CLDEMOTE.
2644 * config/i386/i386.c (ix86_target_string): Add -mcldemote.
2645 (ix86_valid_target_attribute_inner_p): Ditto.
2646 (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
2647 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
2648 (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
2649 * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
2650 * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
2651 (cldemote): New.
2652 * config/i386/i386.opt: Add -mcldemote.
2653 * config/i386/x86intrin.h: New header.
2654 * doc/invoke.texi: Add -mcldemote.
2655
2656 2018-05-14 Richard Biener <rguenther@suse.de>
2657
2658 * doc/match-and-simplify.texi: Adjust :s documentation.
2659
2660 2018-05-14 Alexander Monakov <amonakov@ispras.ru>
2661
2662 * sort.cc (REORDER_23): Pass the type for the temporaries instead of
2663 intended memcpy size.
2664 (REORDER_45): Likewise.
2665
2666 2018-05-13 Alexander Monakov <amonakov@ispras.ru>
2667
2668 * sort.cc: New file.
2669 * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
2670 * vec.c (qsort_chk): Use gcc_qsort.
2671 * Makefile.in (OBJS-libcommon): Add sort.o.
2672 (build/sort.o): New target. Use it...
2673 (BUILD_RTL): ... here, and...
2674 (build/gencfn-macros): ... here, and...
2675 (build/genmatch): ... here.
2676
2677 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
2678 Chung-Ju Wu <jasonwucj@gmail.com>
2679
2680 * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
2681 * config/nds32/nds32-graywolf.md: New file.
2682 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
2683 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
2684 pipeline.
2685 * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
2686 * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
2687 * config/nds32/nds32.md (pipeline_model): Add graywolf.
2688 * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
2689 * config/nds32/pipelines.md: Include n15 settings.
2690
2691 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
2692 Chung-Ju Wu <jasonwucj@gmail.com>
2693
2694 * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
2695 * config/nds32/nds32-n13.md: New file.
2696 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
2697 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
2698 pipeline.
2699 * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
2700 * config/nds32/nds32.md (pipeline_model): Add n13.
2701 * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
2702 * config/nds32/pipelines.md: Include n13 settings.
2703
2704 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
2705 Chung-Ju Wu <jasonwucj@gmail.com>
2706
2707 * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
2708 * config/nds32/nds32-n10.md: New file.
2709 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
2710 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
2711 pipeline.
2712 * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
2713 * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
2714 * config/nds32/nds32.md (pipeline_model): Add n10.
2715 * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
2716 * config/nds32/pipelines.md: Include n10 settings.
2717
2718 2018-05-13 Monk Chiang <sh.chiang04@gmail.com>
2719 Kito Cheng <kito.cheng@gmail.com>
2720 Chung-Ju Wu <jasonwucj@gmail.com>
2721
2722 * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
2723 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
2724 Add enum values for DSP extension instructions.
2725 * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
2726 New constraints.
2727 * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
2728 sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
2729 New code iterators.
2730 (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
2731 * config/nds32/nds32-dspext.md: New file for DSP implementation.
2732 * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
2733 * config/nds32/nds32-intrinsic.md: Likewise.
2734 * config/nds32/nds32_intrinsic.h: Likewise.
2735 * config/nds32/nds32-md-auxiliary.c: Likewise.
2736 * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
2737 * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
2738 (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
2739 (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
2740 * config/nds32/nds32-protos.h: New declarations for DSP extension.
2741 * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
2742 TYPE_DMAC in switch statement.
2743 * config/nds32/nds32.c: New checking and implementation for DSP
2744 extension instructions.
2745 * config/nds32/nds32.h: Likewise.
2746 * config/nds32/nds32.md: Likewise.
2747 * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
2748 * config/nds32/predicates.md: Implement new predicates for DSP
2749 extension.
2750
2751 2018-05-11 Michael Meissner <meissner@linux.vnet.ibm.com>
2752
2753 * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
2754 Reformat alternatives and attributes so it is easier to identify
2755 which constraints/attributes go with which instruction.
2756 (mov<mode>_hardfloat32, FMOVE64): Likewise.
2757 (mov<mode>_softfloat32, FMOVE64): Likewise.
2758 (mov<mode>_hardfloat64, FMOVE64): Likewise.
2759 (mov<mode>_softfloat64, FMOVE64): Likewise.
2760
2761 2018-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
2762
2763 * doc/extend.texi (PowerPC Built-in Functions): Rename this
2764 subsection.
2765 (Basic PowerPC Built-in Functions): The new name of the
2766 subsection previously known as "PowerPC Built-in Functions".
2767 (Basic PowerPC Built-in Functions Available on all Configurations):
2768 New subsubsection.
2769 (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
2770 (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
2771 (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
2772 (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
2773
2774 2018-05-11 Martin Jambor <mjambor@suse.cz>
2775
2776 PR ipa/85655
2777 * ipa-cp.c (intersect_with_plats): Check that the lattice contains
2778 single const.
2779
2780 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
2781
2782 PR target/85733
2783 * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
2784
2785 2018-05-11 Sebastian Peryt <sebastian.peryt@intel.com>
2786
2787 * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
2788 OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
2789 (ix86_handle_option): Handle -mwaitpkg.
2790 * config.gcc: New header.
2791 * config/i386/cpuid.h (bit_WAITPKG): New bit.
2792 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
2793 * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
2794 function type.
2795 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2796 OPTION_MASK_ISA_WAITPKG.
2797 * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
2798 (ix86_option_override_internal): Add PTA_WAITPKG.
2799 (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
2800 (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
2801 IX86_BUILTIN_TPAUSE.
2802 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
2803 __builtin_ia32_umwait and __builtin_ia32_tpause.
2804 (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
2805 IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
2806 * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
2807 * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
2808 UNSPECV_TPAUSE): New.
2809 (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
2810 * config/i386/i386.opt: Add -mwaitpkg.
2811 * config/i386/waitpkgintrin.h: New file.
2812 * config/i386/x86intrin.h: New header.
2813 * doc/invoke.texi: Add -mwaitpkg.
2814
2815 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
2816
2817 PR target/85606
2818 * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
2819 equivalent.
2820 (cortex-m0): Use armv6s-m isa.
2821 (cortex-m0plus): Likewise.
2822 (cortex-m1): Likewise.
2823 (cortex-m0.small-multiply): Likewise.
2824 (cortex-m0plus.small-multiply): Likewise.
2825 (cortex-m1.small-multiply): Likewise.
2826
2827 2018-05-11 Allan Sandfeld Jensen <allan.jensen@qt.io>
2828 Jakub Jelinek <jakub@redhat.com>
2829
2830 PR tree-optimization/85692
2831 * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
2832 source permute as well.
2833
2834 2018-05-11 Martin Liska <mliska@suse.cz>
2835
2836 PR sanitizer/85556
2837 * doc/extend.texi: Document LLVM style format for no_sanitize
2838 attribute.
2839
2840 2018-05-10 Michael Meissner <meissner@linux.vnet.ibm.com>
2841
2842 * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
2843 mode_supports_vsx_dform_quad to mode_supports_dq_form.
2844 (mode_supports_vsx_dform_quad): Likewise.
2845 (mode_supports_vmx_dform): Move these functions to be next to the
2846 other mode_supports functions.
2847 (mode_supports_dq_form): Likewise.
2848 (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
2849 mode_supports_dq_form.
2850 (reg_offset_addressing_ok_p): Likewise.
2851 (offsettable_ok_by_alignment): Likewise.
2852 (rs6000_legitimate_offset_address_p): Likewise.
2853 (legitimate_lo_sum_address_p): Likewise.
2854 (rs6000_legitimize_address): Likewise.
2855 (rs6000_legitimize_reload_address): Likewise.
2856 (rs6000_secondary_reload_inner): Likewise.
2857 (rs6000_preferred_reload_class): Likewise.
2858 (rs6000_output_move_128bit): Likewise.
2859
2860 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
2861
2862 * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
2863 Generate SImode target register for null target.
2864 <case IX86_BUILTIN_XGETBV>: Ditto.
2865 <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
2866 * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
2867
2868 2018-05-10 Carl Love <cel@us.ibm.com>
2869
2870 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
2871 dcbtt and dcbtstt if operands[2] is 0.
2872
2873 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
2874
2875 PR target/85693
2876 * config/i386/sse.md (usadv64qi): New expander.
2877
2878 2018-05-10 Segher Boessenkool <segher@kernel.crashing.org>
2879
2880 * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
2881 altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
2882 -maltivec=be support.
2883 (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
2884 vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
2885 vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
2886 vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
2887 vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
2888 vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
2889 altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
2890 altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
2891 altivec_vsumsws): Adjust.
2892 (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
2893 *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
2894 altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
2895 support.
2896 (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
2897 altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
2898 altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
2899 (altivec_lve<VI_char>x): Delete expand.
2900 (*altivec_lve<VI_char>x_internal): Rename to...
2901 (altivec_lve<VI_char>x): ... this.
2902 (altivec_lvxl_<mode>): Delete expand.
2903 (*altivec_lvxl_<mode>_internal): Rename to ...
2904 (altivec_lvxl_<mode>): ... this.
2905 (altivec_stvxl_<mode>): Delete expand.
2906 (*altivec_stvxl_<mode>_internal): Rename to ...
2907 (altivec_stvxl_<mode>): ... this.
2908 (altivec_stve<VI_char>x): Delete expand.
2909 (*altivec_stve<VI_char>x_internal): Rename to ...
2910 (altivec_stve<VI_char>x): ... this.
2911 (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
2912 doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
2913 reduc_plus_scal_<mode>): Adjust.
2914 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
2915 comment.
2916 (rs6000_cpu_cpp_builtins): Adjust.
2917 (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
2918 * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
2919 altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
2920 * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
2921 -maltivec=be support.
2922 (rs6000_split_vec_extract_var): Adjust.
2923 (rs6000_split_v4si_init): Adjust.
2924 (swap_selector_for_mode): Delete.
2925 (altivec_expand_lvx_be, altivec_expand_stvx_be,
2926 altivec_expand_stvex_be): Delete.
2927 (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
2928 -maltivec=be support.
2929 (rs6000_gimple_fold_builtin): Ditto.
2930 (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
2931 Adjust.
2932 * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
2933 (TARGET_DIRECT_MOVE_64BIT): Adjust.
2934 * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
2935 * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
2936 * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
2937 unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
2938 vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
2939 *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
2940 *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
2941 *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
2942 anonymous split): Adjust.
2943 (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
2944 (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
2945
2946 2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
2947
2948 * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
2949 when --with-gxx-include-dir is also specified.
2950 * configure: Regenerate.
2951
2952 2018-05-09 Jim Wilson <jimw@sifive.com>
2953
2954 PR target/84797
2955 * config.gcc (riscv*-*-*): Handle --with-multilib-list.
2956 * config/riscv/t-withmultilib: New.
2957 * config/riscv/withmultilib.h: New.
2958 * doc/install.texi: Document RISC-V --with-multilib-list support.
2959
2960 2018-05-09 Richard Biener <rguenther@suse.de>
2961
2962 * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
2963 vector.
2964 (vect_bb_vectorization_profitable_p): Adjust. Compute
2965 actual scalar cost using the cost vector and the add_stmt_cost
2966 machinery.
2967
2968 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
2969
2970 PR rtl-optimization/85645
2971 * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
2972 in the REG_CFA_REGISTER note for LR, don't leave it empty.
2973
2974 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
2975
2976 PR rtl-optimization/85645
2977 * shrink-wrap.c (spread_components): Return a boolean saying if
2978 anything was changed.
2979 (try_shrink_wrapping_separate): Iterate spread_components until
2980 nothing changes anymore.
2981
2982 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
2983
2984 PR rtl-optimization/85645
2985 * regrename.c (build_def_use): Also kill the chains that include the
2986 destination of a REG_CFA_REGISTER note.
2987
2988 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
2989
2990 PR rtl-optimization/85645
2991 * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
2992 insn that has a REG_CFA_REGISTER note.
2993
2994 2018-05-09 Richard Sandiford <richard.sandiford@linaro.org>
2995
2996 * cfgexpand.c (expand_clobber): New function.
2997 (expand_gimple_stmt_1): Use it.
2998 * tree-vect-stmts.c (vect_clobber_variable): New function,
2999 split out from...
3000 (vectorizable_simd_clone_call): ...here.
3001 (vectorizable_store): Emit a clobber either side of an
3002 IFN_STORE_LANES sequence.
3003 (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
3004
3005 2018-05-09 Tom de Vries <tom@codesourcery.com>
3006
3007 PR target/85626
3008 * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
3009 (define_insn "trap_if_false"): Add exit after trap.
3010
3011 2018-05-09 Eric Botcazou <ebotcazou@adacore.com>
3012
3013 PR rtl-optimization/85638
3014 * bb-reorder.c: Include common/common-target.h.
3015 (create_forwarder_block): New function extracted from...
3016 (fix_up_crossing_landing_pad): ...here. Rename into...
3017 (dw2_fix_up_crossing_landing_pad): ...this.
3018 (sjlj_fix_up_crossing_landing_pad): New function.
3019 (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
3020 call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
3021 from both partitions and exit the loop after one iteration.
3022
3023 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
3024
3025 Revert:
3026 * doc/extend.texi (PowerPC Built-in Functions): Rename this
3027 subsection.
3028 (Basic PowerPC Built-in Functions): The new name of the
3029 subsection previously known as "PowerPC Built-in Functions".
3030 (Basic PowerPC Built-in Functions Available on all Configurations):
3031 New subsubsection.
3032 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
3033 subsubsection.
3034 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
3035 subsubsection.
3036 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
3037 subsubsection.
3038 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
3039 subsubsection.
3040
3041 2018-05-08 Jim Wilson <jimw@sifive.com>
3042
3043 * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
3044 (LD_EMUL_SUFFIX): New.
3045 (LINK_SPEC): Use it.
3046
3047 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
3048
3049 * doc/extend.texi (PowerPC Built-in Functions): Rename this
3050 subsection.
3051 (Basic PowerPC Built-in Functions): The new name of the
3052 subsection previously known as "PowerPC Built-in Functions".
3053 (Basic PowerPC Built-in Functions Available on all Configurations):
3054 New subsubsection.
3055 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
3056 subsubsection.
3057 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
3058 subsubsection.
3059 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
3060 subsubsection.
3061 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
3062 subsubsection.
3063
3064 2018-05-08 Jakub Jelinek <jakub@redhat.com>
3065
3066 PR target/85683
3067 * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
3068 after cmpelim optimization.
3069
3070 2018-05-08 Olga Makhotina <olga.makhotina@intel.com>
3071
3072 * config.gcc: Support "goldmont".
3073 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
3074 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
3075 PROCESSOR_GOLDMONT.
3076 * config/i386/i386.c (m_GOLDMONT): Define.
3077 (processor_target_table): Add "goldmont".
3078 (PTA_GOLDMONT): Define.
3079 (ix86_lea_outperforms): Add TARGET_GOLDMONT.
3080 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
3081 (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
3082 (fold_builtin_cpu): Add "goldmont".
3083 (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
3084 (ix86_option_override_internal): Add "goldmont".
3085 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
3086 (processor_type): Add PROCESSOR_GOLDMONT.
3087 * config/i386/i386.md: Add CPU "glm".
3088 * config/i386/glm.md: New file.
3089 * config/i386/x86-tune.def: Add m_GOLDMONT.
3090 * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
3091
3092 2018-05-08 Jakub Jelinek <jakub@redhat.com>
3093
3094 PR target/85572
3095 * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
3096 E_V4DImode.
3097 * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
3098 VI1248_AVX512VL_AVX512BW. Handle V2DImode and V4DImode if not
3099 TARGET_AVX512VL using ix86_expand_sse2_abs. Formatting fixes.
3100
3101 PR target/85317
3102 * config/i386/i386.c (ix86_fold_builtin): Handle
3103 IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
3104
3105 PR target/85480
3106 * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
3107 (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
3108
3109 2018-05-08 Richard Earnshaw <rearnsha@arm.com>
3110
3111 PR target/85658
3112 * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
3113 (check_arch): Likewise.
3114 (check_fpu): Return the result rather than printing it.
3115 (end arch): Fix operator precedence.
3116 (end cpu): Likewise.
3117 (END): Print the result from check_fpu.
3118
3119 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
3120 Alan Hayward <alan.hayward@arm.com>
3121 David Sherwood <david.sherwood@arm.com>
3122
3123 * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
3124 (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
3125 (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
3126 (*fcmuo<mode>_and): New patterns.
3127
3128 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
3129
3130 * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
3131 (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
3132 (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
3133 (cmp_op, sve_imm_con): New code attributes.
3134 (SVE_COND_INT_CMP, imm_con): Delete.
3135 (cmp_op): Remove above unspecs from int attribute.
3136 * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
3137 to...
3138 (*cmp<cmp_op><mode>): ...this. Use UNSPEC_MERGE_PTRUE instead of
3139 comparison-specific unspecs.
3140 (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
3141 (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
3142 (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
3143 (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
3144 (*vec_fcm<cmp_op><mode>): Rename to...
3145 (*fcm<cmp_op><mode>): ...this and adjust likewise.
3146 (*vec_fcmuo<mode>): Rename to...
3147 (*fcmuo<mode>): ...this and adjust likewise.
3148 (*pred_fcm<cmp_op><mode>): New pattern.
3149 * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
3150 (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
3151 functions.
3152 (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
3153 and UNORDERED.
3154 (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
3155 (aarch64_emit_sve_predicated_cond): New function.
3156 (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
3157 (aarch64_emit_unspec_cond_or): Replace with...
3158 (aarch64_emit_sve_or_conds): ...this new function. Use
3159 aarch64_emit_sve_ptrue_op for the individual comparisons and
3160 aarch64_emit_binop to OR them together.
3161 (aarch64_emit_inverted_unspec_cond): Replace with...
3162 (aarch64_emit_sve_inverted_cond): ...this new function. Use
3163 aarch64_emit_sve_ptrue_op for the comparison and
3164 aarch64_emit_unop to invert the result.
3165 (aarch64_expand_sve_vec_cmp_float): Update after the above
3166 changes. Use aarch64_emit_sve_ptrue_op for native comparisons.
3167
3168 2018-05-07 Nathan Sidwell <nathan@acm.org>
3169
3170 * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
3171 * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
3172 (Backwards Compatibility): Likewise.
3173
3174 2018-05-07 Luis Machado <luis.machado@linaro.org>
3175
3176 PR bootstrap/85681
3177 Revert:
3178 2018-05-07 Luis Machado <luis.machado@linaro.org>
3179
3180 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
3181 <prefetch_dynamic_strides>: New const bool field.
3182 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
3183 prefetch_dynamic_strides.
3184 (exynosm1_prefetch_tune): Likewise.
3185 (thunderxt88_prefetch_tune): Likewise.
3186 (thunderx_prefetch_tune): Likewise.
3187 (thunderx2t99_prefetch_tune): Likewise.
3188 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
3189 to false.
3190 (aarch64_override_options_internal): Update to set
3191 PARAM_PREFETCH_DYNAMIC_STRIDES.
3192 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
3193 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
3194 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
3195 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
3196 prefetch-dynamic-strides setting.
3197
3198 2018-05-07 Luis Machado <luis.machado@linaro.org>
3199
3200 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
3201 <minimum_stride>: New const int field.
3202 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
3203 minimum_stride field.
3204 (exynosm1_prefetch_tune): Likewise.
3205 (thunderxt88_prefetch_tune): Likewise.
3206 (thunderx_prefetch_tune): Likewise.
3207 (thunderx2t99_prefetch_tune): Likewise.
3208 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
3209 (aarch64_override_options_internal): Update to set
3210 PARAM_PREFETCH_MINIMUM_STRIDE.
3211 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
3212 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
3213 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
3214 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
3215 stride is constant and is below the minimum stride threshold.
3216
3217 2018-05-07 Luis Machado <luis.machado@linaro.org>
3218
3219 * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
3220 to 512.
3221
3222 2018-05-07 Luis Machado <luis.machado@linaro.org>
3223
3224 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
3225 <prefetch_dynamic_strides>: New const bool field.
3226 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
3227 prefetch_dynamic_strides.
3228 (exynosm1_prefetch_tune): Likewise.
3229 (thunderxt88_prefetch_tune): Likewise.
3230 (thunderx_prefetch_tune): Likewise.
3231 (thunderx2t99_prefetch_tune): Likewise.
3232 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
3233 to false.
3234 (aarch64_override_options_internal): Update to set
3235 PARAM_PREFETCH_DYNAMIC_STRIDES.
3236 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
3237 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
3238 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
3239 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
3240 prefetch-dynamic-strides setting.
3241
3242 2018-05-07 Luis Machado <luis.machado@linaro.org>
3243
3244 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
3245 <minimum_stride>: New const int field.
3246 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
3247 minimum_stride field.
3248 (exynosm1_prefetch_tune): Likewise.
3249 (thunderxt88_prefetch_tune): Likewise.
3250 (thunderx_prefetch_tune): Likewise.
3251 (thunderx2t99_prefetch_tune): Likewise.
3252 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
3253 (aarch64_override_options_internal): Update to set
3254 PARAM_PREFETCH_MINIMUM_STRIDE.
3255 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
3256 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
3257 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
3258 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
3259 stride is constant and is below the minimum stride threshold.
3260
3261 2018-05-06 Jakub Jelinek <jakub@redhat.com>
3262
3263 PR c++/85659
3264 * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
3265 the type is addressable. Don't force op into register if it has
3266 BLKmode.
3267
3268 2018-05-05 Roland McGrath <mcgrathr@google.com>
3269
3270 PR other/77609
3271 * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
3272 any section for which we don't know a specific type it should have,
3273 regardless of name. Previously this was done only for the exact
3274 names ".init_array", ".fini_array", and ".preinit_array".
3275 (default_elf_asm_named_section): Add comment about
3276 relationship with default_section_type_flags and SECTION_NOTYPE.
3277 (get_section): Don't consider it a type conflict if one side has
3278 SECTION_NOTYPE and the other doesn't, as long as neither has the
3279 SECTION_BSS et al used in the default_section_type_flags logic.
3280
3281 2018-05-05 Tom de Vries <tom@codesourcery.com>
3282
3283 PR target/85653
3284 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
3285 (workaround_barsyncs): New function.
3286 (nvptx_reorg): Use workaround_barsyncs.
3287 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
3288 (define_expand "nvptx_membar_cta"): New define_expand.
3289 (define_insn "*nvptx_membar_cta"): New insn.
3290
3291 2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
3292
3293 * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
3294 To improve optimization opportunities.
3295 * builtin-types.def: The new needed builtin types for the above.
3296
3297 2018-05-04 Richard Biener <rguenther@suse.de>
3298
3299 * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
3300 * gimple-ssa-store-merging.c
3301 (imm_store_chain_info::output_merged_store): Remove redundant create,
3302 release split_store vector contents on failure.
3303 * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
3304 scalar stmt vector on cache hit.
3305
3306 2018-05-04 Segher Boessenkool <segher@kernel.crashing.org>
3307
3308 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
3309 Xilinx FP support.
3310 * config.gcc (powerpc-xilinx-eabi*): Remove.
3311 * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
3312 support.
3313 (fusion_addis_mem_combo_load): Ditto.
3314 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
3315 FP support.
3316 (rs6000_cpu_cpp_builtins): Ditto.
3317 * config/rs6000/rs6000-linux.c
3318 (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
3319 * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
3320 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
3321 support.
3322 (rs6000_setup_reg_addr_masks): Ditto.
3323 (rs6000_init_hard_regno_mode_ok): Ditto.
3324 (rs6000_option_override_internal): Ditto.
3325 (legitimate_lo_sum_address_p): Ditto.
3326 (rs6000_legitimize_address): Ditto.
3327 (rs6000_legitimize_reload_address): Ditto.
3328 (rs6000_legitimate_address_p): Ditto.
3329 (abi_v4_pass_in_fpr): Ditto.
3330 (setup_incoming_varargs): Ditto.
3331 (rs6000_gimplify_va_arg): Ditto.
3332 (rs6000_split_multireg_move): Ditto.
3333 (rs6000_savres_strategy): Ditto.
3334 (rs6000_emit_prologue_components): Ditto.
3335 (rs6000_emit_epilogue_components): Ditto.
3336 (rs6000_emit_prologue): Ditto.
3337 (rs6000_emit_epilogue): Ditto.
3338 (rs6000_elf_file_end): Ditto.
3339 (rs6000_function_value): Ditto.
3340 (rs6000_libcall_value): Ditto.
3341 * config/rs6000/rs6000.h: Ditto.
3342 (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
3343 (TARGET_MINMAX): ... this. New.
3344 (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
3345 * config/rs6000/rs6000.md: Remove Xilinx FP support.
3346 (*movsi_internal1_single): Delete.
3347 * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
3348 mfpu=, mxilinx-fpu): Delete.
3349 * config/rs6000/singlefp.h: Delete.
3350 * config/rs6000/sysv4.h: Remove Xilinx FP support.
3351 * config/rs6000/t-rs6000: Ditto.
3352 * config/rs6000/t-xilinx: Delete.
3353 * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
3354 * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
3355 (VStype_simple): Delete.
3356 (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
3357 * config/rs6000/xfpu.h: Delete.
3358 * config/rs6000/xfpu.md: Delete.
3359 * config/rs6000/xilinx.h: Delete.
3360 * config/rs6000/xilinx.opt: Delete.
3361 * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
3362 -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
3363
3364 2018-05-04 Tom de Vries <tom@codesourcery.com>
3365
3366 PR libgomp/85639
3367 * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
3368 if ignore == 0.
3369
3370 2018-05-04 Richard Biener <rguenther@suse.de>
3371
3372 PR middle-end/85627
3373 * tree-complex.c (update_complex_assignment): We are always in SSA form.
3374 (expand_complex_div_wide): Likewise.
3375 (expand_complex_operations_1): Likewise.
3376 (expand_complex_libcall): Preserve EH info of the original stmt.
3377 (tree_lower_complex): Handle removed blocks.
3378 * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
3379 on complex multiplication and division libcall builtins.
3380
3381 2018-05-04 Richard Biener <rguenther@suse.de>
3382
3383 PR middle-end/85574
3384 * fold-const.c (negate_expr_p): Restrict negation of operand
3385 zero of a division to when we know that can happen without
3386 overflow.
3387 (fold_negate_expr_1): Likewise.
3388
3389 2018-05-04 Jakub Jelinek <jakub@redhat.com>
3390
3391 PR libstdc++/85466
3392 * real.h (real_nextafter): Declare.
3393 * real.c (real_nextafter): New function.
3394 * fold-const-call.c (fold_const_nextafter): New function.
3395 (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
3396 CASE_CFN_NEXTTOWARD.
3397 (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
3398 even when arg1_mode is different from arg0_mode.
3399
3400 2018-05-03 Nathan Sidwell <nathan@acm.org>
3401
3402 * doc/extend.texi (Deprecated Features): Remove
3403 -ffriend-injection.
3404 (Backwards Compatibility): Likewise.
3405 * doc/invoke.texi (C++ Language Options): Likewise.
3406 (C++ Dialect Options): Likewise.
3407
3408 2018-05-03 Jakub Jelinek <jakub@redhat.com>
3409
3410 PR target/85530
3411 * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
3412 _mm512_mask_mullox_epi64): New intrinsics.
3413
3414 2018-05-03 Tom de Vries <tom@codesourcery.com>
3415
3416 PR testsuite/85106
3417 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
3418 dump files): Add offload-tree.
3419
3420 2018-05-03 Richard Biener <rguenther@suse.de>
3421
3422 PR tree-optimization/85615
3423 * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
3424 to loops not nested in BBs loop father to avoid creating multi-entry
3425 loops.
3426
3427 2018-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3428
3429 PR tree-optimization/70291
3430 * tree-complex.c (expand_complex_libcall): Add type, inplace_p
3431 arguments. Change return type to tree. Emit libcall as a new
3432 statement rather than replacing existing one when inplace_p is true.
3433 (expand_complex_multiplication_components): New function.
3434 (expand_complex_multiplication): Expand floating-point complex
3435 multiplication using the above.
3436 (expand_complex_division): Rename inner_type parameter to type.
3437 Update expand_complex_libcall call-site.
3438 (expand_complex_operations_1): Update expand_complex_multiplication
3439 and expand_complex_division call-sites.
3440
3441 2018-05-02 Jakub Jelinek <jakub@redhat.com>
3442
3443 PR target/85582
3444 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
3445 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
3446 *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
3447 the highest significant bit of the shift count mask is clear. In
3448 check whether and[sq]i3 is needed verify that all significant bits
3449 of the shift count other than the highest are set.
3450
3451 2018-05-02 Tom de Vries <tom@codesourcery.com>
3452
3453 PR libgomp/82428
3454 * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
3455 * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
3456 (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
3457 * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
3458 (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
3459 * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
3460 __builtin_goacc_parlevel_size.
3461
3462 2018-05-02 Richard Biener <rguenther@suse.de>
3463
3464 PR tree-optimization/85597
3465 * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
3466 do not use split vect_get_vec_defs call but call vect_get_slp_defs
3467 directly.
3468
3469 2018-05-02 Tom de Vries <tom@codesourcery.com>
3470
3471 PR testsuite/85106
3472 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
3473 dump files): Add ltrans-tree.
3474
3475 2018-05-02 Tom de Vries <tom@codesourcery.com>
3476
3477 PR testsuite/85106
3478 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
3479 dump files): Add wpa-ipa.
3480
3481 2018-05-02 Segher Boessenkool <segher@kernel.crashing.org>
3482
3483 * config.gcc (powerpc*-*-*): Remove paired.h. Unsupport the
3484 powerpc*-*-linux*paired* target.
3485 * config/rs6000/750cl.h: Delete.
3486 * config/rs6000/paired.h: Delete.
3487 * config/rs6000/paired.md: Delete.
3488 * config/rs6000/predicates.md (easy_vector_constant): Remove paired
3489 float support.
3490 * config/rs6000/rs6000-builtin.def: Remove paired float support.
3491 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
3492 comment. Remove paired float support.
3493 * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
3494 * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
3495 VECTOR_PAIRED.
3496 * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
3497 paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
3498 declarations.
3499 * config/rs6000/rs6000.c: Remove paired float support.
3500 (paired_expand_vector_init, paired_expand_vector_move,
3501 paired_emit_vector_compare, paired_emit_vector_cond_expr,
3502 (paired_expand_lv_builtin, paired_expand_stv_builtin,
3503 paired_expand_builtin, paired_expand_predicate_builtin,
3504 paired_init_builtins): Delete.
3505 * config/rs6000/rs6000.h: Remove paired float support.
3506 * config/rs6000/rs6000.md: Remove paired float support.
3507 (move_from_CR_ov_bit): Delete.
3508 * config/rs6000/rs6000.opt (mpaired): Delete.
3509 * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
3510 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
3511
3512 2018-05-02 Richard Biener <rguenther@suse.de>
3513
3514 PR middle-end/85567
3515 * gimplify.c (gimplify_save_expr): When in SSA form allow
3516 SAVE_EXPRs to compute to SSA vars.
3517
3518 2018-05-02 Jakub Jelinek <jakub@redhat.com>
3519
3520 PR target/85582
3521 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
3522 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
3523 *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
3524 clobber operands[2], instead use a new pseudo. Formatting fixes.
3525
3526 2018-05-02 Richard Sandiford <richard.sandiford@linaro.org>
3527
3528 PR tree-optimization/85586
3529 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
3530 exit early for statements in the same group if the accesses are
3531 not strided.
3532
3533 2018-05-02 Tom de Vries <tom@codesourcery.com>
3534
3535 PR lto/85451
3536 * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
3537 error message.
3538
3539 2018-05-01 Marc Glisse <marc.glisse@inria.fr>
3540
3541 PR tree-optimization/85143
3542 * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
3543
3544 2018-05-01 Tom de Vries <tom@codesourcery.com>
3545
3546 PR lto/85451
3547 * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
3548 not found" error message.
3549
3550 2018-05-01 Tom de Vries <tom@codesourcery.com>
3551
3552 PR other/83786
3553 * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
3554 * vec.c (test_ordered_remove_if): New function.
3555 (vec_c_tests): Call test_ordered_remove_if.
3556 * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
3557 * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
3558 * tree-vect-patterns.c (vect_pattern_recog_1): Use
3559 VEC_ORDERED_REMOVE_IF.
3560
3561 2018-05-01 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3562
3563 PR tree-optimization/82665
3564 * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
3565 pointer subtraction where arguments come from a memchr call.
3566
3567 2018-05-01 Jakub Jelinek <jakub@redhat.com>
3568
3569 * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
3570 --push-state --as-needed and --pop-state instead of --as-needed and
3571 --no-as-needed if ld supports it.
3572 * configure: Regenerated.
3573
3574 PR web/85578
3575 * doc/install.texi2html: Replace _002d with - and _002a with * in
3576 generated html files using sed.
3577
3578 2018-04-30 David Malcolm <dmalcolm@redhat.com>
3579
3580 PR c++/85523
3581 * gcc-rich-location.c (blank_line_before_p): New function.
3582 (use_new_line): New function.
3583 (gcc_rich_location::add_fixit_insert_formatted): New function.
3584 * gcc-rich-location.h
3585 (gcc_rich_location::add_fixit_insert_formatted): New function.
3586
3587 2018-04-30 David Malcolm <dmalcolm@redhat.com>
3588
3589 * selftest.c (assert_streq): Rename "expected" and "actual" to
3590 "val1" and "val2". Extend NULL-handling to cover both inputs
3591 symmetrically, while still requiring both to be non-NULL for a pass.
3592 * selftest.h (assert_streq): Rename "expected" and "actual" to
3593 "val1" and "val2".
3594 (ASSERT_EQ): Likewise.
3595 (ASSERT_EQ_AT): Likewise.
3596 (ASSERT_KNOWN_EQ): Likewise.
3597 (ASSERT_KNOWN_EQ_AT): Likewise.
3598 (ASSERT_NE): Likewise.
3599 (ASSERT_MAYBE_NE): Likewise.
3600 (ASSERT_MAYBE_NE_AT): Likewise.
3601 (ASSERT_STREQ): Likewise. Clarify that both must be non-NULL for
3602 the assertion to pass.
3603 (ASSERT_STREQ_AT): Likewise.
3604
3605 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
3606
3607 * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
3608 interaction with -pie.
3609
3610 2018-04-30 David Malcolm <dmalcolm@redhat.com>
3611
3612 * selftest.h: Fix alphabetization of per-source-file selftest
3613 declarations.
3614
3615 2018-04-30 Jason Merrill <jason@redhat.com>
3616
3617 PR c++/61982 - dead stores to destroyed objects.
3618 * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
3619 of clobber.
3620
3621 2018-04-30 Jason Merrill <jason@redhat.com>
3622
3623 * tree.c (build_clobber): New.
3624 * tree.h: Declare it.
3625 * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
3626
3627 2018-04-30 David Malcolm <dmalcolm@redhat.com>
3628
3629 * diagnostic-show-locus.c (layout::layout): Update for
3630 location_get_source_line returning a char_span.
3631 (struct char_span): Move to input.h.
3632 (struct correction): Update for fields in char_span becoming
3633 private.
3634 (struct source_line): Update for location_get_source_line
3635 returning a char_span.
3636 (layout::print_line): Likewise.
3637 * edit-context.c (edited_file::print_content): Likewise.
3638 (edited_file::print_diff_hunk): Likewise.
3639 (edited_file::print_run_of_changed_lines): Likewise.
3640 (edited_file::get_num_lines): Likewise.
3641 (edited_line::edited_line): Likewise.
3642 * final.c (asm_show_source): Likewise.
3643 * input.c (location_get_source_line): Convert return type
3644 from const char * to char_span, losing the final "line_len"
3645 param.
3646 (dump_location_info): Update for the above.
3647 (get_substring_ranges_for_loc): Likewise. Use a char_span
3648 when handling the literal within the line.
3649 (test_reading_source_line): Update for location_get_source_line
3650 returning a char_span.
3651 * input.h (class char_span): Move here from
3652 diagnostic-show-locus.c, converting from a struct to a class.
3653 Make data members private.
3654 (char_span::operator bool): New.
3655 (char_span::length): New.
3656 (char_span::get_buffer): New.
3657 (char_span::operator[]): New.
3658 (char_span::subspan): Make const.
3659 (char_span::xstrdup): New.
3660 (location_get_source_line): Convert return type from const char *
3661 to char_span, losing the final "line_size" param.
3662
3663 2018-04-30 Jan Hubicka <jh@suse.cz>
3664
3665 * lto-wrapper.c (ltrans_priorities): New static var.
3666 (cmp_priority): New.
3667 (run_gcc): Read priorities and if doing parallel build order
3668 the Makefile by them.
3669
3670 2018-04-30 David Malcolm <dmalcolm@redhat.com>
3671
3672 * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
3673
3674 2018-04-30 Richard Biener <rguenther@suse.de>
3675
3676 * tree-cfg.c (verify_address): Remove base argument, add
3677 flag whether to check TREE_ADDRESSABLE and do that.
3678 (verify_expr): Remove.
3679 (verify_types_in_gimple_reference): Add pieces from verify_expr.
3680 (verify_gimple_assign_single): Likewise.
3681 (verify_gimple_switch): Likewise.
3682 (verify_expr_location_1): Dereference tp once. Add (disabled)
3683 piece from verify_expr.
3684 (verify_gimple_in_cfg): Do not call verify_expr on all ops.
3685
3686 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
3687
3688 * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
3689
3690 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
3691
3692 * config/arc/arc-protos.h (prepare_extend_operands): Remove.
3693 (small_data_pattern): Likewise.
3694 (arc_rewrite_small_data): Likewise.
3695 * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
3696 (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
3697 (get_symbol_alignment): New function.
3698 (legitimate_small_data_address_p): Likewise.
3699 (legitimate_scaled_address): Update, call
3700 legitimate_small_data_address_p.
3701 (output_sdata): New static variable.
3702 (arc_print_operand): Update how we handle small data operands.
3703 (arc_print_operand_address): Likewise.
3704 (arc_legitimate_address_p): Update, use
3705 legitimate_small_data_address_p.
3706 (arc_rewrite_small_data_p): Remove.
3707 (arc_rewrite_small_data_1): Likewise.
3708 (arc_rewrite_small_data): Likewise.
3709 (small_data_pattern): Likewise.
3710 (compact_sda_memory_operand): Update to use
3711 legitimate_small_data_address_p and get_symbol_alignment.
3712 (prepare_move_operands): Don't rewite sdata pattern.
3713 (prepare_extend_operands): Remove.
3714 * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
3715 pattern.
3716 (zero_extendqisi2): Likewise.
3717 (zero_extendhisi2): Likewise.
3718 (extendqihi2): Likewise.
3719 (extendqisi2): Likewise.
3720 (extendhisi2): Likewise.
3721 (addsi3): Likewise.
3722 (subsi3): Likewise.
3723 (andsi3): Likewise.
3724 * config/arc/constraints.md (Usd): Change it to memory constraint.
3725
3726 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
3727
3728 * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
3729 as source of std instructions.
3730 * config/arc/arc.md (movsi_insn): Update pattern predicate to
3731 allow 6-bit constants as source for store instructions.
3732 (movdi_insn): Update instruction pattern to allow 6-bit constants
3733 as source for store instructions.
3734
3735 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
3736
3737 * doc/invoke.texi (-fdebug-types-section): Fix grammar.
3738
3739 2018-04-30 Nathan Sidwell <nathan@acm.org>
3740 Sandra Loosemore <sandra@codesourcery.com>
3741
3742 * dumpfile.c (dump_open): Allow '-' for stdout.
3743 * doc/invoke.texi (Developer Options): Document dump filename
3744 determination early. Document stdin/stdout selection.
3745
3746 2018-04-30 Andrew Sadek <andrew.sadek.se@gmail.com>
3747
3748 Microblaze Target: PIC data text relative
3749
3750 * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
3751 * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
3752 Add declaration.
3753 * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
3754 CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
3755 * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
3756 New addressing mode for data-text relative position indepenedent code.
3757 (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
3758 'ADDRESS_SYMBOLIC_TXT_REL'.
3759 (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
3760 (microblaze_legitimate_pic_operand): Exclude function calls from
3761 pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
3762 (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
3763 addresses cases.
3764 (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
3765 (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
3766 (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
3767 for 'address + offset'.
3768 (microblaze_expand_prologue): Add new function prologue call for
3769 'r20' assignation.
3770 (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
3771 'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
3772 table in case of TARGET_PIC_DATA_TEXT_REL.
3773 (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
3774 * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
3775 Add new macros 'UNSPEC_TEXT',
3776 'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
3777 + exclude function calls from 'UNSPEC_PLT' in case of data text
3778 relative mode.
3779 * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
3780 new target hook for generating address diff vector tables in case of
3781 flag_pic.
3782 * doc/tm.texi : Regenerate.
3783 * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
3784 'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
3785 of addr diff vector generation.
3786 * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
3787 target hook definition.
3788 * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
3789 Add default function for generate_pic_addr_diff_vec -> flag_pic.
3790 * doc/invoke.texi (Add new pic option): Add new microblaze pic
3791 option for data text relative.
3792
3793 2018-04-30 Richard Biener <rguenther@suse.de>
3794
3795 * tree-chrec.h (evolution_function_is_constant_p): Remove
3796 redundant check.
3797 * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
3798
3799 2018-04-30 Richard Biener <rguenther@suse.de>
3800
3801 PR bootstrap/85571
3802 * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
3803
3804 2018-04-30 Richard Biener <rguenther@suse.de>
3805
3806 PR tree-optimization/28364
3807 PR tree-optimization/85275
3808 * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
3809 copying first exit test.
3810
3811 2018-04-28 Mark Wielaard <mark@klomp.org>
3812
3813 * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
3814 dwarf_version >= 5.
3815 (dwarf_AT): Handle DW_AT_addr_base.
3816 (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
3817
3818 2018-04-28 Uros Bizjak <ubizjak@gmail.com>
3819
3820 PR target/84431
3821 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
3822 (*ashl<dwi>3_doubleword_mask_1): Ditto.
3823 (*<shift_insn><dwi>3_doubleword_mask): Ditto.
3824 (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
3825
3826 2018-04-28 Richard Biener <rguenther@suse.de>
3827
3828 * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
3829 (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
3830 to reflect use. Only add interesting stmts.
3831
3832 2018-04-27 Martin Jambor <mjambor@suse.cz>
3833
3834 PR ipa/85549
3835 * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
3836 the jump function allows for passing through aggregate values.
3837
3838 2018-04-27 David Malcolm <dmalcolm@redhat.com>
3839
3840 * input.h (in_system_header_at): Convert from macro to inline
3841 function.
3842 (from_macro_expansion_at): Likewise.
3843 (from_macro_definition_at): Likewise.
3844
3845 2018-04-27 Jeff Law <law@redhat.com>
3846
3847 * config.gcc: Mark tile* targets as deprecated/obsolete.
3848
3849 2018-04-27 Richard Biener <rguenther@suse.de>
3850
3851 * config/aarch64/aarch64.c: Simplify ap.__stack advance and
3852 fix for ILP32.
3853
3854 2018-04-27 Richard Biener <rguenther@suse.de>
3855
3856 * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
3857
3858 2018-04-27 Uros Bizjak <ubizjak@gmail.com>
3859
3860 * config/i386/i386.md (*movti_internal): Substitute Ye constraint
3861 with Yd constraint. Set "preferred_for_speed" attribute from
3862 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
3863 with Yd constraint.
3864 (*movdi_internal): Ditto.
3865 (movti_interunit splitters): Remove
3866 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
3867 (movdi_interunit splitters): Ditto.
3868 * config/i386/constraints.md (Ye): Remove.
3869 (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
3870
3871 2018-04-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3872
3873 PR target/85512
3874 * config/aarch64/constraints.md (Usg): Limit to 31.
3875 (Usj): Limit to 63.
3876
3877 2018-04-27 Jakub Jelinek <jakub@redhat.com>
3878
3879 PR tree-optimization/85529
3880 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
3881 argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
3882 rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
3883 zero extension or masking of the MSB bit.
3884 (optimize_range_tests): Add FIRST_BB argument, pass it through
3885 to optimize_range_tests_var_bound.
3886 (maybe_optimize_range_tests, reassociate_bb): Adjust
3887 optimize_range_tests callers.
3888
3889 2018-04-26 Richard Biener <rguenther@suse.de>
3890 Jakub Jelinek <jakub@redhat.com>
3891
3892 * cgraph.h (symbol_table): Just declare debug method here.
3893 * symtab.c (symbol_table::debug): Define.
3894
3895 2018-04-26 Eric Botcazou <ebotcazou@adacore.com>
3896
3897 * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
3898
3899 2018-04-26 Uros Bizjak <ubizjak@gmail.com>
3900
3901 * config/i386/i386.md ("isa" attribute): Add x64_sse2.
3902 ("enabled" attribute): Handle x64_sse2 "isa" attribute.
3903 (*movdi_internal): Substitute Yi and Yj constraint with x
3904 and Ym and Yn constraint with y constraint. Update "isa"
3905 attribute and set "preferred_for_speed" attribute from
3906 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
3907 (*movsi_internal): Ditto.
3908 (*movdf_internal): Ditto.
3909 (*movsf_internal): Ditto.
3910 (*zero_extendsidi2): Ditto.
3911 * config/i386/sse.md (vec_set<mode>_0): Ditto.
3912 (sse2_loadld): Ditto.
3913 (*vec_extract<ssevecmodelower>_0): Ditto.
3914 (*vec_extractv4si_0_zext_sse4): Ditto.
3915 (vec_concatv2di): Ditto.
3916 (*vec_dup<mode>): Ditto.
3917 * config/i386/mmx.md (*mov<mode>_internal): Ditto.
3918 * config/i386/constraints.md (Yi): Remove.
3919 (Yj): Remove.
3920 (Ym): Remove.
3921 (Yn): Remove.
3922
3923 2018-04-26 Nathan Sidwell <nathan@acm.org>
3924
3925 * dumpfile.c (dump_open): New.
3926 (dump_open_alternate_stream, dump_start, dump_begin): Call it.
3927 (dump_finish): Detect stdio/stderr by value not name.
3928
3929 2018-04-26 Jonathan Wakely <jwakely@redhat.com>
3930
3931 * doc/invoke.texi (-Wreturn-type): Document default status for C++.
3932
3933 2018-04-26 Tom de Vries <tom@codesourcery.com>
3934
3935 PR target/84952
3936 * config/nvptx/nvptx.c (verify_neutering_jumps)
3937 (verify_neutering_labels): New function
3938 (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
3939
3940 2018-04-26 Tom de Vries <tom@codesourcery.com>
3941
3942 PR target/84025
3943 * config/nvptx/nvptx.c (needs_neutering_p): New function.
3944 (nvptx_single): Use needs_neutering_p to skip over insns that do not
3945 need neutering.
3946
3947 2018-04-26 Richard Biener <rguenther@suse.de>
3948 Tom de Vries <tom@codesourcery.com>
3949
3950 PR lto/85422
3951 * lto-streamer-out.c (output_function): Fixup loops if required to match
3952 discovery done in the reader.
3953
3954 2018-04-26 Richard Biener <rguenther@suse.de>
3955
3956 PR tree-optimization/85116
3957 * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
3958 have a loop exit from the single latch predecessor. Remove
3959 case of header with just condition.
3960 (ch_base::copy_headers): Exclude infinite loops from any
3961 processing.
3962 (pass_ch::execute): Record exits.
3963
3964 2018-04-26 Richard Biener <rguenther@suse.de>
3965
3966 * tree-vect-data-refs.c (vect_get_data_access_cost): Get
3967 prologue cost vector and pass it to vect_get_load_cost.
3968 (vect_get_peeling_costs_all_drs): Likewise.
3969 (vect_peeling_hash_get_lowest_cost): Likewise.
3970 (vect_enhance_data_refs_alignment): Likewise.
3971
3972 2018-04-26 Richard Biener <rguenther@suse.de>
3973
3974 PR middle-end/85450
3975 * tree-cfg.c (verify_gimple_assign_unary): Restore proper
3976 checking of integer<->pointer conversions.
3977 * omp-expand.c (expand_omp_for_static_nochunk): Avoid
3978 sign-/zero-extending pointer types.
3979 (expand_omp_for_static_chunk): Likewise.
3980
3981 2018-03-22 Hans-Peter Nilsson <hp@axis.com>
3982 Jean Lee <xiaoyur347@gmail.com>
3983
3984 * config/mips/mips.c (mips_asan_shadow_offset): New function.
3985 (TARGET_ASAN_SHADOW_OFFSET): Define.
3986 * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
3987 true for -fsanitize=address.
3988
3989 2018-04-25 Mark Wielaard <mark@klomp.org>
3990
3991 * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
3992 shorter ones.
3993
3994 2018-04-25 Jakub Jelinek <jakub@redhat.com>
3995
3996 * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
3997 than "alu", remove explicit "memory" and "imm_disp" attributes.
3998 (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
3999
4000 PR middle-end/85414
4001 * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
4002 case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
4003 gen_lowpart_no_emit.
4004
4005 2018-04-25 Sebastian Peryt <sebastian.peryt@intel.com>
4006
4007 PR target/85473
4008 * config/i386/i386.c (ix86_expand_builtin): Change memory
4009 operand to XI, extend p0 to Pmode.
4010 * config/i386/i386.md: Change unspec volatile and operand
4011 1 mode to XI, change operand 0 mode to P.
4012
4013 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
4014
4015 * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
4016 GET_MODE_MASK before any checking.
4017 (nds32_can_use_bset_p): Likewise.
4018 (nds32_can_use_btgl_p): Likewise.
4019
4020 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
4021
4022 * config/nds32/nds32-doubleword.md: New define_split pattern for
4023 illegal register number.
4024
4025 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
4026
4027 * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
4028
4029 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
4030
4031 * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
4032
4033 2018-04-25 Richard Biener <rguenther@suse.de>
4034
4035 * lto-streamer.h (LTO_major_version): Bump to 8.
4036
4037 2018-04-25 Jakub Jelinek <jakub@redhat.com>
4038
4039 * BASE-VER: Set to 9.0.0.
4040
4041 2018-04-24 Segher Boessenkool <segher@kernel.crashing.org>
4042
4043 * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
4044 in __abskf2 and __powikf2.
4045
4046 2018-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4047
4048 PR target/85512
4049 * config/aarch64/constraints.md (Usg, Usj): New constraints.
4050 * config/aarch64/iterators.md (cmode_simd): New mode attribute.
4051 * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
4052 Use the above on operand 2. Reindent.
4053 (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
4054
4055 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
4056
4057 PR target/85485
4058 * common/config/i386/i386-common.c (ix86_handle_option): Don't
4059 handle OPT_mcet.
4060 * config/i386/i386.opt (mcet): Removed.
4061 * doc/install.texi: Remove -mcet documentation.
4062 * doc/invoke.texi: Likewise.
4063
4064 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
4065
4066 PR target/85485
4067 * doc/install.texi: Remove -mcet from bootstrap-cet.
4068
4069 2018-04-24 Jakub Jelinek <jakub@redhat.com>
4070
4071 PR target/85511
4072 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
4073 __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
4074 if TARGET_64BIT.
4075
4076 PR target/85503
4077 * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
4078 const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
4079 containing a CONST_VECTOR.
4080
4081 2018-04-24 Cesar Philippidis <cesar@codesourcery.com>
4082
4083 * doc/install.texi: Update newlib dependency for nvptx.
4084
4085 2018-04-24 Jakub Jelinek <jakub@redhat.com>
4086
4087 PR target/85508
4088 * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
4089 instead of INTVAL when shifting x left.
4090
4091 2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
4092
4093 PR tree-optimization/85478
4094 * tree-vect-loop.c (vect_analyze_loop_2): Do not call
4095 vect_grouped_store_supported for single element vectors.
4096
4097 2018-04-24 Richard Biener <rguenther@suse.de>
4098
4099 PR target/85491
4100 * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
4101 load cost increase to the case of non-constant step.
4102
4103 2018-04-24 Jakub Jelinek <jakub@redhat.com>
4104
4105 PR target/84828
4106 * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
4107 destination if any_malformed_asm.
4108
4109 2018-04-23 Eric Botcazou <ebotcazou@adacore.com>
4110
4111 PR middle-end/85496
4112 * expr.c (store_field): In the bitfield case, if the value comes from
4113 a function call and is returned in registers by means of a PARALLEL,
4114 do not change the mode of the temporary unless BLKmode and VOIDmode.
4115
4116 2018-04-23 Andrey Belevantsev <abel@ispras.ru>
4117
4118 PR rtl-optimization/85423
4119 * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
4120 dependencies to debug insns when the previous insn is non-debug.
4121
4122 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
4123
4124 * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
4125 enums into a single definition.
4126 (fls): Fix predicates and printing.
4127 (seti): Likewise.
4128
4129 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
4130
4131 * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
4132 * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
4133 and short u6 immediate.
4134 (check_if_valid_sleep_operand): Remove.
4135 * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
4136
4137 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
4138
4139 * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
4140 flag_always_save_lp condition.
4141 * config/nds32/nds32.opt (malways-save-lp): New option.
4142
4143 2018-04-22 Shiva Chen <shiva0217@gmail.com>
4144
4145 * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
4146 * config/nds32/nds32.c (nds32_use_load_post_increment): New.
4147 * config/nds32/nds32.h
4148 (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
4149 (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
4150
4151 2018-04-22 Shiva Chen <shiva0217@gmail.com>
4152
4153 * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
4154 * config/nds32/nds32.c (nds32_ls_333_p): Remove.
4155
4156 2018-04-22 Shiva Chen <shiva0217@gmail.com>
4157 Chung-Ju Wu <jasonwucj@gmail.com>
4158
4159 * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
4160 Declare.
4161 * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
4162 * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
4163
4164 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
4165
4166 * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
4167
4168 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
4169
4170 * config/nds32/nds32-protos.h (nds32_data_alignment,
4171 nds32_local_alignment): Declare.
4172 * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
4173 nds32_local_alignment): New functions.
4174 (TARGET_CONSTANT_ALIGNMENT): Define.
4175 * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
4176
4177 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
4178
4179 * config/nds32/nds32.c
4180 (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
4181 (TARGET_MODES_TIEABLE_P): Likewise.
4182
4183 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
4184
4185 * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
4186 level Ofast and Og.
4187
4188 2018-04-22 Monk Chiang <sh.chiang04@gmail.com>
4189 Chung-Ju Wu <jasonwucj@gmail.com>
4190
4191 * config/nds32/constants.md (unspec_volatile_element): Add enum values
4192 for unaligned access.
4193 * config/nds32/nds32-intrinsic.c: Implementation of expanding
4194 unaligned access.
4195 * config/nds32/nds32-intrinsic.md: Likewise.
4196 * config/nds32/nds32_intrinsic.h: Likewise.
4197 * config/nds32/nds32.h (nds32_builtins): Likewise.
4198 * config/nds32/nds32.opt (munaligned-access): New option.
4199 * config/nds32/nds32.c (nds32_asm_file_start): Display
4200 flag_unaligned_access status.
4201
4202 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
4203
4204 * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
4205 -mno-relax is present.
4206 * config/riscv/linux.h (LINK_SPEC): Ditto.
4207
4208 2018-04-20 Martin Sebor <msebor@redhat.com>
4209
4210 PR c/85365
4211 * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
4212 for null pointers.
4213 (gimple_fold_builtin_stxcpy_chk): Same.
4214 * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
4215
4216 2018-04-20 Michael Meissner <meissner@linux.ibm.com>
4217
4218 PR target/85456
4219 * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
4220 __powikf2 when long double is IEEE 128-bit.
4221
4222 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
4223
4224 * config/riscv/riscv.c (riscv_first_stack_step): Round up min
4225 step to make sure stack always aligned.
4226
4227 2018-04-20 Carl Love <cel@us.ibm.com>
4228
4229 PR target/83402
4230 * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
4231 size check for arg0.
4232
4233 2018-04-20 Nathan Sidwell <nathan@codesourcery.com>
4234 Tom de Vries <tom@codesourcery.com>
4235
4236 PR target/85445
4237 * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
4238 Emit insns for calls too.
4239 (nvptx_find_par): Always look for worker-level predecessor insn.
4240 (nvptx_propagate): Add is_call parm, return bool. Copy frame for
4241 calls.
4242 (nvptx_vpropagate, nvptx_wpropagate): Adjust.
4243 (nvptx_process_pars): Propagate frames for calls.
4244
4245 2018-04-20 H.J. Lu <hongjiu.lu@intel.com>
4246
4247 PR target/85469
4248 * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
4249 Removed.
4250 (OPTION_MASK_ISA_IBT_UNSET): Likewise.
4251 (ix86_handle_option): Don't handle OPT_mibt.
4252 * config/i386/cet.h: Check __CET__ instead of __IBT__ and
4253 __SHSTK__.
4254 * config/i386/driver-i386.c (host_detect_local_cpu): Remove
4255 has_ibt and ibt.
4256 * config/i386/i386-c.c (ix86_target_macros_internal): Don't
4257 check OPTION_MASK_ISA_IBT nor flag_cf_protection.
4258 (ix86_target_macros): Define __CET__ with flag_cf_protection
4259 for -fcf-protection.
4260 * config/i386/i386.c (isa2_opts): Remove -mibt.
4261 * config/i386/i386.h (TARGET_IBT): Removed.
4262 (TARGET_IBT_P): Likewise.
4263 (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
4264 * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
4265 * config/i386/i386.opt (mcet): Update help message.
4266 (mshstk): Likewise.
4267 (mibt): Removed.
4268 * doc/invoke.texi: Remove -mibt. Document __CET__. Document
4269 -mcet as an alias for -mshstk.
4270
4271 2018-04-20 Richard Biener <rguenther@suse.de>
4272
4273 PR middle-end/85475
4274 * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
4275 complexity by forcing a single use of the multiply operand.
4276
4277 2018-04-20 Martin Jambor <mjambor@suse.cz>
4278
4279 ipa/85449
4280 * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
4281 recursion dependency to only apply to non-clones.
4282
4283 2018-04-20 Martin Jambor <mjambor@suse.cz>
4284
4285 ipa/85447
4286 * ipa-cp.c (create_specialized_node): Check that clones of
4287 self-recursive edges exist during IPA-CP.
4288
4289 2018-04-19 Toon Moene <toon@moene.org>
4290
4291 * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
4292 by -O3.
4293
4294 2018-04-19 Jakub Jelinek <jakub@redhat.com>
4295
4296 PR tree-optimization/85467
4297 * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
4298 VECTOR_TYPE_P macro. If type is vector type, VIEW_CONVERT_EXPR the
4299 VECTOR_CST element to type.
4300
4301 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
4302
4303 PR target/85397
4304 * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
4305 * config/i386/i386.md (builtin_setjmp_setup): Removed.
4306 (builtin_longjmp): Likewise.
4307 (save_stack_nonlocal): New pattern.
4308 (restore_stack_nonlocal): Likewise.
4309
4310 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
4311
4312 PR target/85404
4313 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
4314 Replace ASM_OUTPUT_LABEL with fprintf.
4315
4316 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
4317
4318 PR target/85417
4319 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
4320 Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
4321 * config/i386/i386-c.c (ix86_target_macros_internal): Also
4322 define __IBT__ and __SHSTK__ for -fcf-protection.
4323 * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
4324 TARGET_IBT.
4325 (ix86_trampoline_init): Likewise.
4326 (x86_output_mi_thunk): Likewise.
4327 (ix86_notrack_prefixed_insn_p): Likewise.
4328 (ix86_option_override_internal): Don't disallow -fcf-protection.
4329 * config/i386/i386.md (rdssp<mode>): Also enable for
4330 -fcf-protection.
4331 (incssp<mode>): Likewise.
4332 (nop_endbr): Likewise.
4333 * config/i386/i386.opt (mcet): Change help message to built-in
4334 functions only.
4335 (mibt): Likewise.
4336 (mshstk): Likewise.
4337 * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
4338 on -fcf-protection. Change -mcet, -mibt and -mshstk to only
4339 enable CET built-in functions.
4340
4341 2018-04-19 Sebastian Peryt <sebastian.peryt@intel.com>
4342
4343 * common/config/i386/i386-common.c
4344 (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
4345 OPTION_MASK_ISA_MOVDIRI_UNSET,
4346 OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
4347 (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
4348 * config.gcc (movdirintrin.h): New header.
4349 * config/i386/cpuid.h (bit_MOVDIRI,
4350 bit_MOVDIR64B): New bits.
4351 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
4352 and -mmvodir64b.
4353 * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
4354 (VOID, PVOID, PCVOID)): New function types.
4355 * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
4356 __builtin_ia32_directstoreu_u64,
4357 __builtin_ia32_movdir64b): New builtins.
4358 * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
4359 * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
4360 and -mmovdiri.
4361 (ix86_valid_target_attribute_inner_p): Ditto.
4362 (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
4363 and VOID_FTYPE_PUNSIGNED_UNSIGNED.
4364 (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
4365 * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
4366 TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
4367 * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
4368 (movdiri<mode>, movdir64b_<mode>): New.
4369 * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
4370 * config/i386/immintrin.h: Include movdirintrin.h.
4371 * config/i386/movdirintrin.h: New file.
4372 * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
4373
4374 2018-04-19 Richard Biener <rguenther@suse.de>
4375
4376 PR middle-end/85455
4377 * cfg.c (clear_bb_flags): When loop state says we have
4378 marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
4379
4380 2018-04-19 Richard Biener <rguenther@suse.de>
4381
4382 PR tree-optimization/84737
4383 * tree-vect-data-refs.c (vect_copy_ref_info): New function
4384 copying restrict info.
4385 (vect_setup_realignment): Use it.
4386 * tree-vectorizer.h (vect_copy_ref_info): Declare.
4387 * tree-vect-stmts.c (vectorizable_store): Copy ref info from
4388 the first DR to all generated stores.
4389 (vectorizable_load): Likewise for loads.
4390
4391 2018-04-19 Jakub Jelinek <jakub@redhat.com>
4392
4393 PR tree-optimization/85446
4394 * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
4395 the integral and pointer types to have the same precision.
4396
4397 * doc/install.texi: Document --disable-cet being the default and
4398 --enable-cet=auto.
4399
4400 2018-04-18 Martin Liska <mliska@suse.cz>
4401
4402 * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
4403 style.
4404
4405 2018-04-18 Martin Liska <mliska@suse.cz>
4406
4407 Revert
4408 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
4409
4410 PR ipa/83983
4411 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
4412 arguments if they are comparable.
4413
4414 2018-04-18 Martin Liska <mliska@suse.cz>
4415
4416 Revert
4417 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
4418
4419 PR lto/84805
4420 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
4421 incomplete types.
4422
4423 2018-04-18 H.J. Lu <hongjiu.lu@intel.com>
4424
4425 PR target/85388
4426 * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
4427 ENDBR after calling __morestack.
4428
4429 2018-04-18 David Malcolm <dmalcolm@redhat.com>
4430
4431 PR jit/85384
4432 * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
4433 by using gcc_base_ver to generate a gcc_driver_version, and use
4434 it when generating GCC_DRIVER_NAME.
4435 * configure: Regenerate.
4436
4437 2018-04-18 Jakub Jelinek <jakub@redhat.com>
4438
4439 PR target/81084
4440 * config.gcc: Obsolete powerpc*-*-*spe*.
4441
4442 2018-04-17 Jakub Jelinek <jakub@redhat.com>
4443
4444 PR debug/84637
4445 * dbxout.c (dbxout_int): Perform negation in unsigned int type.
4446 (stabstr_D): Change type of unum from unsigned int to
4447 unsigned HOST_WIDE_INT. Perform negation in unsigned HOST_WIDE_INT
4448 type.
4449
4450 2018-04-17 Jim Wilson <jimw@sifive.com>
4451
4452 PR 84856
4453 * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
4454 RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
4455 Set arg_pointer_offset after using pretend_args_size.
4456
4457 2018-04-17 Jakub Jelinek <jakub@redhat.com>
4458
4459 PR rtl-optimization/85431
4460 * dse.c (record_store): Ignore zero width stores.
4461
4462 PR sanitizer/85230
4463 * asan.c (handle_builtin_stack_restore): Adjust comment. Emit
4464 __asan_allocas_unpoison call and last_alloca_addr = new_sp before
4465 __builtin_stack_restore rather than after it.
4466 * builtins.c (expand_asan_emit_allocas_unpoison): Pass
4467 arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
4468 argument instead of virtual_dynamic_stack_rtx.
4469
4470 2018-04-17 Kelvin Nilsen <kelvin@gcc.gnu.org>
4471
4472 * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
4473 New prototype.
4474 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
4475 Add note to error message to explain internal mapping of overloaded
4476 built-in function name to non-overloaded built-in function name.
4477 * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
4478 function.
4479
4480 2018-04-17 Michael Meissner <meissner@linux.vnet.ibm.com>
4481
4482 PR target/85424
4483 * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
4484 where the inputs overlap with the output.
4485
4486 2018-04-17 Jakub Jelinek <jakub@redhat.com>
4487
4488 * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
4489 (=v, v) alternative and explicit "memory" attribute.
4490 (vec_extract_lo_<mode><mask_name>): Likewise. Also add
4491 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
4492 attributes.
4493 (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
4494 "sselog1" type instead of "sselog".
4495 (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
4496 "sselog". Remove explicit "memory" attribute.
4497 (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
4498 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
4499 attributes.
4500 (vec_extract_hi_v32hi): Merge all alternatives into one, use
4501 "sselog1" type instead of "sselog". Remove explicit "memory"
4502 attribute.
4503 (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
4504 use "sselog1" type instead of "sselog". Remove explicit "memory"
4505 attribute.
4506 (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
4507 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
4508 attributes.
4509 (vec_extract_hi_v64qi): Merge all alternatives into one, use
4510 "sselog1" type instead of "sselog". Remove explicit "memory"
4511 attribute.
4512 (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
4513 use "sselog1" type instead of "sselog". Remove explicit "memory"
4514 attribute.
4515
4516 PR target/85430
4517 * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
4518
4519 PR middle-end/85414
4520 * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
4521 on a SUBREG.
4522
4523 2018-04-17 Martin Jambor <mjambor@suse.cz>
4524
4525 PR ipa/85421
4526 * ipa-cp.c (create_specialized_node): Call
4527 expand_all_artificial_thunks if necessary.
4528
4529 2018-04-17 Martin Liska <mliska@suse.cz>
4530
4531 PR lto/85405
4532 * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
4533 in message, remote space in between '_G' and '('.
4534
4535 2018-04-17 Jakub Jelinek <jakub@redhat.com>
4536
4537 PR target/85281
4538 * config/i386/sse.md (reduces<mode><mask_scalar_name>,
4539 avx512f_vmcmp<mode>3<round_saeonly_name>,
4540 avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
4541 avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
4542 avx512f_rndscale<mode><round_saeonly_name>,
4543 avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
4544 avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
4545 Use %<iptr>2 instead of %2 for -masm=intel.
4546 (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
4547 avx512f_vcvttss2usi<round_saeonly_name>,
4548 avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
4549 -masm=intel.
4550 (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
4551 avx512f_vcvttsd2usi<round_saeonly_name>,
4552 avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
4553 Use %q1 instead of %1 for -masm=intel.
4554 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
4555 avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
4556 of %3 for -masm=intel.
4557 (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
4558 -masm=intel.
4559 (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
4560 -masm=intel.
4561 (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
4562 -masm=intel.
4563 (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
4564 %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
4565 %g1.
4566 (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
4567 -masm=intel.
4568 (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
4569 %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
4570 %g1 and one with %0 and %1.
4571 (avx512er_vmrcp28<mode><round_saeonly_name>,
4572 avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
4573 %1 for -masm=intel.
4574 (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
4575 avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
4576 avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
4577 of %0 and %{%4%} for -masm=intel.
4578 (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
4579 avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
4580 avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
4581 order of %0 and %{%5%}%{z%} for -masm=intel.
4582
4583 2018-04-17 Jan Hubicka <jh@suse.cz>
4584
4585 PR lto/85405
4586 * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
4587
4588 2018-04-17 Martin Liska <mliska@suse.cz>
4589
4590 PR ipa/85329
4591 * multiple_target.c (create_dispatcher_calls): Set apostrophes
4592 for target_clone error message. Make default implementation
4593 clone to be a local declaration.
4594 (separate_attrs): Add new argument and check for an empty
4595 string.
4596 (expand_target_clones): Handle it.
4597 (ipa_target_clone): Make redirection just for target_clones
4598 functions.
4599
4600 2018-04-16 Cesar Philippidis <cesar@codesourcery.com>
4601 Tom de Vries <tom@codesourcery.com>
4602
4603 PR middle-end/84955
4604 * omp-expand.c (expand_oacc_for): Add dummy false branch for
4605 tiled basic blocks without omp continue statements.
4606
4607 2018-04-16 Aaron Sawdey <acsawdey@linux.ibm.com>
4608
4609 PR target/83660
4610 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
4611 vec_extract expression as having side effects to make sure it gets
4612 a cleanup point.
4613
4614 2018-04-16 H.J. Lu <hongjiu.lu@intel.com>
4615
4616 PR target/85403
4617 * config/i386/i386.c (get_builtin_code_for_version): Check
4618 error_mark_node.
4619
4620 2018-04-16 Olga Makhotina <olga.makhotina@intel.com>
4621
4622 PR target/84331
4623 * gcc/config.gcc: Support "skylake".
4624 * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
4625 PROCESSOR_SKYLAKE.
4626 * gcc/config/i386/i386.c (m_SKYLAKE): Define.
4627 (processor_target_table): Add "skylake".
4628 (ix86_option_override_internal): Add "skylake".
4629 (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
4630 PROCESSOR_CANNONLAKE.
4631 (get_builtin_code_for_version): Fix priority for
4632 PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
4633 PROCESSOR_SKYLAKE-AVX512.
4634 * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
4635 (processor_type): Add PROCESSOR_SKYLAKE.
4636
4637 2018-04-16 Paolo Carlini <paolo.carlini@oracle.com>
4638 Jason Merrill <jason@redhat.com>
4639
4640 PR c++/85112
4641 * convert.c (convert_to_integer_1): Use direct recursion for
4642 enumeral types and types with a precision less than the number
4643 of bits in their mode.
4644
4645 2018-04-16 Julia Koval <julia.koval@intel.com>
4646
4647 PR target/84413
4648 * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
4649 X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
4650
4651 2018-04-14 Segher Boessenkool <segher@kernel.crashing.org>
4652
4653 PR target/85293
4654 * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
4655 * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
4656 and -mno-direct-move.
4657
4658 2018-04-13 Paul A. Clarke <pc@us.ibm.com>
4659
4660 PR target/83402
4661 * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
4662 Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
4663 Ensure negative shifts result in {0}.
4664
4665 2018-04-13 Vladimir Makarov <vmakarov@redhat.com>
4666
4667 PR rtl-optimization/79916
4668 * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
4669 regs (if any) to define how to gnerate SD moves when LRA is in
4670 progress.
4671
4672 2018-04-13 Jakub Jelinek <jakub@redhat.com>
4673
4674 PR rtl-optimization/85393
4675 * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
4676 * except.c (expand_dw2_landing_pad_for_region): Make static.
4677 * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
4678 a label and unconditional jump to old_bb, rather than
4679 expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
4680 basic block.
4681
4682 PR rtl-optimization/85376
4683 * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
4684 zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
4685 instead of a specific value.
4686
4687 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
4688 Bin Cheng <bin.cheng@arm.com>
4689
4690 PR tree-optimization/82965
4691 PR tree-optimization/83991
4692 * cfgloopanal.c (expected_loop_iterations_unbounded): Add
4693 by_profile_only parameter.
4694 * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
4695 information if the loop was predicted to iterate too many times.
4696 * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
4697
4698 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
4699
4700 PR lto/71991
4701 * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
4702 always inline.
4703
4704 2018-04-13 Martin Liska <mliska@suse.cz>
4705 Jakub Jelinek <jakub@redhat.com>
4706
4707 PR middle-end/81657
4708 * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
4709 * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
4710 * builtins.c (expand_builtin_memory_copy_args): Use
4711 BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
4712 handle dest_addr == pc_rtx.
4713
4714 2018-04-12 Segher Boessenkool <segher@kernel.crashing.org>
4715
4716 PR target/85291
4717 * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
4718 asked to not generate direct moves.
4719 (fix_trunc<mode>si2_stfiwx): Similar.
4720 (fix_trunc<mode>si2_internal): Similar.
4721
4722 2018-04-12 Jakub Jelinek <jakub@redhat.com>
4723
4724 PR debug/83157
4725 * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
4726 * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
4727 lookup if dest in some wider mode is known to be const0_rtx and
4728 if so, record permanent equivalence for it to be ZERO_EXTEND of
4729 the narrower mode destination.
4730
4731 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
4732
4733 * lto-streamer-out.c (output_function): Revert 259346.
4734 * omp-expand.c (expand_oacc_for): Likewise.
4735
4736 2018-04-12 Alexander Monakov <amonakov@ispras.ru>
4737
4738 PR rtl-optimization/85354
4739 * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
4740 * sel-sched.c (sel_global_init): ... here.
4741
4742 2018-04-12 Eric Botcazou <ebotcazou@adacore.com>
4743
4744 PR target/85238
4745 * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
4746 * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
4747 mode for PE-COFF targets.
4748 * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
4749 (i386_pe_asm_lto_end): Likewise.
4750 * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
4751 (TARGET_ASM_LTO_END): Likewise.
4752 * config/i386/winnt.c (saved_debug_info_level): New static variable.
4753 (i386_pe_asm_lto_start): New function.
4754 (i386_pe_asm_lto_end): Likewise.
4755
4756 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
4757 Richard Biener <rguenther@suse.de>
4758
4759 PR middle-end/84955
4760 * lto-streamer-out.c (output_function): Fix CFG loop state before
4761 streaming out.
4762 * omp-expand.c (expand_oacc_for): Handle calls to internal
4763 functions like regular functions.
4764
4765 2018-04-12 Richard Biener <rguenther@suse.de>
4766
4767 PR lto/85371
4768 * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
4769 for the early LTO debug to properly generate references to it
4770 during DIE emission. Do not re-use that for the skeleton for
4771 split-dwarf.
4772 (dwarf2out_early_finish): Likewise.
4773
4774 2018-04-12 Jakub Jelinek <jakub@redhat.com>
4775
4776 PR target/85328
4777 * config/i386/sse.md
4778 (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
4779 <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
4780 vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
4781 vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
4782 and output is a reg, avoid creating invalid lowpart subreg, but
4783 instead split into a 512-bit move. Don't split if not AVX512VL,
4784 input is xmm16+ reg and output is a mem.
4785 (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
4786 vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
4787 xmm16+ reg and output is a mem.
4788
4789 2018-04-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
4790
4791 * config/s390/s390.c (s390_output_indirect_thunk_function): Check
4792 also for flag_dwarf2_cfi_asm.
4793
4794 2018-04-12 Jakub Jelinek <jakub@redhat.com>
4795
4796 PR rtl-optimization/85342
4797 * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
4798 a bool scalar var inside of the loop instead. Don't try to update
4799 recog_data.operand after failed apply_change_group.
4800
4801 2018-04-12 Tom de Vries <tom@codesourcery.com>
4802
4803 PR target/85296
4804 * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
4805 (nvptx_assemble_decl_begin): Add undefined param. Declare undefined
4806 array with flexible array member as array without given dimension.
4807 (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
4808 argument for undefined param to true.
4809
4810 2018-04-11 Aaron Sawdey <acsawdey@linux.ibm.com>
4811
4812 PR target/85321
4813 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
4814 -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
4815 from PowerPC section.
4816 * config/rs6000/sysv4.opt (mcall-): Improve help text.
4817 * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
4818 help text that is too long.
4819 * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
4820 help text that is too long.
4821 * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
4822 help text that is too long.
4823
4824 2018-04-11 Uros Bizjak <ubizjak@gmail.com>
4825
4826 * config/alpha/alpha.md (stack_probe_internal): Rename
4827 from "probe_stack". Update all callers.
4828
4829 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
4830
4831 PR rtl-optimization/84566
4832 * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
4833 sched_macro_fuse_insns.
4834
4835 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
4836
4837 PR target/84301
4838 * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
4839 (compute_block_dependences): ... from here.
4840
4841 2018-04-11 Jakub Jelinek <jakub@redhat.com>
4842
4843 PR tree-optimization/85331
4844 * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
4845 from int to HOST_WIDE_INT.
4846
4847 2018-04-11 Martin Jambor <mjambor@suse.cz>
4848
4849 PR ipa/84149
4850 * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
4851 (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
4852 not the same as the source val.
4853 (cgraph_edge_brings_value_p): New parameter.
4854 (gather_edges_for_value): Pass destination value to
4855 cgraph_edge_brings_value_p.
4856 (perhaps_add_new_callers): Likewise.
4857 (get_info_about_necessary_edges): Likewise and exclude values brought
4858 only by self-recursive edges.
4859 (create_specialized_node): Redirect only clones of self-calling edges.
4860 (+self_recursive_pass_through_p): New function.
4861 (find_more_scalar_values_for_callers_subset): Use it.
4862 (find_aggregate_values_for_callers_subset): Likewise.
4863 (known_aggs_to_agg_replacement_list): Removed.
4864 (decide_whether_version_node): Re-calculate known constants for all
4865 remaining context clones.
4866
4867 2018-04-11 Richard Biener <rguenther@suse.de>
4868
4869 PR lto/85339
4870 * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
4871 from early DWARF output.
4872 (dwarf2out_early_finish): Output line info unconditionally into
4873 early DWARF and add reference to it.
4874
4875 2018-04-11 Jakub Jelinek <jakub@redhat.com>
4876
4877 PR target/85281
4878 * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
4879 (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
4880 other than V2DFmode using iptr mode attribute.
4881 (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
4882
4883 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
4884
4885 PR rtl-optimization/84659
4886 * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
4887
4888 2018-04-11 Jakub Jelinek <jakub@redhat.com>
4889
4890 PR debug/85302
4891 * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
4892 SIZEP is NULL.
4893 (output_loc_list): Pass address of a dummy size variable even in the
4894 locview handling loop.
4895 (index_location_lists): Add comment on why skip_loc_list_entry can't
4896 call size_of_locs.
4897
4898 2018-04-11 Thomas Preud'homme <thomas.preudhomme@arm.com>
4899
4900 PR target/85261
4901 * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
4902 into register.
4903
4904 2018-04-10 Aaron Sawdey <acsawdey@linux.ibm.com>
4905
4906 PR target/85321
4907 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
4908 -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
4909 and -mstring-compare-inline-limit.
4910
4911 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
4912
4913 PR target/85287
4914 * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
4915 for stack clash protection in a register whenever we need it to be in
4916 a register.
4917
4918 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
4919
4920 * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
4921 Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
4922
4923 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
4924
4925 PR target/85321
4926 * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
4927 the help text.
4928 (mlong-double-): Ditto.
4929 * config/rs6000/sysv4.opt (msdata=): Ditto.
4930 (mtls-size=): Ditto.
4931
4932 2018-04-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
4933
4934 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
4935 erroneous entries for
4936 "vector int vec_ldl (int, long int *)", and
4937 "vector unsigned int vec_ldl (int, unsigned long int *)".
4938 Add comments and entries for
4939 "vector bool char vec_ldl (int, bool char *)",
4940 "vector bool short vec_ldl (int, bool short *)",
4941 "vector bool int vec_ldl (int, bool int *)",
4942 "vector bool long long vec_ldl (int, bool long long *)",
4943 "vector pixel vec_ldl (int, pixel *)",
4944 "vector long long vec_ldl (int, long long *)",
4945 "vector unsigned long long vec_ldl (int, unsigned long long *)".
4946 * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
4947 type tree bool_long_long_type_node and correct definition of
4948 bool_V2DI_type_node to make reference to this new type tree.
4949 (rs6000_mangle_type): Replace erroneous reference to
4950 bool_long_type_node with bool_long_long_type_node.
4951 * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
4952 comments to emphasize sign distinctions for char and int types and
4953 replace RS6000_BTI_bool_long constant with
4954 RS6000_BTI_bool_long_long constant. Also add comment to restrict
4955 use of RS6000_BTI_pixel.
4956 (bool_long_type_node): Remove this macro definition.
4957 (bool_long_long_type_node): New macro definition
4958
4959 2018-04-10 Jakub Jelinek <jakub@redhat.com>
4960
4961 PR rtl-optimization/85300
4962 * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
4963 into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
4964 simplify_unary_operation fails.
4965
4966 2018-04-10 Martin Liska <mliska@suse.cz>
4967
4968 * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
4969 cgraph_edge and ipa_ref.
4970
4971 2018-04-10 Jakub Jelinek <jakub@redhat.com>
4972
4973 PR target/85177
4974 PR target/85255
4975 * config/i386/sse.md
4976 (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
4977 computation of the VEC_MERGE selector from mask.
4978 (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
4979 Fix decoding of the VEC_MERGE selector into mask.
4980
4981 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
4982
4983 PR tree-optimization/85286
4984 * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
4985
4986 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
4987
4988 * final.c (final_1): Set insn_last_address as well as
4989 insn_current_address.
4990
4991 2018-04-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4992
4993 PR target/85173
4994 * explow.c (emit_stack_probe): Call validize_mem on memory location
4995 before passing it to gen_probe_stack. Create address operand and
4996 legitimize it for the probe_stack_address case.
4997
4998 2018-04-09 Jan Hubicka <jh@suse.cz>
4999
5000 PR lto/85078
5001 * ipa-devirt.c (rebuild_type_inheritance-hash): New.
5002 * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
5003 * tree.c (free_lang_data_in_type): Fix handling of binfos;
5004 walk basetypes.
5005 (free_lang_data): Rebuild type inheritance graph.
5006
5007 2018-04-09 Martin Sebor <msebor@redhat.com>
5008
5009 * invoke.texi (-finline-small-functions): Mention other optimization
5010 options.
5011 (-findirect-inlining, -fpartial-inlining): Same.
5012 (-finline-functions-called-once): Same.
5013 (-freorder-blocks-and-partition): Same.
5014
5015 2018-04-09 Jan Hubicka <jh@suse.cz>
5016
5017 PR rtl/84058
5018 * cfgcleanup.c (try_forward_edges): Do not give up on crossing
5019 jumps; choose last target that matches the criteria (i.e.
5020 no partition changes for non-crossing jumps).
5021 * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
5022 support for redirecting crossing jumps to non-crossing.
5023
5024 2018-04-09 Alexey Brodkin <abrodkin@synopsys.com>
5025
5026 * config/arc/arc.c (arc_expand_prologue): Set stack usage info
5027 also for naked functions.
5028
5029 2018-04-09 Claudiu Zissulescu <claziss@synopsys.com>
5030
5031 * config/arc/arc.md (add_shift): New pattern.
5032 (add_shift2): Likewise.
5033 (sub_shift): Likewise.
5034 (sub_shift_cmp0_noout): Likewise.
5035 (compare_si_ashiftsi): Likewise.
5036 (xbfu_cmp0_noout): New combine pattern.
5037 (xbfu_cmp0"): Likewise.
5038 (movsi_set_cc_insn): Place the predicable variant first.
5039 (commutative_binary_cmp0_noout): Remove clobber.
5040 (commutative_binary_cmp0): New pattern.
5041 (noncommutative_binary_cmp0): Likewise.
5042 (noncommutative_binary_cmp0_noout): Likewise.
5043 (noncommutative_binary_comparison_result_used): Removed.
5044 (rsub_cmp0): New pattern.
5045 (rsub_cmp0_noout): Likewise.
5046 (extzvsi): Changed, keep only meaningful variants.
5047 (SQH, SEZ): New iterators.
5048 (SQH_postfix): New mode attribute.
5049 (SEZ_prefix): New code attribute.
5050 (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
5051 (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
5052 * config/arc/predicates.md (cc_set_register): Use CC_REG instead
5053 of numerical value.
5054 (noncommutative_operator): Check the availability of barrel
5055 shifter option.
5056
5057 2018-04-09 Richard Biener <rguenther@suse.de>
5058
5059 PR tree-optimization/85284
5060 * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
5061 Only use the niter constraining form of simple_iv when the exit
5062 is always executed.
5063
5064 2018-04-09 Tom de Vries <tom@codesourcery.com>
5065
5066 PR target/84041
5067 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
5068 (define_expand "*memory_barrier"): New define_expand.
5069 (define_insn "memory_barrier"): New insn.
5070
5071 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
5072
5073 PR rtl-optimization/80463
5074 PR rtl-optimization/83972
5075 PR rtl-optimization/83480
5076
5077 * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
5078 correct producer for the insn.
5079 (tidy_control_flow): Fixup seqnos in case of debug insns.
5080
5081 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
5082
5083 PR rtl-optimization/83913
5084
5085 * sel-sched-ir.c (merge_expr_data): Choose the middle between two
5086 different sched-times when merging exprs.
5087
5088 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
5089
5090 PR rtl-optimization/83962
5091
5092 * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
5093 tidy_fallthru_edge and tidy_control_flow.
5094
5095 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
5096
5097 PR rtl-optimization/83530
5098
5099 * sel-sched.c (force_next_insn): New global variable.
5100 (remove_insn_for_debug): When force_next_insn is true, also leave only
5101 next insn in the ready list.
5102 (sel_sched_region): When the region wasn't scheduled, make another pass
5103 over it with force_next_insn set to 1.
5104
5105 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
5106
5107 * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
5108 into tm_file.
5109 * config/nds32/constants.md (unspec_volatile_element): Add enum values
5110 for interrupt control.
5111 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
5112 functions for interrupt control.
5113 * config/nds32/nds32-intrinsic.md: Likewise.
5114 * config/nds32/nds32_intrinsic.h: Likewise.
5115 * config/nds32/nds32.h (nds32_builtins): Likewise.
5116
5117 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
5118
5119 * config/nds32/nds32.c (nds32_init_machine_status,
5120 nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
5121 strict_aligned_p field.
5122 (nds32_expand_to_rtl_hook): New function.
5123 (TARGET_EXPAND_TO_RTL_HOOK): Define.
5124 * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
5125
5126 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
5127 Chung-Ju Wu <jasonwucj@gmail.com>
5128
5129 * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
5130 * config/nds32/nds32-n7.md: New file.
5131 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
5132 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
5133 pipeline.
5134 * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
5135 * config/nds32/nds32.md (pipeline_model): Add n7.
5136 * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
5137 * config/nds32/pipelines.md: Include n7 settings.
5138
5139 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
5140 Chung-Ju Wu <jasonwucj@gmail.com>
5141
5142 * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
5143 * config/nds32/nds32-e8.md: New file.
5144 * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
5145 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
5146 pipeline.
5147 * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
5148 * config/nds32/nds32.md (pipeline_model): Add e8.
5149 * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
5150 * config/nds32/pipelines.md: Include e8 settings.
5151
5152 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
5153 Chung-Ju Wu <jasonwucj@gmail.com>
5154
5155 * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
5156 * config/nds32/nds32-n8.md: New file.
5157 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
5158 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
5159 pipeline.
5160 * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
5161 * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
5162 * config/nds32/nds32.md (pipeline_model): Add n8.
5163 * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
5164 * config/nds32/pipelines.md: Include n8 settings.
5165
5166 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
5167 Chung-Ju Wu <jasonwucj@gmail.com>
5168
5169 * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
5170 * config/nds32/nds32-n9-2r1w.md: New file.
5171 * config/nds32/nds32-n9-3r2w.md: New file.
5172 * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
5173 nds32_register_ports): New or modify for cpu n9.
5174 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
5175 pipeline.
5176 * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
5177 * config/nds32/nds32-utils.c: New file.
5178 * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
5179 TARGET_MUL_SLOW): Define.
5180 * config/nds32/nds32.md (pipeline_model): New attribute.
5181 * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
5182 New options that support cpu n9.
5183 * config/nds32/pipelines.md: Include n9 settings.
5184 * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
5185
5186 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
5187
5188 * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
5189 information if necessary.
5190 (output_cond_branch_compare_zero): Likewise.
5191 * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
5192 (nds32_target_alignment): Refine for alignment.
5193 * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
5194 (FUNCTION_BOUNDARY): Modify.
5195 * config/nds32/nds32.md (call_internal, call_value_internal): Consider
5196 align case.
5197 * config/nds32/nds32.opt (malways-align, malign-functions): New.
5198
5199 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
5200
5201 * config/nds32/constants.md (unspec_volatile_element): Add values for
5202 TLB operation and data prefetch.
5203 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
5204 functions for TLB operation and data prefetch.
5205 * config/nds32/nds32-intrinsic.md: Likewise.
5206 * config/nds32/nds32_intrinsic.h: Likewise.
5207 * config/nds32/nds32.c (nds32_dpref_names): Likewise.
5208 (nds32_print_operand): Likewise.
5209 * config/nds32/nds32.h (nds32_builtins): Likewise.
5210
5211 2018-04-07 Thomas Koenig <tkoenig@gcc.gnu.org>
5212 Andrew Pinski <pinsika@gcc.gnu.org>
5213
5214 PR middle-end/82976
5215 * match.pd: Use constant_boolean_node of correct type instead of
5216 boolean_true_node or boolean_false_node for simplifying
5217 pointer comparisons to zero.
5218
5219 2018-04-07 Jakub Jelinek <jakub@redhat.com>
5220
5221 PR tree-optimization/80021
5222 * tree.c (verify_type_variant): Make error call in verify_variant_match
5223 translatable and remove final full stop.
5224
5225 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
5226
5227 * config/nds32/constants.md (unspec_volatile_element): Add
5228 UNSPEC_VOLATILE_EH_RETURN.
5229 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
5230 nds32_output_stack_pop): Support dwarf exception handling process.
5231 * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
5232 * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
5233 exception handling process.
5234 (nds32_compute_stack_frame): Likewise.
5235 (nds32_return_addr_rtx): Likewise.
5236 (nds32_initial_elimination_offset): Likewise.
5237 (nds32_expand_prologue): Likewise.
5238 (nds32_expand_epilogue): Likewise.
5239 (nds32_dynamic_chain_address): New function.
5240 * config/nds32/nds32.h (machine_function): Add fields for dwarf
5241 exception handling.
5242 (DYNAMIC_CHAIN_ADDRESS): Define.
5243 (EH_RETURN_DATA_REGNO): Define.
5244 (EH_RETURN_STACKADJ_RTX): Define.
5245 * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
5246 patterns for dwarf exception handling.
5247
5248 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
5249
5250 * config/nds32/nds32.h: Clean up obsolete macros.
5251
5252 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
5253
5254 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
5255 Add enum values for particular instructions.
5256 * config/nds32/nds32-intrinsic.c: Implementation of expanding
5257 particular intrinsic functions.
5258 * config/nds32/nds32-intrinsic.md: Likewise.
5259 * config/nds32/nds32_intrinsic.h: Likewise.
5260 * config/nds32/nds32.h (nds32_builtins): Likewise.
5261 * config/nds32/nds32.md (type): Add pbsad and pbsada.
5262 (btst, ave): New patterns for particular instructions.
5263
5264 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
5265
5266 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
5267 Add enum values for atomic load/store and memory sync.
5268 * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
5269 and memory sync.
5270 * config/nds32/nds32-intrinsic.md: Likewise.
5271 * config/nds32/nds32_intrinsic.h: Likewise.
5272 * config/nds32/nds32.h (nds32_builtins): Likewise.
5273
5274 2018-04-07 Jakub Jelinek <jakub@redhat.com>
5275
5276 PR tree-optimization/85257
5277 * fold-const.c (native_encode_vector): If not all elts could fit
5278 and off is -1, return 0 rather than offset.
5279 * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
5280 (offseti - offset2) / BITS_PER_UNIT as 4th argument to
5281 native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't
5282 adjust buffer in native_interpret_expr call.
5283
5284 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
5285
5286 * config/nds32/constants.md (unspec_volatile_element): Add cache
5287 control enum values.
5288 * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
5289 * config/nds32/nds32-intrinsic.md: Add cache control patterns.
5290 * config/nds32/nds32.c (nds32_cctl_names): New.
5291 (nds32_print_operand): Handle cache control register names.
5292 * config/nds32/nds32.h (nds32_builtins): New enum values.
5293 * config/nds32/nds32_intrinsic.h: Add cache control enum types and
5294 macros.
5295 * config/nds32/nds32.md (type): Add mmu.
5296 * config/nds32/pipelines.md (simple_insn): Add mmu.
5297
5298 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
5299
5300 * config/nds32/nds32.md (type): Remove call.
5301 * config/nds32/pipelines.md (simple_insn): Likewise.
5302
5303 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
5304
5305 * config/nds32/constants.md (unspec_volatile_element): Add
5306 UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
5307 UNSPEC_VOLATILE_FMFCFG.
5308 * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
5309 description for fmfcfg and fmfcsr.
5310 (bdesc_1arg): Add fmtcsr.
5311 (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
5312 (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
5313 * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
5314 unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
5315 unspec_fmfcfg): New patterns.
5316 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
5317 NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
5318 NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
5319 * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
5320 __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
5321 __nds32__fmfcfg): Define.
5322
5323 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
5324
5325 * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
5326 intrinsic register names.
5327 * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
5328 intrinsic register enum values and macros.
5329
5330 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
5331
5332 * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
5333 for load/store addressing form.
5334 (nds32_print_operand_address): Likewise.
5335
5336 2018-04-06 Eric Botcazou <ebotcazou@adacore.com>
5337
5338 PR target/85196
5339 * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
5340 based on LABEL_REF. Remove useless assertion.
5341 (pic_address_needs_scratch): Fix formatting.
5342 (sparc_legitimize_pic_address): Minor tweaks.
5343 (sparc_delegitimize_address): Adjust assertion accordingly.
5344 * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
5345 into symbolic_operand.
5346 (movsi_high_pic_label_ref): Likewise.
5347 (movsi_lo_sum_pic_label_ref): Likewise.
5348 (movdi_pic_label_ref): Likewise.
5349 (movdi_high_pic_label_ref): Likewise.
5350 (movdi_lo_sum_pic_label_ref): Likewise.
5351
5352 2018-04-06 Amaan Cheval <amaan.cheval@gmail.com>
5353
5354 * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
5355 custom LIB_SPEC setup.
5356
5357 2018-04-06 Ruslan Bukin <br@bsdpad.com>
5358 Kito Cheng <kito.cheng@gmail.com>
5359
5360 * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
5361 * config/riscv/freebsd.h: New.
5362
5363 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
5364
5365 * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
5366 * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
5367 file.
5368
5369 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
5370 Kito Cheng <kito.cheng@gmail.com>
5371
5372 * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
5373 nds32_output_call, nds32_symbol_binds_local_p): New functions.
5374 * config/nds32/nds32-protos.h (nds32_output_call,
5375 nds32_output_return): Declare.
5376 * config/nds32/nds32.md: Refine all the call and return patterns.
5377
5378 2018-04-06 Jakub Jelinek <jakub@redhat.com>
5379
5380 PR debug/85252
5381 * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
5382 build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
5383
5384 PR rtl-optimization/84872
5385 * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
5386 nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
5387 EDGE_CROSSING edge.
5388
5389 2018-04-06 Tamar Christina <tamar.christina@arm.com>
5390
5391 * expr.c (copy_blkmode_to_reg): Revert 254862.
5392 * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
5393
5394 2018-04-06 Richard Biener <rguenther@suse.de>
5395
5396 PR middle-end/85244
5397 * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
5398 after seeing a component reference with an adjacent field. Treat
5399 refs to arrays at struct end of external decls similar to
5400 refs to unconstrained commons.
5401
5402 2018-04-06 Jakub Jelinek <jakub@redhat.com>
5403
5404 PR sanitizer/85213
5405 * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
5406 look through SAVE_EXPRs with non-side-effects argument. Adjust
5407 recursive calls.
5408 (fold_comparison): Adjust twoval_comparison_p caller, don't handle
5409 save_p here.
5410
5411 2018-04-06 Richard Biener <rguenther@suse.de>
5412
5413 PR middle-end/85180
5414 * alias.c (find_base_term): New wrapper around find_base_term
5415 unwinding CSELIB_VAL_PTR changes.
5416 (find_base_term): Do not restore CSELIB_VAL_PTR during the
5417 recursion.
5418
5419 2018-04-06 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
5420
5421 * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
5422 instructions.
5423 * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
5424 constant definitions.
5425 ("nop"): lr 0,0 -> nopr r0
5426 ("nop_lr0", "nop_lr1"): New insn definitions.
5427
5428 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
5429
5430 * config/nds32/nds32.md (*stack_push, *stack_pop): Use
5431 NDS32_V3PUSH_AVAILABLE_P macro.
5432
5433 2018-04-06 Monk Chiang <sh.chiang04@gmail.com>
5434 Chung-Ju Wu <jasonwucj@gmail.com>
5435
5436 * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
5437 (nds32*-*-*): Add float and fpu_config into supported_defaults.
5438 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
5439 Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
5440 * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
5441 UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
5442 * config/nds32/constraints.md: New constraints and checking for hard
5443 float configuration.
5444 * config/nds32/iterators.md: New mode iterator and attribute for hard
5445 float configuration.
5446 * config/nds32/nds32-doubleword.md: Use hard float alternatives and
5447 patterns.
5448 * config/nds32/nds32-fpu.md: New file.
5449 * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
5450 deal with hard float code generation.
5451 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
5452 ARCH_V3S.
5453 (abi_type, float_reg_number): New enum type.
5454 * config/nds32/nds32-predicates.c: New predicates for hard float.
5455 * config/nds32/nds32-protos.h: Declare functions for hard float.
5456 * config/nds32/nds32.c: Implementation for hard float configuration.
5457 * config/nds32/nds32.h: Definitions for hard float configuration.
5458 * config/nds32/nds32.md: Include hard float machine description and
5459 modify patterns for hard float configuration.
5460 * config/nds32/nds32.opt: New options for hard float configuration.
5461 * config/nds32/predicates.md: New predicates for hard float
5462 configuration.
5463
5464 2018-04-06 Kuan-Lin Chen <kuanlinchentw@gmail.com>
5465
5466 * common/config/nds32/nds32-common.c
5467 (nds32_option_optimization_table): Enable -mreleax-hint by default.
5468
5469 2018-04-05 Jakub Jelinek <jakub@redhat.com>
5470
5471 PR middle-end/85195
5472 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
5473 CONSTRUCTOR_ELT (ctor, ...)->value.
5474
5475 2018-04-05 Uros Bizjak <ubizjak@gmail.com>
5476
5477 PR target/85193
5478 * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
5479
5480 2018-04-05 Tom de Vries <tom@codesourcery.com>
5481
5482 PR target/85204
5483 * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
5484 cond jump.
5485
5486 2018-04-05 Shiva Chen <shiva0217@gmail.com>
5487 Kito Cheng <kito.cheng@gmail.com>
5488
5489 * config/nds32/constraints.md (U33): Fine-tune checking condition.
5490 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
5491 * config/nds32/nds32.h (nds32_16bit_address_type): Add
5492 ADDRESS_POST_MODIFY_LO_REG_IMM3U.
5493
5494 2018-04-05 Shiva Chen <shiva0217@gmail.com>
5495 Kito Cheng <kito.cheng@gmail.com>
5496
5497 * config/nds32/constraints.md (Ufe): New memory constraint.
5498 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
5499 nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
5500 * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
5501 operands.
5502 * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
5503 * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
5504
5505 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
5506
5507 * config/nds32/nds32.md: Use optimize_size in the condition for
5508 alu-shift instructions.
5509
5510 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
5511
5512 * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
5513
5514 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
5515
5516 * config/nds32/nds32.md (negsi2): Refine pattern.
5517
5518 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
5519 Chung-Ju Wu <jasonwucj@gmail.com>
5520
5521 * config/nds32/iterators.md (shift_rotate): New code iterator.
5522 (shift): New code attribute.
5523 * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
5524 * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
5525 * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
5526 * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
5527 bit-wise operations.
5528 (andsi3, *andsi3): Ditto.
5529 (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
5530 (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
5531 (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
5532 * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
5533 nds32_ior_operand, nds32_xor_operand): New predicates.
5534
5535 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
5536
5537 * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
5538 (addsi3, subsi3): ... this.
5539
5540 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
5541
5542 * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
5543
5544 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
5545
5546 * config/nds32/nds32.md: Adjust indention.
5547
5548 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
5549
5550 * config/nds32/nds32.md (feature): New attribute.
5551
5552 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
5553
5554 * config/nds32/nds32.md (subtype): New attribute.
5555
5556 2018-04-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
5557
5558 PR target/85203
5559 * config/arm/arm-builtins.c (arm_expand_builtin): Change
5560 expansion to perform a bitwise AND of the argument followed by a
5561 boolean negation of the result.
5562
5563 2018-04-04 Peter Bergner <bergner@vnet.ibm.com>
5564
5565 PR rtl-optimization/84878
5566 * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
5567 the basic block. Assert the use reference is not artificial and that
5568 it has an associated insn.
5569
5570 2018-04-04 Michael Matz <matz@suse.de>
5571
5572 * builtins.c (compute_objsize): Pass correct operand
5573 to array_at_struct_end_p.
5574
5575 2018-04-04 Richard Biener <rguenther@suse.de>
5576
5577 PR lto/85176
5578 * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
5579 from contexts for DINFO_LEVEL_TERSE and below.
5580
5581 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
5582
5583 * config/nds32/nds32-doubleword.md (move_<mode>): Require
5584 resiter_operand condition.
5585 * config/nds32/nds32.md (*move<mode>): Ditto.
5586
5587 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
5588 Monk Chiang <sh.chiang04@gmail.com>
5589
5590 * config/nds32/nds32.md (movmisalign<mode>): New pattern.
5591
5592 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
5593
5594 * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
5595
5596 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
5597 Kito Cheng <kito.cheng@gmail.com>
5598
5599 * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
5600 nds32_cond_code_str, output_cond_branch,
5601 output_cond_branch_compare_zero, nds32_expand_cbranch,
5602 nds32_expand_cstore, nds32_expand_movcc,
5603 nds32_output_cbranchsi4_equality_zero,
5604 nds32_output_cbranchsi4_equality_reg,
5605 nds32_output_cbranchsi4_equality_reg_or_const_int,
5606 nds32_output_cbranchsi4_greater_less_zero: New functions.
5607 * config/nds32/nds32-protos.h (nds32_expand_cbranch,
5608 nds32_expand_cstore, nds32_expand_movcc,
5609 nds32_output_cbranchsi4_equality_zero,
5610 nds32_output_cbranchsi4_equality_reg,
5611 nds32_output_cbranchsi4_equality_reg_or_const_int,
5612 nds32_output_cbranchsi4_greater_less_zero): Declare.
5613 * config/nds32/predicates.md (nds32_movecc_comparison_operator,
5614 nds32_rimm11s_operand): New predicates.
5615 * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
5616 * config/nds32/nds32.md: Rewrite all the branch and conditional move
5617 patterns.
5618
5619 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
5620
5621 * config/nds32/nds32-doubleword.md: Refine all the instruction type.
5622 * config/nds32/nds32.md: Ditto.
5623 * config/nds32/pipelines.md: Ditto.
5624
5625 2018-04-04 Richard Biener <rguenther@suse.de>
5626
5627 PR tree-optimization/85168
5628 * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
5629 propagating abnormals.
5630
5631 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
5632
5633 * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
5634
5635 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
5636 Kito Cheng <kito.cheng@gmail.com>
5637
5638 * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
5639 * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
5640 * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
5641 (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
5642 * config/nds32/nds32.md (sibcall_internal): New.
5643 (sibcall_register): Remove.
5644 (sibcall_immediate): Remove.
5645 (sibcall_value_internal): New.
5646 (sibcall_value_register): Remove.
5647 (sibcall_value_immediate): Remove.
5648 * config/nds32/predicates.md (nds32_general_register_operand): New.
5649 (nds32_call_address_operand): New.
5650
5651 2018-04-03 Jakub Jelinek <jakub@redhat.com>
5652
5653 PR rtl-optimization/85167
5654 * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
5655 bb_defs if *split_p, instead preinitialize it to NULL.
5656
5657 PR tree-optimization/85156
5658 * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
5659 evaluating the argument multiple times.
5660
5661 2018-04-03 Bill Schmidt <wschmidt@linux.ibm.com>
5662
5663 * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
5664 than vector.
5665 (_mm_cvtpd_ps): Likewise.
5666 (_mm_cvttpd_epi32): Likewise.
5667 * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
5668 * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
5669 vector, pixel, and bool following altivec.h include.
5670
5671 2018-04-03 Martin Sebor <msebor@redhat.com>
5672
5673 * doc/extend.texi (Common Function Attributes): Clarify.
5674 (const attribute): Likewise.
5675 (pure attribute): Likewise.
5676
5677 2018-04-03 Jakub Jelinek <jakub@redhat.com>
5678
5679 PR target/85169
5680 * config/i386/i386.c (ix86_expand_vector_set): Use
5681 HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix.
5682
5683 2018-04-03 Uros Bizjak <ubizjak@gmail.com>
5684
5685 * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
5686 instructions when changing rounding bits to preserve precision bits
5687 in the x87 control word.
5688
5689 2018-04-03 Martin Liska <mliska@suse.cz>
5690
5691 PR tree-optimization/82491
5692 * rtl.h (strip_offset_and_add): Replace += suboffset with
5693 poly_uint64 () + suboffset.
5694
5695 2018-03-29 Martin Liska <mliska@suse.cz>
5696 Martin Jambor <mjambor@suse.cz>
5697
5698 PR ipa/84947
5699 * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
5700 param_type is not an integral or pointer type.
5701
5702 2018-04-03 Richard Biener <rguenther@suse.de>
5703
5704 * sese.h (recompute_all_dominators): Remove.
5705
5706 2018-04-02 Martin Sebor <msebor@redhat.com>
5707
5708 * doc/invoke.texi (-Wrestrict): Fix typos.
5709
5710 2018-04-02 Jim Wilson <jimw@sifive.com>
5711
5712 * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
5713 * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
5714 (<optab>di3, <optab>si3_extend): Likewise.
5715 (<optab>si3_mask, <optab>si3_mask_1): New.
5716 (<optab>di3_mask, <optab>di3_mask_1): New.
5717 (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
5718 (lshrsi3_zero_extend_1): Use VOIDmode shift count.
5719 * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
5720
5721 2018-04-02 Gerald Pfeifer <gerald@pfeifer.com>
5722
5723 * doc/cpp.texi (Variadic Macros): Fix line continuation in an
5724 example.
5725
5726 2018-04-02 Chung-Ju Wu <jasonwucj@gmail.com>
5727
5728 * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
5729 (nds32_canonicalize_comparison): New function.
5730
5731 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
5732 Kito Cheng <kito.cheng@gmail.com>
5733 Kuan-Lin Chen <kuanlinchentw@gmail.com>
5734
5735 * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
5736 * config/nds32/constants.md (unspec_volatile_element): Add
5737 UNSPEC_VOLATILE_RELAX_GROUP.
5738 * config/nds32/nds32-relax-opt.c: New file.
5739 * config/nds32/nds32-predicates.c
5740 (nds32_symbol_load_store_p): New function.
5741 * config/nds32/nds32-protos.h
5742 (nds32_symbol_load_store_p): Declare function.
5743 (make_pass_nds32_relax_opt): Declare new rtl pass function.
5744 * config/nds32/nds32.c
5745 (nds32_register_pass): New function to register pass.
5746 (nds32_register_passes): New function to register passes.
5747 * config/nds32/nds32.md (relax_group): New pattern.
5748 * config/nds32/nds32.opt (mrelax-hint): New option.
5749 * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
5750
5751 2018-04-01 Kito Cheng <kito.cheng@gmail.com>
5752
5753 * config/nds32/t-nds32: Modify files dependency.
5754
5755 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
5756
5757 * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
5758 (PROFILE_HOOK): Define its implementation.
5759
5760 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
5761
5762 * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
5763 type and 32-bit size.
5764
5765 2018-04-01 Jakub Jelinek <jakub@redhat.com>
5766
5767 PR middle-end/85090
5768 * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
5769 (V_128_256): New mode iterator.
5770 (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
5771 (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
5772 (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
5773 of V.
5774 * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
5775 V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
5776
5777 2018-03-31 Segher Boessenkool <segher@kernel.crashing.org>
5778
5779 PR target/83315
5780 * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
5781 NaN inputs correctly.
5782
5783 2018-03-30 Peter Bergner <bergner@vnet.ibm.com>
5784
5785 PR target/80546
5786 * config/rs6000/vsx.md (??r): New mode attribute.
5787 (*vsx_mov<mode>_64bit): Use it.
5788 (*vsx_mov<mode>_32bit): Likewise.
5789
5790 2018-03-30 Martin Sebor <msebor@redhat.com>
5791
5792 PR tree-optimization/84818
5793 * builtins.c (check_access): Use warning_n.
5794
5795 2018-03-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
5796
5797 PR target/83822
5798 * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
5799 condition.
5800 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
5801 condition.
5802
5803 2018-03-30 Julia Koval <julia.koval@intel.com>
5804
5805 PR target/84413
5806 * x86-tune.def (movx, partial_reg_dependency): Enable for
5807 m_SKYLAKE_AVX512.
5808
5809 2018-03-29 Vladimir Makarov <vmakarov@redhat.com>
5810
5811 PR inline-asm/84985
5812 * lra-constraints.c (process_alt_operands): Move setting
5813 this_alternative_matches below.
5814
5815 2018-03-29 Martin Liska <mliska@suse.cz>
5816
5817 PR lto/84995.
5818 * doc/invoke.texi: Document how LTO works with debug info.
5819 Describe auto-load support of binutils. Mention 'x86-64'
5820 as valid option value of -march option.
5821
5822 2018-03-29 Jakub Jelinek <jakub@redhat.com>
5823
5824 * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
5825
5826 PR c/85094
5827 * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
5828 For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
5829 OEP_NO_HASH_CHECK for recursive call, to avoid exponential
5830 checking.
5831
5832 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
5833
5834 PR target/84912
5835 * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
5836 (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
5837 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
5838 for RS6000_BTM_POWERPC64.
5839 (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
5840 (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
5841 * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
5842 definition.
5843 (DIVDE): Use it.
5844 (DIVDEU): Likewise.
5845
5846 2018-03-28 Carl Love <cel@us.ibm.com>
5847
5848 Revert
5849 2017-09-27 Carl Love <cel@us.ibm.com>
5850
5851 * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
5852 (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
5853 * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
5854 fctiw instruction.
5855
5856 2018-03-28 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
5857
5858 * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
5859 instead of __vector bool.
5860 (_mm_max_pu8): Likewise.
5861 (_mm_min_pi16): Likewise.
5862
5863 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
5864
5865 PR target/84912
5866 * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
5867 (DIVWEUO): Likewise.
5868 (DIVDEO): Likewise.
5869 (DIVDEUO): Likewise.
5870 * config/rs6000/rs6000.c (builtin_function_type): Remove support for
5871 DIVWEUO and DIVDEUO.
5872 * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
5873 (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
5874 (div_extend): Likewise.
5875 * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
5876 builtin function.
5877 (__builtin_divweuo): Likewise.
5878 (__builtin_divdeo): Likewise.
5879 (__builtin_divdeuo): Likewise.
5880
5881 2018-03-28 Jakub Jelinek <jakub@redhat.com>
5882
5883 PR target/85095
5884 * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
5885 *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
5886
5887 PR tree-optimization/82004
5888 * gimple-match-head.c (optimize_pow_to_exp): New function.
5889 * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
5890 Don't fold to exp if optimize_pow_to_exp is false.
5891
5892 2018-03-28 Martin Liska <mliska@suse.cz>
5893
5894 PR other/84819
5895 * calls.c (initialize_argument_information): Fix trailing space.
5896 * common.opt: Fix typo and provide better explanation for
5897 -fsanitize-coverage option.
5898 * config/i386/i386.opt: Fix typo.
5899
5900 2018-03-28 Jakub Jelinek <jakub@redhat.com>
5901 Martin Liska <mliska@suse.cz>
5902
5903 PR sanitizer/85081
5904 * gimplify.c (asan_poison_variable): Don't do the check for
5905 gimplify_omp_ctxp here.
5906 (gimplify_decl_expr): Do it here.
5907 (gimplify_target_expr): Likewise.
5908
5909 2018-03-28 Martin Liska <mliska@suse.cz>
5910
5911 PR target/84988
5912 * config/i386/i386.c (ix86_function_arg_advance): Do not call
5913 chkp_type_bounds_count if MPX is not enabled.
5914
5915 2018-03-27 Chung-Ju Wu <jasonwucj@gmail.com>
5916
5917 * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
5918
5919 2018-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
5920
5921 PR target/84914
5922 * config/rs6000/rs6000.c (create_complex_muldiv): New helper
5923 function to create the function decl for complex long double
5924 multiply and divide for -mabi=ieeelongdouble.
5925 (init_float128_ieee): Call it.
5926
5927 2018-03-27 H.J. Lu <hongjiu.lu@intel.com>
5928
5929 PR target/85044
5930 * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
5931 -fcf-protection=branch -mibt.
5932 * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
5933
5934 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
5935
5936 PR target/81863
5937 * config/arm/arm.c (arm_valid_symbolic_address): Handle
5938 arm_word_relocations.
5939
5940 2018-03-27 Cesar Philippidis <cesar@codesourcery.com>
5941
5942 PR target/85056
5943 * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
5944 extern array declarations.
5945
5946 2018-03-27 Richard Biener <rguenther@suse.de>
5947
5948 PR middle-end/84067
5949 * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
5950 explicit single_use checks.
5951
5952 2018-03-27 Richard Biener <rguenther@suse.de>
5953
5954 PR tree-optimization/85082
5955 * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
5956 Valueize the VUSE.
5957
5958 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
5959
5960 * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
5961 * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
5962 Turn on fasynchronous-unwind-tables and funwind-tables.
5963
5964 2018-03-26 Uros Bizjak <ubizjak@gmail.com>
5965
5966 PR target/85073
5967 * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
5968 (*bmi_blsr_<mode>_ccz): Ditto.
5969
5970 2018-03-26 Tom de Vries <tom@codesourcery.com>
5971
5972 PR tree-optimization/85063
5973 * omp-general.c (offloading_function_p): New function. Factor out
5974 of ...
5975 * omp-offload.c (pass_omp_target_link::gate): ... here.
5976 * omp-general.h (offloading_function_p): Declare.
5977 * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
5978 with attribute omp declare target for offloading functions.
5979
5980 2018-03-24 Richard Sandiford <richard.sandiford@linaro.org>
5981
5982 PR tree-optimization/84005
5983 * tree-data-ref.h (get_base_for_alignment): Declare.
5984 * tree-data-ref.c (get_base_for_alignment_1): New function.
5985 (get_base_for_alignment): Likewise.
5986 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
5987 get_base_for_alignment to find a suitable base object, instead
5988 of always using drb->base_address.
5989
5990 2018-03-23 Jakub Jelinek <jakub@redhat.com>
5991
5992 PR inline-asm/85022
5993 * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
5994 known size by default.
5995
5996 2018-03-23 Vladimir Makarov <vmakarov@redhat.com>
5997
5998 PR inline-asm/85030
5999 * lra-constraints.c (process_alt_operands): Don't match BLKmode
6000 and non BLKmode operands.
6001
6002 2018-03-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6003
6004 PR target/85026
6005 * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
6006 Clean up attributes.
6007
6008 2018-03-23 Richard Biener <rguenther@suse.de>
6009
6010 PR debug/85020
6011 * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
6012 we are going to emit early debug for LTO.
6013
6014 2018-03-23 Jakub Jelinek <jakub@redhat.com>
6015
6016 PR inline-asm/85034
6017 * function.c (match_asm_constraints_1): Don't optimize if input
6018 doesn't satisfy general_operand predicate for output's mode.
6019
6020 PR inline-asm/85022
6021 * alias.c (write_dependence_p): Don't require for x_canonicalized
6022 non-VOIDmode if x has VOIDmode.
6023
6024 PR sanitizer/85029
6025 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
6026 just don't try to optimize it rather than assert it never happens.
6027
6028 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
6029
6030 * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
6031 macro expansions for definition of ST_INTERNAL_<mode> and
6032 LD_INTERNAL_<mode> builtins.
6033 * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
6034 Remove prototype.
6035 * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
6036 function.
6037 (altivec_expand_st_builtin): Likewise.
6038 (altivec_expand_builtin): Remove calls to deleted functions.
6039 (rs6000_address_for_altivec): Delete this function.
6040 * config/rs6000/vector.md: Remove expands for
6041 vector_altivec_load_<mode> and vector_altivec_store_<mode>.
6042
6043 2018-03-22 Sudakshina Das <sudi.das@arm.com>
6044
6045 PR target/84826
6046 * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
6047 * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
6048 re-computing once computed.
6049 (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
6050 (arm_init_machine_status): Initialize
6051 machine->static_chain_stack_bytes.
6052
6053 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
6054
6055 PR target/84760
6056 * doc/extend.texi: Add four new prototypes for vec_ld.
6057 * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
6058 definitions for more logical presentation.
6059 * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
6060 entries for V1TI variants of __builtin_altivec_ld builtin.
6061 * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
6062 handling of V1TI variant of LVX icode pattern.
6063 (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
6064 (rs6000_gimple_fold_builtin): Likewise.
6065 (altivec_init_builtins): Add code to define
6066 __builtin_altivec_lvx_v1ti function.
6067
6068 2018-03-22 Jakub Jelinek <jakub@redhat.com>
6069
6070 PR inline-asm/84941
6071 * function.c (match_asm_constraints_1): Don't do the optimization
6072 if input isn't a REG, SUBREG, MEM or constant.
6073
6074 2018-03-22 Tom de Vries <tom@codesourcery.com>
6075
6076 PR tree-optimization/84956
6077 * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
6078 bb_has_abnormal_pred.
6079
6080 2018-03-22 Jakub Jelinek <jakub@redhat.com>
6081
6082 PR sanitizer/85018
6083 * dwarf2asm.c (dw2_output_indirect_constant_1): Set
6084 DECL_INITIAL (decl) to decl at the end.
6085 * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
6086 adjust the comment.
6087
6088 2018-03-21 Joseph Myers <joseph@codesourcery.com>
6089
6090 * doc/extend.texi (__builtin_tgmath): Document when complex
6091 integer types are treated as _Complex _Float64.
6092
6093 2018-03-21 Tom de Vries <tom@codesourcery.com>
6094
6095 * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
6096
6097 2018-03-21 Jakub Jelinek <jakub@redhat.com>
6098
6099 PR tree-optimization/84960
6100 * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
6101 if it is ENTRY block, move them into single succ of ENTRY in that case.
6102
6103 2018-03-21 Richard Sandiford <richard.sandiford@linaro.org>
6104
6105 PR tree-optimization/84811
6106 * poly-int.h (poly_span_traits): Remove the T3 parameter and
6107 promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
6108 (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
6109 (known_subrange_p): Update accordingly. Cast each value involved
6110 in the size comparison, rather than casting the result of the
6111 subtraction.
6112
6113 2018-03-21 Jakub Jelinek <jakub@redhat.com>
6114
6115 PR tree-optimization/84982
6116 * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
6117 by flipping the least significant bit rather than all bits from
6118 bitpos to bitpos + bitsize - 1.
6119
6120 2018-03-21 Nathan Sidwell <nathan@acm.org>
6121
6122 * doc/extend.texi (Deprecated Features): Remove mention of
6123 long-deleted deprecations.
6124
6125 2018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
6126
6127 PR jit/84288
6128 * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
6129 * configure: Regenerate.
6130
6131 2018-03-21 Tom de Vries <tom@codesourcery.com>
6132
6133 PR tree-optimization/83126
6134 * tree-parloops.c (num_phis): New function.
6135 (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
6136
6137 2018-03-21 Nathan Sidwell <nathan@acm.org>
6138
6139 * doc/extend.texi (Deprecated Features): Update deprecated flags,
6140 mention anon-struct/union members and trailing attributes.
6141
6142 2018-03-21 Bin Cheng <bin.cheng@arm.com>
6143
6144 PR tree-optimization/84969
6145 * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
6146 builtin memset partitions if they set different rhs values.
6147
6148 2018-03-21 Jakub Jelinek <jakub@redhat.com>
6149
6150 PR rtl-optimization/84989
6151 * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
6152 VEC_DUPLICATE with scalar result mode.
6153
6154 2018-03-21 Martin Liska <mliska@suse.cz>
6155
6156 PR ipa/84963
6157 * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
6158 not intended return statement.
6159
6160 2018-03-21 Martin Liska <mliska@suse.cz>
6161
6162 PR target/84988
6163 * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
6164 (chkp_find_bound_slots_1): Limit number of iterations.
6165
6166 2018-03-20 David H. Gutteridge <dhgutteridge@sympatico.ca>
6167
6168 PR target/84838
6169 * Minor grammar fixes for x86 options.
6170
6171 2018-03-20 Jakub Jelinek <jakub@redhat.com>
6172
6173 PR debug/84875
6174 * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
6175 holding REG_CFA_RESTORE notes, instead turn them into a USE.
6176
6177 2018-03-20 Peter Bergner <bergner@vnet.ibm.com>
6178
6179 PR target/83789
6180 * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
6181 (altivec_lvx_<mode>_1op): Likewise.
6182 (altivec_stvx_<mode>_2op): Likewise.
6183 (altivec_stvx_<mode>_1op): Likewise.
6184 (altivec_lvx_<VM2:mode>): New define_expand.
6185 (altivec_stvx_<VM2:mode>): Likewise.
6186 (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
6187 (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
6188 (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
6189 (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
6190 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
6191 (rs6000_gen_lvx): Likewise.
6192 * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
6193 (altivec_expand_stv_builtin): Likewise.
6194 (altivec_expand_builtin): Likewise.
6195 * config/rs6000/vector.md: Likewise.
6196
6197 2018-03-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6198
6199 PR target/82518
6200 * config/arm/arm.c (arm_array_mode_supported_p): Return false for
6201 BYTES_BIG_ENDIAN.
6202
6203 2018-03-20 Richard Biener <rguenther@suse.de>
6204
6205 PR target/84986
6206 * config/i386/i386.c (ix86_add_stmt_cost): Only cost
6207 sign-conversions as zero, fall back to standard scalar_stmt
6208 cost for the rest.
6209
6210 2018-03-20 Martin Liska <mliska@suse.cz>
6211
6212 PR ipa/84825
6213 * predict.c (rebuild_frequencies): Handle case when we have
6214 PROFILE_ABSENT, but flag_guess_branch_prob is false.
6215
6216 2018-03-20 Jakub Jelinek <jakub@redhat.com>
6217
6218 PR target/84990
6219 * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
6220 flag_section_anchors.
6221 * varasm.c (use_blocks_for_decl_p): Remove hack for
6222 dw2_force_const_mem.
6223
6224 PR target/84845
6225 * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
6226 to ...
6227 (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this. If pseudos can't
6228 be created, use lowpart_subreg of operands[0] rather than operands[0]
6229 itself.
6230 (*aarch64_reg_<mode>3_minus_mask): Rename to ...
6231 (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
6232 (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
6233 and n constraint instead of aarch64_shift_imm_di and Usd.
6234 (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
6235 (*aarch64_<optab>_reg_minus<mode>3): ... this.
6236
6237 2018-03-20 Sudakshina Das <sudi.das@arm.com>
6238
6239 PR target/82989
6240 * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
6241 to favor GPR over NEON registers.
6242 (<shift>di3_neon): Likewise.
6243
6244 2018-03-20 Tom de Vries <tom@codesourcery.com>
6245
6246 PR target/84952
6247 * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
6248 (nvptx_process_pars): Emit bar.sync asap and alap.
6249
6250 2018-03-20 Tom de Vries <tom@codesourcery.com>
6251
6252 PR target/84954
6253 * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
6254 seen_label if seen_label is already set.
6255
6256 2018-03-20 Jakub Jelinek <jakub@redhat.com>
6257
6258 PR target/84945
6259 * config/i386/i386.c (fold_builtin_cpu): For features above 31
6260 use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
6261 Use 1U instead of 1. Formatting fixes.
6262
6263 PR c/84953
6264 * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
6265 instead of TREE_TYPE (s1) for the return value.
6266
6267 2018-03-19 Jakub Jelinek <jakub@redhat.com>
6268
6269 PR tree-optimization/84946
6270 * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
6271 bitsize + bitsize in poly_uint64 rather than poly_int64.
6272
6273 PR sanitizer/78651
6274 * dwarf2asm.c: Include fold-const.c.
6275 (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
6276 of decl rather than decl itself.
6277
6278 PR rtl-optimization/84643
6279 * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
6280
6281 2018-03-19 Maxim Ostapenko <m.ostapenko@samsung.com>
6282
6283 PR sanitizer/78651
6284 * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
6285 calling assemble_variable.
6286
6287 2018-03-19 Sudakshina Das <sudi.das@arm.com>
6288
6289 PR target/81647
6290 * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
6291 instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
6292
6293 2018-03-19 Jim Wilson <jimw@sifive.com>
6294
6295 PR bootstrap/84856
6296 * config/riscv/riscv.c (riscv_function_arg_boundary): Use
6297 PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
6298 (riscv_first_stack_step): Likewise.
6299 (riscv_option_override): Use STACK_BOUNDARY instead of
6300 MIN_STACK_BOUNDARY.
6301 * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
6302 MIN_STACK_BOUNDARY.
6303 (BIGGEST_ALIGNMENT): Set to 128.
6304 (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
6305 (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
6306 STACK_BOUNDARY.
6307
6308 2018-03-19 Richard Biener <rguenther@suse.de>
6309
6310 PR tree-optimization/84933
6311 * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
6312 values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
6313
6314 2018-03-19 Richard Biener <rguenther@suse.de>
6315
6316 PR tree-optimization/84859
6317 * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
6318 (cond_if_else_store_replacement): Perform sinking operation on
6319 single-store BBs regardless of MAX_STORES_TO_SINK setting.
6320 Generalize what a BB with a single eligible store is.
6321
6322 2018-03-19 Richard Biener <rguenther@suse.de>
6323
6324 PR tree-optimization/84929
6325 * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
6326 chrec_is_positive against non-chrec arg.
6327
6328 2018-03-19 Tamar Christina <tamar.christina@arm.com>
6329
6330 PR target/84711
6331 * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
6332
6333 2018-03-18 Martin Liska <mliska@suse.cz>
6334
6335 PR rtl-optimization/84635
6336 * regrename.c (build_def_use): Use matches_mode only when
6337 matches >= 0.
6338
6339 2018-03-18 Richard Sandiford <richard.sandiford@linaro.org>
6340
6341 PR tree-optimization/84913
6342 * tree-vect-loop.c (vectorizable_reduction): Don't try to
6343 vectorize chains of COND_EXPRs.
6344
6345 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
6346
6347 * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
6348
6349 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
6350
6351 * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
6352
6353 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
6354
6355 * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
6356
6357 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
6358 Kito Cheng <kito.cheng@gmail.com>
6359
6360 * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
6361 * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
6362 (nds32_adjust_reg_alloc_order): New function.
6363 * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
6364
6365 2018-03-17 Kito Cheng <kito.cheng@gmail.com>
6366
6367 * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
6368 nds32_print_operand, nds32_print_operand_address): Use
6369 HOST_WIDE_INT_PRINT_DEC instead.
6370
6371 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
6372
6373 * config/nds32/nds32.c (nds32_register_priority): Modify cost.
6374
6375 2018-03-17 Jakub Jelinek <jakub@redhat.com>
6376
6377 PR target/84902
6378 * config/i386/i386.c (initial_ix86_tune_features,
6379 initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
6380 unsigned long long.
6381 (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
6382 to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
6383 rather than 1u << ix86_tune. Formatting fix.
6384 (ix86_option_override_internal): Change ix86_arch_mask from
6385 unsigned int to unsigned HOST_WIDE_INT, initialize to
6386 HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
6387 (ix86_function_specific_restore): Likewise.
6388
6389 2018-03-16 Jakub Jelinek <jakub@redhat.com>
6390
6391 PR target/84899
6392 * postreload.c (reload_combine_recognize_pattern): Perform
6393 INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
6394 truncate_int_for_mode the result for the destination's mode.
6395
6396 PR c/84909
6397 * hsa-gen.c (mem_type_for_type): Fix comment typo.
6398 * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
6399 Likewise.
6400 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
6401 Likewise.
6402
6403 2018-03-16 Vladimir Makarov <vmakarov@redhat.com>
6404
6405 PR target/84876
6406 * lra-assigns.c (lra_split_hard_reg_for): Don't use
6407 regno_allocno_class_array and sorted_pseudos.
6408 * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
6409 insns where regno is used.
6410
6411 2018-03-16 Martin Liska <mliska@suse.cz>
6412
6413 PR ipa/84833
6414 * multiple_target.c (create_dispatcher_calls): Redirect
6415 reference in the symbol table.
6416
6417 2018-03-16 Martin Liska <mliska@suse.cz>
6418
6419 PR ipa/84722
6420 * multiple_target.c (create_dispatcher_calls): Redirect also
6421 an alias.
6422
6423 2018-03-16 Jakub Jelinek <jakub@redhat.com>
6424
6425 PR c++/79937
6426 PR c++/82410
6427 * tree.h (TARGET_EXPR_NO_ELIDE): Define.
6428 * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
6429 TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
6430
6431 2018-03-16 Julia Koval <julia.koval@intel.com>
6432
6433 * doc/invoke.texi (Skylake Server): Add CLWB.
6434 Cannonlake): Remove CLWB.
6435
6436 2018-03-16 Jakub Jelinek <jakub@redhat.com>
6437
6438 PR tree-optimization/84841
6439 * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
6440 1 << 3.
6441 (FLOAT_ONE_CONST_TYPE): Define.
6442 (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
6443 (sort_by_operand_rank): Put entries with higher constant_type last
6444 rather than first to match comments.
6445
6446 2018-03-15 Sandra Loosemore <sandra@codesourcery.com>
6447
6448 * config/nios2/nios2.md (movsi_internal): Fix thinko in
6449 split predicate.
6450
6451 2018-03-15 Jakub Jelinek <jakub@redhat.com>
6452
6453 PR c++/79085
6454 * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
6455 check and use address of target always.
6456
6457 2018-03-15 H.J. Lu <hongjiu.lu@intel.com>
6458
6459 PR target/84574
6460 * config/i386/i386.c (indirect_thunk_needed): Update comments.
6461 (indirect_thunk_bnd_needed): Likewise.
6462 (indirect_thunks_used): Likewise.
6463 (indirect_thunks_bnd_used): Likewise.
6464 (indirect_return_needed): New.
6465 (indirect_return_bnd_needed): Likewise.
6466 (output_indirect_thunk_function): Add a bool argument for
6467 function return.
6468 (output_indirect_thunk_function): Don't generate alias for
6469 function return thunk.
6470 (ix86_code_end): Call output_indirect_thunk_function to generate
6471 function return thunks.
6472 (ix86_output_function_return): Set indirect_return_bnd_needed
6473 and indirect_return_needed instead of indirect_thunk_bnd_needed
6474 and indirect_thunk_needed.
6475
6476 2018-03-15 Olga Makhotina <olga.makhotina@intel.com>
6477
6478 * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
6479 (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
6480 (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
6481
6482 2018-03-15 David Malcolm <dmalcolm@redhat.com>
6483 Paul Hua <paul.hua.gm@gmail.com>
6484
6485 PR c/84852
6486 * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
6487
6488 2018-03-15 Segher Boessenkool <segher@kernel.crashing.org>
6489
6490 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
6491 TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
6492 resp. SFmode cases.
6493
6494 2018-03-15 Tamar Christina <tamar.christina@arm.com>
6495
6496 PR target/84711
6497 * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
6498 instead of GET_MODE_SIZE when comparing Units.
6499
6500 2018-03-15 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
6501
6502 PR target/68256
6503 * varasm.c (hash_section): Return an unchangeble hash value
6504 * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
6505 Return !aarch64_can_use_per_function_literal_pools_p ().
6506
6507 2018-03-15 Jakub Jelinek <jakub@redhat.com>
6508
6509 PR target/84860
6510 * optabs.c (emit_conditional_move): Pass address of cmode's copy
6511 rather than address of cmode as last argument to prepare_cmp_insn.
6512
6513 2018-03-15 Julia Koval <julia.koval@intel.com>
6514
6515 * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
6516 F_AVX512VNNI, F_AVX512BITALG): New.
6517
6518 2018-03-14 John David Anglin <danglin@gcc.gnu.org>
6519
6520 PR target/83451
6521 * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload
6522 insn for floating-point loads and stores.
6523
6524 2018-03-14 Carl Love <cel@us.ibm.com>
6525
6526 * config/rs6000/rs6000-c.c: Add macro definitions for
6527 ALTIVEC_BUILTIN_VEC_PERMXOR.
6528 * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
6529 * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
6530 * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
6531 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
6532 UNSPEC_VPERMXOR.
6533 * config/doc/extend.texi: Add prototypes for vec_permxor.
6534
6535 2018-03-14 David Malcolm <dmalcolm@redhat.com>
6536
6537 PR c/84852
6538 * diagnostic-show-locus.c (class layout_point): Convert m_line
6539 from int to linenum_type.
6540 (line_span::comparator): Use linenum "compare" function when
6541 comparing line numbers.
6542 (test_line_span): New function.
6543 (layout_range::contains_point): Convert param "row" from int to
6544 linenum_type.
6545 (layout_range::intersects_line_p): Likewise.
6546 (layout::will_show_line_p): Likewise.
6547 (layout::print_source_line): Likewise.
6548 (layout::should_print_annotation_line_p): Likewise.
6549 (layout::print_annotation_line): Likewise.
6550 (layout::print_leading_fixits): Likewise.
6551 (layout::annotation_line_showed_range_p): Likewise.
6552 (struct line_corrections): Likewise for field m_row.
6553 (line_corrections::line_corrections): Likewise for param "row".
6554 (layout::print_trailing_fixits): Likewise.
6555 (layout::get_state_at_point): Likewise.
6556 (layout::get_x_bound_for_row): Likewise.
6557 (layout::print_line): Likewise.
6558 (diagnostic_show_locus): Likewise for locals "last_line" and "row".
6559 (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
6560 * input.c (selftest::test_linenum_comparisons): New function.
6561 (selftest::input_c_tests): Call it.
6562 * selftest.c (selftest::test_assertions): Test ASSERT_GT,
6563 ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
6564 * selftest.h (ASSERT_GT): New macro.
6565 (ASSERT_GT_AT): New macro.
6566 (ASSERT_LT): New macro.
6567 (ASSERT_LT_AT): New macro.
6568
6569 2018-03-14 Segher Boessenkool <segher@kernel.crashing.org>
6570
6571 PR rtl-optimization/84780
6572 * combine.c (distribute_links): Don't make a link based on pc_rtx.
6573
6574 2018-03-14 Martin Liska <mliska@suse.cz>
6575
6576 * tree.c (record_node_allocation_statistics): Use
6577 get_stats_node_kind.
6578 (get_stats_node_kind): New function extracted from
6579 record_node_allocation_statistics.
6580 (free_node): Use get_stats_node_kind.
6581
6582 2018-03-14 Richard Biener <rguenther@suse.de>
6583
6584 * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
6585 that the value-set of ANTIC_IN doesn't grow.
6586
6587 Revert
6588 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
6589 member.
6590 (BB_VISITED_WITH_VISITED_SUCCS): New define.
6591 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
6592
6593 2018-03-14 Julia Koval <julia.koval@intel.com>
6594
6595 * config.gcc (icelake-client, icelake-server): New.
6596 (icelake): Remove.
6597 * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
6598 (initial_ix86_arch_features): Ditto.
6599 (PTA_SKYLAKE): Add SGX.
6600 (PTA_ICELAKE): Remove.
6601 (PTA_ICELAKE_CLIENT): New.
6602 (PTA_ICELAKE_SERVER): New.
6603 (ix86_option_override_internal): Split up icelake on icelake client and
6604 icelake server.
6605 (get_builtin_code_for_version): Ditto.
6606 (fold_builtin_cpu): Ditto.
6607 * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
6608 * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
6609 * config/i386/i386.h (processor_type): Ditto.
6610 * doc/invoke.texi: Ditto.
6611
6612 2018-03-14 Jakub Jelinek <jakub@redhat.com>
6613
6614 PR sanitizer/83392
6615 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
6616 INTEGER_CST offset, add it together with bitpos / 8 and
6617 sign extend based on POINTER_SIZE.
6618
6619 PR target/84844
6620 Revert
6621 2017-04-20 Uros Bizjak <ubizjak@gmail.com>
6622
6623 PR target/78090
6624 * config/i386/constraints.md (Yc): New register constraint.
6625 * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
6626 Use Yc constraint for alternative 2 of operand 0. Remove
6627 preferred_for_speed attribute.
6628
6629 2018-03-14 Richard Biener <rguenther@suse.de>
6630
6631 PR tree-optimization/84830
6632 * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
6633 with the old one to avoid oscillations.
6634
6635 2018-03-13 Vladimir Makarov <vmakarov@redhat.com>
6636
6637 PR target/83712
6638 * lra-assigns.c (find_all_spills_for): Ignore uninteresting
6639 pseudos.
6640 (assign_by_spills): Return a flag of reload assignment failure.
6641 Do not process the reload assignment failures. Do not spill other
6642 reload pseudos if they has the same reg class. Update n if
6643 necessary.
6644 (lra_assign): Add a return arg. Set up from the result of
6645 assign_by_spills call.
6646 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6647 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
6648 usage_insns if it is not NULL.
6649 (spill_hard_reg_in_range): New function.
6650 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6651 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6652 function prototypes.
6653 (lra_assign): Change prototype.
6654 * lra.c (lra): Add code to deal with fails by splitting hard reg
6655 live ranges.
6656
6657 2018-03-01 Palmer Dabbelt <palmer@sifive.com>
6658
6659 * config/riscv/riscv.opt (mrelax): New option.
6660 * config/riscv/riscv.c (riscv_file_start): Emit ".option
6661 "norelax" when riscv_mrelax is disabled.
6662 * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
6663
6664 2018-03-13 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
6665
6666 PR target/84743
6667 * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
6668 reassociation for int modes.
6669
6670 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
6671
6672 * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
6673 Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
6674 for big-endian.
6675 * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
6676 * config/aarch64/aarch64-sve.md
6677 (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
6678 (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
6679 (*extend<mode><Vwide>2): Rename to...
6680 (aarch64_sve_extend<mode><Vwide>2): ...this.
6681 (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
6682 renaming the old pattern to...
6683 (aarch64_sve_punpk<perm_hilo>_<mode>): ...this. Only define
6684 unsigned packs.
6685 (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
6686 define_expand, renaming the old pattern to...
6687 (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
6688 (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
6689 (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
6690 account when deciding which SVE instruction the optab should use.
6691 (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
6692
6693 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
6694
6695 * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
6696 (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
6697 (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
6698 (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
6699 (tlsdesc_small_<mode>): Turn a define_expand and use
6700 tlsdesc_small_sve_<mode> for SVE. Rename original define_insn to...
6701 (tlsdesc_small_advsimd_<mode>): ...this.
6702 (tlsdesc_small_sve_<mode>): New pattern.
6703
6704 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
6705
6706 * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
6707 (UNSPEC_UMUL_HIGHPART): New constants.
6708 (MUL_HIGHPART): New int iteraor.
6709 (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
6710 * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
6711 define_expand.
6712 (*<su>mul<mode>3_highpart): New define_insn.
6713
6714 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
6715
6716 PR lto/84805
6717 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
6718 incomplete types.
6719
6720 2018-03-13 Martin Liska <mliska@suse.cz>
6721
6722 PR ipa/84658.
6723 * (sem_item_optimizer::sem_item_optimizer): Initialize new
6724 vector.
6725 (sem_item_optimizer::~sem_item_optimizer): Release it.
6726 (sem_item_optimizer::merge_classes): Register variable aliases.
6727 (sem_item_optimizer::fixup_pt_set): New function.
6728 (sem_item_optimizer::fixup_points_to_sets): Likewise.
6729 * ipa-icf.h: Declare new variables and functions.
6730
6731 2018-03-13 Jakub Jelinek <jakub@redhat.com>
6732
6733 PR middle-end/84834
6734 * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
6735 integer_pow2p@2 and test integer_pow2p in condition.
6736 (A < 0 ? C : 0): Similarly for @1.
6737
6738 PR middle-end/84831
6739 * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
6740 characters starting at p contain '\0' character, don't look beyond
6741 that.
6742
6743 PR target/84827
6744 * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
6745 pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
6746
6747 PR target/84828
6748 * reg-stack.c (change_stack): Change update_end var from int to
6749 rtx_insn *, if non-NULL don't update just BB_END (current_block), but
6750 also call set_block_for_insn on the newly added insns and rescan.
6751
6752 PR target/84786
6753 * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
6754 on the last operand.
6755
6756 PR c++/84704
6757 * tree.c (stabilize_reference_1): Return save_expr (e) for
6758 STATEMENT_LIST even if it doesn't have side-effects.
6759
6760 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
6761
6762 * doc/invoke.texi (-mclflushopt): Fix spelling of option.
6763
6764 2018-03-12 Renlin Li <renlin.li@arm.com>
6765
6766 * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
6767 aarch64_output_scalar_simd_mov_immediate.
6768
6769 2018-03-12 Martin Sebor <msebor@redhat.com>
6770
6771 PR tree-optimization/83456
6772 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
6773 for perfectly overlapping calls to memcpy.
6774 (gimple_fold_builtin_memory_chk): Same.
6775 (gimple_fold_builtin_strcpy): Handle no-warning.
6776 (gimple_fold_builtin_stxcpy_chk): Same.
6777 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
6778
6779 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
6780
6781 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
6782 parameter. Use it for SFmode.
6783 (rs6000_function_arg_advance_1): Adjust.
6784 (rs6000_function_arg): Adjust.
6785 (rs6000_gimplify_va_arg): Pass false for that new parameter.
6786
6787 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
6788
6789 PR rtl-optimization/84169
6790 PR rtl-optimization/84780
6791 * combine.c (can_combine_p): Check for a 2-insn combination whether
6792 the destination register is used between the two insns, too.
6793
6794 2018-03-12 Richard Biener <rguenther@suse.de>
6795
6796 PR tree-optimization/84803
6797 * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
6798 for refs DR analysis didn't process.
6799
6800 2018-03-12 Richard Biener <rguenther@suse.de>
6801
6802 PR tree-optimization/84777
6803 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
6804 force-vectorize loops ignore whether we are optimizing for size.
6805
6806 2018-03-12 Chung-Ju Wu <jasonwucj@gmail.com>
6807
6808 * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
6809 (TARGET_MD_ASM_ADJUST): Define.
6810
6811 2018-03-12 Monk Chiang <sh.chiang04@gmail.com>
6812 Kito Cheng <kito.cheng@gmail.com>
6813 Chung-Ju Wu <jasonwucj@gmail.com>
6814
6815 * config/nds32/nds32.c (nds32_compute_stack_frame,
6816 nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
6817 nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
6818 nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
6819 nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
6820 * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
6821 NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
6822 * config/nds32/nds32.md (prologue, epilogue): Use macro
6823 NDS32_V3PUSH_AVAILABLE_P to do checking.
6824
6825 2018-03-11 Jakub Jelinek <jakub@redhat.com>
6826
6827 PR debug/58150
6828 * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
6829 DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
6830 but on TYPE_SIZE. Don't do anything for ENUM_IS_OPAQUE if not creating
6831 a new die. Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE. Guard
6832 addition of most attributes on !orig_type_die or the attribute not
6833 being present already. Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
6834
6835 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
6836 Chung-Ju Wu <jasonwucj@gmail.com>
6837
6838 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
6839 __NDS32_VH__ macro.
6840 * config/nds32/nds32.opt (mvh): New option.
6841
6842 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
6843 Chung-Ju Wu <jasonwucj@gmail.com>
6844
6845 * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
6846 function.
6847 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
6848 * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
6849 definition.
6850
6851 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
6852 Chung-Ju Wu <jasonwucj@gmail.com>
6853
6854 * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
6855 function.
6856 * config/nds32/nds32-multiple.md (strlensi): New pattern.
6857 * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
6858
6859 2018-03-11 Monk Chiang <sh.chiang04@gmail.com>
6860 Kito Cheng <kito.cheng@gmail.com>
6861 Chung-Ju Wu <jasonwucj@gmail.com>
6862
6863 * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
6864 UNSPEC_FFMISM and UNSPEC_FLMISM.
6865 * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
6866 for ffb, ffmism and flmism.
6867 * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
6868 (unspec_ffmism): Ditto.
6869 (unspec_flmism): Ditto.
6870 (nds32_expand_builtin_impl): Check if string extension is available.
6871 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
6872 NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
6873
6874 2018-03-10 Vladimir Makarov <vmakarov@redhat.com>
6875
6876 Reverting patch:
6877 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
6878
6879 PR target/83712
6880 * lra-assigns.c (assign_by_spills): Return a flag of reload
6881 assignment failure. Do not process the reload assignment
6882 failures. Do not spill other reload pseudos if they has the same
6883 reg class.
6884 (lra_assign): Add a return arg. Set up from the result of
6885 assign_by_spills call.
6886 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6887 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
6888 usage_insns if it is not NULL.
6889 (spill_hard_reg_in_range): New function.
6890 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6891 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6892 function prototypes.
6893 (lra_assign): Change prototype.
6894 * lra.c (lra): Add code to deal with fails by splitting hard reg
6895 live ranges.
6896
6897 2018-03-10 H.J. Lu <hongjiu.lu@intel.com>
6898
6899 PR target/84807
6900 * config/i386/i386.opt: Replace Enforcment with Enforcement.
6901
6902 2018-03-10 Alexandre Oliva <aoliva@redhat.com>
6903
6904 PR debug/84620
6905 * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
6906 (dw_val_node): Add val_symbolic_view.
6907 * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
6908 (symview_upper_bound): New.
6909 (new_line_info_table): Initialize symviews_since_reset.
6910 (dwarf2out_source_line): Count symviews_since_reset and set
6911 symview_upper_bound.
6912 (dw_val_equal_p): Handle symview.
6913 (add_AT_symview): New.
6914 (print_dw_val): Handle symview.
6915 (attr_checksum, attr_checksum_ordered): Likewise.
6916 (same_dw_val_p, size_of_die): Likewise.
6917 (value_format, output_die): Likewise.
6918 (add_high_low_attributes): Use add_AT_symview for entry_view.
6919 (dwarf2out_finish): Reset symview_upper_bound, clear
6920 zero_view_p.
6921
6922 2018-03-09 Peter Bergner <bergner@vnet.ibm.com>
6923
6924 PR target/83969
6925 * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
6926 Add strict argument and use it.
6927 (rs6000_split_multireg_move): Update for new strict argument.
6928 (mem_operand_gpr): Disallow all non-offsettable addresses.
6929 * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
6930
6931 2018-03-09 Jakub Jelinek <jakub@redhat.com>
6932
6933 PR target/84772
6934 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
6935 temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
6936 * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
6937
6938 PR c++/84767
6939 * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
6940 decl, use remap_type if we want to use the type.
6941
6942 2018-03-09 Martin Sebor <msebor@redhat.com>
6943
6944 PR tree-optimization/84526
6945 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
6946 Remove dead code.
6947 (builtin_access::generic_overlap): Be prepared to handle non-array
6948 base objects.
6949
6950 2018-03-09 Alexandre Oliva <aoliva@redhat.com>
6951
6952 PR rtl-optimization/84682
6953 * lra-constraints.c (process_address_1): Check is_address flag
6954 for address constraints.
6955 (process_alt_operands): Likewise.
6956 * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
6957 preprocess_constraints.
6958 * recog.h (preprocess_constraints): Add oploc parameter.
6959 Adjust callers.
6960 * recog.c (preprocess_constraints): Test address_operand for
6961 CT_ADDRESS constraints.
6962
6963 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
6964
6965 PR target/83712
6966 * lra-assigns.c (assign_by_spills): Return a flag of reload
6967 assignment failure. Do not process the reload assignment
6968 failures. Do not spill other reload pseudos if they has the same
6969 reg class.
6970 (lra_assign): Add a return arg. Set up from the result of
6971 assign_by_spills call.
6972 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6973 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
6974 usage_insns if it is not NULL.
6975 (spill_hard_reg_in_range): New function.
6976 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6977 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6978 function prototypes.
6979 (lra_assign): Change prototype.
6980 * lra.c (lra): Add code to deal with fails by splitting hard reg
6981 live ranges.
6982
6983 2018-03-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6984
6985 PR target/83193
6986 * common/config/arm/arm-common.c (arm_parse_arch_option_name):
6987 Accept complain bool parameter. Only emit errors if it is true.
6988 (arm_parse_cpu_option_name): Likewise.
6989 (arm_target_thumb_only): Adjust callers of the above.
6990 * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
6991 prototype to take a default true bool parameter.
6992 (arm_parse_arch_option_name): Likewise.
6993
6994 2018-03-09 David Malcolm <dmalcolm@redhat.com>
6995 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
6996
6997 PR jit/64089
6998 PR jit/84288
6999 * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
7000 * configure: Regenerate.
7001 * configure.ac ("linker --version-script option"): New.
7002 ("linker soname option"): New.
7003
7004 2018-03-09 Richard Biener <rguenther@suse.de>
7005
7006 PR tree-optimization/84775
7007 * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
7008 immediate uses of predicate stmts and mark them modified.
7009
7010 Revert
7011 PR tree-optimization/84178
7012 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
7013 to caller.
7014 (version_loop_for_if_conversion): Delay update_ssa call.
7015 (tree_if_conversion): Delay update_ssa until after predicate
7016 insertion.
7017
7018 2018-03-09 Eric Botcazou <ebotcazou@adacore.com>
7019
7020 PR target/84763
7021 * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
7022 when the function accesses prior frames.
7023
7024 2018-03-08 Jakub Jelinek <jakub@redhat.com>
7025
7026 PR debug/84456
7027 * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
7028 gen_llsym, otherwise call maybe_gen_llsym.
7029
7030 PR inline-asm/84742
7031 * recog.c (asm_operand_ok): Return 0 if multi-character constraint
7032 has ',' character inside of it.
7033
7034 2018-03-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7035
7036 PR target/84748
7037 * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
7038 as clobbering CC_REGNUM.
7039
7040 2018-03-08 Richard Biener <rguenther@suse.de>
7041
7042 PR middle-end/84552
7043 * tree-scalar-evolution.c: Include tree-into-ssa.h.
7044 (follow_copies_to_constant): Do not follow SSA names registered
7045 for update.
7046
7047 2018-03-08 Richard Biener <rguenther@suse.de>
7048
7049 PR tree-optimization/84178
7050 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
7051 to caller.
7052 (version_loop_for_if_conversion): Delay update_ssa call.
7053 (tree_if_conversion): Delay update_ssa until after predicate
7054 insertion.
7055
7056 2018-03-08 David Malcolm <dmalcolm@redhat.com>
7057
7058 PR tree-optimization/84178
7059 * tree-if-conv.c (release_bb_predicate): Remove the
7060 the assertion that the stmts have NULL use_ops.
7061 Discard the statements, asserting that they haven't
7062 yet been added to a BB.
7063
7064 2018-03-08 Richard Biener <rguenther@suse.de>
7065
7066 PR tree-optimization/84746
7067 * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
7068 (phi_translate): Pass in destination ANTIC_OUT set.
7069 (phi_translate_1): Likewise. For a simplified result lookup
7070 a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
7071 (phi_translate_set): Adjust.
7072 (do_pre_regular_insertion): Likewise.
7073 (do_pre_partial_partial_insertion): Likewise.
7074
7075 2018-03-08 Martin Liska <mliska@suse.cz>
7076
7077 PR gcov-profile/84735
7078 * doc/gcov.texi: Document usage of profile files.
7079 * gcov-io.h: Document changes in the format.
7080
7081 2018-03-08 Alexandre Oliva <aoliva@redhat.com>
7082
7083 PR debug/84404
7084 PR debug/84408
7085 * dwarf2out.c (struct dw_line_info_table): Update comments for
7086 view == -1.
7087 (FORCE_RESET_NEXT_VIEW): New.
7088 (FORCE_RESETTING_VIEW_P): New.
7089 (RESETTING_VIEW_P): Check for -1 too.
7090 (ZERO_VIEW_P): Likewise.
7091 (new_line_info_table): Force-reset next view.
7092 (dwarf2out_begin_function): Likewise.
7093 (dwarf2out_source_line): Simplify zero_view_p initialization.
7094 Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
7095 view directly. Omit view when omitting .loc at line 0.
7096
7097 2018-03-08 Jakub Jelinek <jakub@redhat.com>
7098
7099 PR tree-optimization/84740
7100 * tree-switch-conversion.c (process_switch): Call build_constructors
7101 only if info.phi_count is non-zero.
7102
7103 PR tree-optimization/84739
7104 * tree-tailcall.c (find_tail_calls): Check call arguments against
7105 DECL_ARGUMENTS (current_function_decl) rather than
7106 DECL_ARGUMENTS (func) when checking for tail recursion.
7107
7108 2018-03-07 Jakub Jelinek <jakub@redhat.com>
7109
7110 * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
7111 Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
7112 Volker Reichelt's entry and add entries for people that perform
7113 GCC fuzzy testing and report numerous bugs.
7114
7115 2018-03-07 Segher Boessenkool <segher@kernel.crashing.org>
7116
7117 PR target/82411
7118 * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
7119 readonly data in sdata, if that is disabled.
7120 * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
7121 * doc/invoke.texi (RS/6000 and PowerPC Options): Document
7122 -mreadonly-in-sdata option.
7123
7124 2018-03-07 Martin Sebor <msebor@redhat.com>
7125
7126 PR tree-optimization/84468
7127 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
7128 basic block when looking for nul assignment.
7129
7130 2018-03-07 Eric Botcazou <ebotcazou@adacore.com>
7131
7132 PR target/84277
7133 * except.h (output_function_exception_table): Adjust prototype.
7134 * except.c (output_function_exception_table): Remove FNNAME parameter
7135 and add SECTION parameter. Ouput one part of the table at a time.
7136 * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
7137 the first part of the exception table and emit unwind directives.
7138 * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
7139 (i386_pe_seh_cold_init): Likewise.
7140 * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
7141 (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
7142 * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
7143 (ix86_output_call_insn): Emit a nop in one more case for SEH.
7144 * config/i386/winnt.c: Include except.h.
7145 (struct seh_frame_state): Add reg_offset, after_prologue and
7146 in_cold_section fields.
7147 (i386_pe_seh_end_prologue): Set seh->after_prologue.
7148 (i386_pe_seh_cold_init): New function.
7149 (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
7150 to seh->in_cold_section.
7151 (seh_emit_push): Record the offset of the push.
7152 (seh_emit_save): Record the offet of the save.
7153 (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
7154 Test seh->after_prologue to disregard the epilogue.
7155 (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
7156 (i386_pe_end_cold_function): New function.
7157
7158 2018-03-07 Jakub Jelinek <jakub@redhat.com>
7159
7160 PR fortran/84565
7161 * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
7162 aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
7163
7164 PR c++/84704
7165 * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
7166 on tmp_var.
7167 * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
7168 don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
7169
7170 PR middle-end/84723
7171 * multiple_target.c: Include tree-inline.h and intl.h.
7172 (expand_target_clones): Diagnose and fail if node->definition and
7173 !tree_versionable_function_p (node->decl).
7174
7175 2018-03-06 John David Anglin <danglin@gcc.gnu.org>
7176
7177 * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
7178 sprint_ul.
7179 (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
7180 (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
7181 * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
7182
7183 2018-03-06 Jakub Jelinek <jakub@redhat.com>
7184
7185 PR target/84710
7186 * combine.c (try_combine): Use reg_or_subregno instead of handling
7187 just paradoxical SUBREGs and REGs.
7188
7189 2018-03-06 Claudiu Zissulescu <claziss@synopsys.com>
7190
7191 * config/arc/arc.c (arc_finalize_pic): Remove function.
7192 (arc_must_save_register): We use single base PIC register, remove
7193 checks to save/restore the PIC register.
7194 (arc_expand_prologue): Likewise.
7195 * config/arc/arc-protos.h (arc_set_default_type_attributes):
7196 Remove.
7197 (arc_verify_short): Likewise.
7198 (arc_attr_type): Likewise.
7199 * config/arc/arc.c (arc_set_default_type_attributes): Remove.
7200 (walk_stores): Likewise.
7201 (arc_address_cost): Make it static.
7202 (arc_verify_short): Likewise.
7203 (branch_dest): Likewise.
7204 (arc_attr_type): Likewise.
7205 * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
7206 (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
7207 (arc_final_prescan_insn): Remove inserting the nops due to
7208 hardware hazards. It is done in reorg step.
7209 (insn_length_variant_t): Remove.
7210 (insn_length_parameters_t): Likewise.
7211 (arc_insn_length_parameters): Likewise.
7212 (arc_get_insn_variants): Likewise.
7213 * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
7214
7215 2018-03-06 Jakub Jelinek <jakub@redhat.com>
7216
7217 PR inline-asm/84683
7218 * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
7219 assertion failure.
7220
7221 PR tree-optimization/84687
7222 * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
7223 on new_node->decl.
7224 * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
7225
7226 2018-03-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
7227
7228 * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
7229 Rename to ppc_speculation_barrier.
7230 * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
7231 __builtin_ppc_speculation_barrier.
7232
7233 2018-03-05 Jakub Jelinek <jakub@redhat.com>
7234
7235 PR target/84700
7236 * combine.c (combine_simplify_rtx): Don't try to simplify if
7237 if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
7238 are equal to x.
7239
7240 2018-03-05 Segher Boessenkool <segher@kernel.crashing.org>
7241
7242 * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
7243 to 32 bytes when compiling for POWER9.
7244
7245 2018-03-05 Jakub Jelinek <jakub@redhat.com>
7246
7247 PR target/84564
7248 * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
7249 regparm >= 3 with no arg reg available also for calls with
7250 flag_force_indirect_call. Pass decl to ix86_function_regparm.
7251
7252 PR target/84524
7253 * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
7254 orig,vex.
7255 (*<plusminus_insn><mode>3): Likewise. Remove <mask_operand3> uses.
7256
7257 2018-03-05 Peter Bergner <bergner@vnet.ibm.com>
7258
7259 PR target/84264
7260 * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
7261
7262 2018-03-05 Richard Biener <rguenther@suse.de>
7263
7264 PR tree-optimization/84486
7265 * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
7266 When inserting a __builtin_assume_aligned call set the LHS
7267 SSA name alignment info accordingly.
7268
7269 2018-03-05 Wilco Dijkstra <wdijkstr@arm.com>
7270
7271 PR tree-optimization/84114
7272 * config/aarch64/aarch64.c (aarch64_reassociation_width)
7273 Avoid reassociation of FLOAT_MODE addition.
7274
7275 2018-03-05 Olga Makhotina <olga.makhotina@intel.com>
7276
7277 * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
7278 OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
7279 OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
7280 (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
7281 * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
7282 * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
7283 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
7284 and -mwbnoinvd.
7285 * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
7286 __builtin_ia32_wbinvd): New builtins.
7287 (SPECIAL_ARGS2): New.
7288 * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
7289 (SPECIAL_ARGS2): New.
7290 * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
7291 (ix86_valid_target_attribute_inner_p): Ditto.
7292 (ix86_init_mmx_sse_builtins): Add special_args2.
7293 * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
7294 TARGET_WBNOINVD_P): New.
7295 * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
7296 (define_insn "wbinvd", define_insn "wbnoinvd"): New.
7297 * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
7298 * config/i386/immintrin.h (_wbinvd): New intrinsic.
7299 * config/i386/pconfigintrin.h: New file.
7300 * config/i386/wbnoinvdintrin.h: Ditto.
7301 * config/i386/x86intrin.h: Add headers pconfigintrin.h and
7302 wbnoinvdintrin.h.
7303 * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
7304
7305 2018-03-05 Richard Biener <rguenther@suse.de>
7306
7307 PR tree-optimization/84670
7308 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
7309 member.
7310 (BB_VISITED_WITH_VISITED_SUCCS): New define.
7311 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
7312 (compute_antic_aux): Only assert the number of values in ANTIC_IN
7313 doesn't grow if all successors (recursively) were visited at least
7314 once.
7315
7316 2018-03-05 Richard Biener <rguenther@suse.de>
7317
7318 PR tree-optimization/84650
7319 * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
7320 if executed in the loop pipeline.
7321
7322 2018-03-05 Sandra Loosemore <sandra@codesourcery.com>
7323
7324 * doc/configfiles.texi (Configuration Files): Move info about
7325 conditionalizing $target-protos.h to...
7326 * doc/sourcebuild.texi (Back End): Here. Explain how $target.h
7327 differs from $target-protos.h.
7328
7329 2018-03-05 Kito Cheng <kito.cheng@gmail.com>
7330 Chung-Ju Wu <jasonwucj@gmail.com>
7331
7332 * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
7333 * config/nds32/nds32-multiple.md (setmemsi): Define.
7334 * config/nds32/nds32-memory-manipulation.c
7335 (nds32_gen_dup_4_byte_to_word_value): New.
7336 (emit_setmem_word_loop): New.
7337 (emit_setmem_byte_loop): New.
7338 (nds32_expand_setmem_loop): New.
7339 (nds32_expand_setmem_loop_v3m): New.
7340 (nds32_expand_setmem_unroll): New.
7341 (nds32_expand_setmem): New.
7342
7343 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
7344 Chung-Ju Wu <jasonwucj@gmail.com>
7345
7346 * config/nds32/nds32-memory-manipulation.c
7347 (nds32_emit_load_store): New.
7348 (nds32_emit_post_inc_load_store): New.
7349 (nds32_emit_mem_move): New.
7350 (nds32_emit_mem_move_block): New.
7351 (nds32_expand_movmemsi_loop_unknown_size): New.
7352 (nds32_expand_movmemsi_loop_known_size): New.
7353 (nds32_expand_movmemsi_loop): New.
7354 (nds32_expand_movmemsi_unroll): New.
7355 (nds32_expand_movmemqi): Rename ...
7356 (nds32_expand_movmemsi): ... to this.
7357 * config/nds32/nds32-multiple.md (movmemqi): Rename ...
7358 (movmemsi): ... to this.
7359 * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
7360 (nds32_expand_movmemsi): ... to this.
7361
7362 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
7363 Monk Chiang <sh.chiang04@gmail.com>
7364 Chung-Ju Wu <jasonwucj@gmail.com>
7365
7366 * config/nds32/nds32-protos.h
7367 (nds32_expand_load_multiple): New arguments.
7368 (nds32_expand_store_multiple): Ditto.
7369 (nds32_valid_multiple_load_store): Rename ...
7370 (nds32_valid_multiple_load_store_p): ... to this.
7371 * config/nds32/nds32-memory-manipulation.c
7372 (nds32_expand_load_multiple): Refine implementation.
7373 (nds32_expand_store_multiple): Ditto.
7374 * config/nds32/nds32-multiple.md
7375 (load_multiple): Update nds32_expand_load_multiple interface.
7376 (store_multiple): Update nds32_expand_store_multiple interface.
7377 * config/nds32/nds32-predicates.c
7378 (nds32_valid_multiple_load_store): Rename ...
7379 (nds32_valid_multiple_load_store_p): ... to this and refine
7380 implementation.
7381 * config/nds32/predicates.md
7382 (nds32_load_multiple_and_update_address_operation): New predicate.
7383 (nds32_store_multiple_and_update_address_operation): New predicate.
7384
7385 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
7386 Chung-Ju Wu <jasonwucj@gmail.com>
7387
7388 * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
7389 (combo): New attribute.
7390 * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
7391
7392 2018-03-03 Chung-Ju Wu <jasonwucj@gmail.com>
7393
7394 * config/nds32/nds32.opt: Change -mcmodel= default value.
7395
7396 2018-03-03 Kito Cheng <kito.cheng@gmail.com>
7397 Monk Chiang <sh.chiang04@gmail.com>
7398 Chung-Ju Wu <jasonwucj@gmail.com>
7399
7400 * config/nds32/constants.md (unspec_element): New enum.
7401 * config/nds32/constraints.md (Umw): New constraint.
7402 * config/nds32/nds32-intrinsic.c: Add more builtin functions.
7403 * config/nds32/nds32-intrinsic.md: Likewise.
7404 * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
7405 (nds32_valid_smw_lwm_base_p): New.
7406 (nds32_output_smw_single_word): New.
7407 (nds32_output_lmw_single_word): New.
7408 (nds32_expand_unaligned_load): New.
7409 (nds32_expand_unaligned_store): New.
7410 * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
7411 (nds32_output_smw_single_word): Declare.
7412 (nds32_output_lmw_single_word): Declare.
7413 (nds32_expand_unaligned_load): Declare.
7414 (nds32_expand_unaligned_store): Declare.
7415 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
7416 NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
7417 NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
7418 NDS32_BUILTIN_UASTORE_DW.
7419 * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
7420 predicate.
7421
7422 2018-03-03 Monk Chiang <sh.chiang04@gmail.com>
7423 Kito Cheng <kito.cheng@gmail.com>
7424 Chung-Ju Wu <jasonwucj@gmail.com>
7425
7426 * config/nds32/nds32-intrinsic.c
7427 (nds32_expand_builtin_null_ftype_reg): Delete.
7428 (nds32_expand_builtin_reg_ftype_imm): Ditto.
7429 (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
7430 (nds32_read_argument): New.
7431 (nds32_legitimize_target): Ditto.
7432 (nds32_legitimize_argument): Ditto.
7433 (nds32_check_constant_argument): Ditto.
7434 (nds32_expand_unop_builtin): Ditto.
7435 (nds32_expand_unopimm_builtin): Ditto.
7436 (nds32_expand_binop_builtin): Ditto.
7437 (nds32_builtin_decl_impl): Ditto.
7438 (builtin_description): Ditto.
7439 (nds32_expand_builtin_impl): Rewrite with new infrastructure.
7440 (nds32_init_builtins_impl): Ditto.
7441 * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
7442 (nds32_builtin_decl): New.
7443 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
7444 * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
7445
7446 2018-03-02 Jeff Law <law@redhat.com>
7447
7448 * reorg.c (stop_search_p): Handle DEBUG_INSN.
7449 (redundant_insn, fill_simple_delay_slots): Likewise.
7450 (fill_slots_from_thread): Likewise.
7451 * resource.c (mark_referenced_resources): Likewise.
7452 (mark_set_resources, find_dead_or_set_registers): Likewise.
7453
7454 2018-03-02 Jakub Jelinek <jakub@redhat.com>
7455
7456 * substring-locations.h (format_warning_va): Formatting fix for
7457 ATTRIBUTE_GCC_DIAG.
7458 (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
7459 argument.
7460 (format_warning_n_va, format_warning_at_substring_n): New prototypes.
7461 * substring-locations.c: Include intl.h.
7462 (format_warning_va): Turned into small wrapper around
7463 format_warning_n_va, renamed to ...
7464 (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
7465 rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
7466 use ngettext.
7467 (format_warning_at_substring_n): New function.
7468 * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
7469 (fmtwarn): Add ATTRIBUTE_GCC_DIAG. Turn into a copy of
7470 format_warning_at_substring with just a shorter name instead of
7471 const function pointer.
7472 (fmtwarn_n): New function.
7473 (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
7474 appropriate, get rid of all the fmtstr temporaries, move conditionals
7475 with G_() wrapped string literals directly into fmtwarn arguments,
7476 cast dir.len to (int), formatting fixes.
7477
7478 2018-03-02 Thomas Schwinge <thomas@codesourcery.com>
7479
7480 * doc/invoke.texi: Remove "Cilk Plus" references.
7481
7482 2018-03-02 Jakub Jelinek <jakub@redhat.com>
7483 Richard Biener <rguenther@suse.de>
7484
7485 PR ipa/84628
7486 * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
7487 for error or warning attributes if CALL_FROM_THUNK_P is set.
7488 Formatting fixes.
7489
7490 2018-03-02 Jakub Jelinek <jakub@redhat.com>
7491
7492 PR target/56540
7493 * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
7494 __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
7495
7496 PR target/56540
7497 * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
7498 __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
7499
7500 * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
7501 instead of -1U in last predictors element's probability member.
7502
7503 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
7504
7505 PR ipa/83983
7506 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
7507 arguments if they are comparable.
7508
7509 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
7510
7511 PR tree-optimization/84634
7512 * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
7513 masks and masked_loop_p with a single loop_masks, making sure it's
7514 null for bb vectorization.
7515
7516 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
7517
7518 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
7519 (vect_analyze_data_ref_access): Use loop->safe_len rather than
7520 loop->force_vectorize to check whether there is no alias.
7521
7522 2018-03-02 Jakub Jelinek <jakub@redhat.com>
7523
7524 PR target/84614
7525 * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
7526 prototypes.
7527 * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
7528 comments.
7529 (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
7530 * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
7531 instead of a loop around prev_real_insn.
7532 * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
7533 prev_real_insn.
7534
7535 PR inline-asm/84625
7536 * config/i386/i386.c (ix86_print_operand): Use conditional
7537 output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
7538 zero vector.
7539
7540 2018-03-02 Richard Biener <rguenther@suse.de>
7541
7542 PR tree-optimization/84427
7543 * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
7544 (bitmap_set_subtract_values): Rewrite to handle multiple
7545 exprs per value.
7546 (clean): Likewise.
7547 (prune_clobbered_mems): Likewise.
7548 (phi_translate): Take edge instead of pred/phiblock.
7549 (phi_translate_1): Likewise.
7550 (phi_translate_set): Likewise. Insert all translated
7551 exprs for a value into the set, keeping possibly multiple
7552 expressions per value.
7553 (compute_antic_aux): Adjust for phi_translate changes.
7554 When intersecting union the expressions and prune those
7555 not in the final value set, keeping possibly multiple
7556 expressions per value. Do not use value-insertion
7557 for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
7558 all expressions. Add verification that the value-sets
7559 only shrink during iteration.
7560 (compute_partial_antic_aux): Adjust for the phi_translate changes.
7561 (do_pre_regular_insertion): Likewise.
7562 (do_pre_partial_partial_insertion): Likewise.
7563
7564 2018-03-02 Richard Biener <rguenther@suse.de>
7565
7566 PR target/82005
7567 * config/darwin.c (saved_debug_info_level): New static global.
7568 (darwin_asm_lto_start): Disable debug info generation for LTO out.
7569 (darwin_asm_lto_end): Restore debug info generation settings.
7570
7571 2018-03-01 Martin Liska <mliska@suse.cz>
7572
7573 PR sanitizer/82484
7574 * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
7575 volatile arguments.
7576
7577 2018-03-01 Richard Biener <rguenther@suse.de>
7578
7579 PR debug/84645
7580 * dwarf2out.c (gen_variable_die): Properly handle late VLA
7581 type annotation with LTO when debug was disabled at compile-time.
7582
7583 2018-03-01 Matthew Fortune <mfortune@gmail.com>
7584
7585 * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
7586 XINT with INTVAL.
7587 (mips_final_postscan_insn): Likewise.
7588
7589 2018-03-01 Richard Sandiford <richard.sandiford@linaro.org>
7590
7591 PR rtl-optimization/84528
7592 * alias.c (init_alias_target): Add commentary.
7593 (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
7594 a unique base value if the frame pointer is not eliminated
7595 to the stack pointer.
7596
7597 2018-03-01 Tom de Vries <tom@codesourcery.com>
7598
7599 PR rtl-optimization/83327
7600 * lra-int.h (hard_regs_spilled_into): Declare.
7601 * lra.c (hard_regs_spilled_into): Define.
7602 (init_reg_info): Init hard_regs_spilled_into.
7603 * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
7604 * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
7605 (process_bb_lives): Handle hard_regs_spilled_into.
7606 (lra_create_live_ranges_1): Before doing liveness propagation, clear
7607 regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
7608
7609 2018-02-28 David Edelsohn <dje.gcc@gmail.com>
7610
7611 * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
7612 (powerpc-ibm-aix[789]*): Default to AIX 7.2.
7613 * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
7614 * config/rs6000/aix72.h: New file.
7615
7616 2018-02-28 Jakub Jelinek <jakub@redhat.com>
7617
7618 * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
7619 instead of warning_at with conditional singular and plural messages
7620 where possible.
7621
7622 PR target/52991
7623 * stor-layout.c (update_alignment_for_field): For
7624 targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
7625 && !DECL_PACKED (field), do the alignment update, just use
7626 only desired_align instead of MAX (type_align, desired_align)
7627 as the alignment.
7628 (place_field): Don't do known_align < desired_align handling
7629 early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
7630 is non-NULL, instead do it after rli->prev_field handling and
7631 only if not within a bitfield word. For DECL_PACKED (field)
7632 use type_align of BITS_PER_UNIT.
7633
7634 2018-02-28 Eric Botcazou <ebotcazou@adacore.com>
7635
7636 * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
7637 superfluous parentheses and trailing spaces.
7638
7639 2018-02-28 Richard Biener <rguenther@suse.de>
7640
7641 PR tree-optimization/84584
7642 * graphite-scop-detection.c (scop_detection::add_scop): Discard
7643 SCoPs with fake exit edge.
7644
7645 2018-02-28 Martin Liska <mliska@suse.cz>
7646
7647 PR testsuite/84597
7648 * timevar.c (timer::print): Fix format to properly print 100%
7649 values.
7650
7651 2018-02-28 Richard Biener <rguenther@suse.de>
7652
7653 PR middle-end/84607
7654 * genmatch.c (capture_info::walk_match): Do not mark
7655 captured expressions without operands as expr_p given
7656 they act more like predicates and should be subject to
7657 "lost tail" side-effect preserving.
7658
7659 2018-02-28 Alexandre Oliva <aoliva@redhat.com>
7660
7661 PR rtl-optimization/81611
7662 * auto-inc-dec.c (attempt_change): Move dead note from
7663 mem_insn if it's the next use of regno
7664 (find_address): Take address use of reg holding
7665 non-incremented value. Add parm to limit search to the named
7666 reg only.
7667 (merge_in_block): Attempt to use a mem insn that is the next
7668 use of the original regno.
7669
7670 2018-02-27 Martin Sebor <msebor@redhat.com>
7671
7672 PR c++/83871
7673 * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
7674 * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
7675
7676 2018-02-27 Martin Sebor <msebor@redhat.com>
7677
7678 PR translation/84207
7679 * diagnostic-core.h (warning_n, error_n, inform_n): Change
7680 n argument to unsigned HOST_WIDE_INT.
7681 * diagnostic.c (warning_n, error_n, inform_n): Ditto.
7682 (diagnostic_n_impl): Ditto. Handle arguments in excess of LONG_MAX.
7683 * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
7684 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
7685
7686 2018-02-27 Richard Biener <rguenther@suse.de>
7687
7688 PR tree-optimization/84512
7689 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
7690 Do not use the estimate returned from record_stmt_cost for
7691 the scalar iteration cost but sum properly using add_stmt_cost.
7692
7693 2018-02-27 Richard Biener <rguenther@suse.de>
7694
7695 PR tree-optimization/84466
7696 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
7697 Adjust last change to less strictly validate use operands.
7698
7699 2018-02-27 Martin Liska <mliska@suse.cz>
7700
7701 PR gcov-profile/84548
7702 * gcov.c (process_file): Allow partial overlap and consider it
7703 also as group functions.
7704 (output_lines): Properly calculate range of lines for a group.
7705
7706 2018-02-27 Martin Liska <mliska@suse.cz>
7707
7708 * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
7709 'ggc' suffixes. Change first column width.
7710 (timer::print): Fix formatting of the column.
7711
7712 2018-02-27 Alexandre Oliva <aoliva@redhat.com>
7713
7714 * tree-ssa-live.c (remove_unused_scope_block_p): Do not
7715 preserve inline entry blocks for the sake of debug inline
7716 entry point markers alone.
7717 (remove_unused_locals): Suggest in comments a better place to
7718 force the preservation of inline entry blocks that are
7719 otherwise unused, but do not preserve them.
7720
7721 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
7722
7723 * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
7724
7725 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
7726
7727 PR target/84039
7728 * config/i386/constraints.md (Bs): Replace
7729 ix86_indirect_branch_register with
7730 TARGET_INDIRECT_BRANCH_REGISTER.
7731 (Bw): Likewise.
7732 * config/i386/i386.md (indirect_jump): Likewise.
7733 (tablejump): Likewise.
7734 (*sibcall_memory): Likewise.
7735 (*sibcall_value_memory): Likewise.
7736 Peepholes of indirect call and jump via memory: Likewise.
7737 (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
7738 (*sibcall_value_GOT_32): Likewise.
7739 * config/i386/predicates.md (indirect_branch_operand): Likewise.
7740 (GOT_memory_operand): Likewise.
7741 (call_insn_operand): Likewise.
7742 (sibcall_insn_operand): Likewise.
7743 (GOT32_symbol_operand): Likewise.
7744 * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
7745
7746 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
7747
7748 PR rtl-optimization/83496
7749 * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
7750 booleans to RTXes. Call fix_reg_dead_note on every non-null element.
7751 (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
7752 redundant insn, if any.
7753 (relax_delay_slots): Likewise.
7754 (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
7755
7756 2018-02-26 Richard Sandiford <richard.sandiford@linaro.org>
7757
7758 PR tree-optimization/83965
7759 * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
7760 that grouped statements are part of a reduction chain. Return
7761 true if the statement is not marked as a reduction itself but
7762 is part of a group.
7763 (vect_recog_dot_prod_pattern): Don't check whether the statement
7764 is part of a group here.
7765 (vect_recog_sad_pattern): Likewise.
7766 (vect_recog_widen_sum_pattern): Likewise.
7767
7768 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
7769
7770 PR debug/84545
7771 * final.c (rest_of_clean_state): Also look for calls inside sequences.
7772
7773 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
7774
7775 PR target/84530
7776 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
7777 the bool argument.
7778 (ix86_output_indirect_function_return): New prototype.
7779 (ix86_split_simple_return_pop_internal): Likewise.
7780 * config/i386/i386.c (indirect_return_via_cx): New.
7781 (indirect_return_via_cx_bnd): Likewise.
7782 (indirect_thunk_name): Handle return va CX_REG.
7783 (output_indirect_thunk_function): Create alias for
7784 __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
7785 (ix86_output_indirect_jmp): Remove the bool argument.
7786 (ix86_output_indirect_function_return): New function.
7787 (ix86_split_simple_return_pop_internal): Likewise.
7788 * config/i386/i386.md (*indirect_jump): Don't pass false
7789 to ix86_output_indirect_jmp.
7790 (*tablejump_1): Likewise.
7791 (simple_return_pop_internal): Change it to define_insn_and_split.
7792 Call ix86_split_simple_return_pop_internal to split it for
7793 -mfunction-return=.
7794 (simple_return_indirect_internal): Call
7795 ix86_output_indirect_function_return instead of
7796 ix86_output_indirect_jmp.
7797
7798 2018-02-26 Jakub Jelinek <jakub@redhat.com>
7799
7800 PR bootstrap/84405
7801 * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
7802 memset and value initialization afterwards.
7803
7804 2018-02-26 Christophe Lyon <christophe.lyon@linaro.org>
7805
7806 * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
7807
7808 2018-02-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
7809
7810 PR target/84521
7811 * common/config/aarch64/aarch64-common.c
7812 (aarch_option_optimization_table[]): Switch
7813 off fomit-frame-pointer
7814
7815 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
7816 Chung-Ju Wu <jasonwucj@gmail.com>
7817
7818 * config/nds32/nds32-multiple.md (load_multiple): Disallow
7819 volatile memory.
7820 (store_multiple): Ditto.
7821
7822 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
7823
7824 * config.gcc: Add --with-cpu support for nds32 target.
7825 * config/nds32/nds32-opts.h (nds32_cpu_type): New.
7826 * config/nds32/nds32.opt: Add -mcpu= option.
7827
7828 2018-02-25 Segher Boessenkool <segher@kernel.crashing.org>
7829
7830 * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
7831 isel=yes): Warn for these deprecated options.
7832
7833 2018-02-23 David Edelsohn <dje.gcc@gmail.com>
7834
7835 * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
7836 ISA_2_5_MASKS_EMBEDDED.
7837
7838 2018-02-23 Jakub Jelinek <jakub@redhat.com>
7839
7840 * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
7841 p->max as pointers rather than using iterative_hash_expr.
7842
7843 2018-02-23 Carl Love <cel@us.ibm.com>
7844
7845 * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
7846 macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
7847 BU_P8V_OVERLOAD_2.
7848 * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
7849 P8V_BUILTIN_VEC_VSIGNED2. Change VSX_BUILTIN_VEC_VUNSIGNED2 to
7850 P8V_BUILTIN_VEC_VUNSIGNED2.
7851
7852 2018-02-22 Vladimir Makarov <vmakarov@redhat.com>
7853
7854 PR target/81572
7855 * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
7856 * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
7857 LRA_UNKNOWN_ALT.
7858 * lra-constraints.c (curr_insn_transform): Set up
7859 LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use
7860 LRA_UNKNOWN_ALT.
7861 (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
7862 * lra-eliminations.c (spill_pseudos): Ditto.
7863 (process_insn_for_elimination): Ditto.
7864 * lra-lives.c (reg_early_clobber_p): Use the new macros.
7865 * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
7866 LRA_NON_CLOBBERED_ALT.
7867
7868 2018-02-22 Martin Sebor <msebor@redhat.com>
7869
7870 PR tree-optimization/84480
7871 * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
7872 to maybe_diag_stxncpy_trunc. Call it.
7873 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
7874 from gimple_fold_builtin_strcpy. Print inlining stack.
7875 (handle_builtin_stxncpy): Print inlining stack.
7876 * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
7877
7878 2018-02-22 H.J. Lu <hongjiu.lu@intel.com>
7879
7880 PR target/84176
7881 * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
7882 error when -mindirect-branch=thunk-extern, -fcf-protection=branch
7883 and -fcheck-pointer-bounds are used together.
7884 (indirect_thunk_prefix): New enum.
7885 (indirect_thunk_need_prefix): New function.
7886 (indirect_thunk_name): Replace need_bnd_p with need_prefix. Use
7887 "_nt" instead of "_bnd" for NOTRACK prefix.
7888 (output_indirect_thunk): Replace need_bnd_p with need_prefix.
7889 (output_indirect_thunk_function): Likewise.
7890 (): Likewise.
7891 (ix86_code_end): Update output_indirect_thunk_function calls.
7892 (ix86_output_indirect_branch_via_reg): Replace
7893 ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
7894 (ix86_output_indirect_branch_via_push): Likewise.
7895 (ix86_output_function_return): Likewise.
7896 * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
7897 incompatible with -fcf-protection=branch and
7898 -fcheck-pointer-bounds.
7899
7900 2018-02-22 Steve Ellcey <sellcey@cavium.com>
7901
7902 PR target/83335
7903 * config/aarch64/aarch64.c (aarch64_print_address_internal):
7904 Change gcc_assert call to output_operand_lossage.
7905
7906 2018-02-22 Steve Ellcey <sellcey@cavium.com>
7907
7908 * doc/extend.texi (__builtin_extend_pointer): Document builtin.
7909
7910 2018-02-22 DJ Delorie <dj@redhat.com>
7911 Sebastian Perta <sebastian.perta@renesas.com>
7912 Oleg Endo <olegendo@gcc.gnu.org>
7913
7914 * config/rx/rx.c (rx_rtx_costs): New function.
7915 (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
7916
7917 2018-02-22 Thomas Preud'homme <thomas.preudhomme@arm.com>
7918
7919 * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
7920
7921 2018-02-22 Martin Liska <mliska@suse.cz>
7922
7923 PR driver/83193
7924 * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
7925 Add "native" as a possible value.
7926
7927 2018-02-22 Martin Liska <mliska@suse.cz>
7928
7929 PR driver/83193
7930 * config/i386/i386.c (ix86_option_override_internal):
7931 Add "native" as a possible value for -march and -mtune.
7932
7933 2018-02-22 Jakub Jelinek <jakub@redhat.com>
7934
7935 PR target/84502
7936 * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
7937 to all type variants.
7938
7939 PR tree-optimization/84503
7940 * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
7941 width as info->bitpos + info->bitsize - start.
7942 (merged_store_group::merge_overlapping): Simplify width computation.
7943 (check_no_overlap): New function.
7944 (imm_store_chain_info::try_coalesce_bswap): Compute expected
7945 start + width and last_order of the group, fail if check_no_overlap
7946 fails.
7947 (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
7948 to group if check_no_overlap fails.
7949
7950 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
7951
7952 * config/rs6000/altivec.md: Delete contraint arguments to
7953 define_expand, define_split, and define_peephole2, and in
7954 define_insn_and_split if always unused.
7955 * config/rs6000/darwin.md: Ditto.
7956 * config/rs6000/dfp.md: Ditto.
7957 * config/rs6000/rs6000.md: Ditto.
7958 * config/rs6000/sync.md: Ditto.
7959 * config/rs6000/vector.md: Ditto.
7960 * config/rs6000/vsx.md: Ditto.
7961
7962 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
7963
7964 * config/rs6000/altivec.md: Write output control strings as braced
7965 blocks instead of double-quoted strings.
7966 * config/rs6000/darwin.md: Ditto.
7967 * config/rs6000/rs6000.md: Ditto.
7968 * config/rs6000/vector.md: Ditto.
7969 * config/rs6000/vsx.md: Ditto.
7970
7971 2018-02-21 Jason Merrill <jason@redhat.com>
7972
7973 PR c++/84314 - ICE with templates and fastcall attribute.
7974 * attribs.c (build_type_attribute_qual_variant): Remove assert.
7975
7976 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
7977
7978 * ipa-cp.c (determine_versionability): Fix comment typos.
7979
7980 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
7981
7982 PR c/84229
7983 * ipa-cp.c (determine_versionability): Do not version functions caling
7984 va_arg_pack.
7985
7986 2018-02-21 Martin Liska <mliska@suse.cz>
7987
7988 PR driver/83193
7989 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
7990 Add "native" as a possible value.
7991 * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT): Define
7992 the macro when native cpu detection is available.
7993
7994 2018-02-21 Martin Liska <mliska@suse.cz>
7995
7996 PR driver/83193
7997 * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
7998 Add "native" as a possible value.
7999 * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
8000 when native cpu detection is available.
8001
8002 2018-02-21 Jakub Jelinek <jakub@redhat.com>
8003 Martin Sebor <msebor@redhat.com>
8004
8005 PR tree-optimization/84478
8006 * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
8007 false.
8008 * gimple-fold.c (get_range_strlen): Make minlen const and assume it
8009 can't be NULL. Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
8010 support which is conservatively correct, for 2 only stay conservative
8011 for maxlen. Formatting and comment capitalization fixes. Add STRICT
8012 argument to the 2 argument get_range_strlen, adjust 6 arg
8013 get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
8014 false.
8015 (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
8016 (gimple_fold_builtin_strlen): Pass true as last argument to
8017 get_range_strlen.
8018
8019 2018-02-20 Martin Sebor <msebor@redhat.com>
8020
8021 PR middle-end/84095
8022 * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
8023 (builtin_memref::set_base_and_offset): Same. Handle inner references.
8024 (builtin_memref::builtin_memref): Factor out parts into
8025 set_base_and_offset and call it.
8026
8027 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
8028
8029 PR middle-end/84406
8030 * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
8031 is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
8032 greater precision. If to_mode is a MODE_PARTIAL_INT, stop the
8033 search at the associated MODE_INT.
8034
8035 2018-02-20 Jeff Law <law@redhat.com>
8036
8037 PR middle-end/82123
8038 PR tree-optimization/81592
8039 PR middle-end/79257
8040 * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
8041 for range data rather than using global data.
8042 * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
8043 range data rather than using global data.
8044 * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
8045 pass it to children as needed.
8046 (struct directive::fmtresult): Similarly.
8047 (struct directive::set_width): Similarly.
8048 (struct directive::set_precision): Similarly.
8049 (format_integer, format_directive, parse_directive): Similarly.
8050 (format_none): Accept unnamed vr_values parameter.
8051 (format_percent, format_floating, format_character): Similarly.
8052 (format_string, format_plain): Similarly.
8053 * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
8054 the EVRP range analyzer for range data rather than using global data.
8055 * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
8056 gimple-ssa-evrp-analyze.h
8057 (class sprintf_dom_walker): Add after_dom_children member function.
8058 Add evrp_range_analyzer member.
8059 (sprintf_dom_walker::before_dom_children): Call into the EVRP
8060 range analyzer as needed.
8061 (sprintf_dom_walker::after_dom_children): New member function.
8062 * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
8063 if not optimizing.
8064 (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
8065 (evrp_range_analyzer::pop_to_marker): Likewise.
8066
8067 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
8068
8069 PR tree-optimization/84419
8070 * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
8071 with the required type if its current type is compatible but
8072 different.
8073
8074 2018-02-20 Jakub Jelinek <jakub@redhat.com>
8075
8076 PR middle-end/82004
8077 * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
8078 after vectorization.
8079
8080 2018-02-20 Martin Liska <mliska@suse.cz>
8081
8082 PR driver/83193
8083 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
8084 possible values if we don't have a hint.
8085
8086 2018-02-20 Martin Liska <mliska@suse.cz>
8087
8088 PR c/84310
8089 PR target/79747
8090 * final.c (shorten_branches): Build align_tab array with one
8091 more element.
8092 * opts.c (finish_options): Add alignment option limit check.
8093 (MAX_CODE_ALIGN): Likewise.
8094 (MAX_CODE_ALIGN_VALUE): Likewise.
8095 * doc/invoke.texi: Document maximum allowed option value for
8096 all -falign-* options.
8097
8098 2018-02-19 Jakub Jelinek <jakub@redhat.com>
8099
8100 PR target/84146
8101 * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
8102 * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
8103 * var-tracking.c (emit_note_insn_var_location): Remove all references
8104 to NOTE_INSN_CALL_ARG_LOCATION.
8105 (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
8106 the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
8107 Use copy_rtx_if_shared.
8108 * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
8109 NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
8110 (dwarf2out_var_location): Remove handling of
8111 NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
8112 on call_insn.
8113 * final.c (final_scan_insn): Remove all references to
8114 NOTE_INSN_CALL_ARG_LOCATION.
8115 (rest_of_clean_state): Likewise. Remove REG_CALL_ARG_LOCATION notes
8116 before dumping final insns.
8117 * except.c (emit_note_eh_region_end): Remove all references to
8118 NOTE_INSN_CALL_ARG_LOCATION.
8119 * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
8120 * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
8121 * config/arc/arc.c (hwloop_optimize): Likewise.
8122 * config/arm/arm.c (create_fix_barrier): Likewise.
8123 * config/s390/s390.c (s390_chunkify_start): Likewise.
8124 * config/sh/sh.c (find_barrier): Likewise.
8125 * config/i386/i386.c (rest_of_insert_endbranch,
8126 ix86_seh_fixup_eh_fallthru): Likewise.
8127 * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
8128 * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
8129 * config/frv/frv.c (frv_function_prologue): Likewise.
8130 * emit-rtl.c (try_split): Likewise. Copy over REG_CALL_ARG_LOCATION
8131 reg note.
8132 (note_outside_basic_block_p): Remove all references to
8133 NOTE_INSN_CALL_ARG_LOCATION.
8134 * gengtype.c (adjust_field_rtx_def): Likewise.
8135 * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
8136 Likewise.
8137 * jump.c (cleanup_barriers, delete_related_insns): Likewise.
8138 * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
8139
8140 PR c++/84444
8141 * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
8142 is ADDR_EXPR.
8143
8144 PR tree-optimization/84452
8145 * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
8146 expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
8147 is NULL.
8148
8149 2018-02-19 Martin Liska <mliska@suse.cz>
8150
8151 PR sanitizer/82183
8152 * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
8153
8154 2018-02-19 Martin Liska <mliska@suse.cz>
8155 Richard Sandiford <richard.sandiford@linaro.org>
8156
8157 PR tree-optimization/82491
8158 * gimple-fold.c (get_base_constructor): Make earlier bail out
8159 to prevent ubsan.
8160
8161 2018-02-19 Carl Love <cel@us.ibm.com>
8162
8163 * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
8164 BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
8165 BU_P8V_OVERLOAD_1.
8166 * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
8167 P8V_BUILTIN_VEC_NEG.
8168
8169 2018-02-19 Sebastian Perta <sebastian.perta@renesas.com>
8170
8171 * config/rl78/rl78.md (movdf): New define expand.
8172
8173 2018-02-19 Martin Liska <mliska@suse.cz>
8174
8175 PR other/80589
8176 * doc/invoke.texi: Fix typo.
8177 * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
8178
8179 2018-02-18 Segher Boessenkool <segher@kernel.crashing.org>
8180
8181 * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
8182 handle rs6000_single_float and rs6000_double_float specially for
8183 e500 family CPUs.
8184
8185 2018-02-16 Jeff Law <law@redhat.com>
8186
8187 * config/rx/rx.c (add_pop_cfi_notes): New function.;
8188 (pop_regs): Use it.
8189
8190 2018-02-16 Jakub Jelinek <jakub@redhat.com>
8191
8192 PR ipa/84425
8193 * ipa-inline.c (inline_small_functions): Fix a typo.
8194
8195 2018-02-16 Nathan Sidwell <nathan@acm.org>
8196
8197 * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
8198
8199 2018-02-16 Carl Love <cel@us.ibm.com>
8200
8201 * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
8202 Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
8203 from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
8204 * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
8205 expansion to P8V_BUILTIN_VEC_FLOAT2.
8206
8207 2018-02-16 Vladimir Makarov <vmakarov@redhat.com>
8208
8209 PR rtl-optimization/70023
8210 * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
8211 src_regno into account.
8212
8213 2018-02-16 Carl Love <cel@us.ibm.com>
8214
8215 * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
8216 * config/rs6000/rs6000-builtin.def: Remove macro expansion for
8217 VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
8218 * config/rs6000/rs6000.c: Remove case statements for
8219 P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
8220 P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
8221 and P9V_BUILTIN_VEC_VINSERT4B.
8222 * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
8223 P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
8224 * config/rs6000/vsx.md:
8225 * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
8226 vec_insert4b.
8227
8228 2018-02-16 Carl Love <cel@us.ibm.com>
8229
8230 * config/rs6000/altivec.h: Add builtin names vec_extract4b
8231 vec_insert4b.
8232 * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
8233 definitions.
8234 * config/rs6000/rs6000-c.c: Add the definitions for
8235 P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
8236 * config/rs6000/rs6000.c (altivec_expand_builtin): Add
8237 P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
8238 * config/rs6000/vsx.md: Add define_insn extract4b. Add define_expand
8239 definition for insert4b and define insn *insert3b_internal.
8240 * doc/extend.texi: Add documentation for vec_extract4b.
8241
8242 2018-02-16 Nathan Sidwell <nathan@acm.org>
8243
8244 * doc/extend.texi (Backwards Compatibility): Mention friend
8245 injection. Note for-scope is deprecated.
8246 * doc/invoke.texi (-ffriend-injection): Deprecate.
8247
8248 2018-02-16 Segher Boessenkool <segher@kernel.crashing.org>
8249
8250 * combine.c (try_combine): When adjusting LOG_LINKS for the destination
8251 that moved to I2, also allow destinations that are a paradoxical
8252 subreg (instead of a normal reg).
8253
8254 2018-02-16 Oleg Endo <olegendo@gcc.gnu.org>
8255
8256 PR target/83831
8257 * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
8258 to QImode.
8259
8260 2018-02-16 Richard Biener <rguenther@suse.de>
8261
8262 PR tree-optimization/84037
8263 PR tree-optimization/84016
8264 PR target/82862
8265 * config/i386/i386.c (ix86_builtin_vectorization_cost):
8266 Adjust vec_construct for the fact we need additional higher latency
8267 128bit inserts for AVX256 and AVX512 vector builds.
8268 (ix86_add_stmt_cost): Scale vector construction cost for
8269 elementwise loads.
8270
8271 2018-02-16 Richard Biener <rguenther@suse.de>
8272
8273 PR tree-optimization/84417
8274 * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
8275 the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
8276 (non_rewritable_lvalue_p): Likewise, use poly-ints.
8277
8278 2018-02-16 Martin Liska <mliska@suse.cz>
8279
8280 PR sanitizer/84307
8281 * internal-fn.def (ASAN_CHECK): Set proper flags.
8282 (ASAN_MARK): Likewise.
8283
8284 2018-02-16 Julia Koval <julia.koval@intel.com>
8285
8286 * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
8287 from PTA_CANNONLAKE.
8288
8289 2018-02-16 Jakub Jelinek <jakub@redhat.com>
8290
8291 PR target/84272
8292 * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
8293 Use ++iter rather than iter++ for std::list iterators.
8294 (func_fma_steering::dfs): Likewise. Don't delete nodes right away,
8295 defer deleting them until all nodes in the forest are processed. Do
8296 free even leaf nodes. Change to_process into auto_vec.
8297
8298 PR bootstrap/84405
8299 * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
8300 * vec.h (vec_default_construct): Use memset instead of placement new
8301 if BROKEN_VALUE_INITIALIZATION is defined.
8302 * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
8303 memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
8304 is defined.
8305
8306 PR rtl-optimization/83723
8307 * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
8308 * lra.c (lra_substitute_pseudo): Likewise. If true, use
8309 gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to
8310 recursive calls.
8311 (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
8312 callers.
8313 * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
8314
8315 2018-02-16 Eric Botcazou <ebotcazou@adacore.com>
8316
8317 PR rtl-optimization/81443
8318 * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
8319 from inner REGs to paradoxical SUBREGs.
8320
8321 2018-02-16 Richard Biener <rguenther@suse.de>
8322
8323 PR tree-optimization/84399
8324 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
8325 For operands we can analyze at their definition make sure we can
8326 analyze them at each use as well.
8327
8328 2018-02-16 Richard Biener <rguenther@suse.de>
8329
8330 PR tree-optimization/84190
8331 * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
8332 volatile accesses if the decl isn't volatile.
8333
8334 2018-02-15 Jason Merrill <jason@redhat.com>
8335
8336 PR c++/84314 - ICE with templates and fastcall attribute.
8337 * attribs.c (build_type_attribute_qual_variant): Don't clobber
8338 TYPE_CANONICAL on an existing type.
8339
8340 2018-02-15 Jakub Jelinek <jakub@redhat.com>
8341
8342 PR tree-optimization/84383
8343 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
8344 dstoff nor call operand_equal_p if dstbase is NULL.
8345
8346 PR tree-optimization/84334
8347 * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
8348 also a CONSTANT_CLASS_P, punt.
8349
8350 2018-02-14 Jim Wilson <jimw@sifive.com>
8351
8352 * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
8353 first SMALL_OPERAND check. New local min_second_step. Move assert
8354 to where locals are set. Add TARGET_RVC support.
8355 * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
8356
8357 2018-02-14 Indu Bhagat <indu.bhagat@oracle.com>
8358
8359 * doc/invoke.texi: Correct -Wformat-overflow code sample.
8360
8361 2018-02-14 Martin Sebor <msebor@redhat.com>
8362
8363 PR tree-optimization/83698
8364 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
8365 arrays constrain the offset range to their bounds.
8366 (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
8367 (builtin_access::overlap): Avoid setting the size of overlap if it's
8368 already been set.
8369 (maybe_diag_overlap): Also consider arrays when deciding what values
8370 of offsets to include in diagnostics.
8371
8372 2018-02-14 Martin Sebor <msebor@redhat.com>
8373
8374 PR c/84108
8375 * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
8376 that correspond to the kind of a declaration.
8377
8378 2018-02-14 John David Anglin <danglin@gcc.gnu.org>
8379
8380 PR target/83984
8381 * config/pa/pa.md: Load address of PIC label using the linkage table
8382 if the label is nonlocal.
8383
8384 2018-02-14 Kelvin Nilsen <kelvin@gcc.gnu.org>
8385
8386 * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
8387 warning message if user requests -maltivec=be.
8388 * doc/invoke.texi: Document deprecation of -maltivec=be.
8389
8390 2018-02-14 Will Schmidt <will_schmidt@vnet.ibm.com>
8391
8392 PR target/84220
8393 * config/rs6000/rs6000-c.c: Update definitions for
8394 ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
8395 VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
8396
8397 2018-02-14 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
8398
8399 PR target/84239
8400 * config/i386/cetintrin.h: Remove _rdssp[d|q] and
8401 add _get_ssp intrinsics. Remove argument from
8402 __builtin_ia32_rdssp[d|q].
8403 * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
8404 * config/i386/i386-builtin.def: Remove argument from
8405 __builtin_ia32_rdssp[d|q].
8406 * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
8407 ix86_expand_special_args_builtin for _rdssp[d|q].
8408 * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
8409 Clear register before usage.
8410 * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
8411 Add documentation for new _get_ssp and _inc_ssp intrinsics.
8412
8413 2018-02-14 Richard Sandiford <richard.sandiford@linaro.org>
8414
8415 PR tree-optimization/84357
8416 * tree-data-ref.c (object_address_invariant_in_loop_p): Check
8417 operand 1 of an ARRAY_REF too.
8418
8419 2018-02-14 Oleg Endo <olegendo@gcc.gnu.org>
8420
8421 PR target/83831
8422 * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
8423 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
8424 declarations.
8425 (set_of_reg): New struct.
8426 (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
8427 * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
8428 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
8429 functions.
8430 * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
8431 Split into bitclr, bitset, bitinvert patterns if appropriate.
8432 (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
8433 use rx_fuse_in_memory_bitop.
8434 (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
8435 to named insn, correct maximum insn length.
8436
8437 2018-02-14 Jozef Lawrynowicz <jozefl.gcc@gmail.com>
8438
8439 PR target/79242
8440 * machmode.def: Define a complex mode for PARTIAL_INT.
8441 * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
8442 MODE_PARTIAL_INT.
8443 * doc/rtl.texi: Document CSPImode.
8444 * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
8445 handling.
8446 (msp430_hard_regno_nregs_with_padding): Likewise.
8447
8448 2018-02-13 Peter Bergner <bergner@vnet.ibm.com>
8449
8450 PR target/84279
8451 * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
8452
8453 2018-02-13 Segher Boessenkool <segher@kernel.crashing.org>
8454
8455 PR rtl-optimization/84169
8456 * combine.c (try_combine): New variable split_i2i3. Set it to true if
8457 we generated a parallel as new i3 and we split that to new i2 and i3
8458 instructions. Handle split_i2i3 similar to swap_i2i3: scan the
8459 LOG_LINKs of i3 to see which of those need to link to i2 now. Link
8460 those to i2, not i1. Partially rewrite this scan code.
8461
8462 2018-02-13 Jakub Jelinek <jakub@redhat.com>
8463
8464 PR c/82210
8465 * stor-layout.c (place_field): For variable length fields, adjust
8466 offset_align afterwards not just based on the field's alignment,
8467 but also on the size.
8468
8469 PR middle-end/84309
8470 * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
8471 of exps and logs in the use_exp2 case.
8472
8473 2018-02-13 Jeff Law <law@redhat.com>
8474
8475 * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
8476 entry for "vector".
8477
8478 * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
8479 ARGS as unused.
8480
8481 2018-02-13 Alexandre Oliva <aoliva@redhat.com>
8482
8483 PR debug/84342
8484 PR debug/84319
8485 * common.opt (gas-loc-support, gas-locview-support): New.
8486 (ginline-points, ginternal-reset-location-views): New.
8487 * doc/invoke.texi: Document them. Use @itemx where intended.
8488 (gvariable-location-views): Adjust.
8489 * target.def (reset_location_view): New.
8490 * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
8491 (TARGET_RESET_LOCATION_VIEW): New.
8492 * doc/tm.texi: Rebuilt.
8493 * dwarf2out.c (dwarf2out_default_as_loc_support): New.
8494 (dwarf2out_default_as_locview_support): New.
8495 (output_asm_line_debug_info): Use option variables.
8496 (dwarf2out_maybe_output_loclist_view_pair): Likewise.
8497 (output_loc_list): Likewise.
8498 (add_high_low_attributes): Check option variables.
8499 Don't output entry view attribute in strict mode.
8500 (gen_inlined_subroutine_die): Check option variables.
8501 (dwarf2out_inline_entry): Likewise.
8502 (init_sections_and_labels): Likewise.
8503 (dwarf2out_early_finish): Likewise.
8504 (maybe_reset_location_view): New, from...
8505 (dwarf2out_var_location): ... here. Call it.
8506 * debug.h (dwarf2out_default_as_loc_support): Declare.
8507 (dwarf2out_default_as_locview_support): Declare.
8508 * hooks.c (hook_int_rtx_insn_0): New.
8509 * hooks.h (hook_int_rtx_insn_0): Declare.
8510 * toplev.c (process_options): Take -gas-loc-support and
8511 -gas-locview-support from dwarf2out. Enable
8512 -gvariable-location-views by default only with locview
8513 assembler support. Enable -ginternal-reset-location-views by
8514 default only if the target defines the corresponding hook.
8515 Enable -ginline-points by default if location views are
8516 enabled; force it disabled if statement frontiers are
8517 disabled.
8518 * tree-inline.c (expand_call_inline): Check option variables.
8519 * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
8520
8521 2018-02-13 Richard Sandiford <richard.sandiford@linaro.org>
8522
8523 PR tree-optimization/84321
8524 * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
8525 handling. Also check whether the anti-range contains any values
8526 that satisfy the mask; switch to a VR_RANGE if not.
8527
8528 2018-02-13 Paolo Bonzini <bonzini@gnu.org>
8529
8530 PR sanitizer/84340
8531 * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
8532
8533 2018-02-13 Martin Jambor <mjambor@suse.cz>
8534
8535 PR c++/83990
8536 * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
8537 of call statements, also set location of a load to a temporary.
8538
8539 2018-02-13 Sebastian Perta <sebastian.perta@renesas.com>
8540
8541 * config/rl78/rl78.c (add_vector_labels): New function.
8542 * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
8543 * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
8544 * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert
8545 which checks that no arguments are passed.
8546 * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
8547 * doc/extend.texi: Documentation for the new attribute.
8548
8549 2018-02-13 Andreas Schwab <schwab@suse.de>
8550
8551 * config/riscv/linux.h (CPP_SPEC): Define.
8552
8553 2018-02-13 Jakub Jelinek <jakub@redhat.com>
8554
8555 PR target/84335
8556 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
8557 OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
8558 OPTION_MASK_ISA_AES as first argument to def_builtin_const
8559 for AES builtins. Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
8560 instead of OPTION_MASK_ISA_PCLMUL as first argument to
8561 def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
8562 * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
8563 temporarily for AES and PCLMUL builtins.
8564
8565 PR tree-optimization/84339
8566 * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
8567 ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
8568 Formatting fixes.
8569
8570 PR middle-end/84309
8571 * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
8572 exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
8573 * generic-match-head.c (canonicalize_math_after_vectorization_p): New
8574 inline function.
8575 * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
8576 inline function.
8577 * omp-simd-clone.h: New file.
8578 * omp-simd-clone.c: Include omp-simd-clone.h.
8579 (expand_simd_clones): No longer static.
8580 * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
8581 cgraph.h and omp-simd-clone.h.
8582 (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
8583 (vect_recog_widen_shift_pattern): Formatting fix.
8584 (vect_pattern_recog_1): Don't check optab for calls.
8585
8586 PR target/84336
8587 * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
8588 operands[2] into a REG before using gen_lowpart on it.
8589
8590 2018-02-12 Jeff Law <law@redhat.com>
8591
8592 PR target/83760
8593 * config/sh/sh.c (find_barrier): Consider a sibling call
8594 a barrier as well.
8595
8596 * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
8597 successfully back substituting a reg.
8598
8599 2018-02-12 Richard Biener <rguenther@suse.de>
8600
8601 PR tree-optimization/84037
8602 * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
8603 parameter, move visited init to caller.
8604 (vect_slp_analyze_operations): Separate cost from validity
8605 check, initialize visited once for all instances.
8606 (vect_schedule_slp): Analyze map to CSE vectorized nodes once
8607 for all instances.
8608 * tree-vect-stmts.c (vect_model_simple_cost): Make early
8609 out an assert.
8610 (vect_model_promotion_demotion_cost): Likewise.
8611 (vectorizable_bswap): Guard cost modeling with !slp_node
8612 instead of !PURE_SLP_STMT to avoid double-counting on hybrid
8613 SLP stmts.
8614 (vectorizable_call): Likewise.
8615 (vectorizable_conversion): Likewise.
8616 (vectorizable_assignment): Likewise.
8617 (vectorizable_shift): Likewise.
8618 (vectorizable_operation): Likewise.
8619 (vectorizable_store): Likewise.
8620 (vectorizable_load): Likewise.
8621 (vectorizable_condition): Likewise.
8622 (vectorizable_comparison): Likewise.
8623
8624 2018-02-12 Paolo Bonzini <bonzini@gnu.org>
8625
8626 PR sanitizer/84307
8627 * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
8628 (ASAN_MARK): Fix fnspec to account for return value, change pointer
8629 argument from 'R' to 'W' so that the pointed-to datum is clobbered.
8630
8631 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
8632
8633 PR middle-end/83665
8634 * params.def (inline-min-speedup): Increase from 8 to 15.
8635 (max-inline-insns-auto): Decrease from 40 to 30.
8636 * ipa-split.c (consider_split): Add some buffer for function to
8637 be considered inlining candidate.
8638 * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
8639 default values.
8640
8641 2018-02-12 Richard Biener <rguenther@suse.de>
8642
8643 PR tree-optimization/84037
8644 * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
8645 matched stmts if we cannot swap the non-matched ones.
8646
8647 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
8648
8649 * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
8650 _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
8651 _mm_maskz_scalef_round_ss): New intrinsics.
8652 (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
8653 * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
8654 __builtin_ia32_scalefss_round): Remove.
8655 (__builtin_ia32_scalefsd_mask_round,
8656 __builtin_ia32_scalefss_mask_round): New intrinsics.
8657 * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
8658 (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
8659 ((match_operand:VF_128 2 "<round_nimm_predicate>"
8660 "<round_constraint>")): Changed to ...
8661 ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
8662 "<round_scalar_constraint>")): ... this.
8663 ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
8664 %0, %1, %2<round_op3>}"): Changed to ...
8665 ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
8666 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
8667 %2<round_scalar_mask_op3>}"): ... this.
8668 * config/i386/subst.md (round_scalar_nimm_predicate): New.
8669
8670 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
8671
8672 * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
8673 (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
8674 (_mm_maskz_sqrt_round_ss): New intrinsics.
8675 (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
8676 (__builtin_ia32_sqrtsd_mask_round)
8677 (__builtin_ia32_sqrtss_mask_round): New builtins.
8678 * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
8679 (__builtin_ia32_sqrtss_round): Remove.
8680 (__builtin_ia32_sqrtsd_mask_round)
8681 (__builtin_ia32_sqrtss_mask_round): New builtins.
8682 * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
8683 (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
8684 ((match_operand:VF_128 1 "vector_operand"
8685 "xBm,<round_constraint>")): Changed to ...
8686 ((match_operand:VF_128 1 "vector_operand"
8687 "xBm,<round_scalar_constraint>")): ... this.
8688 (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
8689 %0, %2, %<iptr>1<round_op3>}): Changed to ...
8690 (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
8691 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
8692 %<iptr>1<round_scalar_mask_op3>}): ... this.
8693 ((set_attr "prefix" "<round_prefix>")): Changed to ...
8694 ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
8695
8696 2018-02-11 Steven Munroe <munroesj@gcc.gnu.org>
8697
8698 PR target/84266
8699 * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
8700 Cast vec_cmpeq result to correct type.
8701 * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
8702 Cast vec_cmpgt result to correct type.
8703
8704 2018-02-11 Alexandre Oliva <aoliva@redhat.com>
8705
8706 * final.c (final_scan_insn_1): Renamed from...
8707 (final_scan_insn): ... this. New wrapper, to recover
8708 seen from the outermost call in recursive ones.
8709 * config/sparc/sparc.c (output_return): Drop seen from call.
8710 (output_sibcall): Likewise.
8711 * config/visium/visium.c (output_branch): Likewise.
8712
8713 2018-02-10 John David Anglin <danglin@gcc.gnu.org>
8714
8715 * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
8716 function label.
8717
8718 2018-02-10 Alan Modra <amodra@gmail.com>
8719
8720 PR target/84300
8721 * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
8722 Specify LR as an input.
8723
8724 2018-02-10 Jakub Jelinek <jakub@redhat.com>
8725
8726 PR sanitizer/83987
8727 * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
8728 remove_member_access_dummy_vars): New functions.
8729 (lower_omp_for, lower_omp_taskreg, lower_omp_target,
8730 lower_omp_1, execute_lower_omp): Use them.
8731
8732 PR rtl-optimization/84308
8733 * shrink-wrap.c (spread_components): Release todo vector.
8734
8735 2018-02-09 Vladimir Makarov <vmakarov@redhat.com>
8736
8737 PR rtl-optimization/57193
8738 * ira-color.c (struct allocno_color_data): Add member
8739 conflict_allocno_hard_prefs.
8740 (update_conflict_allocno_hard_prefs): New.
8741 (bucket_allocno_compare_func): Add a preference based on
8742 conflict_allocno_hard_prefs.
8743 (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
8744 (color_allocnos): Remove a dead code. Initiate
8745 conflict_allocno_hard_prefs. Call update_costs_from_prefs.
8746
8747 2018-02-09 Jakub Jelinek <jakub@redhat.com>
8748
8749 PR target/84226
8750 * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
8751 constraint from =wa to wa. Avoid a subreg on the output operand,
8752 instead use a pseudo and subreg it in a move.
8753 (p9_xxbrd_<mode>): Changed to ...
8754 (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
8755 (p9_xxbrd_v2df): New expander.
8756 (p9_xxbrw_<mode>): Changed to ...
8757 (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
8758 (p9_xxbrw_v4sf): New expander.
8759
8760 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
8761
8762 * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
8763
8764 2018-02-09 Peter Bergner <bergner@vnet.ibm.com>
8765
8766 PR target/83926
8767 * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
8768 multiply in 32-bit mode.
8769 (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
8770 (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
8771 mode.
8772
8773 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
8774
8775 * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
8776 to allow or block "symbol_ref" depending on the value of TARGET_JSR.
8777 * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
8778 * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
8779
8780 2018-02-09 Pierre-Marie de Rodat <derodat@adacore.com>
8781
8782 PR lto/84213
8783 * dwarf2out.c (is_trivial_indirect_ref): New function.
8784 (dwarf2out_late_global_decl): Do not generate a location
8785 attribute for variables that have a non-trivial DECL_VALUE_EXPR
8786 and that are not defined in the current unit.
8787
8788 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
8789
8790 * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
8791 instead of a libcall for UNORDERED.
8792
8793 2018-02-09 Tamar Christina <tamar.christina@arm.com>
8794
8795 PR target/82641
8796 * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
8797 __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
8798
8799 2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
8800
8801 PR target/PR84295
8802 * config/s390/s390.c (s390_set_current_function): Invoke
8803 s390_indirect_branch_settings also if fndecl didn't change.
8804
8805 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
8806
8807 * config/rs6000/rs6000.md (blockage): Set length to zero.
8808
8809 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
8810
8811 * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
8812
8813 2018-02-09 Jakub Jelinek <jakub@redhat.com>
8814
8815 PR sanitizer/84285
8816 * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
8817 STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
8818 -static-lib*san.
8819
8820 PR debug/84252
8821 * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
8822 PARALLEL incoming that failed vt_get_decl_and_offset check.
8823
8824 PR middle-end/84237
8825 * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
8826 * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
8827 TREE_READONLY bit.
8828 (get_variable_section): For decls in named .bss* sections pass true as
8829 second argument to bss_initializer_p.
8830
8831 2018-02-09 Marek Polacek <polacek@redhat.com>
8832 Jakub Jelinek <jakub@redhat.com>
8833
8834 PR c++/83659
8835 * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
8836 Formatting fixes. Verify first that tree_fits_poly_int64_p (op01).
8837 Sync some changes from cxx_fold_indirect_ref.
8838
8839 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
8840
8841 * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
8842 markers.
8843 * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
8844 (BLOCK_INLINE_ENTRY_LABEL): New.
8845 (dwarf2out_var_location): Disregard inline entry markers.
8846 (inline_entry_data): New struct.
8847 (inline_entry_data_hasher): New hashtable type.
8848 (inline_entry_data_hasher::hash): New.
8849 (inline_entry_data_hasher::equal): New.
8850 (inline_entry_data_table): New variable.
8851 (add_high_low_attributes): Add DW_AT_entry_pc and
8852 DW_AT_GNU_entry_view attributes if a pending entry is found
8853 in inline_entry_data_table. Add old entry_pc attribute only
8854 if debug nonbinding markers are disabled.
8855 (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
8856 markers are enabled.
8857 (block_within_block_p, dwarf2out_inline_entry): New.
8858 (dwarf2out_finish): Check that no entries remained in
8859 inline_entry_data_table.
8860 * final.c (reemit_insn_block_notes): Handle inline entry notes.
8861 (final_scan_insn, notice_source_line): Likewise.
8862 (rest_of_clean_state): Skip inline entry markers.
8863 * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
8864 markers.
8865 * gimple.c (gimple_build_debug_inline_entry): New.
8866 * gimple.h (enum gimple_debug_subcode): Add
8867 GIMPLE_DEBUG_INLINE_ENTRY.
8868 (gimple_build_debug_inline_entry): Declare.
8869 (gimple_debug_inline_entry_p): New.
8870 (gimple_debug_nonbind_marker_p): Adjust.
8871 * insn-notes.def (INLINE_ENTRY): New.
8872 * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
8873 inline entry marker notes.
8874 (print_insn): Likewise.
8875 * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
8876 (INSN_DEBUG_MARKER_KIND): Likewise.
8877 (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
8878 * tree-inline.c (expand_call_inline): Build and insert
8879 debug_inline_entry stmt.
8880 * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
8881 inline entry blocks early, if nonbind markers are enabled.
8882 (dump_scope_block): Dump fragment info.
8883 * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
8884 * doc/gimple.texi (gimple_debug_inline_entry_p): New.
8885 (gimple_build_debug_inline_entry): New.
8886 * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
8887 Enable/disable inline entry points too.
8888 * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
8889 (DEBUG_INSN): Describe inline entry markers.
8890
8891 * common.opt (gvariable-location-views): New.
8892 (gvariable-location-views=incompat5): New.
8893 * config.in: Rebuilt.
8894 * configure: Rebuilt.
8895 * configure.ac: Test assembler for view support.
8896 * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
8897 * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
8898 * dwarf2out.c (var_loc_view): New typedef.
8899 (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
8900 (dwarf2out_locviews_in_attribute): New.
8901 (dwarf2out_locviews_in_loclist): New.
8902 (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
8903 (enum dw_line_info_opcode): Add LI_adv_address.
8904 (struct dw_line_info_table): Add view.
8905 (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
8906 (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
8907 (zero_view_p): New variable.
8908 (ZERO_VIEW_P): New macro.
8909 (output_asm_line_debug_info): New.
8910 (struct var_loc_node): Add view.
8911 (add_AT_view_list, AT_loc_list): New.
8912 (add_var_loc_to_decl): Add view param. Test it against last.
8913 (new_loc_list): Add view params. Record them.
8914 (AT_loc_list_ptr): Handle loc and view lists.
8915 (view_list_to_loc_list_val_node): New.
8916 (print_dw_val): Handle dw_val_class_view_list.
8917 (size_of_die): Likewise.
8918 (value_format): Likewise.
8919 (loc_list_has_views): New.
8920 (gen_llsym): Set vl_symbol too.
8921 (maybe_gen_llsym, skip_loc_list_entry): New.
8922 (dwarf2out_maybe_output_loclist_view_pair): New.
8923 (output_loc_list): Output view list or entries too.
8924 (output_view_list_offset): New.
8925 (output_die): Handle dw_val_class_view_list.
8926 (output_dwarf_version): New.
8927 (output_compilation_unit_header): Use it.
8928 (output_skeleton_debug_sections): Likewise.
8929 (output_rnglists, output_line_info): Likewise.
8930 (output_pubnames, output_aranges): Update version comments.
8931 (output_one_line_info_table): Output view numbers in asm comments.
8932 (dw_loc_list): Determine current endview, pass it to new_loc_list.
8933 Call maybe_gen_llsym.
8934 (loc_list_from_tree_1): Adjust.
8935 (add_AT_location_description): Create view list attribute if
8936 needed, check it's absent otherwise.
8937 (convert_cfa_to_fb_loc_list): Adjust.
8938 (maybe_emit_file): Call output_asm_line_debug_info for test.
8939 (dwarf2out_var_location): Reset views as needed. Precompute
8940 add_var_loc_to_decl args. Call get_attr_min_length only if we have the
8941 attribute. Set view.
8942 (new_line_info_table): Reset next view.
8943 (set_cur_line_info_table): Call output_asm_line_debug_info for test.
8944 (dwarf2out_source_line): Likewise. Output view resets and labels to
8945 the assembler, or select appropriate line info opcodes.
8946 (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
8947 (optimize_string_length): Catch it. Adjust.
8948 (resolve_addr): Copy vl_symbol along with ll_symbol. Handle
8949 dw_val_class_view_list, and remove it if no longer needed.
8950 (hash_loc_list): Hash view numbers.
8951 (loc_list_hasher::equal): Compare them.
8952 (optimize_location_lists): Check whether a view list symbol is
8953 needed, and whether the locview attribute is present, and
8954 whether they match. Remove the locview attribute if no longer
8955 needed.
8956 (index_location_lists): Call skip_loc_list_entry for test.
8957 (dwarf2out_finish): Call output_asm_line_debug_info for test.
8958 Use output_dwarf_version.
8959 * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
8960 (struct dw_val_node): Add val_view_list.
8961 * final.c (SEEN_NEXT_VIEW): New.
8962 (set_next_view_needed): New.
8963 (clear_next_view_needed): New.
8964 (maybe_output_next_view): New.
8965 (final_start_function): Rename to...
8966 (final_start_function_1): ... this. Take pointer to FIRST,
8967 add SEEN parameter. Emit param bindings in the initial view.
8968 (final_start_function): Reintroduce SEEN-less interface.
8969 (final): Rename to...
8970 (final_1): ... this. Take SEEN parameter. Output final pending
8971 next view at the end.
8972 (final): Reintroduce seen-less interface.
8973 (final_scan_insn): Output pending next view before switching
8974 sections or ending a block. Mark the next view as needed when
8975 outputting variable locations. Notify debug backend of section
8976 changes, and of location view changes.
8977 (rest_of_handle_final): Adjust.
8978 * toplev.c (process_options): Autodetect value for debug variable
8979 location views option. Warn on incompat5 without -gdwarf-5.
8980 * doc/invoke.texi (gvariable-location-views): New.
8981 (gvariable-location-views=incompat5): New.
8982 (gno-variable-location-views): New.
8983
8984 2018-02-08 David Malcolm <dmalcolm@redhat.com>
8985
8986 PR tree-optimization/84136
8987 * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
8988 that the result of find_edge is non-NULL.
8989
8990 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
8991
8992 PR target/83008
8993 * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
8994 storing integer register in SImode. Fix cost of 256 and 512
8995 byte aligned SSE register store.
8996
8997 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
8998
8999 * config/i386/i386.c (ix86_multiplication_cost): Fix
9000 multiplication cost for TARGET_AVX512DQ.
9001
9002 2018-02-08 Marek Polacek <polacek@redhat.com>
9003
9004 PR tree-optimization/84238
9005 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
9006 get_range_strlen.
9007
9008 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
9009
9010 PR tree-optimization/84265
9011 * tree-vect-stmts.c (vectorizable_store): Don't treat
9012 VMAT_CONTIGUOUS accesses as grouped.
9013 (vectorizable_load): Likewise.
9014
9015 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
9016
9017 PR tree-optimization/81635
9018 * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
9019 * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
9020 (test_round_for_mask): New functions.
9021 (wide_int_cc_tests): Call test_round_for_mask.
9022 * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
9023 * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
9024 * tree-data-ref.c (split_constant_offset_1): Use it to refine the
9025 range returned by get_range_info.
9026
9027 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
9028
9029 PR ipa/81360
9030 * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
9031 * symtab.c: Include builtins.h
9032 (symtab_node::output_to_lto_symbol_table_p): Move here
9033 from lto-streamer-out.c:output_symbol_p.
9034 * lto-streamer-out.c (write_symbol): Turn early exit to assert.
9035 (output_symbol_p): Move all logic to symtab.c
9036 (produce_symtab): Update.
9037
9038 2018-02-08 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
9039
9040 * config/s390/s390-opts.h (enum indirect_branch): Define.
9041 * config/s390/s390-protos.h (s390_return_addr_from_memory)
9042 (s390_indirect_branch_via_thunk)
9043 (s390_indirect_branch_via_inline_thunk): Add function prototypes.
9044 (enum s390_indirect_branch_type): Define.
9045 * config/s390/s390.c (struct s390_frame_layout, struct
9046 machine_function): Remove.
9047 (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
9048 (indirect_branch_table_label_no, indirect_branch_table_name):
9049 Define variables.
9050 (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
9051 (enum s390_indirect_branch_option): Define.
9052 (s390_return_addr_from_memory): New function.
9053 (s390_handle_string_attribute): New function.
9054 (s390_attribute_table): Add new attribute handler.
9055 (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
9056 (s390_indirect_branch_via_thunk): New function.
9057 (s390_indirect_branch_via_inline_thunk): New function.
9058 (s390_function_ok_for_sibcall): When jumping via thunk disallow
9059 sibling call optimization for non z10 compiles.
9060 (s390_emit_call): Force indirect branch target to be a single
9061 register. Add r1 clobber for non-z10 compiles.
9062 (s390_emit_epilogue): Emit return jump via return_use expander.
9063 (s390_reorg): Handle JUMP_INSNs as execute targets.
9064 (s390_option_override_internal): Perform validity checks for the
9065 new command line options.
9066 (s390_indirect_branch_attrvalue): New function.
9067 (s390_indirect_branch_settings): New function.
9068 (s390_set_current_function): Invoke s390_indirect_branch_settings.
9069 (s390_output_indirect_thunk_function): New function.
9070 (s390_code_end): Implement target hook.
9071 (s390_case_values_threshold): Implement target hook.
9072 (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
9073 macros.
9074 * config/s390/s390.h (struct s390_frame_layout)
9075 (struct machine_function): Move here from s390.c.
9076 (TARGET_INDIRECT_BRANCH_NOBP_RET)
9077 (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
9078 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
9079 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
9080 (TARGET_INDIRECT_BRANCH_NOBP_CALL)
9081 (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
9082 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
9083 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
9084 (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
9085 * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
9086 (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
9087 (mnemonic attribute): Add values which aren't recognized
9088 automatically.
9089 ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
9090 pattern for branch conversion. Fix mnemonic attribute.
9091 ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
9092 indirect branch via thunk if requested.
9093 ("indirect_jump", "<code>"): Expand patterns for branch conversion.
9094 ("*indirect_jump"): Disable for branch conversion using out of
9095 line thunks.
9096 ("indirect_jump_via_thunk<mode>_z10")
9097 ("indirect_jump_via_thunk<mode>")
9098 ("indirect_jump_via_inlinethunk<mode>_z10")
9099 ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
9100 ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
9101 ("casesi_jump_via_inlinethunk<mode>_z10")
9102 ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
9103 ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
9104 ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
9105 ("*indirect2_jump"): Disable for branch conversion.
9106 ("casesi_jump"): Turn into expander and expand patterns for branch
9107 conversion.
9108 ("return_use"): New expander.
9109 ("*return"): Emit return via thunk and rename it to ...
9110 ("*return<mode>"): ... this one.
9111 * config/s390/s390.opt: Add new options and and enum for the
9112 option values.
9113
9114 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
9115
9116 * lra-constraints.c (match_reload): Unconditionally use
9117 gen_lowpart_SUBREG, rather than selecting between that
9118 and equivalent gen_rtx_SUBREG code.
9119
9120 2018-02-08 Richard Biener <rguenther@suse.de>
9121
9122 PR tree-optimization/84233
9123 * tree-ssa-phiprop.c (propagate_with_phi): Use separate
9124 changed flag instead of boguously re-using phi_inserted.
9125
9126 2018-02-08 Martin Jambor <mjambor@suse.cz>
9127
9128 * hsa-gen.c (get_symbol_for_decl): Set program allocation for
9129 static local variables.
9130
9131 2018-02-08 Richard Biener <rguenther@suse.de>
9132
9133 PR tree-optimization/84278
9134 * tree-vect-stmts.c (vectorizable_store): When looking for
9135 smaller vector types to perform grouped strided loads/stores
9136 make sure the mode is supported by the target.
9137 (vectorizable_load): Likewise.
9138
9139 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
9140
9141 * config/aarch64/aarch64.c (aarch64_components_for_bb):
9142 Increase LDP/STP opportunities by adding adjacent callee-saves.
9143
9144 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
9145
9146 PR rtl-optimization/84068
9147 PR rtl-optimization/83459
9148 * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
9149
9150 2018-02-08 Aldy Hernandez <aldyh@redhat.com>
9151
9152 PR tree-optimization/84224
9153 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
9154 * calls.c (gimple_alloca_call_p): Only return TRUE when we have
9155 non-zero arguments.
9156
9157 2018-02-07 Iain Sandoe <iain@codesourcery.com>
9158
9159 PR target/84113
9160 * config/rs6000/altivec.md (*restore_world): Remove LR use.
9161 * config/rs6000/predicates.md (restore_world_operation): Adjust op
9162 count, remove one USE.
9163
9164 2018-02-07 Michael Meissner <meissner@linux.vnet.ibm.com>
9165
9166 * doc/install.texi (Configuration): Document the
9167 --with-long-double-format={ibm,ieee} PowerPC configuration
9168 options.
9169
9170 PR target/84154
9171 * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
9172 Convert from define_expand to be define_insn_and_split. Rework
9173 float/double/_Float128 conversions to QI/HI/SImode to work with
9174 both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where
9175 conversions to QI/HImode types did a store and then a load to
9176 truncate the value. For conversions to VSX registers, don't split
9177 the insn, instead emit the code directly. Use the code iterator
9178 any_fix to combine signed and unsigned conversions.
9179 (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
9180 (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
9181 (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
9182 (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
9183 (fix_<mode>di2_hw): Likewise.
9184 (fixuns_<mode>di2_hw): Likewise.
9185 (fix_<mode>si2_hw): Likewise.
9186 (fixuns_<mode>si2_hw): Likewise.
9187 (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
9188 (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
9189 (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
9190 fix<uns>_trunc<SFDF:mode>si2_p8.
9191 (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer used.
9192 (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
9193 (fix<uns>_<mode>_mem): Likewise.
9194 (fctiw<u>z_<mode>_mem): Likewise.
9195 (fix<uns>_<mode>_mem): Likewise.
9196 (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
9197 the register allocator from doing a direct move to the GPRs to do
9198 a store, and instead use the ISA 3.0 store byte/half-word from
9199 vector register instruction. For IEEE 128-bit floating point,
9200 also optimize stores of 32-bit ints.
9201 (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
9202
9203 2018-02-07 Alan Hayward <alan.hayward@arm.com>
9204
9205 * genextract.c (push_pathstr_operand): New function to support
9206 [a-zA-Z].
9207 (walk_rtx): Call push_pathstr_operand.
9208 (print_path): Support [a-zA-Z].
9209
9210 2018-02-07 Richard Biener <rguenther@suse.de>
9211
9212 PR tree-optimization/84037
9213 * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
9214 (cse_and_gimplify_to_preheader): Declare.
9215 (vect_get_place_in_interleaving_chain): Likewise.
9216 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
9217 ivexpr_map.
9218 (_loop_vec_info::~_loop_vec_info): Delete it.
9219 (cse_and_gimplify_to_preheader): New function.
9220 * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
9221 * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
9222 (vectorizable_load): Likewise. For grouped stores always base
9223 the IV on the first element.
9224 * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
9225 condition before gimplifying.
9226
9227 2018-02-07 Jakub Jelinek <jakub@redhat.com>
9228
9229 * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
9230 *DIV_EXPR and *MOD_EXPR.
9231
9232 2018-02-07 H.J. Lu <hongjiu.lu@intel.com>
9233
9234 PR target/84248
9235 * config/i386/i386.c (ix86_option_override_internal): Mask out
9236 the CF_SET bit when checking -fcf-protection.
9237
9238 2018-02-07 Tom de Vries <tom@codesourcery.com>
9239
9240 PR libgomp/84217
9241 * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
9242 enough.
9243
9244 2018-02-07 Richard Biener <rguenther@suse.de>
9245
9246 PR tree-optimization/84204
9247 * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
9248 this place.
9249
9250 PR tree-optimization/84205
9251 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
9252 special-case isl_ast_op_zdiv_r.
9253
9254 PR tree-optimization/84223
9255 * graphite-scop-detection.c (gather_bbs::before_dom_children):
9256 Only add conditions from within the region.
9257 (gather_bbs::after_dom_children): Adjust.
9258
9259 2018-02-07 Georg-Johann Lay <avr@gjlay.de>
9260
9261 PR target/84209
9262 * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
9263 * config/avr/avr.md: Only post-reload split REG-REG moves if
9264 either register is GENERAL_REG_P.
9265
9266 2018-02-07 Jakub Jelinek <jakub@redhat.com>
9267
9268 PR tree-optimization/84235
9269 * tree-ssa-scopedtables.c
9270 (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
9271 if the subtraction is performed in floating point type where NaNs are
9272 honored. For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
9273 build 1. Formatting fix.
9274
9275 2018-02-06 Jakub Jelinek <jakub@redhat.com>
9276
9277 PR target/84146
9278 * config/i386/i386.c (rest_of_insert_endbranch): Only skip
9279 NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
9280 and skip it regardless of bb boundaries. Use CALL_P macro,
9281 don't test INSN_P (insn) together with CALL_P or JUMP_P check
9282 unnecessarily, formatting fix.
9283
9284 2018-02-06 Michael Collison <michael.collison@arm.com>
9285
9286 * config/arm/thumb2.md:
9287 (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
9288 (*thumb_mov_notscc): Ditto.
9289
9290 2018-02-06 Michael Meissner <meissner@linux.vnet.ibm.com>
9291
9292 PR target/84154
9293 * config/rs6000/rs6000.md (su code attribute): Use "u" for
9294 unsigned_fix, not "s".
9295
9296 2018-02-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
9297
9298 * configure.ac (gcc_fn_eh_frame_ro): New function.
9299 (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
9300 correct .eh_frame permissions.
9301 * configure: Regenerate.
9302
9303 2018-02-06 Andrew Jenner <andrew@codeourcery.com>
9304
9305 * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
9306 irrelevant options.
9307
9308 2018-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
9309
9310 * config/rs6000/rs6000.c (rs6000_option_override_internal):
9311 Display warning message for -mno-speculate-indirect-jumps.
9312
9313 2018-02-06 Andrew Jenner <andrew@codesourcery.com>
9314
9315 * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
9316 Undocumented.
9317 * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
9318
9319 2018-02-06 Aldy Hernandez <aldyh@redhat.com>
9320
9321 PR tree-optimization/84225
9322 * tree-eh.c (find_trapping_overflow): Only call
9323 operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
9324
9325 2018-02-06 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
9326
9327 PR target/84145
9328 * config/i386/i386.c: Reimplement the check of possible options
9329 -mibt/-mshstk conbination. Change error messages.
9330 * doc/invoke.texi: Fix a typo: remove extra '='.
9331
9332 2018-02-06 Marek Polacek <polacek@redhat.com>
9333
9334 PR tree-optimization/84228
9335 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
9336
9337 2018-02-06 Tamar Christina <tamar.christina@arm.com>
9338
9339 PR target/82641
9340 * config/arm/arm.c (arm_print_asm_arch_directives): Record already
9341 emitted arch directives.
9342 * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
9343 __ARM_FEATURE_COPROC before changing architectures.
9344
9345 2018-02-06 Richard Biener <rguenther@suse.de>
9346
9347 * config/i386/i386.c (print_reg): Fix typo.
9348 (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
9349
9350 2018-02-06 Eric Botcazou <ebotcazou@adacore.com>
9351
9352 * configure: Regenerate.
9353
9354 2018-02-05 Martin Sebor <msebor@redhat.com>
9355
9356 PR tree-optimization/83369
9357 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
9358 inlining context.
9359
9360 2018-02-05 Martin Liska <mliska@suse.cz>
9361
9362 * doc/invoke.texi: Cherry-pick upstream r323995.
9363
9364 2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
9365
9366 * ira.c (ira_init_register_move_cost): Adjust comment.
9367
9368 2018-02-05 Martin Liska <mliska@suse.cz>
9369
9370 PR gcov-profile/84137
9371 * doc/gcov.texi: Fix typo in documentation.
9372
9373 2018-02-05 Martin Liska <mliska@suse.cz>
9374
9375 PR gcov-profile/83879
9376 * doc/gcov.texi: Document necessity of --dynamic-list-data when
9377 using dlopen functionality.
9378
9379 2018-02-05 Olga Makhotina <olga.makhotina@intel.com>
9380
9381 * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
9382 _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
9383 _mm_maskz_range_ss, _mm_mask_range_round_ss,
9384 _mm_maskz_range_round_ss): New intrinsics.
9385 (__builtin_ia32_rangesd128_round)
9386 (__builtin_ia32_rangess128_round): Remove.
9387 (__builtin_ia32_rangesd128_mask_round,
9388 __builtin_ia32_rangess128_mask_round): New builtins.
9389 * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
9390 __builtin_ia32_rangess128_round): Remove.
9391 (__builtin_ia32_rangesd128_mask_round,
9392 __builtin_ia32_rangess128_mask_round): New builtins.
9393 * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
9394 (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
9395 ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
9396 "<round_saeonly_constraint>")): Changed to ...
9397 ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
9398 "<round_saeonly_scalar_constraint>")): ... this.
9399 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
9400 %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
9401 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
9402 %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
9403 %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
9404
9405 2018-02-02 Andrew Jenner <andrew@codesourcery.com>
9406
9407 * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
9408 options.
9409 * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
9410 Remove all values except native, 8540 and 8548.
9411
9412 2018-02-02 H.J. Lu <hongjiu.lu@intel.com>
9413
9414 * config/i386/i386.c (ix86_output_function_return): Pass
9415 INVALID_REGNUM, instead of -1, as invalid register number to
9416 indirect_thunk_name and output_indirect_thunk.
9417
9418 2018-02-02 Julia Koval <julia.koval@intel.com>
9419
9420 * config.gcc: Add -march=icelake.
9421 * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
9422 * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
9423 * config/i386/i386.c (processor_costs): Add m_ICELAKE.
9424 (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
9425 PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
9426 (processor_target_table): Add icelake.
9427 (ix86_option_override_internal): Handle new PTAs.
9428 (get_builtin_code_for_version): Handle icelake.
9429 (M_INTEL_COREI7_ICELAKE): New.
9430 (fold_builtin_cpu): Handle icelake.
9431 * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
9432 * doc/invoke.texi: Add -march=icelake.
9433
9434 2018-02-02 Julia Koval <julia.koval@intel.com>
9435
9436 * config/i386/i386.c (ix86_option_override_internal): Change flags type
9437 to wide_int_bitmask.
9438 * wide-int-bitmask.h: New.
9439
9440 2018-02-02 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
9441
9442 PR target/84066
9443 * config/i386/i386.md: Replace Pmode with word_mode in
9444 builtin_setjmp_setup and builtin_longjmp to support x32.
9445
9446 2018-02-01 Peter Bergner <bergner@vnet.ibm.com>
9447
9448 PR target/56010
9449 PR target/83743
9450 * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
9451 #include "opts.h".
9452 (rs6000_supported_cpu_names): New static variable.
9453 (linux_cpu_translation_table): Likewise.
9454 (elf_platform) <cpu>: Define new static variable and use it.
9455 Translate kernel AT_PLATFORM name to canonical name if needed.
9456 Error if platform name is unknown.
9457
9458 2018-02-01 Aldy Hernandez <aldyh@redhat.com>
9459
9460 PR target/84089
9461 * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
9462
9463 2018-02-01 Jeff Law <law@redhat.com>
9464
9465 PR target/84128
9466 * config/i386/i386.c (release_scratch_register_on_entry): Add new
9467 OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore
9468 the scratch if RELEASE_VIA_POP is false.
9469 (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
9470 If we have to save a temporary register, decrement SIZE appropriately.
9471 Pass new arguments to release_scratch_register_on_entry.
9472 (ix86_adjust_stack_and_probe): Likewise.
9473 (ix86_emit_probe_stack_range): Pass new arguments to
9474 release_scratch_register_on_entry.
9475
9476 2018-02-01 Uros Bizjak <ubizjak@gmail.com>
9477
9478 PR rtl-optimization/84157
9479 * combine.c (change_zero_ext): Use REG_P predicate in
9480 front of HARD_REGISTER_P predicate.
9481
9482 2018-02-01 Georg-Johann Lay <avr@gjlay.de>
9483
9484 * config/avr/avr.c (avr_option_override): Move disabling of
9485 -fdelete-null-pointer-checks to...
9486 * common/config/avr/avr-common.c (avr_option_optimization_table):
9487 ...here.
9488
9489 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
9490
9491 PR tree-optimization/81635
9492 * tree-data-ref.c (split_constant_offset_1): For types that
9493 wrap on overflow, try to use range info to prove that wrapping
9494 cannot occur.
9495
9496 2018-02-01 Renlin Li <renlin.li@arm.com>
9497
9498 PR target/83370
9499 * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
9500 TAILCALL_ADDR_REGS.
9501 (aarch64_register_move_cost): Likewise.
9502 * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
9503 TAILCALL_ADDR_REGS.
9504 (REG_CLASS_NAMES): Likewise.
9505 (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
9506 TAILCALL_ADDR_REGS. Remove IP registers.
9507 * config/aarch64/aarch64.md (Ucs): Update register constraint.
9508
9509 2018-02-01 Richard Biener <rguenther@suse.de>
9510
9511 * domwalk.h (dom_walker::dom_walker): Add additional constructor
9512 for specifying RPO order and allow NULL for that.
9513 * domwalk.c (dom_walker::dom_walker): Likewise.
9514 (dom_walker::walk): Handle NULL RPO order.
9515 * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
9516 in RPO order.
9517 (rewrite_update_dom_walker): Likewise.
9518 (mark_def_dom_walker): Likewise.
9519
9520 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
9521
9522 * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
9523 (aarch64_maybe_expand_sve_subreg_move): Declare.
9524 * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
9525 * config/aarch64/predicates.md (aarch64_any_register_operand): New
9526 predicate.
9527 * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
9528 that are semantically a reverse operation.
9529 (*aarch64_sve_mov<mode>_subreg_be): New pattern.
9530 * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
9531 (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
9532 functions.
9533 (aarch64_can_change_mode_class): For big-endian, forbid changes
9534 between two SVE modes if they have different element sizes.
9535
9536 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
9537
9538 * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
9539 the TImode handling for big-endian targets.
9540
9541 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
9542
9543 * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
9544 (*sve_ld1rq<Vesize>): ... this new pattern. Handle all element sizes,
9545 not just bytes.
9546 * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
9547 Remove BSWAP handing for big-endian targets and use the form of
9548 LD1RQ appropariate for the mode.
9549
9550 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
9551
9552 * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
9553 all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
9554 duplicated element.
9555
9556 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
9557
9558 PR tearget/83845
9559 * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
9560 check for operands that need to go through aarch64_sve_reload_be.
9561
9562 2018-02-01 Jakub Jelinek <jakub@redhat.com>
9563
9564 PR tree-optimization/81661
9565 PR tree-optimization/84117
9566 * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
9567 * tree-eh.c: Include gimplify.h.
9568 (find_trapping_overflow, replace_trapping_overflow,
9569 rewrite_to_non_trapping_overflow): New functions.
9570 * tree-vect-loop.c: Include tree-eh.h.
9571 (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
9572 * tree-data-ref.c: Include tree-eh.h.
9573 (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
9574
9575 2018-01-31 Uros Bizjak <ubizjak@gmail.com>
9576
9577 PR rtl-optimization/84123
9578 * combine.c (change_zero_ext): Check if hard register satisfies
9579 can_change_dest_mode before calling gen_lowpart_SUBREG.
9580
9581 2018-01-31 Vladimir Makarov <vmakarov@redhat.com>
9582
9583 PR target/82444
9584 * ira.c (ira_init_register_move_cost): Remove assert.
9585
9586 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
9587
9588 PR rtl-optimization/84071
9589 * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
9590 * doc/tm.texi: Regenerate.
9591
9592 2018-01-31 Richard Biener <rguenther@suse.de>
9593
9594 PR tree-optimization/84132
9595 * tree-data-ref.c (analyze_miv_subscript): Properly
9596 check whether evolution_function_is_affine_multivariate_p
9597 before calling gcd_of_steps_may_divide_p.
9598
9599 2018-01-31 Julia Koval <julia.koval@intel.com>
9600
9601 PR target/83618
9602 * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
9603 * config/i386/i386.md (rdpid_rex64) New.
9604 (rdpid): Make 32bit only.
9605
9606 2018-01-29 Aldy Hernandez <aldyh@redhat.com>
9607
9608 PR lto/84105
9609 * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
9610 an IDENTIFIER_NODE for FUNCTION_TYPE's.
9611
9612 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
9613
9614 Revert
9615 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
9616
9617 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
9618
9619 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
9620
9621 PR rtl-optimization/84071
9622 * combine.c (record_dead_and_set_regs_1): Record the source unmodified
9623 for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
9624
9625 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
9626
9627 * config/arc/arc.c (arc_handle_aux_attribute): New function.
9628 (arc_attribute_table): Add 'aux' attribute.
9629 (arc_in_small_data_p): Consider aux like variables.
9630 (arc_is_aux_reg_p): New function.
9631 (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
9632 (arc_get_aux_arg): New function.
9633 (prepare_move_operands): Handle aux-register access.
9634 (arc_handle_aux_attribute): New function.
9635 * doc/extend.texi (ARC Variable attributes): Add subsection.
9636
9637 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
9638
9639 * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
9640 * config/arc/arc.c (arc_handle_uncached_attribute): New function.
9641 (arc_attribute_table): Add 'uncached' attribute.
9642 (arc_print_operand): Print '.di' flag for uncached memory
9643 accesses.
9644 (arc_in_small_data_p): Do not consider for small data the uncached
9645 types.
9646 (arc_is_uncached_mem_p): New function.
9647 * config/arc/predicates.md (compact_store_memory_operand): Check
9648 for uncached memory accesses.
9649 (nonvol_nonimm_operand): Likewise.
9650 * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
9651
9652 2018-01-31 Jakub Jelinek <jakub@redhat.com>
9653
9654 PR c/84100
9655 * common.opt (falign-functions=, falign-jumps=, falign-labels=,
9656 falign-loops=): Add Optimization flag.
9657
9658 2018-01-30 Jeff Law <law@redhat.com>
9659
9660 PR target/84064
9661 * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
9662 INT_REGISTERS_SAVED. Check it prior to calling
9663 get_scratch_register_on_entry.
9664 (ix86_adjust_stack_and_probe): Similarly.
9665 (ix86_emit_probe_stack_range): Similarly.
9666 (ix86_expand_prologue): Corresponding changes.
9667
9668 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
9669
9670 PR target/40411
9671 * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
9672 -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
9673
9674 2018-01-30 Vladimir Makarov <vmakarov@redhat.com>
9675
9676 PR target/84112
9677 * lra-constraints.c (curr_insn_transform): Process AND in the
9678 address.
9679
9680 2018-01-30 Jakub Jelinek <jakub@redhat.com>
9681
9682 PR rtl-optimization/83986
9683 * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
9684 dependence against last_pending_memory_flush in addition to
9685 pending_jump_insns.
9686
9687 2018-01-30 Alexandre Oliva <aoliva@redhat.com>
9688
9689 PR tree-optimization/81611
9690 * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
9691 copies.
9692
9693 2018-01-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
9694
9695 PR target/83758
9696 * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
9697 a reg rtx.
9698
9699 2018-01-30 Richard Biener <rguenther@suse.de>
9700 Jakub Jelinek <jakub@redhat.com>
9701
9702 PR tree-optimization/84111
9703 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
9704 inner loops added during recursion, as they don't have up-to-date
9705 SSA form.
9706
9707 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
9708
9709 PR ipa/81360
9710 * ipa-inline.c (can_inline_edge_p): Break out late tests to...
9711 (can_inline_edge_by_limits_p): ... here.
9712 (can_early_inline_edge_p, check_callers,
9713 update_caller_keys, update_callee_keys, recursive_inlining,
9714 add_new_edges_to_heap, speculation_useful_p,
9715 inline_small_functions,
9716 inline_small_functions, flatten_function,
9717 inline_to_all_callers_1): Update.
9718
9719 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
9720
9721 * profile-count.c (profile_count::combine_with_ipa_count): Handle
9722 zeros correctly.
9723
9724 2018-01-30 Richard Biener <rguenther@suse.de>
9725
9726 PR tree-optimization/83008
9727 * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
9728 invariant and constant vector uses in stmts when they need
9729 more than one stmt.
9730
9731 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
9732
9733 PR bootstrap/84017
9734 * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
9735 * configure: Regenerate.
9736
9737 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
9738
9739 * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
9740 pattern.
9741 (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
9742 Use gen_rtx_REG rather than gen_lowpart.
9743
9744 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
9745
9746 * lra-constraints.c (match_reload): Use subreg_lowpart_offset
9747 rather than 0 when creating partial subregs.
9748
9749 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
9750
9751 * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
9752 of usage.
9753
9754 2018-01-29 Michael Meissner <meissner@linux.vnet.ibm.com>
9755
9756 PR target/81550
9757 * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
9758 and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
9759 -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
9760 flags. This restores the settings used before the 2017-07-24.
9761 Turning off pre increment/decrement/modify allows IVOPTS to
9762 optimize DF/SF loops where the index is an int.
9763
9764 2018-01-29 Richard Biener <rguenther@suse.de>
9765 Kelvin Nilsen <kelvin@gcc.gnu.org>
9766
9767 PR bootstrap/80867
9768 * tree-vect-stmts.c (vectorizable_call): Don't call
9769 targetm.vectorize_builtin_md_vectorized_function if callee is
9770 NULL.
9771
9772 2018-01-22 Carl Love <cel@us.ibm.com>
9773
9774 * doc/extend.tex: Fix typo in second arg in
9775 __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
9776
9777 2018-01-29 Richard Biener <rguenther@suse.de>
9778
9779 PR tree-optimization/84086
9780 * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
9781 (flush_ssaname_freelist): When SSA names were released reset
9782 the SCEV hash table.
9783
9784 2018-01-29 Richard Biener <rguenther@suse.de>
9785
9786 PR tree-optimization/84057
9787 * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
9788 removed paths when removing edges.
9789
9790 2018-01-27 H.J. Lu <hongjiu.lu@intel.com>
9791
9792 * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
9793 -mfunction-return=@var{choice}.
9794
9795 2018-01-27 Bernd Edlinger <bernd.edlinger@hotmail.de>
9796
9797 PR diagnostic/84034
9798 * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
9799 Handle CR like TAB.
9800 (layout::print_source_line): Likewise.
9801 (test_get_line_width_without_trailing_whitespace): Add test cases.
9802
9803 2018-01-27 Jakub Jelinek <jakub@redhat.com>
9804
9805 PR middle-end/84040
9806 * sched-deps.c (sched_macro_fuse_insns): Return immediately for
9807 debug insns.
9808
9809 2018-01-26 Jim Wilson <jimw@sifive.com>
9810
9811 * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
9812
9813 * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
9814 specified.
9815
9816 2018-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9817
9818 * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
9819 and CMP + SUB-immediate -> SUBS.
9820
9821 2018-01-26 Martin Sebor <msebor@redhat.com>
9822
9823 PR tree-optimization/83896
9824 * tree-ssa-strlen.c (get_string_len): Rename...
9825 (get_string_cst_length): ...to this. Return HOST_WIDE_INT.
9826 Avoid assuming length is constant.
9827 (handle_char_store): Use HOST_WIDE_INT for string length.
9828
9829 2018-01-26 Uros Bizjak <ubizjak@gmail.com>
9830
9831 PR target/81763
9832 * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
9833 to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
9834
9835 2018-01-26 Richard Biener <rguenther@suse.de>
9836
9837 PR rtl-optimization/84003
9838 * dse.c (record_store): Only record redundant stores when
9839 the earlier store aliases at least all accesses the later one does.
9840
9841 2018-01-26 Jakub Jelinek <jakub@redhat.com>
9842
9843 PR rtl-optimization/83985
9844 * dce.c (deletable_insn_p): Return false for separate shrink wrapping
9845 REG_CFA_RESTORE insns.
9846 (delete_unmarked_insns): Don't ignore separate shrink wrapping
9847 REG_CFA_RESTORE insns here.
9848
9849 PR c/83989
9850 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
9851 use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
9852
9853 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
9854
9855 * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
9856 * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
9857 (arc_init): Likewise.
9858 (arc_override_options): Likewise.
9859 (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
9860 value.
9861 (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
9862 support.
9863 * config/arc/arc.h (TARGET_DBNZ): Define.
9864 * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
9865 properly set the tune attribute.
9866 (dbnz): Use TARGET_DBNZ guard.
9867 * config/arc/arc.opt (mtune): Add core3 option.
9868
9869 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
9870
9871 * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
9872 recognize new pic like addresses.
9873 (arc_delegitimize_address): Clean up.
9874
9875 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
9876
9877 * config/arc/arc-arches.def: Option mrf16 valid for all
9878 architectures.
9879 * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
9880 * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
9881 * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
9882 * config/arc/arc-tables.opt: Regenerate.
9883 * config/arc/arc.c (arc_conditional_register_usage): Handle
9884 reduced register file case.
9885 (arc_file_start): Set must have build attributes.
9886 * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
9887 mrf16 option value.
9888 * config/arc/arc.opt (mrf16): Add new option.
9889 * config/arc/elf.h (ATTRIBUTE_PCS): Define.
9890 * config/arc/genmultilib.awk: Handle new mrf16 option.
9891 * config/arc/linux.h (ATTRIBUTE_PCS): Define.
9892 * config/arc/t-multilib: Regenerate.
9893 * doc/invoke.texi (ARC Options): Document mrf16 option.
9894
9895 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
9896
9897 * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
9898 * config/arc/arc.c (arc_handle_secure_attribute): New function.
9899 (arc_attribute_table): Add 'secure_call' attribute.
9900 (arc_print_operand): Print secure call operand.
9901 (arc_function_ok_for_sibcall): Don't optimize tail calls when
9902 secure.
9903 (arc_is_secure_call_p): New function. * config/arc/arc.md
9904 (call_i): Add support for sjli instruction.
9905 (call_value_i): Likewise.
9906 * config/arc/constraints.md (Csc): New constraint.
9907
9908 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
9909 John Eric Martin <John.Martin@emmicro-us.com>
9910
9911 * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
9912 * config/arc/arc.c (_arc_jli_section): New struct.
9913 (arc_jli_section): New type.
9914 (rc_jli_sections): New static variable.
9915 (arc_handle_jli_attribute): New function.
9916 (arc_attribute_table): Add jli_always and jli_fixed attribute.
9917 (arc_file_end): New function.
9918 (TARGET_ASM_FILE_END): Define.
9919 (arc_print_operand): Reuse 'S' letter for JLI output instruction.
9920 (arc_add_jli_section): New function.
9921 (jli_call_scan): Likewise.
9922 (arc_reorg): Call jli_call_scan.
9923 (arc_output_addsi): Remove 'S' from printing asm operand.
9924 (arc_is_jli_call_p): New function.
9925 * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
9926 operand.
9927 (movhi_insn): Likewise.
9928 (movsi_insn): Likewise.
9929 (movsi_set_cc_insn): Likewise.
9930 (loadqi_update): Likewise.
9931 (load_zeroextendqisi_update): Likewise.
9932 (load_signextendqisi_update): Likewise.
9933 (loadhi_update): Likewise.
9934 (load_zeroextendhisi_update): Likewise.
9935 (load_signextendhisi_update): Likewise.
9936 (loadsi_update): Likewise.
9937 (loadsf_update): Likewise.
9938 (movsicc_insn): Likewise.
9939 (bset_insn): Likewise.
9940 (bxor_insn): Likewise.
9941 (bclr_insn): Likewise.
9942 (bmsk_insn): Likewise.
9943 (bicsi3_insn): Likewise.
9944 (cmpsi_cc_c_insn): Likewise.
9945 (movsi_ne): Likewise.
9946 (movsi_cond_exec): Likewise.
9947 (clrsbsi2): Likewise.
9948 (norm_f): Likewise.
9949 (normw): Likewise.
9950 (swap): Likewise.
9951 (divaw): Likewise.
9952 (flag): Likewise.
9953 (sr): Likewise.
9954 (kflag): Likewise.
9955 (ffs): Likewise.
9956 (ffs_f): Likewise.
9957 (fls): Likewise.
9958 (call_i): Remove 'S' asm letter, add jli instruction.
9959 (call_value_i): Likewise.
9960 * config/arc/arc.op (mjli-always): New option.
9961 * config/arc/constraints.md (Cji): New constraint.
9962 * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
9963 operand.
9964 (subsf3_fpx): Likewise.
9965 (mulsf3_fpx): Likewise.
9966 * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
9967 asm operand.
9968 * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
9969 function attrbutes.
9970 * doc/invoke.texi (ARC): Document mjli-always option.
9971
9972 2018-01-26 Sebastian Perta <sebastian.perta@renesas.com>
9973
9974 * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const
9975 avoid addition with 0 and use incw and decw where possible.
9976
9977 2018-01-26 Richard Biener <rguenther@suse.de>
9978
9979 PR tree-optimization/81082
9980 * fold-const.c (fold_plusminus_mult_expr): Do not perform the
9981 association if it requires casting to unsigned.
9982 * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
9983 from fold_plusminus_mult_expr to catch important cases late when
9984 range info is available.
9985
9986 2018-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
9987
9988 * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
9989 * configure.ac (hidden_linkonce): New test.
9990 * configure: Regenerate.
9991 * config.in: Regenerate.
9992
9993 2018-01-26 Julia Koval <julia.koval@intel.com>
9994
9995 * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
9996 _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
9997 _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
9998 _mm_mask_bitshuffle_epi64_mask): Fix type.
9999 * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
10000 USI_FTYPE_V4DI_V4DI_USI): Remove.
10001 * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
10002 __builtin_ia32_vpshufbitqmb256_mask,
10003 __builtin_ia32_vpshufbitqmb128_mask): Fix types.
10004 * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
10005 * config/i386/sse.md (VI1_AVX512VLBW): Change types.
10006
10007 2018-01-26 Alan Modra <amodra@gmail.com>
10008
10009 PR target/84033
10010 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
10011 UNSPEC_VBPERMQ. Sort other unspecs.
10012
10013 2018-01-25 David Edelsohn <dje.gcc@gmail.com>
10014
10015 * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
10016
10017 2018-01-25 Jan Hubicka <hubicka@ucw.cz>
10018
10019 PR middle-end/83055
10020 * predict.c (drop_profile): Do not push/pop cfun; update also
10021 node->count.
10022 (handle_missing_profiles): Fix logic looking for zero profiles.
10023
10024 2018-01-25 Jakub Jelinek <jakub@redhat.com>
10025
10026 PR middle-end/83977
10027 * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
10028 on functions with #pragma omp declare simd or functions with simd
10029 attribute.
10030 * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
10031 * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
10032 Remove trailing \n from warning_at calls.
10033
10034 2018-01-25 Tom de Vries <tom@codesourcery.com>
10035
10036 PR target/84028
10037 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
10038 for neutered workers.
10039
10040 2018-01-24 Joseph Myers <joseph@codesourcery.com>
10041
10042 PR target/68467
10043 * config/m68k/m68k.c (m68k_promote_function_mode): New function.
10044 (TARGET_PROMOTE_FUNCTION_MODE): New macro.
10045
10046 2018-01-24 Jeff Law <law@redhat.com>
10047
10048 PR target/83994
10049 * i386.c (get_probe_interval): Move to earlier point.
10050 (ix86_compute_frame_layout): If -fstack-clash-protection and
10051 the frame is larger than the probe interval, then use pushes
10052 to save registers rather than reg->mem moves.
10053 (ix86_expand_prologue): Remove conditional for int_registers_saved
10054 assertion.
10055
10056 2018-01-24 Vladimir Makarov <vmakarov@redhat.com>
10057
10058 PR target/84014
10059 * ira-build.c (setup_min_max_allocno_live_range_point): Set up
10060 min/max for never referenced object.
10061
10062 2018-01-24 Jakub Jelinek <jakub@redhat.com>
10063
10064 PR middle-end/83977
10065 * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
10066 here.
10067 * omp-low.c (create_omp_child_function): Remove "omp declare simd"
10068 attributes from DECL_ATTRIBUTES (decl) without affecting
10069 DECL_ATTRIBUTES (current_function_decl).
10070 * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
10071 functions with non-NULL DECL_ABSTRACT_ORIGIN.
10072
10073 2018-01-24 Richard Sandiford <richard.sandiford@linaro.org>
10074
10075 PR tree-optimization/83979
10076 * fold-const.c (fold_comparison): Use constant_boolean_node
10077 instead of boolean_{true,false}_node.
10078
10079 2018-01-24 Jan Hubicka <hubicka@ucw.cz>
10080
10081 * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
10082 with zero counts.
10083
10084 2018-01-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
10085
10086 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
10087 Simplify the clause that sets the length attribute.
10088 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
10089 (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
10090 clause that sets the length attribute.
10091 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
10092
10093 2018-01-24 Tom de Vries <tom@codesourcery.com>
10094
10095 PR target/83589
10096 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
10097 (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
10098 Add strict parameter.
10099 (prevent_branch_around_nothing): Insert dummy insn between branch to
10100 label and label with no ptx insn inbetween.
10101 * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
10102
10103 2018-01-24 Tom de Vries <tom@codesourcery.com>
10104
10105 PR target/81352
10106 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
10107 for neutered threads in warp.
10108 * config/nvptx/nvptx.md (define_insn "exit"): New insn.
10109
10110 2018-01-24 Richard Biener <rguenther@suse.de>
10111
10112 PR tree-optimization/83176
10113 * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
10114 operands.
10115
10116 2018-01-24 Richard Biener <rguenther@suse.de>
10117
10118 PR tree-optimization/82819
10119 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
10120 code generating pluses that are no-ops in the target precision.
10121
10122 2018-01-24 Richard Biener <rguenther@suse.de>
10123
10124 PR middle-end/84000
10125 * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
10126
10127 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
10128
10129 * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
10130 to merge probabilities.
10131 * predict.c (probably_never_executed): Also mark as cold functions
10132 with global 0 profile and guessed local profile.
10133 * profile-count.c (profile_probability::combine_with_count): New
10134 member function.
10135 * profile-count.h (profile_probability::operator*,
10136 profile_probability::operator*=, profile_probability::operator/,
10137 profile_probability::operator/=): Reduce precision to adjusted
10138 and set value to guessed on contradictory divisions.
10139 (profile_probability::combine_with_freq): Remove.
10140 (profile_probability::combine_wiht_count): Declare.
10141 (profile_count::force_nonzero):: Set to adjusted.
10142 (profile_count::probability_in):: Set quality to adjusted.
10143 * tree-ssa-tail-merge.c (replace_block_by): Use
10144 combine_with_count.
10145
10146 2018-01-23 Andrew Waterman <andrew@sifive.com>
10147 Jim Wilson <jimw@sifive.com>
10148
10149 * config/riscv/riscv.c (riscv_stack_boundary): New.
10150 (riscv_option_override): Set riscv_stack_boundary. Handle
10151 riscv_preferred_stack_boundary_arg.
10152 * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
10153 (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
10154 (STACK_BOUNDARY): Set to riscv_stack_boundary.
10155 (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
10156 * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
10157 * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
10158
10159 2018-01-23 H.J. Lu <hongjiu.lu@intel.com>
10160
10161 PR target/83905
10162 * config/i386/i386.c (ix86_expand_prologue): Use cost reference
10163 of struct ix86_frame.
10164 (ix86_expand_epilogue): Likewise. Add a local variable for
10165 the reg_save_offset field in struct ix86_frame.
10166
10167 2018-01-23 Bin Cheng <bin.cheng@arm.com>
10168
10169 PR tree-optimization/82604
10170 * tree-loop-distribution.c (enum partition_kind): New enum item
10171 PKIND_PARTIAL_MEMSET.
10172 (partition_builtin_p): Support above new enum item.
10173 (generate_code_for_partition): Ditto.
10174 (compute_access_range): Differentiate cases that equality can be
10175 proven at all loops, the innermost loops or no loops.
10176 (classify_builtin_st, classify_builtin_ldst): Adjust call to above
10177 function. Set PKIND_PARTIAL_MEMSET for partition appropriately.
10178 (finalize_partitions, distribute_loop): Don't fuse partition of
10179 PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
10180 (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
10181 parloop is enabled.
10182
10183 2018-01-23 Martin Liska <mliska@suse.cz>
10184
10185 * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
10186 order to ignore the predictor.
10187 (PRED_POLYMORPHIC_CALL): Likewise.
10188 (PRED_RECURSIVE_CALL): Likewise.
10189
10190 2018-01-23 Martin Liska <mliska@suse.cz>
10191
10192 * tree-profile.c (tree_profiling): Print function header to
10193 aware reader which function we are working on.
10194 * value-prof.c (gimple_find_values_to_profile): Do not print
10195 not interesting value histograms.
10196
10197 2018-01-23 Martin Liska <mliska@suse.cz>
10198
10199 * profile-count.h (enum profile_quality): Add
10200 profile_uninitialized as the first value. Do not number values
10201 as they are zero based.
10202 (profile_count::verify): Update sanity check.
10203 (profile_probability::verify): Likewise.
10204
10205 2018-01-23 Nathan Sidwell <nathan@acm.org>
10206
10207 * doc/invoke.texi (ffor-scope): Deprecate.
10208
10209 2018-01-23 David Malcolm <dmalcolm@redhat.com>
10210
10211 PR tree-optimization/83510
10212 * domwalk.c (set_all_edges_as_executable): New function.
10213 (dom_walker::dom_walker): Convert bool param
10214 "skip_unreachable_blocks" to enum reachability. Move setup of
10215 edge flags to set_all_edges_as_executable and only do it when
10216 reachability is REACHABLE_BLOCKS.
10217 * domwalk.h (enum dom_walker::reachability): New enum.
10218 (dom_walker::dom_walker): Convert bool param
10219 "skip_unreachable_blocks" to enum reachability.
10220 (set_all_edges_as_executable): New decl.
10221 * graphite-scop-detection.c (gather_bbs::gather_bbs): Convert
10222 from false for "skip_unreachable_blocks" to ALL_BLOCKS for
10223 "reachability".
10224 * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
10225 but converting true to REACHABLE_BLOCKS.
10226 * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
10227 * tree-vrp.c
10228 (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
10229 Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
10230 (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
10231 REACHABLE_BLOCKS.
10232 (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
10233 if check_all_array_refs will be called.
10234
10235 2018-01-23 David Malcolm <dmalcolm@redhat.com>
10236
10237 * tree.c (selftest::test_location_wrappers): Add more test
10238 coverage.
10239
10240 2018-01-23 David Malcolm <dmalcolm@redhat.com>
10241
10242 * sbitmap.c (selftest::test_set_range): Fix memory leaks.
10243 (selftest::test_bit_in_range): Likewise.
10244
10245 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
10246
10247 PR testsuite/83888
10248 * doc/sourcebuild.texi (vect_float): Say that the selector
10249 only describes the situation when -funsafe-math-optimizations is on.
10250 (vect_float_strict): Document.
10251
10252 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
10253
10254 PR tree-optimization/83965
10255 * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
10256 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
10257 instead of checking only for a reduction.
10258 (vect_recog_widen_sum_pattern): Likewise.
10259
10260 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
10261
10262 * predict.c (probably_never_executed): Only use precise profile info.
10263 (compute_function_frequency): Skip after inlining hack since we now
10264 have quality checking.
10265
10266 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
10267
10268 * profile-count.h (profile_probability::very_unlikely,
10269 profile_probability::unlikely, profile_probability::even): Set
10270 precision to guessed.
10271
10272 2018-01-23 Richard Biener <rguenther@suse.de>
10273
10274 PR tree-optimization/83963
10275 * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
10276 Properly terminate dominator walk when crossing the exit edge not
10277 when visiting its source block.
10278
10279 2018-01-23 Jakub Jelinek <jakub@redhat.com>
10280
10281 PR c++/83918
10282 * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
10283 VIEW_CONVERT_EXPR to wrap CONST_DECLs.
10284
10285 2018-01-22 Jakub Jelinek <jakub@redhat.com>
10286
10287 PR tree-optimization/83957
10288 * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs. Remove
10289 semicolon after for body surrounded by braces.
10290
10291 PR tree-optimization/83081
10292 * profile-count.h (profile_probability::split): New method.
10293 * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
10294 Use profile_probability::split.
10295 (do_compare_rtx_and_jump): Fix adjustment of probabilities
10296 when splitting a single conditional jump into 2.
10297
10298 2018-01-22 David Malcolm <dmalcolm@redhat.com>
10299
10300 PR tree-optimization/69452
10301 * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
10302 decl.
10303
10304 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
10305
10306 * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
10307 * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
10308 * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
10309
10310 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
10311
10312 * config/rl78/rl78-protos.h (rl78_split_movdi): New function
10313 declaration.
10314 * config/rl78/rl78.md (movdi): New define_expand.
10315 * config/rl78/rl78.c (rl78_split_movdi): New function.
10316
10317 2018-01-22 Michael Meissner <meissner@linux.vnet.ibm.com>
10318
10319 PR target/83862
10320 * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
10321 no longer used.
10322 * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
10323 * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
10324 128-bit to produce an UNSPEC move to get the double word with the
10325 signbit and then a shift directly to do signbit.
10326 (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
10327 implementation with a new version that just does either a direct
10328 move or a regular move. Move memory interface to separate insns.
10329 Move insns so they are next to the expander.
10330 (signbit<mode>2_dm_mem_be): New combiner insns to combine load
10331 with signbit move. Split big and little endian case.
10332 (signbit<mode>2_dm_mem_le): Likewise.
10333 (signbit<mode>2_dm_<su>ext): Delete, no longer used.
10334 (signbit<mode>2_dm2): Likewise.
10335
10336 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
10337
10338 * config/rl78/rl78.md (anddi3): New define_expand.
10339
10340 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
10341
10342 * config/rl78/rl78.md (umindi3): New define_expand.
10343
10344 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
10345
10346 * config/rl78/rl78.md (smindi3): New define_expand.
10347
10348 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
10349
10350 * config/rl78/rl78.md (smaxdi3): New define_expand.
10351
10352 2018-01-22 Carl Love <cel@us.ibm.com>
10353
10354 * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
10355 LVX_V1TI): Add macro expansion.
10356 * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
10357 definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
10358 VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
10359 * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
10360 Change check to determine if the instruction is a byte reversing
10361 entry. Fix typo in comment.
10362 * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
10363 for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
10364 Add def_builtin calls for new builtins.
10365 * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
10366 Add define_insn expansion.
10367
10368 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
10369
10370 * config/rl78/rl78.md (umaxdi3): New define_expand.
10371
10372 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
10373
10374 * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
10375 for non-QImode registers.
10376
10377 2018-01-22 Richard Biener <rguenther@suse.de>
10378
10379 PR tree-optimization/83963
10380 * graphite-scop-detection.c (scop_detection::get_sese): Delay
10381 including the loop exit block.
10382 (scop_detection::merge_sese): Likewise.
10383 (scop_detection::add_scop): Do it here instead.
10384
10385 2018-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10386
10387 * doc/sourcebuild.texi (arm_softfloat): Document.
10388
10389 2018-01-21 John David Anglin <danglin@gcc.gnu.org>
10390
10391 PR gcc/77734
10392 * config/pa/pa.c (pa_function_ok_for_sibcall): Use
10393 targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
10394 Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
10395
10396 2018-01-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
10397 David Edelsohn <dje.gcc@gmail.com>
10398
10399 PR target/83946
10400 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
10401 Change "crset eq" to "crset 2".
10402 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
10403 (*call_indirect_aix<mode>_nospec): Likewise.
10404 (*call_value_indirect_aix<mode>_nospec): Likewise.
10405 (*call_indirect_elfv2<mode>_nospec): Likewise.
10406 (*call_value_indirect_elfv2<mode>_nospec): Likewise.
10407 (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
10408 change assembly output from . to $.
10409 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
10410 (indirect_jump<mode>_nospec): Change assembly output from . to $.
10411 (*tablejump<mode>_internal1_nospec): Likewise.
10412
10413 2018-01-21 Oleg Endo <olegendo@gcc.gnu.org>
10414
10415 PR target/80870
10416 * config/sh/sh_optimize_sett_clrt.cc:
10417 Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
10418
10419 2018-01-20 Richard Sandiford <richard.sandiford@linaro.org>
10420
10421 PR tree-optimization/83940
10422 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
10423 offset_dt to vect_constant_def rather than vect_unknown_def_type.
10424 (vect_check_load_store_mask): Add a mask_dt_out parameter and
10425 use it to pass back the definition type.
10426 (vect_check_store_rhs): Likewise rhs_dt_out.
10427 (vect_build_gather_load_calls): Add a mask_dt argument and use
10428 it instead of a call to vect_is_simple_use.
10429 (vectorizable_store): Update calls to vect_check_load_store_mask
10430 and vect_check_store_rhs. Use the dt returned by the latter instead
10431 of scatter_src_dt. Use the cached mask_dt and gs_info.offset_dt
10432 instead of calls to vect_is_simple_use. Pass the scalar rather
10433 than the vector operand to vect_is_simple_use when handling
10434 second and subsequent copies of an rhs value.
10435 (vectorizable_load): Update calls to vect_check_load_store_mask
10436 and vect_build_gather_load_calls. Use the cached mask_dt and
10437 gs_info.offset_dt instead of calls to vect_is_simple_use.
10438
10439 2018-01-20 Jakub Jelinek <jakub@redhat.com>
10440
10441 PR middle-end/83945
10442 * tree-emutls.c: Include gimplify.h.
10443 (lower_emutls_2): New function.
10444 (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
10445 with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
10446 it before further processing.
10447
10448 PR target/83930
10449 * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
10450 UINTVAL (trueop1) instead of INTVAL (op1).
10451
10452 2018-01-19 Jakub Jelinek <jakub@redhat.com>
10453
10454 PR debug/81570
10455 PR debug/83728
10456 * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
10457 INCOMING_FRAME_SP_OFFSET if not defined.
10458 (scan_trace): Add ENTRY argument. If true and
10459 DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
10460 emit a note to adjust the CFA offset.
10461 (create_cfi_notes): Adjust scan_trace callers.
10462 (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
10463 INCOMING_FRAME_SP_OFFSET in the CIE.
10464 * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
10465 * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
10466 Likewise.
10467 * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
10468 * doc/tm.texi: Regenerated.
10469
10470 2018-01-19 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
10471
10472 PR rtl-optimization/83147
10473 * lra-constraints.c (remove_inheritance_pseudos): Use
10474 lra_substitute_pseudo_within_insn.
10475
10476 2018-01-19 Tom de Vries <tom@codesourcery.com>
10477 Cesar Philippidis <cesar@codesourcery.com>
10478
10479 PR target/83920
10480 * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
10481
10482 2018-01-19 Cesar Philippidis <cesar@codesourcery.com>
10483
10484 PR target/83790
10485 * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
10486 spaces for function labels.
10487
10488 2018-01-19 Martin Liska <mliska@suse.cz>
10489
10490 * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
10491 (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
10492 (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
10493 (PRED_OPCODE_POSITIVE): Change from 64 to 59.
10494 (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
10495 (PRED_CONST_RETURN): Change from 69 to 65.
10496 (PRED_NULL_RETURN): Change from 91 to 71.
10497 (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
10498 (PRED_LOOP_GUARD): Change from 66 to 73.
10499
10500 2018-01-19 Martin Liska <mliska@suse.cz>
10501
10502 * predict.c (predict_insn_def): Add new assert.
10503 (struct branch_predictor): Change type to signed integer.
10504 (test_prediction_value_range): Amend test to cover
10505 PROB_UNINITIALIZED.
10506 * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
10507 (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
10508 (PRED_LOOP_ITERATIONS_MAX): Likewise.
10509 (PRED_LOOP_IV_COMPARE): Likewise.
10510 * predict.h (PROB_UNINITIALIZED): Define new constant.
10511
10512 2018-01-19 Martin Liska <mliska@suse.cz>
10513
10514 * predict.c (dump_prediction): Add new format for
10515 analyze_brprob.py script which is enabled with -details
10516 suboption.
10517 * profile-count.h (precise_p): New function.
10518
10519 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
10520
10521 PR tree-optimization/83922
10522 * tree-vect-loop.c (vect_verify_full_masking): Return false if
10523 there are no statements that need masking.
10524 (vect_active_double_reduction_p): New function.
10525 (vect_analyze_loop_operations): Use it when handling phis that
10526 are not in the loop header.
10527
10528 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
10529
10530 PR tree-optimization/83914
10531 * tree-vect-loop.c (vectorizable_induction): Don't convert
10532 init_expr or apply the peeling adjustment for inductions
10533 that are nested within the vectorized loop.
10534
10535 2018-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10536
10537 * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
10538 instead of NEG.
10539
10540 2018-01-18 Jakub Jelinek <jakub@redhat.com>
10541
10542 PR sanitizer/81715
10543 PR testsuite/83882
10544 * function.h (gimplify_parameters): Add gimple_seq * argument.
10545 * function.c: Include gimple.h and options.h.
10546 (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
10547 for the added local temporaries if needed.
10548 * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
10549 if there are any parameter cleanups, wrap whole body into a
10550 try/finally with the cleanups.
10551
10552 2018-01-18 Wilco Dijkstra <wdijkstr@arm.com>
10553
10554 PR target/82964
10555 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
10556 Use GET_MODE_CLASS for scalar floating point.
10557
10558 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
10559
10560 PR ipa/82256
10561 patch by PaX Team
10562 * cgraphclones.c (cgraph_node::create_version_clone_with_body):
10563 Fix call of call_cgraph_insertion_hooks.
10564
10565 2018-01-18 Martin Sebor <msebor@redhat.com>
10566
10567 * doc/invoke.texi (-Wclass-memaccess): Tweak text.
10568
10569 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
10570
10571 PR ipa/83619
10572 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
10573 frequencies.
10574
10575 2018-01-18 Boris Kolpackov <boris@codesynthesis.com>
10576
10577 PR other/70268
10578 * common.opt: (-ffile-prefix-map): New option.
10579 * opts.c (common_handle_option): Defer it.
10580 * opts-global.c (handle_common_deferred_options): Handle it.
10581 * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
10582 * file-prefix-map.h: New file.
10583 (remap_debug_filename, add_debug_prefix_map): ...here.
10584 (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
10585 * final.c (debug_prefix_map, add_debug_prefix_map
10586 remap_debug_filename): Move to...
10587 * file-prefix-map.c: New file.
10588 (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
10589 generalize, get rid of alloca(), use strrchr() instead of strchr().
10590 (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
10591 Implement in terms of add_prefix_map().
10592 (remap_macro_filename, remap_debug_filename): Implement in term of
10593 remap_filename().
10594 * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
10595 * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
10596 * dbxout.c: Include file-prefix-map.h.
10597 * varasm.c: Likewise.
10598 * vmsdbgout.c: Likewise.
10599 * xcoffout.c: Likewise.
10600 * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
10601 * doc/cppopts.texi (-fmacro-prefix-map): Document.
10602 * doc/invoke.texi (-ffile-prefix-map): Document.
10603 (-fdebug-prefix-map): Update description.
10604
10605 2018-01-18 Martin Liska <mliska@suse.cz>
10606
10607 * config/i386/i386.c (indirect_thunk_name): Document that also
10608 lfence is emitted.
10609 (output_indirect_thunk): Document why both instructions
10610 (pause and lfence) are generated.
10611
10612 2018-01-18 Richard Biener <rguenther@suse.de>
10613
10614 PR tree-optimization/83887
10615 * graphite-scop-detection.c
10616 (scop_detection::get_nearest_dom_with_single_entry): Remove.
10617 (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
10618 (scop_detection::merge_sese): Re-implement with a flood-fill
10619 algorithm that properly finds a SESE region if it exists.
10620
10621 2018-01-18 Jakub Jelinek <jakub@redhat.com>
10622
10623 PR c/61240
10624 * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
10625 pointer_diff optimizations use view_convert instead of convert.
10626
10627 2018-01-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
10628
10629 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
10630 Generate different code for -mno-speculate-indirect-jumps.
10631 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
10632 (*call_indirect_aix<mode>): Disable for
10633 -mno-speculate-indirect-jumps.
10634 (*call_indirect_aix<mode>_nospec): New define_insn.
10635 (*call_value_indirect_aix<mode>): Disable for
10636 -mno-speculate-indirect-jumps.
10637 (*call_value_indirect_aix<mode>_nospec): New define_insn.
10638 (*sibcall_nonlocal_sysv<mode>): Generate different code for
10639 -mno-speculate-indirect-jumps.
10640 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
10641
10642 2018-01-17 Michael Meissner <meissner@linux.vnet.ibm.com>
10643
10644 * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
10645 long double type, set the flags for noting the default long double
10646 type, even if we don't pass or return a long double type.
10647
10648 2018-01-17 Jan Hubicka <hubicka@ucw.cz>
10649
10650 PR ipa/83051
10651 * ipa-inline.c (flatten_function): Do not overwrite final inlining
10652 failure.
10653
10654 2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com>
10655
10656 * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
10657 support for merge[hl].
10658 (fold_mergehl_helper): New helper function.
10659 (tree-vector-builder.h): New #include for tree_vector_builder usage.
10660 * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
10661 (altivec_vmrglw_direct): Add xxmrglw insn.
10662
10663 2018-01-17 Andrew Waterman <andrew@sifive.com>
10664
10665 * config/riscv/riscv.c (riscv_conditional_register_usage): If
10666 UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
10667
10668 2018-01-17 David Malcolm <dmalcolm@redhat.com>
10669
10670 PR lto/83121
10671 * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
10672 call the lto_location_cache before reading the
10673 DECL_SOURCE_LOCATION of the types.
10674
10675 2018-01-17 Wilco Dijkstra <wdijkstr@arm.com>
10676 Richard Sandiford <richard.sandiford@linaro.org>
10677
10678 * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
10679 * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
10680 (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
10681 SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
10682 * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
10683 Add declaration.
10684 * config/aarch64/constraints.md (aarch64_movti_operand):
10685 Limit immediates.
10686 * config/aarch64/predicates.md (Uti): Add new constraint.
10687
10688 2018-01-17 Carl Love <cel@us.ibm.com>
10689
10690 * config/rs6000/vsx.md (define_expand xl_len_r,
10691 define_expand stxvl, define_expand *stxvl): Add match_dup argument.
10692 (define_insn): Add, match_dup 1 argument to define_insn stxvll and
10693 lxvll.
10694 (define_expand, define_insn): Move the shift left from the
10695 define_insn to the define_expand for lxvl and stxvl instructions.
10696 * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
10697 and XL_LEN_R definitions to PURE.
10698
10699 2018-01-17 Uros Bizjak <ubizjak@gmail.com>
10700
10701 * config/i386/i386.c (indirect_thunk_name): Declare regno
10702 as unsigned int. Compare regno with INVALID_REGNUM.
10703 (output_indirect_thunk): Ditto.
10704 (output_indirect_thunk_function): Ditto.
10705 (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM
10706 in the call to output_indirect_thunk_function.
10707
10708 2018-01-17 Richard Sandiford <richard.sandiford@linaro.org>
10709
10710 PR middle-end/83884
10711 * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
10712 rather than the size of inner_type to determine the stack slot size
10713 when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
10714
10715 2018-01-16 Sebastian Peryt <sebastian.peryt@intel.com>
10716
10717 PR target/83546
10718 * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
10719 to PTA_SILVERMONT.
10720
10721 2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com>
10722
10723 * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
10724 endian Linux systems to optionally enable multilibs for selecting
10725 the long double type if the user configured an explicit type.
10726 * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
10727 have no long double multilibs if not defined.
10728 * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
10729 warn if the user used -mabi={ieee,ibm}longdouble and we built
10730 multilibs for long double.
10731 * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
10732 appropriate multilib option.
10733 (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
10734 multilib options.
10735 * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
10736 for building long double multilibs.
10737 * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
10738
10739 2018-01-16 John David Anglin <danglin@gcc.gnu.org>
10740
10741 * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
10742 copies.
10743
10744 * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
10745 64 bits.
10746 * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
10747 128 bits.
10748
10749 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
10750 variables.
10751
10752 * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
10753 return value.
10754
10755 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
10756
10757 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
10758 ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
10759
10760 2018-01-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
10761
10762 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
10763 different rtl trees depending on TARGET_64BIT.
10764 (rs6000_gen_lvx): Likewise.
10765
10766 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
10767
10768 * config/visium/visium.md (nop): Tweak comment.
10769 (hazard_nop): Likewise.
10770
10771 2018-01-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
10772
10773 * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
10774 -mspeculate-indirect-jumps.
10775 * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
10776 for -mno-speculate-indirect-jumps.
10777 (*call_indirect_elfv2<mode>_nospec): New define_insn.
10778 (*call_value_indirect_elfv2<mode>): Disable for
10779 -mno-speculate-indirect-jumps.
10780 (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
10781 (indirect_jump): Emit different RTL for
10782 -mno-speculate-indirect-jumps.
10783 (*indirect_jump<mode>): Disable for
10784 -mno-speculate-indirect-jumps.
10785 (*indirect_jump<mode>_nospec): New define_insn.
10786 (tablejump): Emit different RTL for
10787 -mno-speculate-indirect-jumps.
10788 (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
10789 (tablejumpsi_nospec): New define_expand.
10790 (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
10791 (tablejumpdi_nospec): New define_expand.
10792 (*tablejump<mode>_internal1): Disable for
10793 -mno-speculate-indirect-jumps.
10794 (*tablejump<mode>_internal1_nospec): New define_insn.
10795 * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
10796 option.
10797
10798 2018-01-16 Artyom Skrobov tyomitch@gmail.com
10799
10800 * caller-save.c (insert_save): Drop unnecessary parameter. All
10801 callers updated.
10802
10803 2018-01-16 Jakub Jelinek <jakub@redhat.com>
10804 Richard Biener <rguenth@suse.de>
10805
10806 PR libgomp/83590
10807 * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
10808 return early, inline manually is_gimple_sizepos. Make sure if we
10809 call gimplify_expr we don't end up with a gimple constant.
10810 * tree.c (variably_modified_type_p): Don't return true for
10811 is_gimple_constant (_t). Inline manually is_gimple_sizepos.
10812 * gimplify.h (is_gimple_sizepos): Remove.
10813
10814 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
10815
10816 PR tree-optimization/83857
10817 * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
10818 vectorizable_live_operation for pure SLP statements.
10819 (vectorizable_live_operation): Handle PHIs.
10820
10821 2018-01-16 Richard Biener <rguenther@suse.de>
10822
10823 PR tree-optimization/83867
10824 * tree-vect-stmts.c (vect_transform_stmt): Precompute
10825 nested_in_vect_loop_p since the scalar stmt may get invalidated.
10826
10827 2018-01-16 Jakub Jelinek <jakub@redhat.com>
10828
10829 PR c/83844
10830 * stor-layout.c (handle_warn_if_not_align): Use byte_position and
10831 multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
10832 If off is not INTEGER_CST, issue a may not be aligned warning
10833 rather than isn't aligned. Use isn%'t rather than isn't.
10834 * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
10835 into MULT_EXPR.
10836 <case MULT_EXPR>: Improve the case when bottom and one of the
10837 MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
10838 operand, in that case check if the other operand is multiple of
10839 bottom divided by the INTEGER_CST operand.
10840
10841 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
10842
10843 PR target/83858
10844 * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
10845 * config/pa/pa-protos.h (pa_function_arg_size): Declare.
10846 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
10847 pa_function_arg_size instead of FUNCTION_ARG_SIZE.
10848 * config/pa/pa.c (pa_function_arg_advance): Likewise.
10849 (pa_function_arg, pa_arg_partial_bytes): Likewise.
10850 (pa_function_arg_size): New function.
10851
10852 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
10853
10854 * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
10855 in a separate statement.
10856
10857 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
10858
10859 PR tree-optimization/83847
10860 * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
10861 group gathers and scatters.
10862
10863 2018-01-16 Jakub Jelinek <jakub@redhat.com>
10864
10865 PR rtl-optimization/86620
10866 * params.def (max-sched-ready-insns): Bump minimum value to 1.
10867
10868 PR rtl-optimization/83213
10869 * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
10870 to last if both are JUMP_INSNs.
10871
10872 PR tree-optimization/83843
10873 * gimple-ssa-store-merging.c
10874 (imm_store_chain_info::output_merged_store): Handle bit_not_p on
10875 store_immediate_info for bswap/nop orig_stores.
10876
10877 2018-01-15 Andrew Waterman <andrew@sifive.com>
10878
10879 * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
10880 !TARGET_MUL.
10881 <UDIV>: Increase cost if !TARGET_DIV.
10882
10883 2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
10884
10885 * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
10886 (define_attr "cr_logical_3op"): New.
10887 (cceq_ior_compare): Adjust.
10888 (cceq_ior_compare_complement): Adjust.
10889 (*cceq_rev_compare): Adjust.
10890 * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
10891 (is_cracked_insn): Adjust.
10892 (insn_must_be_first_in_group): Adjust.
10893 * config/rs6000/40x.md: Adjust.
10894 * config/rs6000/440.md: Adjust.
10895 * config/rs6000/476.md: Adjust.
10896 * config/rs6000/601.md: Adjust.
10897 * config/rs6000/603.md: Adjust.
10898 * config/rs6000/6xx.md: Adjust.
10899 * config/rs6000/7450.md: Adjust.
10900 * config/rs6000/7xx.md: Adjust.
10901 * config/rs6000/8540.md: Adjust.
10902 * config/rs6000/cell.md: Adjust.
10903 * config/rs6000/e300c2c3.md: Adjust.
10904 * config/rs6000/e500mc.md: Adjust.
10905 * config/rs6000/e500mc64.md: Adjust.
10906 * config/rs6000/e5500.md: Adjust.
10907 * config/rs6000/e6500.md: Adjust.
10908 * config/rs6000/mpc.md: Adjust.
10909 * config/rs6000/power4.md: Adjust.
10910 * config/rs6000/power5.md: Adjust.
10911 * config/rs6000/power6.md: Adjust.
10912 * config/rs6000/power7.md: Adjust.
10913 * config/rs6000/power8.md: Adjust.
10914 * config/rs6000/power9.md: Adjust.
10915 * config/rs6000/rs64.md: Adjust.
10916 * config/rs6000/titan.md: Adjust.
10917
10918 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
10919
10920 * config/i386/predicates.md (indirect_branch_operand): Rewrite
10921 ix86_indirect_branch_register logic.
10922
10923 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
10924
10925 * config/i386/constraints.md (Bs): Update
10926 ix86_indirect_branch_register check. Don't check
10927 ix86_indirect_branch_register with GOT_memory_operand.
10928 (Bw): Likewise.
10929 * config/i386/predicates.md (GOT_memory_operand): Don't check
10930 ix86_indirect_branch_register here.
10931 (GOT32_symbol_operand): Likewise.
10932
10933 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
10934
10935 * config/i386/predicates.md (constant_call_address_operand):
10936 Rewrite ix86_indirect_branch_register logic.
10937 (sibcall_insn_operand): Likewise.
10938
10939 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
10940
10941 * config/i386/constraints.md (Bs): Replace
10942 ix86_indirect_branch_thunk_register with
10943 ix86_indirect_branch_register.
10944 (Bw): Likewise.
10945 * config/i386/i386.md (indirect_jump): Likewise.
10946 (tablejump): Likewise.
10947 (*sibcall_memory): Likewise.
10948 (*sibcall_value_memory): Likewise.
10949 Peepholes of indirect call and jump via memory: Likewise.
10950 * config/i386/i386.opt: Likewise.
10951 * config/i386/predicates.md (indirect_branch_operand): Likewise.
10952 (GOT_memory_operand): Likewise.
10953 (call_insn_operand): Likewise.
10954 (sibcall_insn_operand): Likewise.
10955 (GOT32_symbol_operand): Likewise.
10956
10957 2018-01-15 Jakub Jelinek <jakub@redhat.com>
10958
10959 PR middle-end/83837
10960 * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
10961 type rather than type addr's type points to.
10962 (expand_omp_atomic_mutex): Likewise.
10963 (expand_omp_atomic): Likewise.
10964
10965 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
10966
10967 PR target/83839
10968 * config/i386/i386.c (output_indirect_thunk_function): Use
10969 ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
10970 for __x86_return_thunk.
10971
10972 2018-01-15 Richard Biener <rguenther@suse.de>
10973
10974 PR middle-end/83850
10975 * expmed.c (extract_bit_field_1): Fix typo.
10976
10977 2018-01-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10978
10979 PR target/83687
10980 * config/arm/iterators.md (VF): New mode iterator.
10981 * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
10982 Remove integer-related logic from pattern.
10983 (neon_vabd<mode>_3): Likewise.
10984
10985 2018-01-15 Jakub Jelinek <jakub@redhat.com>
10986
10987 PR middle-end/82694
10988 * common.opt (fstrict-overflow): No longer an alias.
10989 (fwrapv-pointer): New option.
10990 * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
10991 also for pointer types based on flag_wrapv_pointer.
10992 * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
10993 opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
10994 opts->x_flag_wrapv got set.
10995 * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
10996 changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
10997 POINTER_TYPE_OVERFLOW_UNDEFINED.
10998 * match.pd: Likewise in address comparison pattern.
10999 * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
11000
11001 2018-01-15 Richard Biener <rguenther@suse.de>
11002
11003 PR lto/83804
11004 * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
11005 from TYPE_FIELDS. Free TYPE_BINFO if not used by devirtualization.
11006 Reset type names to their identifier if their TYPE_DECL doesn't
11007 have linkage (and thus is used for ODR and devirt).
11008 (save_debug_info_for_decl): Remove.
11009 (save_debug_info_for_type): Likewise.
11010 (add_tree_to_fld_list): Adjust.
11011 * tree-pretty-print.c (dump_generic_node): Make dumping of
11012 type names more robust.
11013
11014 2018-01-15 Richard Biener <rguenther@suse.de>
11015
11016 * BASE-VER: Bump to 8.0.1.
11017
11018 2018-01-14 Martin Sebor <msebor@redhat.com>
11019
11020 PR other/83508
11021 * builtins.c (check_access): Avoid warning when the no-warning bit
11022 is set.
11023
11024 2018-01-14 Cory Fields <cory-nospam-@coryfields.com>
11025
11026 * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
11027 * ira-color (allocno_hard_regs_compare): Likewise.
11028
11029 2018-01-14 Nathan Rossi <nathan@nathanrossi.com>
11030
11031 PR target/83013
11032 * config/microblaze/microblaze.c (microblaze_asm_output_ident):
11033 Use .pushsection/.popsection.
11034
11035 2018-01-14 Martin Sebor <msebor@redhat.com>
11036
11037 PR c++/81327
11038 * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
11039
11040 2018-01-14 Jakub Jelinek <jakub@redhat.com>
11041
11042 * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
11043 entry from extra_headers.
11044 (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
11045 extra_headers, make the list bitwise identical to the i?86-*-* one.
11046
11047 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
11048
11049 * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
11050 -mcmodel=large with -mindirect-branch=thunk,
11051 -mindirect-branch=thunk-extern, -mfunction-return=thunk and
11052 -mfunction-return=thunk-extern.
11053 * doc/invoke.texi: Document -mcmodel=large is incompatible with
11054 -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
11055 -mfunction-return=thunk and -mfunction-return=thunk-extern.
11056
11057 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
11058
11059 * config/i386/i386.c (print_reg): Print the name of the full
11060 integer register without '%'.
11061 (ix86_print_operand): Handle 'V'.
11062 * doc/extend.texi: Document 'V' modifier.
11063
11064 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
11065
11066 * config/i386/constraints.md (Bs): Disallow memory operand for
11067 -mindirect-branch-register.
11068 (Bw): Likewise.
11069 * config/i386/predicates.md (indirect_branch_operand): Likewise.
11070 (GOT_memory_operand): Likewise.
11071 (call_insn_operand): Likewise.
11072 (sibcall_insn_operand): Likewise.
11073 (GOT32_symbol_operand): Likewise.
11074 * config/i386/i386.md (indirect_jump): Call convert_memory_address
11075 for -mindirect-branch-register.
11076 (tablejump): Likewise.
11077 (*sibcall_memory): Likewise.
11078 (*sibcall_value_memory): Likewise.
11079 Disallow peepholes of indirect call and jump via memory for
11080 -mindirect-branch-register.
11081 (*call_pop): Replace m with Bw.
11082 (*call_value_pop): Likewise.
11083 (*sibcall_pop_memory): Replace m with Bs.
11084 * config/i386/i386.opt (mindirect-branch-register): New option.
11085 * doc/invoke.texi: Document -mindirect-branch-register option.
11086
11087 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
11088
11089 * config/i386/i386-protos.h (ix86_output_function_return): New.
11090 * config/i386/i386.c (ix86_set_indirect_branch_type): Also
11091 set function_return_type.
11092 (indirect_thunk_name): Add ret_p to indicate thunk for function
11093 return.
11094 (output_indirect_thunk_function): Pass false to
11095 indirect_thunk_name.
11096 (ix86_output_indirect_branch_via_reg): Likewise.
11097 (ix86_output_indirect_branch_via_push): Likewise.
11098 (output_indirect_thunk_function): Create alias for function
11099 return thunk if regno < 0.
11100 (ix86_output_function_return): New function.
11101 (ix86_handle_fndecl_attribute): Handle function_return.
11102 (ix86_attribute_table): Add function_return.
11103 * config/i386/i386.h (machine_function): Add
11104 function_return_type.
11105 * config/i386/i386.md (simple_return_internal): Use
11106 ix86_output_function_return.
11107 (simple_return_internal_long): Likewise.
11108 * config/i386/i386.opt (mfunction-return=): New option.
11109 (indirect_branch): Mention -mfunction-return=.
11110 * doc/extend.texi: Document function_return function attribute.
11111 * doc/invoke.texi: Document -mfunction-return= option.
11112
11113 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
11114
11115 * config/i386/i386-opts.h (indirect_branch): New.
11116 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
11117 * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
11118 with local indirect jump when converting indirect call and jump.
11119 (ix86_set_indirect_branch_type): New.
11120 (ix86_set_current_function): Call ix86_set_indirect_branch_type.
11121 (indirectlabelno): New.
11122 (indirect_thunk_needed): Likewise.
11123 (indirect_thunk_bnd_needed): Likewise.
11124 (indirect_thunks_used): Likewise.
11125 (indirect_thunks_bnd_used): Likewise.
11126 (INDIRECT_LABEL): Likewise.
11127 (indirect_thunk_name): Likewise.
11128 (output_indirect_thunk): Likewise.
11129 (output_indirect_thunk_function): Likewise.
11130 (ix86_output_indirect_branch_via_reg): Likewise.
11131 (ix86_output_indirect_branch_via_push): Likewise.
11132 (ix86_output_indirect_branch): Likewise.
11133 (ix86_output_indirect_jmp): Likewise.
11134 (ix86_code_end): Call output_indirect_thunk_function if needed.
11135 (ix86_output_call_insn): Call ix86_output_indirect_branch if
11136 needed.
11137 (ix86_handle_fndecl_attribute): Handle indirect_branch.
11138 (ix86_attribute_table): Add indirect_branch.
11139 * config/i386/i386.h (machine_function): Add indirect_branch_type
11140 and has_local_indirect_jump.
11141 * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
11142 to true.
11143 (tablejump): Likewise.
11144 (*indirect_jump): Use ix86_output_indirect_jmp.
11145 (*tablejump_1): Likewise.
11146 (simple_return_indirect_internal): Likewise.
11147 * config/i386/i386.opt (mindirect-branch=): New option.
11148 (indirect_branch): New.
11149 (keep): Likewise.
11150 (thunk): Likewise.
11151 (thunk-inline): Likewise.
11152 (thunk-extern): Likewise.
11153 * doc/extend.texi: Document indirect_branch function attribute.
11154 * doc/invoke.texi: Document -mindirect-branch= option.
11155
11156 2018-01-14 Jan Hubicka <hubicka@ucw.cz>
11157
11158 PR ipa/83051
11159 * ipa-inline.c (edge_badness): Tolerate roundoff errors.
11160
11161 2018-01-14 Richard Sandiford <richard.sandiford@linaro.org>
11162
11163 * ipa-inline.c (want_inline_small_function_p): Return false if
11164 inlining has already failed with CIF_FINAL_ERROR.
11165 (update_caller_keys): Call want_inline_small_function_p before
11166 can_inline_edge_p.
11167 (update_callee_keys): Likewise.
11168
11169 2018-01-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
11170
11171 * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
11172 New function.
11173 (rs6000_quadword_masked_address_p): Likewise.
11174 (quad_aligned_load_p): Likewise.
11175 (quad_aligned_store_p): Likewise.
11176 (const_load_sequence_p): Add comment to describe the outer-most loop.
11177 (mimic_memory_attributes_and_flags): New function.
11178 (rs6000_gen_stvx): Likewise.
11179 (replace_swapped_aligned_store): Likewise.
11180 (rs6000_gen_lvx): Likewise.
11181 (replace_swapped_aligned_load): Likewise.
11182 (replace_swapped_load_constant): Capitalize argument name in
11183 comment describing this function.
11184 (rs6000_analyze_swaps): Add a third pass to search for vector loads
11185 and stores that access quad-word aligned addresses and replace
11186 with stvx or lvx instructions when appropriate.
11187 * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
11188 New function prototype.
11189 (rs6000_quadword_masked_address_p): Likewise.
11190 (rs6000_gen_lvx): Likewise.
11191 (rs6000_gen_stvx): Likewise.
11192 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
11193 VSX_D (V2DF, V2DI), modify this split to select lvx instruction
11194 when memory address is aligned.
11195 (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
11196 this split to select lvx instruction when memory address is aligned.
11197 (*vsx_le_perm_load_v8hi): Modify this split to select lvx
11198 instruction when memory address is aligned.
11199 (*vsx_le_perm_load_v16qi): Likewise.
11200 (four unnamed splitters): Modify to select the stvx instruction
11201 when memory is aligned.
11202
11203 2018-01-13 Jan Hubicka <hubicka@ucw.cz>
11204
11205 * predict.c (determine_unlikely_bbs): Handle correctly BBs
11206 which appears in the queue multiple times.
11207
11208 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11209 Alan Hayward <alan.hayward@arm.com>
11210 David Sherwood <david.sherwood@arm.com>
11211
11212 * tree-vectorizer.h (vec_lower_bound): New structure.
11213 (_loop_vec_info): Add check_nonzero and lower_bounds.
11214 (LOOP_VINFO_CHECK_NONZERO): New macro.
11215 (LOOP_VINFO_LOWER_BOUNDS): Likewise.
11216 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
11217 * tree-data-ref.h (dr_with_seg_len): Add access_size and align
11218 fields. Make seg_len the distance travelled, not including the
11219 access size.
11220 (dr_direction_indicator): Declare.
11221 (dr_zero_step_indicator): Likewise.
11222 (dr_known_forward_stride_p): Likewise.
11223 * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
11224 tree-ssanames.h.
11225 (runtime_alias_check_p): Allow runtime alias checks with
11226 variable strides.
11227 (operator ==): Compare access_size and align.
11228 (prune_runtime_alias_test_list): Rework for new distinction between
11229 the access_size and seg_len.
11230 (create_intersect_range_checks_index): Likewise. Cope with polynomial
11231 segment lengths.
11232 (get_segment_min_max): New function.
11233 (create_intersect_range_checks): Use it.
11234 (dr_step_indicator): New function.
11235 (dr_direction_indicator): Likewise.
11236 (dr_zero_step_indicator): Likewise.
11237 (dr_known_forward_stride_p): Likewise.
11238 * tree-loop-distribution.c (data_ref_segment_size): Return
11239 DR_STEP * (niters - 1).
11240 (compute_alias_check_pairs): Update call to the dr_with_seg_len
11241 constructor.
11242 * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
11243 (vect_preserves_scalar_order_p): New function, split out from...
11244 (vect_analyze_data_ref_dependence): ...here. Check for zero steps.
11245 (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
11246 (vect_vfa_access_size): New function.
11247 (vect_vfa_align): Likewise.
11248 (vect_compile_time_alias): Take access_size_a and access_b arguments.
11249 (dump_lower_bound): New function.
11250 (vect_check_lower_bound): Likewise.
11251 (vect_small_gap_p): Likewise.
11252 (vectorizable_with_step_bound_p): Likewise.
11253 (vect_prune_runtime_alias_test_list): Ignore cross-iteration
11254 depencies if the vectorization factor is 1. Convert the checks
11255 for nonzero steps into checks on the bounds of DR_STEP. Try using
11256 a bunds check for variable steps if the minimum required step is
11257 relatively small. Update calls to the dr_with_seg_len
11258 constructor and to vect_compile_time_alias.
11259 * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
11260 function.
11261 (vect_loop_versioning): Call it.
11262 * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
11263 when retrying.
11264 (vect_estimate_min_profitable_iters): Account for any bounds checks.
11265
11266 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11267 Alan Hayward <alan.hayward@arm.com>
11268 David Sherwood <david.sherwood@arm.com>
11269
11270 * doc/sourcebuild.texi (vect_scatter_store): Document.
11271 * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
11272 optabs.
11273 * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
11274 Document.
11275 * genopinit.c (main): Add supports_vec_scatter_store and
11276 supports_vec_scatter_store_cached to target_optabs.
11277 * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
11278 IFN_MASK_SCATTER_STORE.
11279 * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
11280 functions.
11281 * internal-fn.h (internal_store_fn_p): Declare.
11282 (internal_fn_stored_value_index): Likewise.
11283 * internal-fn.c (scatter_store_direct): New macro.
11284 (expand_scatter_store_optab_fn): New function.
11285 (direct_scatter_store_optab_supported_p): New macro.
11286 (internal_store_fn_p): New function.
11287 (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
11288 IFN_MASK_SCATTER_STORE.
11289 (internal_fn_mask_index): Likewise.
11290 (internal_fn_stored_value_index): New function.
11291 (internal_gather_scatter_fn_supported_p): Adjust operand numbers
11292 for scatter stores.
11293 * optabs-query.h (supports_vec_scatter_store_p): Declare.
11294 * optabs-query.c (supports_vec_scatter_store_p): New function.
11295 * tree-vectorizer.h (vect_get_store_rhs): Declare.
11296 * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
11297 true for scatter stores.
11298 (vect_gather_scatter_fn_p): Handle scatter stores too.
11299 (vect_check_gather_scatter): Consider using scatter stores if
11300 supports_vec_scatter_store_p.
11301 * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
11302 scatter stores too.
11303 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
11304 internal_fn_stored_value_index.
11305 (check_load_store_masking): Handle scatter stores too.
11306 (vect_get_store_rhs): Make public.
11307 (vectorizable_call): Use internal_store_fn_p.
11308 (vectorizable_store): Handle scatter store internal functions.
11309 (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
11310 when deciding whether the end of the group has been reached.
11311 * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
11312 * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
11313 (mask_scatter_store<mode>): New insns.
11314
11315 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11316 Alan Hayward <alan.hayward@arm.com>
11317 David Sherwood <david.sherwood@arm.com>
11318
11319 * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
11320 * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
11321 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
11322 function.
11323 (vect_use_strided_gather_scatters_p): Take a masked_p argument.
11324 Use vect_truncate_gather_scatter_offset if we can't treat the
11325 operation as a normal gather load or scatter store.
11326 (get_group_load_store_type): Take the gather_scatter_info
11327 as argument. Try using a gather load or scatter store for
11328 single-element groups.
11329 (get_load_store_type): Update calls to get_group_load_store_type
11330 and vect_use_strided_gather_scatters_p.
11331
11332 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11333 Alan Hayward <alan.hayward@arm.com>
11334 David Sherwood <david.sherwood@arm.com>
11335
11336 * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
11337 optional tree argument.
11338 * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
11339 null target hooks.
11340 (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
11341 but continue to use the current value as a fallback.
11342 (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
11343 to compare the updates.
11344 * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
11345 (get_load_store_type): Use it when handling a strided access.
11346 (vect_get_strided_load_store_ops): New function.
11347 (vect_get_data_ptr_increment): Likewise.
11348 (vectorizable_load): Handle strided gather loads. Always pass
11349 a step to vect_create_data_ref_ptr and bump_vector_ptr.
11350
11351 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11352 Alan Hayward <alan.hayward@arm.com>
11353 David Sherwood <david.sherwood@arm.com>
11354
11355 * doc/md.texi (gather_load@var{m}): Document.
11356 (mask_gather_load@var{m}): Likewise.
11357 * genopinit.c (main): Add supports_vec_gather_load and
11358 supports_vec_gather_load_cached to target_optabs.
11359 * optabs-tree.c (init_tree_optimization_optabs): Use
11360 ggc_cleared_alloc to allocate target_optabs.
11361 * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
11362 * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
11363 functions.
11364 * internal-fn.h (internal_load_fn_p): Declare.
11365 (internal_gather_scatter_fn_p): Likewise.
11366 (internal_fn_mask_index): Likewise.
11367 (internal_gather_scatter_fn_supported_p): Likewise.
11368 * internal-fn.c (gather_load_direct): New macro.
11369 (expand_gather_load_optab_fn): New function.
11370 (direct_gather_load_optab_supported_p): New macro.
11371 (direct_internal_fn_optab): New function.
11372 (internal_load_fn_p): Likewise.
11373 (internal_gather_scatter_fn_p): Likewise.
11374 (internal_fn_mask_index): Likewise.
11375 (internal_gather_scatter_fn_supported_p): Likewise.
11376 * optabs-query.c (supports_at_least_one_mode_p): New function.
11377 (supports_vec_gather_load_p): Likewise.
11378 * optabs-query.h (supports_vec_gather_load_p): Declare.
11379 * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
11380 and memory_type field.
11381 (NUM_PATTERNS): Bump to 15.
11382 * tree-vect-data-refs.c: Include internal-fn.h.
11383 (vect_gather_scatter_fn_p): New function.
11384 (vect_describe_gather_scatter_call): Likewise.
11385 (vect_check_gather_scatter): Try using internal functions for
11386 gather loads. Recognize existing calls to a gather load function.
11387 (vect_analyze_data_refs): Consider using gather loads if
11388 supports_vec_gather_load_p.
11389 * tree-vect-patterns.c (vect_get_load_store_mask): New function.
11390 (vect_get_gather_scatter_offset_type): Likewise.
11391 (vect_convert_mask_for_vectype): Likewise.
11392 (vect_add_conversion_to_patterm): Likewise.
11393 (vect_try_gather_scatter_pattern): Likewise.
11394 (vect_recog_gather_scatter_pattern): New pattern recognizer.
11395 (vect_vect_recog_func_ptrs): Add it.
11396 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
11397 internal_fn_mask_index and internal_gather_scatter_fn_p.
11398 (check_load_store_masking): Take the gather_scatter_info as an
11399 argument and handle gather loads.
11400 (vect_get_gather_scatter_ops): New function.
11401 (vectorizable_call): Check internal_load_fn_p.
11402 (vectorizable_load): Likewise. Handle gather load internal
11403 functions.
11404 (vectorizable_store): Update call to check_load_store_masking.
11405 * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
11406 * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
11407 * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
11408 (aarch64_gather_scale_operand_d): New predicates.
11409 * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
11410 (mask_gather_load<mode>): New insns.
11411
11412 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11413 Alan Hayward <alan.hayward@arm.com>
11414 David Sherwood <david.sherwood@arm.com>
11415
11416 * optabs.def (fold_left_plus_optab): New optab.
11417 * doc/md.texi (fold_left_plus_@var{m}): Document.
11418 * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
11419 * internal-fn.c (fold_left_direct): Define.
11420 (expand_fold_left_optab_fn): Likewise.
11421 (direct_fold_left_optab_supported_p): Likewise.
11422 * fold-const-call.c (fold_const_fold_left): New function.
11423 (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
11424 * tree-parloops.c (valid_reduction_p): New function.
11425 (gather_scalar_reductions): Use it.
11426 * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
11427 (vect_finish_replace_stmt): Declare.
11428 * tree-vect-loop.c (fold_left_reduction_fn): New function.
11429 (needs_fold_left_reduction_p): New function, split out from...
11430 (vect_is_simple_reduction): ...here. Accept reductions that
11431 forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
11432 (vect_force_simple_reduction): Also store the reduction type in
11433 the assignment's STMT_VINFO_REDUC_TYPE.
11434 (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
11435 (merge_with_identity): New function.
11436 (vect_expand_fold_left): Likewise.
11437 (vectorize_fold_left_reduction): Likewise.
11438 (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION. Leave the
11439 scalar phi in place for it. Check for target support and reject
11440 cases that would reassociate the operation. Defer the transform
11441 phase to vectorize_fold_left_reduction.
11442 * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
11443 * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
11444 (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
11445
11446 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11447
11448 * tree-if-conv.c (predicate_mem_writes): Remove redundant
11449 call to ifc_temp_var.
11450
11451 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11452 Alan Hayward <alan.hayward@arm.com>
11453 David Sherwood <david.sherwood@arm.com>
11454
11455 * target.def (legitimize_address_displacement): Take the original
11456 offset as a poly_int.
11457 * targhooks.h (default_legitimize_address_displacement): Update
11458 accordingly.
11459 * targhooks.c (default_legitimize_address_displacement): Likewise.
11460 * doc/tm.texi: Regenerate.
11461 * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
11462 as an argument, moving assert of ad->disp == ad->disp_term to...
11463 (process_address_1): ...here. Update calls to base_plus_disp_to_reg.
11464 Try calling targetm.legitimize_address_displacement before expanding
11465 the address rather than afterwards, and adjust for the new interface.
11466 * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
11467 Match the new hook interface. Handle SVE addresses.
11468 * config/sh/sh.c (sh_legitimize_address_displacement): Make the
11469 new hook interface.
11470
11471 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11472
11473 * Makefile.in (OBJS): Add early-remat.o.
11474 * target.def (select_early_remat_modes): New hook.
11475 * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
11476 * doc/tm.texi: Regenerate.
11477 * targhooks.h (default_select_early_remat_modes): Declare.
11478 * targhooks.c (default_select_early_remat_modes): New function.
11479 * timevar.def (TV_EARLY_REMAT): New timevar.
11480 * passes.def (pass_early_remat): New pass.
11481 * tree-pass.h (make_pass_early_remat): Declare.
11482 * early-remat.c: New file.
11483 * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
11484 function.
11485 (TARGET_SELECT_EARLY_REMAT_MODES): Define.
11486
11487 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11488 Alan Hayward <alan.hayward@arm.com>
11489 David Sherwood <david.sherwood@arm.com>
11490
11491 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
11492 vfm1 with a bound_epilog parameter.
11493 (vect_do_peeling): Update calls accordingly, and move the prologue
11494 call earlier in the function. Treat the base bound_epilog as 0 for
11495 fully-masked loops and retain vf - 1 for other loops. Add 1 to
11496 this base when peeling for gaps.
11497 * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
11498 with fully-masked loops.
11499 (vect_estimate_min_profitable_iters): Handle the single peeled
11500 iteration in that case.
11501
11502 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11503 Alan Hayward <alan.hayward@arm.com>
11504 David Sherwood <david.sherwood@arm.com>
11505
11506 * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
11507 single-element interleaving even if the size is not a power of 2.
11508 * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
11509 accesses for single-element interleaving if the group size is
11510 not a power of 2.
11511
11512 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11513 Alan Hayward <alan.hayward@arm.com>
11514 David Sherwood <david.sherwood@arm.com>
11515
11516 * doc/md.texi (fold_extract_last_@var{m}): Document.
11517 * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
11518 * optabs.def (fold_extract_last_optab): New optab.
11519 * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
11520 * internal-fn.c (fold_extract_direct): New macro.
11521 (expand_fold_extract_optab_fn): Likewise.
11522 (direct_fold_extract_optab_supported_p): Likewise.
11523 * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
11524 * tree-vect-loop.c (vect_model_reduction_cost): Handle
11525 EXTRACT_LAST_REDUCTION.
11526 (get_initial_def_for_reduction): Do not create an initial vector
11527 for EXTRACT_LAST_REDUCTION reductions.
11528 (vectorizable_reduction): Leave the scalar phi in place for
11529 EXTRACT_LAST_REDUCTIONs. Try using EXTRACT_LAST_REDUCTION
11530 ahead of INTEGER_INDUC_COND_REDUCTION. Do not check for an
11531 epilogue code for EXTRACT_LAST_REDUCTION and defer the
11532 transform phase to vectorizable_condition.
11533 * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
11534 split out from...
11535 (vect_finish_stmt_generation): ...here.
11536 (vect_finish_replace_stmt): New function.
11537 (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
11538 * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
11539 pattern.
11540 * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
11541
11542 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11543 Alan Hayward <alan.hayward@arm.com>
11544 David Sherwood <david.sherwood@arm.com>
11545
11546 * doc/md.texi (extract_last_@var{m}): Document.
11547 * optabs.def (extract_last_optab): New optab.
11548 * internal-fn.def (EXTRACT_LAST): New internal function.
11549 * internal-fn.c (cond_unary_direct): New macro.
11550 (expand_cond_unary_optab_fn): Likewise.
11551 (direct_cond_unary_optab_supported_p): Likewise.
11552 * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
11553 loops using EXTRACT_LAST.
11554 * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
11555 (extract_last_<mode>): ...this optab.
11556 (vec_extract<mode><Vel>): Update accordingly.
11557
11558 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11559 Alan Hayward <alan.hayward@arm.com>
11560 David Sherwood <david.sherwood@arm.com>
11561
11562 * target.def (empty_mask_is_expensive): New hook.
11563 * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
11564 * doc/tm.texi: Regenerate.
11565 * targhooks.h (default_empty_mask_is_expensive): Declare.
11566 * targhooks.c (default_empty_mask_is_expensive): New function.
11567 * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
11568 if the target says that empty masks are expensive.
11569 * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
11570 New function.
11571 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
11572
11573 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11574 Alan Hayward <alan.hayward@arm.com>
11575 David Sherwood <david.sherwood@arm.com>
11576
11577 * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
11578 (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
11579 (vect_use_loop_mask_for_alignment_p): New function.
11580 (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
11581 * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
11582 niters_skip argument. Make sure that the first niters_skip elements
11583 of the first iteration are inactive.
11584 (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
11585 Update call to vect_set_loop_masks_directly.
11586 (get_misalign_in_elems): New function, split out from...
11587 (vect_gen_prolog_loop_niters): ...here.
11588 (vect_update_init_of_dr): Take a code argument that specifies whether
11589 the adjustment should be added or subtracted.
11590 (vect_update_init_of_drs): Likewise.
11591 (vect_prepare_for_masked_peels): New function.
11592 (vect_do_peeling): Skip prologue peeling if we're using a mask
11593 instead. Update call to vect_update_inits_of_drs.
11594 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
11595 mask_skip_niters.
11596 (vect_analyze_loop_2): Allow fully-masked loops with peeling for
11597 alignment. Do not include the number of peeled iterations in
11598 the minimum threshold in that case.
11599 (vectorizable_induction): Adjust the start value down by
11600 LOOP_VINFO_MASK_SKIP_NITERS iterations.
11601 (vect_transform_loop): Call vect_prepare_for_masked_peels.
11602 Take the number of skipped iterations into account when calculating
11603 the loop bounds.
11604 * tree-vect-stmts.c (vect_gen_while_not): New function.
11605
11606 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11607 Alan Hayward <alan.hayward@arm.com>
11608 David Sherwood <david.sherwood@arm.com>
11609
11610 * doc/sourcebuild.texi (vect_fully_masked): Document.
11611 * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
11612 default value to 0.
11613 * tree-vect-loop.c (vect_analyze_loop_costing): New function,
11614 split out from...
11615 (vect_analyze_loop_2): ...here. Don't check the vectorization
11616 factor against the number of loop iterations if the loop is
11617 fully-masked.
11618
11619 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11620 Alan Hayward <alan.hayward@arm.com>
11621 David Sherwood <david.sherwood@arm.com>
11622
11623 * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
11624 (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
11625 (dump_groups): Update accordingly.
11626 (iv_use::mem_type): New member variable.
11627 (address_p): New function.
11628 (record_use): Add a mem_type argument and initialize the new
11629 mem_type field.
11630 (record_group_use): Add a mem_type argument. Use address_p.
11631 Remove obsolete null checks of base_object. Update call to record_use.
11632 (find_interesting_uses_op): Update call to record_group_use.
11633 (find_interesting_uses_cond): Likewise.
11634 (find_interesting_uses_address): Likewise.
11635 (get_mem_type_for_internal_fn): New function.
11636 (find_address_like_use): Likewise.
11637 (find_interesting_uses_stmt): Try find_address_like_use before
11638 calling find_interesting_uses_op.
11639 (addr_offset_valid_p): Use the iv mem_type field as the type
11640 of the addressed memory.
11641 (add_autoinc_candidates): Likewise.
11642 (get_address_cost): Likewise.
11643 (split_small_address_groups_p): Use address_p.
11644 (split_address_groups): Likewise.
11645 (add_iv_candidate_for_use): Likewise.
11646 (autoinc_possible_for_pair): Likewise.
11647 (rewrite_groups): Likewise.
11648 (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
11649 (determine_group_iv_cost): Update after split of USE_ADDRESS.
11650 (get_alias_ptr_type_for_ptr_address): New function.
11651 (rewrite_use_address): Rewrite address uses in calls that were
11652 identified by find_address_like_use.
11653
11654 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11655 Alan Hayward <alan.hayward@arm.com>
11656 David Sherwood <david.sherwood@arm.com>
11657
11658 * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
11659 TARGET_MEM_REFs.
11660 * gimple-expr.h (is_gimple_addressable: Likewise.
11661 * gimple-expr.c (is_gimple_address): Likewise.
11662 * internal-fn.c (expand_call_mem_ref): New function.
11663 (expand_mask_load_optab_fn): Use it.
11664 (expand_mask_store_optab_fn): Likewise.
11665
11666 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11667 Alan Hayward <alan.hayward@arm.com>
11668 David Sherwood <david.sherwood@arm.com>
11669
11670 * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
11671 (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
11672 (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
11673 (cond_umax@var{mode}): Document.
11674 * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
11675 (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
11676 (cond_umin_optab, cond_umax_optab): New optabs.
11677 * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
11678 (COND_IOR, COND_XOR): New internal functions.
11679 * internal-fn.h (get_conditional_internal_fn): Declare.
11680 * internal-fn.c (cond_binary_direct): New macro.
11681 (expand_cond_binary_optab_fn): Likewise.
11682 (direct_cond_binary_optab_supported_p): Likewise.
11683 (get_conditional_internal_fn): New function.
11684 * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
11685 Cope with reduction statements that are vectorized as calls rather
11686 than assignments.
11687 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
11688 * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
11689 (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
11690 (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
11691 (UNSPEC_COND_EOR): New unspecs.
11692 (optab): Add mappings for them.
11693 (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
11694 (sve_int_op, sve_fp_op): New int attributes.
11695
11696 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11697 Alan Hayward <alan.hayward@arm.com>
11698 David Sherwood <david.sherwood@arm.com>
11699
11700 * optabs.def (while_ult_optab): New optab.
11701 * doc/md.texi (while_ult@var{m}@var{n}): Document.
11702 * internal-fn.def (WHILE_ULT): New internal function.
11703 * internal-fn.h (direct_internal_fn_supported_p): New override
11704 that takes two types as argument.
11705 * internal-fn.c (while_direct): New macro.
11706 (expand_while_optab_fn): New function.
11707 (convert_optab_supported_p): Likewise.
11708 (direct_while_optab_supported_p): New macro.
11709 * wide-int.h (wi::udiv_ceil): New function.
11710 * tree-vectorizer.h (rgroup_masks): New structure.
11711 (vec_loop_masks): New typedef.
11712 (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
11713 and fully_masked_p.
11714 (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
11715 (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
11716 (vect_max_vf): New function.
11717 (slpeel_make_loop_iterate_ntimes): Delete.
11718 (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
11719 (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
11720 (vect_record_loop_mask, vect_get_loop_mask): Likewise.
11721 * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
11722 internal-fn.h, stor-layout.h and optabs-query.h.
11723 (vect_set_loop_mask): New function.
11724 (add_preheader_seq): Likewise.
11725 (add_header_seq): Likewise.
11726 (interleave_supported_p): Likewise.
11727 (vect_maybe_permute_loop_masks): Likewise.
11728 (vect_set_loop_masks_directly): Likewise.
11729 (vect_set_loop_condition_masked): Likewise.
11730 (vect_set_loop_condition_unmasked): New function, split out from
11731 slpeel_make_loop_iterate_ntimes.
11732 (slpeel_make_loop_iterate_ntimes): Rename to..
11733 (vect_set_loop_condition): ...this. Use vect_set_loop_condition_masked
11734 for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
11735 (vect_do_peeling): Update call accordingly.
11736 (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
11737 loops.
11738 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
11739 mask_compare_type, can_fully_mask_p and fully_masked_p.
11740 (release_vec_loop_masks): New function.
11741 (_loop_vec_info): Use it to free the loop masks.
11742 (can_produce_all_loop_masks_p): New function.
11743 (vect_get_max_nscalars_per_iter): Likewise.
11744 (vect_verify_full_masking): Likewise.
11745 (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
11746 retries, and free the mask rgroups before retrying. Check loop-wide
11747 reasons for disallowing fully-masked loops. Make the final decision
11748 about whether use a fully-masked loop or not.
11749 (vect_estimate_min_profitable_iters): Do not assume that peeling
11750 for the number of iterations will be needed for fully-masked loops.
11751 (vectorizable_reduction): Disable fully-masked loops.
11752 (vectorizable_live_operation): Likewise.
11753 (vect_halve_mask_nunits): New function.
11754 (vect_double_mask_nunits): Likewise.
11755 (vect_record_loop_mask): Likewise.
11756 (vect_get_loop_mask): Likewise.
11757 (vect_transform_loop): Handle the case in which the final loop
11758 iteration might handle a partial vector. Call vect_set_loop_condition
11759 instead of slpeel_make_loop_iterate_ntimes.
11760 * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
11761 (check_load_store_masking): New function.
11762 (prepare_load_store_mask): Likewise.
11763 (vectorizable_store): Handle fully-masked loops.
11764 (vectorizable_load): Likewise.
11765 (supportable_widening_operation): Use vect_halve_mask_nunits for
11766 booleans.
11767 (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
11768 (vect_gen_while): New function.
11769 * config/aarch64/aarch64.md (umax<mode>3): New expander.
11770 (aarch64_uqdec<mode>): New insn.
11771
11772 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11773 Alan Hayward <alan.hayward@arm.com>
11774 David Sherwood <david.sherwood@arm.com>
11775
11776 * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
11777 (reduc_xor_scal_optab): New optabs.
11778 * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
11779 (reduc_xor_scal_@var{m}): Document.
11780 * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
11781 * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
11782 internal functions.
11783 * fold-const-call.c (fold_const_call): Handle them.
11784 * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
11785 internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
11786 * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
11787 (*reduc_<bit_reduc>_scal_<mode>): New patterns.
11788 * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
11789 (UNSPEC_XORV): New unspecs.
11790 (optab): Add entries for them.
11791 (BITWISEV): New int iterator.
11792 (bit_reduc_op): New int attributes.
11793
11794 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11795 Alan Hayward <alan.hayward@arm.com>
11796 David Sherwood <david.sherwood@arm.com>
11797
11798 * doc/md.texi (vec_shl_insert_@var{m}): New optab.
11799 * internal-fn.def (VEC_SHL_INSERT): New internal function.
11800 * optabs.def (vec_shl_insert_optab): New optab.
11801 * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
11802 (duplicate_and_interleave): Likewise.
11803 * tree-vect-loop.c: Include internal-fn.h.
11804 (neutral_op_for_slp_reduction): New function, split out from
11805 get_initial_defs_for_reduction.
11806 (get_initial_def_for_reduction): Handle option 2 for variable-length
11807 vectors by loading the neutral value into a vector and then shifting
11808 the initial value into element 0.
11809 (get_initial_defs_for_reduction): Replace the code argument with
11810 the neutral value calculated by neutral_op_for_slp_reduction.
11811 Use gimple_build_vector for constant-length vectors.
11812 Use IFN_VEC_SHL_INSERT for variable-length vectors if all
11813 but the first group_size elements have a neutral value.
11814 Use duplicate_and_interleave otherwise.
11815 (vect_create_epilog_for_reduction): Take a neutral_op parameter.
11816 Update call to get_initial_defs_for_reduction. Handle SLP
11817 reductions for variable-length vectors by creating one vector
11818 result for each scalar result, with the elements associated
11819 with other scalar results stubbed out with the neutral value.
11820 (vectorizable_reduction): Call neutral_op_for_slp_reduction.
11821 Require IFN_VEC_SHL_INSERT for double reductions on
11822 variable-length vectors, or SLP reductions that have
11823 a neutral value. Require can_duplicate_and_interleave_p
11824 support for variable-length unchained SLP reductions if there
11825 is no neutral value, such as for MIN/MAX reductions. Also require
11826 the number of vector elements to be a multiple of the number of
11827 SLP statements when doing variable-length unchained SLP reductions.
11828 Update call to vect_create_epilog_for_reduction.
11829 * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
11830 and remove initial values.
11831 (duplicate_and_interleave): Make public.
11832 * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
11833 * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
11834
11835 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11836 Alan Hayward <alan.hayward@arm.com>
11837 David Sherwood <david.sherwood@arm.com>
11838
11839 * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
11840 (can_duplicate_and_interleave_p): New function.
11841 (vect_get_and_check_slp_defs): Take the vector of statements
11842 rather than just the current one. Remove excess parentheses.
11843 Restriction rejectinon of vect_constant_def and vect_external_def
11844 for variable-length vectors to boolean types, or types for which
11845 can_duplicate_and_interleave_p is false.
11846 (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
11847 (duplicate_and_interleave): New function.
11848 (vect_get_constant_vectors): Use gimple_build_vector for
11849 constant-length vectors and suitable variable-length constant
11850 vectors. Use duplicate_and_interleave for other variable-length
11851 vectors. Don't defer the update when inserting new statements.
11852
11853 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11854 Alan Hayward <alan.hayward@arm.com>
11855 David Sherwood <david.sherwood@arm.com>
11856
11857 * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
11858 min_profitable_iters doesn't go negative.
11859
11860 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11861 Alan Hayward <alan.hayward@arm.com>
11862 David Sherwood <david.sherwood@arm.com>
11863
11864 * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
11865 (vec_mask_store_lanes@var{m}@var{n}): Likewise.
11866 * optabs.def (vec_mask_load_lanes_optab): New optab.
11867 (vec_mask_store_lanes_optab): Likewise.
11868 * internal-fn.def (MASK_LOAD_LANES): New internal function.
11869 (MASK_STORE_LANES): Likewise.
11870 * internal-fn.c (mask_load_lanes_direct): New macro.
11871 (mask_store_lanes_direct): Likewise.
11872 (expand_mask_load_optab_fn): Handle masked operations.
11873 (expand_mask_load_lanes_optab_fn): New macro.
11874 (expand_mask_store_optab_fn): Handle masked operations.
11875 (expand_mask_store_lanes_optab_fn): New macro.
11876 (direct_mask_load_lanes_optab_supported_p): Likewise.
11877 (direct_mask_store_lanes_optab_supported_p): Likewise.
11878 * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
11879 parameter.
11880 (vect_load_lanes_supported): Likewise.
11881 * tree-vect-data-refs.c (strip_conversion): New function.
11882 (can_group_stmts_p): Likewise.
11883 (vect_analyze_data_ref_accesses): Use it instead of checking
11884 for a pair of assignments.
11885 (vect_store_lanes_supported): Take a masked_p parameter.
11886 (vect_load_lanes_supported): Likewise.
11887 * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
11888 vect_store_lanes_supported and vect_load_lanes_supported.
11889 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
11890 * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
11891 parameter. Don't allow gaps for masked accesses.
11892 Use vect_get_store_rhs. Update calls to vect_store_lanes_supported
11893 and vect_load_lanes_supported.
11894 (get_load_store_type): Take a masked_p parameter and update
11895 call to get_group_load_store_type.
11896 (vectorizable_store): Update call to get_load_store_type.
11897 Handle IFN_MASK_STORE_LANES.
11898 (vectorizable_load): Update call to get_load_store_type.
11899 Handle IFN_MASK_LOAD_LANES.
11900
11901 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11902 Alan Hayward <alan.hayward@arm.com>
11903 David Sherwood <david.sherwood@arm.com>
11904
11905 * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
11906 modes for SVE.
11907 * config/aarch64/aarch64-protos.h
11908 (aarch64_sve_struct_memory_operand_p): Declare.
11909 * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
11910 (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
11911 (VPRED, vpred): Handle SVE structure modes.
11912 * config/aarch64/constraints.md (Utx): New constraint.
11913 * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
11914 (aarch64_sve_struct_nonimmediate_operand): New predicates.
11915 * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
11916 * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
11917 (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
11918 structure modes. Split into pieces after RA.
11919 (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
11920 (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
11921 New patterns.
11922 * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
11923 SVE structure modes.
11924 (aarch64_classify_address): Likewise.
11925 (sizetochar): Move earlier in file.
11926 (aarch64_print_operand): Handle SVE register lists.
11927 (aarch64_array_mode): New function.
11928 (aarch64_sve_struct_memory_operand_p): Likewise.
11929 (TARGET_ARRAY_MODE): Redefine.
11930
11931 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11932 Alan Hayward <alan.hayward@arm.com>
11933 David Sherwood <david.sherwood@arm.com>
11934
11935 * target.def (array_mode): New target hook.
11936 * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
11937 * doc/tm.texi: Regenerate.
11938 * hooks.h (hook_optmode_mode_uhwi_none): Declare.
11939 * hooks.c (hook_optmode_mode_uhwi_none): New function.
11940 * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
11941 targetm.array_mode.
11942 * stor-layout.c (mode_for_array): Likewise. Support polynomial
11943 type sizes.
11944
11945 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11946 Alan Hayward <alan.hayward@arm.com>
11947 David Sherwood <david.sherwood@arm.com>
11948
11949 * fold-const.c (fold_binary_loc): Check the argument types
11950 rather than the result type when testing for a vector operation.
11951
11952 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11953
11954 * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
11955 * doc/tm.texi: Regenerate.
11956
11957 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
11958 Alan Hayward <alan.hayward@arm.com>
11959 David Sherwood <david.sherwood@arm.com>
11960
11961 * doc/invoke.texi (-msve-vector-bits=): Document new option.
11962 (sve): Document new AArch64 extension.
11963 * doc/md.texi (w): Extend the description of the AArch64
11964 constraint to include SVE vectors.
11965 (Upl, Upa): Document new AArch64 predicate constraints.
11966 * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
11967 enum.
11968 * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
11969 (msve-vector-bits=): New option.
11970 * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
11971 SVE when these are disabled.
11972 (sve): New extension.
11973 * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
11974 modes. Adjust their number of units based on aarch64_sve_vg.
11975 (MAX_BITSIZE_MODE_ANY_MODE): Define.
11976 * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
11977 aarch64_addr_query_type.
11978 (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
11979 (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
11980 (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
11981 (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
11982 (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
11983 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
11984 (aarch64_simd_imm_zero_p): Delete.
11985 (aarch64_check_zero_based_sve_index_immediate): Declare.
11986 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
11987 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
11988 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
11989 (aarch64_sve_float_mul_immediate_p): Likewise.
11990 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
11991 rather than an rtx.
11992 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
11993 (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
11994 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
11995 (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
11996 (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
11997 (aarch64_regmode_natural_size): Likewise.
11998 * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
11999 (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
12000 left one place.
12001 (AARCH64_ISA_SVE, TARGET_SVE): New macros.
12002 (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
12003 for VG and the SVE predicate registers.
12004 (V_ALIASES): Add a "z"-prefixed alias.
12005 (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
12006 (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
12007 (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
12008 (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
12009 (REG_CLASS_NAMES): Add entries for them.
12010 (REG_CLASS_CONTENTS): Likewise. Update ALL_REGS to include VG
12011 and the predicate registers.
12012 (aarch64_sve_vg): Declare.
12013 (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
12014 (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
12015 (REGMODE_NATURAL_SIZE): Define.
12016 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
12017 SVE macros.
12018 * config/aarch64/aarch64.c: Include cfgrtl.h.
12019 (simd_immediate_info): Add a constructor for series vectors,
12020 and an associated step field.
12021 (aarch64_sve_vg): New variable.
12022 (aarch64_dbx_register_number): Handle VG and the predicate registers.
12023 (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
12024 (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
12025 (VEC_ANY_DATA, VEC_STRUCT): New constants.
12026 (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
12027 (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
12028 (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
12029 (aarch64_get_mask_mode): New functions.
12030 (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
12031 and FP_LO_REGS. Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
12032 (aarch64_hard_regno_mode_ok): Handle VG. Also handle the SVE
12033 predicate modes and predicate registers. Explicitly restrict
12034 GPRs to modes of 16 bytes or smaller. Only allow FP registers
12035 to store a vector mode if it is recognized by
12036 aarch64_classify_vector_mode.
12037 (aarch64_regmode_natural_size): New function.
12038 (aarch64_hard_regno_caller_save_mode): Return the original mode
12039 for predicates.
12040 (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
12041 (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
12042 (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
12043 (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
12044 functions.
12045 (aarch64_add_offset): Add a temp2 parameter. Assert that temp1
12046 does not overlap dest if the function is frame-related. Handle
12047 SVE constants.
12048 (aarch64_split_add_offset): New function.
12049 (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
12050 them aarch64_add_offset.
12051 (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
12052 and update call to aarch64_sub_sp.
12053 (aarch64_add_cfa_expression): New function.
12054 (aarch64_expand_prologue): Pass extra temporary registers to the
12055 functions above. Handle the case in which we need to emit new
12056 DW_CFA_expressions for registers that were originally saved
12057 relative to the stack pointer, but now have to be expressed
12058 relative to the frame pointer.
12059 (aarch64_output_mi_thunk): Pass extra temporary registers to the
12060 functions above.
12061 (aarch64_expand_epilogue): Likewise. Prevent inheritance of
12062 IP0 and IP1 values for SVE frames.
12063 (aarch64_expand_vec_series): New function.
12064 (aarch64_expand_sve_widened_duplicate): Likewise.
12065 (aarch64_expand_sve_const_vector): Likewise.
12066 (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
12067 Handle SVE constants. Use emit_move_insn to move a force_const_mem
12068 into the register, rather than emitting a SET directly.
12069 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
12070 (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
12071 (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
12072 (offset_9bit_signed_scaled_p): New functions.
12073 (aarch64_replicate_bitmask_imm): New function.
12074 (aarch64_bitmask_imm): Use it.
12075 (aarch64_cannot_force_const_mem): Reject expressions involving
12076 a CONST_POLY_INT. Update call to aarch64_classify_symbol.
12077 (aarch64_classify_index): Handle SVE indices, by requiring
12078 a plain register index with a scale that matches the element size.
12079 (aarch64_classify_address): Handle SVE addresses. Assert that
12080 the mode of the address is VOIDmode or an integer mode.
12081 Update call to aarch64_classify_symbol.
12082 (aarch64_classify_symbolic_expression): Update call to
12083 aarch64_classify_symbol.
12084 (aarch64_const_vec_all_in_range_p): New function.
12085 (aarch64_print_vector_float_operand): Likewise.
12086 (aarch64_print_operand): Handle 'N' and 'C'. Use "zN" rather than
12087 "vN" for FP registers with SVE modes. Handle (const ...) vectors
12088 and the FP immediates 1.0 and 0.5.
12089 (aarch64_print_address_internal): Handle SVE addresses.
12090 (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
12091 (aarch64_regno_regclass): Handle predicate registers.
12092 (aarch64_secondary_reload): Handle big-endian reloads of SVE
12093 data modes.
12094 (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
12095 (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
12096 (aarch64_convert_sve_vector_bits): New function.
12097 (aarch64_override_options): Use it to handle -msve-vector-bits=.
12098 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
12099 rather than an rtx.
12100 (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
12101 Handle SVE vector and predicate modes. Accept VL-based constants
12102 that need only one temporary register, and VL offsets that require
12103 no temporary registers.
12104 (aarch64_conditional_register_usage): Mark the predicate registers
12105 as fixed if SVE isn't available.
12106 (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
12107 Return true for SVE vector and predicate modes.
12108 (aarch64_simd_container_mode): Take the number of bits as a poly_int64
12109 rather than an unsigned int. Handle SVE modes.
12110 (aarch64_preferred_simd_mode): Update call accordingly. Handle
12111 SVE modes.
12112 (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
12113 if SVE is enabled.
12114 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
12115 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
12116 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
12117 (aarch64_sve_float_mul_immediate_p): New functions.
12118 (aarch64_sve_valid_immediate): New function.
12119 (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
12120 Explicitly reject structure modes. Check for INDEX constants.
12121 Handle PTRUE and PFALSE constants.
12122 (aarch64_check_zero_based_sve_index_immediate): New function.
12123 (aarch64_simd_imm_zero_p): Delete.
12124 (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
12125 vector modes. Accept constants in the range of CNT[BHWD].
12126 (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
12127 ask for an Advanced SIMD mode.
12128 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
12129 (aarch64_simd_vector_alignment): Handle SVE predicates.
12130 (aarch64_vectorize_preferred_vector_alignment): New function.
12131 (aarch64_simd_vector_alignment_reachable): Use it instead of
12132 the vector size.
12133 (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
12134 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
12135 functions.
12136 (MAX_VECT_LEN): Delete.
12137 (expand_vec_perm_d): Add a vec_flags field.
12138 (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
12139 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
12140 (aarch64_evpc_ext): Don't apply a big-endian lane correction
12141 for SVE modes.
12142 (aarch64_evpc_rev): Rename to...
12143 (aarch64_evpc_rev_local): ...this. Use a predicated operation for SVE.
12144 (aarch64_evpc_rev_global): New function.
12145 (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
12146 (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
12147 MAX_VECT_LEN.
12148 (aarch64_evpc_sve_tbl): New function.
12149 (aarch64_expand_vec_perm_const_1): Update after rename of
12150 aarch64_evpc_rev. Handle SVE permutes too, trying
12151 aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
12152 than aarch64_evpc_tbl.
12153 (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
12154 (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
12155 (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
12156 (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
12157 (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
12158 (aarch64_expand_sve_vcond): New functions.
12159 (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
12160 of aarch64_vector_mode_p.
12161 (aarch64_dwarf_poly_indeterminate_value): New function.
12162 (aarch64_compute_pressure_classes): Likewise.
12163 (aarch64_can_change_mode_class): Likewise.
12164 (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
12165 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
12166 (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
12167 (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
12168 (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
12169 (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
12170 * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
12171 (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
12172 constraints.
12173 (Dn, Dl, Dr): Accept const as well as const_vector.
12174 (Dz): Likewise. Compare against CONST0_RTX.
12175 * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
12176 of "vector" where appropriate.
12177 (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
12178 (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
12179 (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
12180 (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
12181 (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
12182 (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
12183 (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
12184 (v_int_equiv): Extend to SVE modes.
12185 (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
12186 mode attributes.
12187 (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
12188 (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
12189 (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
12190 (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
12191 (SVE_COND_FP_CMP): New int iterators.
12192 (perm_hilo): Handle the new unpack unspecs.
12193 (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
12194 attributes.
12195 * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
12196 (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
12197 (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
12198 (aarch64_equality_operator, aarch64_constant_vector_operand)
12199 (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
12200 (aarch64_sve_nonimmediate_operand): Likewise.
12201 (aarch64_sve_general_operand): Likewise.
12202 (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
12203 (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
12204 (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
12205 (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
12206 (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
12207 (aarch64_sve_float_arith_immediate): Likewise.
12208 (aarch64_sve_float_arith_with_sub_immediate): Likewise.
12209 (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
12210 (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
12211 (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
12212 (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
12213 (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
12214 (aarch64_sve_float_arith_operand): Likewise.
12215 (aarch64_sve_float_arith_with_sub_operand): Likewise.
12216 (aarch64_sve_float_mul_operand): Likewise.
12217 (aarch64_sve_vec_perm_operand): Likewise.
12218 (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
12219 (aarch64_mov_operand): Accept const_poly_int and const_vector.
12220 (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
12221 as well as const_vector.
12222 (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
12223 in file. Use CONST0_RTX and CONSTM1_RTX.
12224 (aarch64_simd_or_scalar_imm_zero): Likewise. Add match_codes.
12225 (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
12226 Use aarch64_simd_imm_zero.
12227 * config/aarch64/aarch64-sve.md: New file.
12228 * config/aarch64/aarch64.md: Include it.
12229 (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
12230 (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
12231 (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
12232 (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
12233 (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
12234 (sve): New attribute.
12235 (enabled): Disable instructions with the sve attribute unless
12236 TARGET_SVE.
12237 (movqi, movhi): Pass CONST_POLY_INT operaneds through
12238 aarch64_expand_mov_immediate.
12239 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
12240 CNT[BHSD] immediates.
12241 (movti): Split CONST_POLY_INT moves into two halves.
12242 (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
12243 Split additions that need a temporary here if the destination
12244 is the stack pointer.
12245 (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
12246 (*add<mode>3_poly_1): New instruction.
12247 (set_clobber_cc): New expander.
12248
12249 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12250
12251 * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
12252 parameter and use it instead of GET_MODE_SIZE (innermode). Use
12253 inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
12254 Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
12255 GET_MODE_NUNITS (innermode). Also add a first_elem parameter.
12256 Change innermode from fixed_mode_size to machine_mode.
12257 (simplify_subreg): Update call accordingly. Handle a constant-sized
12258 subreg of a variable-length CONST_VECTOR.
12259
12260 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12261 Alan Hayward <alan.hayward@arm.com>
12262 David Sherwood <david.sherwood@arm.com>
12263
12264 * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
12265 (add_offset_to_base): New function, split out from...
12266 (create_mem_ref): ...here. When handling a scale other than 1,
12267 check first whether the address is valid without the offset.
12268 Add it into the base if so, leaving the index and scale as-is.
12269
12270 2018-01-12 Jakub Jelinek <jakub@redhat.com>
12271
12272 PR c++/83778
12273 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
12274 fold_for_warn before checking if arg2 is INTEGER_CST.
12275
12276 2018-01-12 Segher Boessenkool <segher@kernel.crashing.org>
12277
12278 * config/rs6000/predicates.md (load_multiple_operation): Delete.
12279 (store_multiple_operation): Delete.
12280 * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
12281 * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
12282 * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
12283 guarded by TARGET_STRING.
12284 (rs6000_output_load_multiple): Delete.
12285 * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
12286 OPTION_MASK_STRING / TARGET_STRING handling.
12287 (print_operand) <'N', 'O'>: Add comment that these are unused now.
12288 (const rs6000_opt_masks) <"string">: Change mask to 0.
12289 * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
12290 (MASK_STRING): Delete.
12291 * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
12292 parts. Simplify.
12293 (load_multiple): Delete.
12294 (*ldmsi8): Delete.
12295 (*ldmsi7): Delete.
12296 (*ldmsi6): Delete.
12297 (*ldmsi5): Delete.
12298 (*ldmsi4): Delete.
12299 (*ldmsi3): Delete.
12300 (store_multiple): Delete.
12301 (*stmsi8): Delete.
12302 (*stmsi7): Delete.
12303 (*stmsi6): Delete.
12304 (*stmsi5): Delete.
12305 (*stmsi4): Delete.
12306 (*stmsi3): Delete.
12307 (movmemsi_8reg): Delete.
12308 (corresponding unnamed define_insn): Delete.
12309 (movmemsi_6reg): Delete.
12310 (corresponding unnamed define_insn): Delete.
12311 (movmemsi_4reg): Delete.
12312 (corresponding unnamed define_insn): Delete.
12313 (movmemsi_2reg): Delete.
12314 (corresponding unnamed define_insn): Delete.
12315 (movmemsi_1reg): Delete.
12316 (corresponding unnamed define_insn): Delete.
12317 * config/rs6000/rs6000.opt (mno-string): New.
12318 (mstring): Replace by deprecation warning stub.
12319 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
12320
12321 2018-01-12 Jakub Jelinek <jakub@redhat.com>
12322
12323 * regrename.c (regrename_do_replace): If replacing the same
12324 reg multiple times, try to reuse last created gen_raw_REG.
12325
12326 PR debug/81155
12327 * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
12328 main to workaround a bug in GDB.
12329
12330 2018-01-12 Tom de Vries <tom@codesourcery.com>
12331
12332 PR target/83737
12333 * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
12334
12335 2018-01-12 Vladimir Makarov <vmakarov@redhat.com>
12336
12337 PR rtl-optimization/80481
12338 * ira-color.c (get_cap_member): New function.
12339 (allocnos_conflict_by_live_ranges_p): Use it.
12340 (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
12341 (setup_slot_coalesced_allocno_live_ranges): Ditto.
12342
12343 2018-01-12 Uros Bizjak <ubizjak@gmail.com>
12344
12345 PR target/83628
12346 * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
12347 (*saddl_se_1): Ditto.
12348 (*ssubsi_1): Ditto.
12349 (*ssubl_se_1): Ditto.
12350
12351 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
12352
12353 * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
12354 rather than wi::to_widest for DR_INITs.
12355 * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
12356 wi::to_poly_offset rather than wi::to_offset for DR_INIT.
12357 (vect_analyze_data_ref_accesses): Require both DR_INITs to be
12358 INTEGER_CSTs.
12359 (vect_analyze_group_access_1): Note that here.
12360
12361 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
12362
12363 * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
12364 polynomial type sizes.
12365
12366 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
12367
12368 * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
12369 poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
12370 (gimple_add_tmp_var): Likewise.
12371
12372 2018-01-12 Martin Liska <mliska@suse.cz>
12373
12374 * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
12375 (gimple_alloc_sizes): Likewise.
12376 (dump_gimple_statistics): Use PRIu64 in printf format.
12377 * gimple.h: Change uint64_t to int.
12378
12379 2018-01-12 Martin Liska <mliska@suse.cz>
12380
12381 * tree-core.h: Use uint64_t instead of int.
12382 * tree.c (tree_node_counts): Likewise.
12383 (tree_node_sizes): Likewise.
12384 (dump_tree_statistics): Use PRIu64 in printf format.
12385
12386 2018-01-12 Martin Liska <mliska@suse.cz>
12387
12388 * Makefile.in: As qsort_chk is implemented in vec.c, add
12389 vec.o to linkage of gencfn-macros.
12390 * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
12391 passing the info to record_node_allocation_statistics.
12392 (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
12393 and pass the info.
12394 * ggc-common.c (struct ggc_usage): Add operator== and use
12395 it in operator< and compare function.
12396 * mem-stats.h (struct mem_usage): Likewise.
12397 * vec.c (struct vec_usage): Remove operator< and compare
12398 function. Can be simply inherited.
12399
12400 2018-01-12 Martin Jambor <mjambor@suse.cz>
12401
12402 PR target/81616
12403 * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
12404 * tree-ssa-math-opts.c: Include domwalk.h.
12405 (convert_mult_to_fma_1): New function.
12406 (fma_transformation_info): New type.
12407 (fma_deferring_state): Likewise.
12408 (cancel_fma_deferring): New function.
12409 (result_of_phi): Likewise.
12410 (last_fma_candidate_feeds_initial_phi): Likewise.
12411 (convert_mult_to_fma): Added deferring logic, split actual
12412 transformation to convert_mult_to_fma_1.
12413 (math_opts_dom_walker): New type.
12414 (math_opts_dom_walker::after_dom_children): New method, body moved
12415 here from pass_optimize_widening_mul::execute, added deferring logic
12416 bits.
12417 (pass_optimize_widening_mul::execute): Moved most of code to
12418 math_opts_dom_walker::after_dom_children.
12419 * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
12420 * config/i386/i386.c (ix86_option_override_internal): Added
12421 maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
12422
12423 2018-01-12 Richard Biener <rguenther@suse.de>
12424
12425 PR debug/83157
12426 * dwarf2out.c (gen_variable_die): Do not reset old_die for
12427 inline instance vars.
12428
12429 2018-01-12 Oleg Endo <olegendo@gcc.gnu.org>
12430
12431 PR target/81819
12432 * config/rx/rx.c (rx_is_restricted_memory_address):
12433 Handle SUBREG case.
12434
12435 2018-01-12 Richard Biener <rguenther@suse.de>
12436
12437 PR tree-optimization/80846
12438 * target.def (split_reduction): New target hook.
12439 * targhooks.c (default_split_reduction): New function.
12440 * targhooks.h (default_split_reduction): Declare.
12441 * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
12442 target requests first reduce vectors by combining low and high
12443 parts.
12444 * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
12445 (get_vectype_for_scalar_type_and_size): Export.
12446 * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
12447 * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
12448 * doc/tm.texi: Regenerate.
12449 * config/i386/i386.c (ix86_split_reduction): Implement
12450 TARGET_VECTORIZE_SPLIT_REDUCTION.
12451
12452 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
12453
12454 PR target/83368
12455 * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
12456 in PIC mode except for TARGET_VXWORKS_RTP.
12457 * config/sparc/sparc.c: Include cfgrtl.h.
12458 (TARGET_INIT_PIC_REG): Define.
12459 (TARGET_USE_PSEUDO_PIC_REG): Likewise.
12460 (sparc_pic_register_p): New predicate.
12461 (sparc_legitimate_address_p): Use it.
12462 (sparc_legitimize_pic_address): Likewise.
12463 (sparc_delegitimize_address): Likewise.
12464 (sparc_mode_dependent_address_p): Likewise.
12465 (gen_load_pcrel_sym): Remove 4th parameter.
12466 (load_got_register): Adjust call to above. Remove obsolete stuff.
12467 (sparc_expand_prologue): Do not call load_got_register here.
12468 (sparc_flat_expand_prologue): Likewise.
12469 (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
12470 (sparc_use_pseudo_pic_reg): New function.
12471 (sparc_init_pic_reg): Likewise.
12472 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
12473 (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
12474
12475 2018-01-12 Christophe Lyon <christophe.lyon@linaro.org>
12476
12477 * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
12478 Add item for branch_cost.
12479
12480 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
12481
12482 PR rtl-optimization/83565
12483 * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
12484 not extend the result to a larger mode for rotate operations.
12485 (num_sign_bit_copies1): Likewise.
12486
12487 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
12488
12489 PR target/40411
12490 * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
12491 -symbolic.
12492 Use values-Xc.o for -pedantic.
12493 Link with values-xpg4.o for C90, values-xpg6.o otherwise.
12494
12495 2018-01-12 Martin Liska <mliska@suse.cz>
12496
12497 PR ipa/83054
12498 * ipa-devirt.c (final_warning_record::grow_type_warnings):
12499 New function.
12500 (possible_polymorphic_call_targets): Use it.
12501 (ipa_devirt): Likewise.
12502
12503 2018-01-12 Martin Liska <mliska@suse.cz>
12504
12505 * profile-count.h (enum profile_quality): Use 0 as invalid
12506 enum value of profile_quality.
12507
12508 2018-01-12 Chung-Ju Wu <jasonwucj@gmail.com>
12509
12510 * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
12511 -mext-string options.
12512
12513 2018-01-12 Richard Biener <rguenther@suse.de>
12514
12515 * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
12516 DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
12517 * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
12518 Likewise.
12519 * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
12520
12521 2018-01-11 Michael Meissner <meissner@linux.vnet.ibm.com>
12522
12523 * configure.ac (--with-long-double-format): Add support for the
12524 configuration option to change the default long double format on
12525 PowerPC systems.
12526 * config.gcc (powerpc*-linux*-*): Likewise.
12527 * configure: Regenerate.
12528 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
12529 double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
12530 used without modification.
12531
12532 2018-01-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
12533
12534 * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
12535 (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
12536 * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
12537 MISC_BUILTIN_SPEC_BARRIER.
12538 (rs6000_init_builtins): Likewise.
12539 * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
12540 enum value.
12541 (speculation_barrier): New define_insn.
12542 * doc/extend.texi: Document __builtin_speculation_barrier.
12543
12544 2018-01-11 Jakub Jelinek <jakub@redhat.com>
12545
12546 PR target/83203
12547 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
12548 is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
12549 * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
12550 iterators.
12551 (ssescalarmodesuffix): Add 512-bit vectors. Use "d" or "q" for
12552 integral modes instead of "ss" and "sd".
12553 (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
12554 vectors with 32-bit and 64-bit elements.
12555 (vecdupssescalarmodesuffix): New mode attribute.
12556 (vec_dup<mode>): Use it.
12557
12558 2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
12559
12560 PR target/83330
12561 * config/i386/i386.c (ix86_compute_frame_layout): Align stack
12562 frame if argument is passed on stack.
12563
12564 2018-01-11 Jakub Jelinek <jakub@redhat.com>
12565
12566 PR target/82682
12567 * ree.c (combine_reaching_defs): Optimize also
12568 reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
12569 reg2=any_extend(exp); reg1=reg2;, formatting fix.
12570
12571 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
12572
12573 PR middle-end/83189
12574 * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
12575
12576 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
12577
12578 PR middle-end/83718
12579 * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
12580 after they are computed.
12581
12582 2018-01-11 Bin Cheng <bin.cheng@arm.com>
12583
12584 PR tree-optimization/83695
12585 * gimple-loop-linterchange.cc
12586 (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
12587 reset cached scev information after interchange.
12588 (pass_linterchange::execute): Remove call to scev_reset_htab.
12589
12590 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12591
12592 * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
12593 vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
12594 vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
12595 vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
12596 vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
12597 vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
12598 * config/arm/arm_neon_builtins.def (vfmal_lane_low,
12599 vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
12600 vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
12601 vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
12602 vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
12603 * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
12604 (V_lane_reg): Likewise.
12605 * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
12606 New define_expand.
12607 (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
12608 (vfmal_lane_low<mode>_intrinsic,
12609 vfmal_lane_low<vfmlsel2><mode>_intrinsic,
12610 vfmal_lane_high<vfmlsel2><mode>_intrinsic,
12611 vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
12612 vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
12613 vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
12614 vfmsl_lane_high<mode>_intrinsic): New define_insns.
12615
12616 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12617
12618 * config/arm/arm-cpus.in (fp16fml): New feature.
12619 (ALL_SIMD): Add fp16fml.
12620 (armv8.2-a): Add fp16fml as an option.
12621 (armv8.3-a): Likewise.
12622 (armv8.4-a): Add fp16fml as part of fp16.
12623 * config/arm/arm.h (TARGET_FP16FML): Define.
12624 * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
12625 when appropriate.
12626 * config/arm/arm-modes.def (V2HF): Define.
12627 * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
12628 vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
12629 vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
12630 * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
12631 vfmsl_low, vfmsl_high): New set of builtins.
12632 * config/arm/iterators.md (PLUSMINUS): New code iterator.
12633 (vfml_op): New code attribute.
12634 (VFMLHALVES): New int iterator.
12635 (VFML, VFMLSEL): New mode attributes.
12636 (V_reg): Define mapping for V2HF.
12637 (V_hi, V_lo): New mode attributes.
12638 (VF_constraint): Likewise.
12639 (vfml_half, vfml_half_selector): New int attributes.
12640 * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
12641 define_expand.
12642 (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
12643 vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
12644 New define_insn.
12645 * config/arm/t-arm-elf (v8_fps): Add fp16fml.
12646 * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
12647 * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
12648 * doc/invoke.texi (ARM Options): Document fp16fml. Update armv8.4-a
12649 documentation.
12650 * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
12651 Document new effective target and option set.
12652
12653 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12654
12655 * config/arm/arm-cpus.in (armv8_4): New feature.
12656 (ARMv8_4a): New fgroup.
12657 (armv8.4-a): New arch.
12658 * config/arm/arm-tables.opt: Regenerate.
12659 * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
12660 * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
12661 * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
12662 Add matching rules for -march=armv8.4-a and extensions.
12663 * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
12664
12665 2018-01-11 Oleg Endo <olegendo@gcc.gnu.org>
12666
12667 PR target/81821
12668 * config/rx/rx.md (BW): New mode attribute.
12669 (sync_lock_test_and_setsi): Add mode suffix to insn output.
12670
12671 2018-01-11 Richard Biener <rguenther@suse.de>
12672
12673 PR tree-optimization/83435
12674 * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
12675 * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
12676 * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
12677
12678 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
12679 Alan Hayward <alan.hayward@arm.com>
12680 David Sherwood <david.sherwood@arm.com>
12681
12682 * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
12683 field.
12684 (aarch64_classify_address): Initialize it. Track polynomial offsets.
12685 (aarch64_print_address_internal): Use it to check for a zero offset.
12686
12687 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
12688 Alan Hayward <alan.hayward@arm.com>
12689 David Sherwood <david.sherwood@arm.com>
12690
12691 * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
12692 * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
12693 Return a poly_int64 rather than a HOST_WIDE_INT.
12694 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
12695 rather than a HOST_WIDE_INT.
12696 * config/aarch64/aarch64.h (aarch64_frame): Protect with
12697 HAVE_POLY_INT_H rather than HOST_WIDE_INT. Change locals_offset,
12698 hard_fp_offset, frame_size, initial_adjust, callee_offset and
12699 final_offset from HOST_WIDE_INT to poly_int64.
12700 * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
12701 to_constant when getting the number of units in an Advanced SIMD
12702 mode.
12703 (aarch64_builtin_vectorized_function): Check for a constant number
12704 of units.
12705 * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
12706 GET_MODE_SIZE.
12707 (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
12708 attribute instead of GET_MODE_NUNITS.
12709 * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
12710 (aarch64_class_max_nregs): Use the constant_lowest_bound of the
12711 GET_MODE_SIZE for fixed-size registers.
12712 (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
12713 (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
12714 (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
12715 (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
12716 (aarch64_print_operand, aarch64_print_address_internal)
12717 (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
12718 (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
12719 (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
12720 Handle polynomial GET_MODE_SIZE.
12721 (aarch64_hard_regno_caller_save_mode): Likewise. Return modes
12722 wider than SImode without modification.
12723 (tls_symbolic_operand_type): Use strip_offset instead of split_const.
12724 (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
12725 (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
12726 passing and returning SVE modes.
12727 (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
12728 rather than GEN_INT.
12729 (aarch64_emit_probe_stack_range): Take the size as a poly_int64
12730 rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
12731 (aarch64_allocate_and_probe_stack_space): Likewise.
12732 (aarch64_layout_frame): Cope with polynomial offsets.
12733 (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
12734 start_offset as a poly_int64 rather than a HOST_WIDE_INT. Track
12735 polynomial offsets.
12736 (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
12737 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
12738 poly_int64 rather than a HOST_WIDE_INT.
12739 (aarch64_get_separate_components, aarch64_process_components)
12740 (aarch64_expand_prologue, aarch64_expand_epilogue)
12741 (aarch64_use_return_insn_p): Handle polynomial frame offsets.
12742 (aarch64_anchor_offset): New function, split out from...
12743 (aarch64_legitimize_address): ...here.
12744 (aarch64_builtin_vectorization_cost): Handle polynomial
12745 TYPE_VECTOR_SUBPARTS.
12746 (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
12747 GET_MODE_NUNITS.
12748 (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
12749 number of elements from the PARALLEL rather than the mode.
12750 (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
12751 rather than GET_MODE_BITSIZE.
12752 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
12753 (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
12754 (aarch64_expand_vec_perm_const_1): Handle polynomial
12755 d->perm.length () and d->perm elements.
12756 (aarch64_evpc_tbl): Likewise. Use nelt rather than GET_MODE_NUNITS.
12757 Apply to_constant to d->perm elements.
12758 (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
12759 polynomial CONST_VECTOR_NUNITS.
12760 (aarch64_move_pointer): Take amount as a poly_int64 rather
12761 than an int.
12762 (aarch64_progress_pointer): Avoid temporary variable.
12763 * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
12764 the mode attribute instead of GET_MODE.
12765
12766 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
12767 Alan Hayward <alan.hayward@arm.com>
12768 David Sherwood <david.sherwood@arm.com>
12769
12770 * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
12771 x exists before using it.
12772 (aarch64_add_constant_internal): Rename to...
12773 (aarch64_add_offset_1): ...this. Replace regnum with separate
12774 src and dest rtxes. Handle the case in which they're different,
12775 including when the offset is zero. Replace scratchreg with an rtx.
12776 Use 2 additions if there is no spare register into which we can
12777 move a 16-bit constant.
12778 (aarch64_add_constant): Delete.
12779 (aarch64_add_offset): Replace reg with separate src and dest
12780 rtxes. Take a poly_int64 offset instead of a HOST_WIDE_INT.
12781 Use aarch64_add_offset_1.
12782 (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
12783 an rtx rather than an int. Take the delta as a poly_int64
12784 rather than a HOST_WIDE_INT. Use aarch64_add_offset.
12785 (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
12786 (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
12787 aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
12788 (aarch64_expand_epilogue): Update calls to aarch64_add_offset
12789 and aarch64_add_sp.
12790 (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
12791 aarch64_add_constant.
12792
12793 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
12794
12795 * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
12796 Use scalar_float_mode.
12797
12798 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
12799
12800 * config/aarch64/aarch64-simd.md
12801 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
12802 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
12803 (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
12804 (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
12805 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
12806 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
12807 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
12808 (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
12809 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
12810 (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
12811
12812 2018-01-11 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12813
12814 PR target/83514
12815 * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
12816 targ_options->x_arm_arch_string is non NULL.
12817
12818 2018-01-11 Tamar Christina <tamar.christina@arm.com>
12819
12820 * config/aarch64/aarch64.h
12821 (AARCH64_FL_FOR_ARCH8_4): Add AARCH64_FL_DOTPROD.
12822
12823 2018-01-11 Sudakshina Das <sudi.das@arm.com>
12824
12825 PR target/82096
12826 * expmed.c (emit_store_flag_force): Swap if const op0
12827 and change VOIDmode to mode of op0.
12828
12829 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
12830
12831 PR rtl-optimization/83761
12832 * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
12833 than bytes to mode_for_size.
12834
12835 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
12836
12837 PR middle-end/83189
12838 * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
12839 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
12840 profile.
12841
12842 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
12843
12844 PR middle-end/83575
12845 * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
12846 when in layout mode.
12847 (cfg_layout_finalize): Do not verify cfg before we are out of layout.
12848 * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
12849 partition fixup.
12850
12851 2018-01-10 Michael Collison <michael.collison@arm.com>
12852
12853 * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
12854 * config/aarch64/aarch64-option-extension.def: Add
12855 AARCH64_OPT_EXTENSION of 'fp16fml'.
12856 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12857 (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
12858 * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
12859 * config/aarch64/constraints.md (Ui7): New constraint.
12860 * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
12861 (VFMLA_SEL_W): Ditto.
12862 (f16quad): Ditto.
12863 (f16mac1): Ditto.
12864 (VFMLA16_LOW): New int iterator.
12865 (VFMLA16_HIGH): Ditto.
12866 (UNSPEC_FMLAL): New unspec.
12867 (UNSPEC_FMLSL): Ditto.
12868 (UNSPEC_FMLAL2): Ditto.
12869 (UNSPEC_FMLSL2): Ditto.
12870 (f16mac): New code attribute.
12871 * config/aarch64/aarch64-simd-builtins.def
12872 (aarch64_fmlal_lowv2sf): Ditto.
12873 (aarch64_fmlsl_lowv2sf): Ditto.
12874 (aarch64_fmlalq_lowv4sf): Ditto.
12875 (aarch64_fmlslq_lowv4sf): Ditto.
12876 (aarch64_fmlal_highv2sf): Ditto.
12877 (aarch64_fmlsl_highv2sf): Ditto.
12878 (aarch64_fmlalq_highv4sf): Ditto.
12879 (aarch64_fmlslq_highv4sf): Ditto.
12880 (aarch64_fmlal_lane_lowv2sf): Ditto.
12881 (aarch64_fmlsl_lane_lowv2sf): Ditto.
12882 (aarch64_fmlal_laneq_lowv2sf): Ditto.
12883 (aarch64_fmlsl_laneq_lowv2sf): Ditto.
12884 (aarch64_fmlalq_lane_lowv4sf): Ditto.
12885 (aarch64_fmlsl_lane_lowv4sf): Ditto.
12886 (aarch64_fmlalq_laneq_lowv4sf): Ditto.
12887 (aarch64_fmlsl_laneq_lowv4sf): Ditto.
12888 (aarch64_fmlal_lane_highv2sf): Ditto.
12889 (aarch64_fmlsl_lane_highv2sf): Ditto.
12890 (aarch64_fmlal_laneq_highv2sf): Ditto.
12891 (aarch64_fmlsl_laneq_highv2sf): Ditto.
12892 (aarch64_fmlalq_lane_highv4sf): Ditto.
12893 (aarch64_fmlsl_lane_highv4sf): Ditto.
12894 (aarch64_fmlalq_laneq_highv4sf): Ditto.
12895 (aarch64_fmlsl_laneq_highv4sf): Ditto.
12896 * config/aarch64/aarch64-simd.md:
12897 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
12898 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
12899 (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
12900 (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
12901 (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
12902 (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
12903 (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
12904 (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
12905 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
12906 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
12907 (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
12908 (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
12909 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
12910 (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
12911 (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
12912 (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
12913 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
12914 (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
12915 (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
12916 (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
12917 * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
12918 (vfmlsl_low_u32): Ditto.
12919 (vfmlalq_low_u32): Ditto.
12920 (vfmlslq_low_u32): Ditto.
12921 (vfmlal_high_u32): Ditto.
12922 (vfmlsl_high_u32): Ditto.
12923 (vfmlalq_high_u32): Ditto.
12924 (vfmlslq_high_u32): Ditto.
12925 (vfmlal_lane_low_u32): Ditto.
12926 (vfmlsl_lane_low_u32): Ditto.
12927 (vfmlal_laneq_low_u32): Ditto.
12928 (vfmlsl_laneq_low_u32): Ditto.
12929 (vfmlalq_lane_low_u32): Ditto.
12930 (vfmlslq_lane_low_u32): Ditto.
12931 (vfmlalq_laneq_low_u32): Ditto.
12932 (vfmlslq_laneq_low_u32): Ditto.
12933 (vfmlal_lane_high_u32): Ditto.
12934 (vfmlsl_lane_high_u32): Ditto.
12935 (vfmlal_laneq_high_u32): Ditto.
12936 (vfmlsl_laneq_high_u32): Ditto.
12937 (vfmlalq_lane_high_u32): Ditto.
12938 (vfmlslq_lane_high_u32): Ditto.
12939 (vfmlalq_laneq_high_u32): Ditto.
12940 (vfmlslq_laneq_high_u32): Ditto.
12941 * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
12942 (AARCH64_FL_FOR_ARCH8_4): New.
12943 (AARCH64_ISA_F16FML): New ISA flag.
12944 (TARGET_F16FML): New feature flag for fp16fml.
12945 (doc/invoke.texi): Document new fp16fml option.
12946
12947 2018-01-10 Michael Collison <michael.collison@arm.com>
12948
12949 * config/aarch64/aarch64-builtins.c:
12950 (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
12951 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12952 (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
12953 * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
12954 (AARCH64_ISA_SHA3): New ISA flag.
12955 (TARGET_SHA3): New feature flag for sha3.
12956 * config/aarch64/iterators.md (sha512_op): New int attribute.
12957 (CRYPTO_SHA512): New int iterator.
12958 (UNSPEC_SHA512H): New unspec.
12959 (UNSPEC_SHA512H2): Ditto.
12960 (UNSPEC_SHA512SU0): Ditto.
12961 (UNSPEC_SHA512SU1): Ditto.
12962 * config/aarch64/aarch64-simd-builtins.def
12963 (aarch64_crypto_sha512hqv2di): New builtin.
12964 (aarch64_crypto_sha512h2qv2di): Ditto.
12965 (aarch64_crypto_sha512su0qv2di): Ditto.
12966 (aarch64_crypto_sha512su1qv2di): Ditto.
12967 (aarch64_eor3qv8hi): Ditto.
12968 (aarch64_rax1qv2di): Ditto.
12969 (aarch64_xarqv2di): Ditto.
12970 (aarch64_bcaxqv8hi): Ditto.
12971 * config/aarch64/aarch64-simd.md:
12972 (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
12973 (aarch64_crypto_sha512su0qv2di): Ditto.
12974 (aarch64_crypto_sha512su1qv2di): Ditto.
12975 (aarch64_eor3qv8hi): Ditto.
12976 (aarch64_rax1qv2di): Ditto.
12977 (aarch64_xarqv2di): Ditto.
12978 (aarch64_bcaxqv8hi): Ditto.
12979 * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
12980 (vsha512h2q_u64): Ditto.
12981 (vsha512su0q_u64): Ditto.
12982 (vsha512su1q_u64): Ditto.
12983 (veor3q_u16): Ditto.
12984 (vrax1q_u64): Ditto.
12985 (vxarq_u64): Ditto.
12986 (vbcaxq_u16): Ditto.
12987 * config/arm/types.md (crypto_sha512): New type attribute.
12988 (crypto_sha3): Ditto.
12989 (doc/invoke.texi): Document new sha3 option.
12990
12991 2018-01-10 Michael Collison <michael.collison@arm.com>
12992
12993 * config/aarch64/aarch64-builtins.c:
12994 (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
12995 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12996 (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
12997 (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
12998 * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
12999 (AARCH64_ISA_SM4): New ISA flag.
13000 (TARGET_SM4): New feature flag for sm4.
13001 * config/aarch64/aarch64-simd-builtins.def
13002 (aarch64_sm3ss1qv4si): Ditto.
13003 (aarch64_sm3tt1aq4si): Ditto.
13004 (aarch64_sm3tt1bq4si): Ditto.
13005 (aarch64_sm3tt2aq4si): Ditto.
13006 (aarch64_sm3tt2bq4si): Ditto.
13007 (aarch64_sm3partw1qv4si): Ditto.
13008 (aarch64_sm3partw2qv4si): Ditto.
13009 (aarch64_sm4eqv4si): Ditto.
13010 (aarch64_sm4ekeyqv4si): Ditto.
13011 * config/aarch64/aarch64-simd.md:
13012 (aarch64_sm3ss1qv4si): Ditto.
13013 (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
13014 (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
13015 (aarch64_sm4eqv4si): Ditto.
13016 (aarch64_sm4ekeyqv4si): Ditto.
13017 * config/aarch64/iterators.md (sm3tt_op): New int iterator.
13018 (sm3part_op): Ditto.
13019 (CRYPTO_SM3TT): Ditto.
13020 (CRYPTO_SM3PART): Ditto.
13021 (UNSPEC_SM3SS1): New unspec.
13022 (UNSPEC_SM3TT1A): Ditto.
13023 (UNSPEC_SM3TT1B): Ditto.
13024 (UNSPEC_SM3TT2A): Ditto.
13025 (UNSPEC_SM3TT2B): Ditto.
13026 (UNSPEC_SM3PARTW1): Ditto.
13027 (UNSPEC_SM3PARTW2): Ditto.
13028 (UNSPEC_SM4E): Ditto.
13029 (UNSPEC_SM4EKEY): Ditto.
13030 * config/aarch64/constraints.md (Ui2): New constraint.
13031 * config/aarch64/predicates.md (aarch64_imm2): New predicate.
13032 * config/arm/types.md (crypto_sm3): New type attribute.
13033 (crypto_sm4): Ditto.
13034 * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
13035 (vsm3tt1aq_u32): Ditto.
13036 (vsm3tt1bq_u32): Ditto.
13037 (vsm3tt2aq_u32): Ditto.
13038 (vsm3tt2bq_u32): Ditto.
13039 (vsm3partw1q_u32): Ditto.
13040 (vsm3partw2q_u32): Ditto.
13041 (vsm4eq_u32): Ditto.
13042 (vsm4ekeyq_u32): Ditto.
13043 (doc/invoke.texi): Document new sm4 option.
13044
13045 2018-01-10 Michael Collison <michael.collison@arm.com>
13046
13047 * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
13048 * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
13049 (AARCH64_FL_FOR_ARCH8_4): New.
13050 (AARCH64_FL_V8_4): New flag.
13051 (doc/invoke.texi): Document new armv8.4-a option.
13052
13053 2018-01-10 Michael Collison <michael.collison@arm.com>
13054
13055 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
13056 (__ARM_FEATURE_AES): Define if TARGET_AES is true.
13057 (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
13058 * config/aarch64/aarch64-option-extension.def: Add
13059 AARCH64_OPT_EXTENSION of 'sha2'.
13060 (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
13061 (crypto): Disable sha2 and aes if crypto disabled.
13062 (crypto): Enable aes and sha2 if enabled.
13063 (simd): Disable sha2 and aes if simd disabled.
13064 * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
13065 New flags.
13066 (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
13067 (TARGET_SHA2): New feature flag for sha2.
13068 (TARGET_AES): New feature flag for aes.
13069 * config/aarch64/aarch64-simd.md:
13070 (aarch64_crypto_aes<aes_op>v16qi): Make pattern
13071 conditional on TARGET_AES.
13072 (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
13073 (aarch64_crypto_sha1hsi): Make pattern conditional
13074 on TARGET_SHA2.
13075 (aarch64_crypto_sha1hv4si): Ditto.
13076 (aarch64_be_crypto_sha1hv4si): Ditto.
13077 (aarch64_crypto_sha1su1v4si): Ditto.
13078 (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
13079 (aarch64_crypto_sha1su0v4si): Ditto.
13080 (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
13081 (aarch64_crypto_sha256su0v4si): Ditto.
13082 (aarch64_crypto_sha256su1v4si): Ditto.
13083 (doc/invoke.texi): Document new aes and sha2 options.
13084
13085 2018-01-10 Martin Sebor <msebor@redhat.com>
13086
13087 PR tree-optimization/83781
13088 * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
13089 as string arrays.
13090
13091 2018-01-11 Martin Sebor <msebor@gmail.com>
13092 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
13093
13094 PR tree-optimization/83501
13095 PR tree-optimization/81703
13096
13097 * tree-ssa-strlen.c (get_string_cst): Rename...
13098 (get_string_len): ...to this. Handle global constants.
13099 (handle_char_store): Adjust.
13100
13101 2018-01-10 Kito Cheng <kito.cheng@gmail.com>
13102 Jim Wilson <jimw@sifive.com>
13103
13104 * config/riscv/riscv-protos.h (riscv_output_return): New.
13105 * config/riscv/riscv.c (struct machine_function): New naked_p field.
13106 (riscv_attribute_table, riscv_output_return),
13107 (riscv_handle_fndecl_attribute, riscv_naked_function_p),
13108 (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
13109 (riscv_compute_frame_info): Only compute frame->mask if not a naked
13110 function.
13111 (riscv_expand_prologue): Add early return for naked function.
13112 (riscv_expand_epilogue): Likewise.
13113 (riscv_function_ok_for_sibcall): Return false for naked function.
13114 (riscv_set_current_function): New.
13115 (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
13116 (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
13117 * config/riscv/riscv.md (simple_return): Call riscv_output_return.
13118 * doc/extend.texi (RISC-V Function Attributes): New.
13119
13120 2018-01-10 Michael Meissner <meissner@linux.vnet.ibm.com>
13121
13122 * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
13123 check for 128-bit long double before checking TCmode.
13124 * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
13125 128-bit long doubles before checking TFmode or TCmode.
13126 (FLOAT128_IBM_P): Likewise.
13127
13128 2018-01-10 Martin Sebor <msebor@redhat.com>
13129
13130 PR tree-optimization/83671
13131 * builtins.c (c_strlen): Unconditionally return zero for the empty
13132 string.
13133 Use -Warray-bounds for warnings.
13134 * gimple-fold.c (get_range_strlen): Handle non-constant lengths
13135 for non-constant array indices with COMPONENT_REF, arrays of
13136 arrays, and pointers to arrays.
13137 (gimple_fold_builtin_strlen): Determine and set length range for
13138 non-constant character arrays.
13139
13140 2018-01-10 Aldy Hernandez <aldyh@redhat.com>
13141
13142 PR middle-end/81897
13143 * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
13144 empty blocks.
13145
13146 2018-01-10 Eric Botcazou <ebotcazou@adacore.com>
13147
13148 * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
13149
13150 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
13151
13152 PR target/83399
13153 * config/rs6000/rs6000.c (print_operand) <'y'>: Use
13154 VECTOR_MEM_ALTIVEC_OR_VSX_P.
13155 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
13156 indexed_or_indirect_operand predicate.
13157 (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
13158 (*vsx_le_perm_load_v8hi): Likewise.
13159 (*vsx_le_perm_load_v16qi): Likewise.
13160 (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
13161 (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
13162 (*vsx_le_perm_store_v8hi): Likewise.
13163 (*vsx_le_perm_store_v16qi): Likewise.
13164 (eight unnamed splitters): Likewise.
13165
13166 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
13167
13168 * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
13169 * config/rs6000/emmintrin.h: Likewise.
13170 * config/rs6000/mmintrin.h: Likewise.
13171 * config/rs6000/xmmintrin.h: Likewise.
13172
13173 2018-01-10 David Malcolm <dmalcolm@redhat.com>
13174
13175 PR c++/43486
13176 * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
13177 "public_flag".
13178 * tree.c (tree_nop_conversion): Return true for location wrapper
13179 nodes.
13180 (maybe_wrap_with_location): New function.
13181 (selftest::check_strip_nops): New function.
13182 (selftest::test_location_wrappers): New function.
13183 (selftest::tree_c_tests): Call it.
13184 * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
13185 (maybe_wrap_with_location): New decl.
13186 (EXPR_LOCATION_WRAPPER_P): New macro.
13187 (location_wrapper_p): New inline function.
13188 (tree_strip_any_location_wrapper): New inline function.
13189
13190 2018-01-10 H.J. Lu <hongjiu.lu@intel.com>
13191
13192 PR target/83735
13193 * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
13194 stack_realign_offset for the largest alignment of stack slot
13195 actually used.
13196 (ix86_find_max_used_stack_alignment): New function.
13197 (ix86_finalize_stack_frame_flags): Use it. Set
13198 max_used_stack_alignment if we don't realign stack.
13199 * config/i386/i386.h (machine_function): Add
13200 max_used_stack_alignment.
13201
13202 2018-01-10 Christophe Lyon <christophe.lyon@linaro.org>
13203
13204 * config/arm/arm.opt (-mbranch-cost): New option.
13205 * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
13206 account.
13207
13208 2018-01-10 Segher Boessenkool <segher@kernel.crashing.org>
13209
13210 PR target/83629
13211 * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
13212 load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
13213
13214 2018-01-10 Richard Biener <rguenther@suse.de>
13215
13216 PR debug/83765
13217 * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
13218 early out so it also covers the case where we have a non-NULL
13219 origin.
13220
13221 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
13222
13223 PR tree-optimization/83753
13224 * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
13225 for non-strided grouped accesses if the number of elements is 1.
13226
13227 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
13228
13229 PR target/81616
13230 * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
13231 * i386.h (TARGET_USE_GATHER): Define.
13232 * x86-tune.def (X86_TUNE_USE_GATHER): New.
13233
13234 2018-01-10 Martin Liska <mliska@suse.cz>
13235
13236 PR bootstrap/82831
13237 * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
13238 * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
13239 partitioning.
13240 * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
13241 CLEANUP_NO_PARTITIONING is not set.
13242
13243 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
13244
13245 * doc/rtl.texi: Remove documentation of (const ...) wrappers
13246 for vectors, as a partial revert of r254296.
13247 * rtl.h (const_vec_p): Delete.
13248 (const_vec_duplicate_p): Don't test for vector CONSTs.
13249 (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
13250 * expmed.c (make_tree): Likewise.
13251
13252 Revert:
13253 * common.md (E, F): Use CONSTANT_P instead of checking for
13254 CONST_VECTOR.
13255 * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
13256 checking for CONST_VECTOR.
13257
13258 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
13259
13260 PR middle-end/83575
13261 * predict.c (force_edge_cold): Handle in more sane way edges
13262 with no prediction.
13263
13264 2018-01-09 Carl Love <cel@us.ibm.com>
13265
13266 * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
13267 V4SI, V4SF types.
13268 (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
13269 * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
13270 VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
13271 VMRGOW_V2DI, VMRGOW_V2DF. Remove definition for VMRGOW.
13272 * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
13273 P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW): Add definitions.
13274 * config/rs6000/rs6000-protos.h: Add extern defition for
13275 rs6000_generate_float2_double_code.
13276 * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
13277 function.
13278 * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
13279 (float2_v2df): Add define_expand.
13280
13281 2018-01-09 Uros Bizjak <ubizjak@gmail.com>
13282
13283 PR target/83628
13284 * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
13285 op_mode in the force_to_mode call.
13286
13287 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
13288
13289 * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
13290 instead of checking each element individually.
13291 (aarch64_evpc_uzp): Likewise.
13292 (aarch64_evpc_zip): Likewise.
13293 (aarch64_evpc_ext): Likewise.
13294 (aarch64_evpc_rev): Likewise.
13295 (aarch64_evpc_dup): Test the encoding for a single duplicated element,
13296 instead of checking each element individually. Return true without
13297 generating rtl if
13298 (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
13299 whether all selected elements come from the same input, instead of
13300 checking each element individually. Remove calls to gen_rtx_REG,
13301 start_sequence and end_sequence and instead assert that no rtl is
13302 generated.
13303
13304 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
13305
13306 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
13307 order of HIGH and CONST checks.
13308
13309 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
13310
13311 * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
13312 if the destination isn't an SSA_NAME.
13313
13314 2018-01-09 Richard Biener <rguenther@suse.de>
13315
13316 PR tree-optimization/83668
13317 * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
13318 move prologue...
13319 (canonicalize_loop_form): ... here, renamed from ...
13320 (canonicalize_loop_closed_ssa_form): ... this and amended to
13321 swap successor edges for loop exit blocks to make us use
13322 the RPO order we need for initial schedule generation.
13323
13324 2018-01-09 Joseph Myers <joseph@codesourcery.com>
13325
13326 PR tree-optimization/64811
13327 * match.pd: When optimizing comparisons with Inf, avoid
13328 introducing or losing exceptions from comparisons with NaN.
13329
13330 2018-01-09 Martin Liska <mliska@suse.cz>
13331
13332 PR sanitizer/82517
13333 * asan.c (shadow_mem_size): Add gcc_assert.
13334
13335 2018-01-09 Georg-Johann Lay <avr@gjlay.de>
13336
13337 Don't save registers in main().
13338
13339 PR target/83738
13340 * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
13341 * config/avr/avr.opt (-mmain-is-OS_task): New target option.
13342 * config/avr/avr.c (avr_set_current_function): Don't error if
13343 naked, OS_task or OS_main are specified at the same time.
13344 (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
13345 OS_main.
13346 (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
13347 attribute.
13348 * common/config/avr/avr-common.c (avr_option_optimization_table):
13349 Switch on -mmain-is-OS_task for optimizing compilations.
13350
13351 2018-01-09 Richard Biener <rguenther@suse.de>
13352
13353 PR tree-optimization/83572
13354 * graphite.c: Include cfganal.h.
13355 (graphite_transform_loops): Connect infinite loops to exit
13356 and remove fake edges at the end.
13357
13358 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
13359
13360 * ipa-inline.c (edge_badness): Revert accidental checkin.
13361
13362 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
13363
13364 PR ipa/80763
13365 * ipa-comdats.c (set_comdat_group): Only set comdat group of real
13366 symbols; not inline clones.
13367
13368 2018-01-09 Jakub Jelinek <jakub@redhat.com>
13369
13370 PR target/83507
13371 * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
13372 hard registers. Formatting fixes.
13373
13374 PR preprocessor/83722
13375 * gcc.c (try_generate_repro): Pass
13376 &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
13377 &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
13378 do_report_bug.
13379
13380 2018-01-08 Monk Chiang <sh.chiang04@gmail.com>
13381 Kito Cheng <kito.cheng@gmail.com>
13382
13383 * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
13384 (riscv_leaf_function_p): Delete.
13385 (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
13386
13387 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
13388
13389 * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
13390 function.
13391 (do_ifelse): New function.
13392 (do_isel): New function.
13393 (do_sub3): New function.
13394 (do_add3): New function.
13395 (do_load_mask_compare): New function.
13396 (do_overlap_load_compare): New function.
13397 (expand_compare_loop): New function.
13398 (expand_block_compare): Call expand_compare_loop() when appropriate.
13399 * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
13400 option description.
13401 (-mblock-compare-inline-loop-limit): New option.
13402
13403 2018-01-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
13404
13405 PR target/83677
13406 * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
13407 Reverse order of second and third operands in first alternative.
13408 * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
13409 of first and second elements in UNSPEC_VPERMR vector.
13410 (altivec_expand_vec_perm_le): Likewise.
13411
13412 2018-01-08 Jeff Law <law@redhat.com>
13413
13414 PR rtl-optimizatin/81308
13415 * tree-switch-conversion.c (cfg_altered): New file scoped static.
13416 (process_switch): If group_case_labels makes a change, then set
13417 cfg_altered.
13418 (pass_convert_switch::execute): If a switch is converted, then
13419 set cfg_altered. Return TODO_cfg_cleanup if cfg_altered is true.
13420
13421 PR rtl-optimization/81308
13422 * recog.c (split_all_insns): Conditionally cleanup the CFG after
13423 splitting insns.
13424
13425 2018-01-08 Vidya Praveen <vidyapraveen@arm.com>
13426
13427 PR target/83663 - Revert r255946
13428 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
13429 generation for cases where splatting a value is not useful.
13430 * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
13431 across a vec_duplicate and a paradoxical subreg forming a vector
13432 mode to a vec_concat.
13433
13434 2018-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13435
13436 * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
13437 -march=armv8.3-a variants.
13438 * config/arm/t-multilib: Likewise.
13439 * config/arm/t-arm-elf: Likewise. Handle dotprod extension.
13440
13441 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
13442
13443 * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
13444 to generate rtl.
13445 (cceq_ior_compare_complement): Give it a name so I can use it, and
13446 change boolean_or_operator predicate to boolean_operator so it can
13447 be used to generate a crand.
13448 (eqne): New code iterator.
13449 (bd/bd_neg): New code_attrs.
13450 (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
13451 a single define_insn.
13452 (<bd>tf_<mode>): A new insn pattern for the conditional form branch
13453 decrement (bdnzt/bdnzf/bdzt/bdzf).
13454 * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
13455 with the new names of the branch decrement patterns, and added the
13456 names of the branch decrement conditional patterns.
13457
13458 2018-01-08 Richard Biener <rguenther@suse.de>
13459
13460 PR tree-optimization/83563
13461 * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
13462 cache.
13463
13464 2018-01-08 Richard Biener <rguenther@suse.de>
13465
13466 PR middle-end/83713
13467 * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
13468
13469 2018-01-08 Richard Biener <rguenther@suse.de>
13470
13471 PR tree-optimization/83685
13472 * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
13473 references to abnormals.
13474
13475 2018-01-08 Richard Biener <rguenther@suse.de>
13476
13477 PR lto/83719
13478 * dwarf2out.c (output_indirect_strings): Handle empty
13479 skeleton_debug_str_hash.
13480 (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
13481
13482 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
13483
13484 * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
13485 (emit_store_direct): Likewise.
13486 (arc_trampoline_adjust_address): Likewise.
13487 (arc_asm_trampoline_template): New function.
13488 (arc_initialize_trampoline): Use asm_trampoline_template.
13489 (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
13490 * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
13491 * config/arc/arc.md (flush_icache): Delete pattern.
13492
13493 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
13494
13495 * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
13496 * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
13497 munaligned-access.
13498
13499 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
13500
13501 PR target/83681
13502 * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
13503 by not USED_FOR_TARGET.
13504 (make_pass_resolve_sw_modes): Likewise.
13505
13506 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
13507
13508 * config/nios2/nios2.h (nios2_section_threshold): Guard by not
13509 USED_FOR_TARGET.
13510
13511 2018-01-08 Richard Biener <rguenther@suse.de>
13512
13513 PR middle-end/83580
13514 * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
13515
13516 2018-01-08 Richard Biener <rguenther@suse.de>
13517
13518 PR middle-end/83517
13519 * match.pd ((t * 2) / 2) -> t): Add missing :c.
13520
13521 2018-01-06 Aldy Hernandez <aldyh@redhat.com>
13522
13523 PR middle-end/81897
13524 * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
13525 basic blocks with a small number of successors.
13526 (convert_control_dep_chain_into_preds): Improve handling of
13527 forwarder blocks.
13528 (dump_predicates): Split apart into...
13529 (dump_pred_chain): ...here...
13530 (dump_pred_info): ...and here.
13531 (can_one_predicate_be_invalidated_p): Add debugging printfs.
13532 (can_chain_union_be_invalidated_p): Improve check for invalidation
13533 of paths.
13534 (uninit_uses_cannot_happen): Avoid unnecessary if
13535 convert_control_dep_chain_into_preds yielded nothing.
13536
13537 2018-01-06 Martin Sebor <msebor@redhat.com>
13538
13539 PR tree-optimization/83640
13540 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
13541 subtracting negative offset from size.
13542 (builtin_access::overlap): Adjust offset bounds of the access to fall
13543 within the size of the object if possible.
13544
13545 2018-01-06 Richard Sandiford <richard.sandiford@linaro.org>
13546
13547 PR rtl-optimization/83699
13548 * expmed.c (extract_bit_field_1): Restrict the vector usage of
13549 extract_bit_field_as_subreg to cases in which the extracted
13550 value is also a vector.
13551
13552 * lra-constraints.c (process_alt_operands): Test for the equivalence
13553 substitutions when detecting a possible reload cycle.
13554
13555 2018-01-06 Jakub Jelinek <jakub@redhat.com>
13556
13557 PR debug/83480
13558 * toplev.c (process_options): Don't enable debug_nonbind_markers_p
13559 by default if flag_selective_schedling{,2}. Formatting fixes.
13560
13561 PR rtl-optimization/83682
13562 * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
13563 if it has non-VECTOR_MODE element mode.
13564 (vec_duplicate_p): Likewise.
13565
13566 PR middle-end/83694
13567 * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
13568 and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
13569
13570 2018-01-05 Jakub Jelinek <jakub@redhat.com>
13571
13572 PR target/83604
13573 * config/i386/i386-builtin.def
13574 (__builtin_ia32_vgf2p8affineinvqb_v64qi,
13575 __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
13576 Require also OPTION_MASK_ISA_AVX512F in addition to
13577 OPTION_MASK_ISA_GFNI.
13578 (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
13579 __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
13580 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
13581 to OPTION_MASK_ISA_GFNI.
13582 (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
13583 OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
13584 OPTION_MASK_ISA_AVX512BW.
13585 (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
13586 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
13587 addition to OPTION_MASK_ISA_GFNI.
13588 (__builtin_ia32_vgf2p8affineinvqb_v16qi,
13589 __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
13590 Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
13591 to OPTION_MASK_ISA_GFNI.
13592 * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
13593 a requirement for all ISAs rather than any of them with a few
13594 exceptions.
13595 (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
13596 processing.
13597 (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
13598 bitmasks to be enabled with 3 exceptions, instead of requiring any
13599 enabled ISA with lots of exceptions.
13600 * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
13601 vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
13602 Change avx512bw in isa attribute to avx512f.
13603 * config/i386/sgxintrin.h: Add license boilerplate.
13604 * config/i386/vaesintrin.h: Likewise. Fix macro spelling __AVX512F
13605 to __AVX512F__ and __AVX512VL to __AVX512VL__.
13606 (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
13607 _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
13608 defined.
13609 * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
13610 _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
13611 temporarily sse2 rather than sse if not enabled already.
13612
13613 PR target/83604
13614 * config/i386/sse.md (VI248_VLBW): Rename to ...
13615 (VI248_AVX512VL): ... this. Don't guard V32HI with TARGET_AVX512BW.
13616 (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
13617 vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
13618 vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
13619 vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
13620 mode iterator instead of VI248_VLBW.
13621
13622 2018-01-05 Jan Hubicka <hubicka@ucw.cz>
13623
13624 * ipa-fnsummary.c (record_modified_bb_info): Add OP.
13625 (record_modified): Skip clobbers; add debug output.
13626 (param_change_prob): Use sreal frequencies.
13627
13628 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
13629
13630 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
13631 punt for user-aligned variables.
13632
13633 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
13634
13635 * tree-chrec.c (chrec_contains_symbols): Return true for
13636 POLY_INT_CST.
13637
13638 2018-01-05 Sudakshina Das <sudi.das@arm.com>
13639
13640 PR target/82439
13641 * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
13642 of (x|y) == x for BICS pattern.
13643
13644 2018-01-05 Jakub Jelinek <jakub@redhat.com>
13645
13646 PR tree-optimization/83605
13647 * gimple-ssa-strength-reduction.c: Include tree-eh.h.
13648 (find_candidates_dom_walker::before_dom_children): Ignore stmts that
13649 can throw.
13650
13651 2018-01-05 Sebastian Huber <sebastian.huber@embedded-brains.de>
13652
13653 * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
13654 * config/epiphany/rtems.h: New file.
13655
13656 2018-01-04 Jakub Jelinek <jakub@redhat.com>
13657 Uros Bizjak <ubizjak@gmail.com>
13658
13659 PR target/83554
13660 * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
13661 QIreg_operand instead of register_operand predicate.
13662 * config/i386/i386.c (ix86_rop_should_change_byte_p,
13663 set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
13664 comments instead of -fmitigate[-_]rop.
13665
13666 2018-01-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
13667
13668 PR bootstrap/81926
13669 * cgraphunit.c (symbol_table::compile): Switch to text_section
13670 before calling assembly_start debug hook.
13671 * run-rtl-passes.c (run_rtl_passes): Likewise.
13672 Include output.h.
13673
13674 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
13675
13676 * tree-vrp.c (extract_range_from_binary_expr_1): Check
13677 range_int_cst_p rather than !symbolic_range_p before calling
13678 extract_range_from_multiplicative_op_1.
13679
13680 2018-01-04 Jeff Law <law@redhat.com>
13681
13682 * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
13683 redundant test in assertion.
13684
13685 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
13686
13687 * doc/rtl.texi: Document machine_mode wrapper classes.
13688
13689 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
13690
13691 * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
13692 using tree_to_uhwi.
13693
13694 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
13695
13696 * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
13697 the VEC_PERM_EXPR fold to fail.
13698
13699 2018-01-04 Jakub Jelinek <jakub@redhat.com>
13700
13701 PR debug/83585
13702 * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
13703 to switched_sections.
13704
13705 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
13706
13707 PR target/83680
13708 * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
13709 test for d.testing.
13710
13711 2018-01-04 Peter Bergner <bergner@vnet.ibm.com>
13712
13713 PR target/83387
13714 * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
13715 allow arguments in FP registers if TARGET_HARD_FLOAT is false.
13716
13717 2018-01-04 Jakub Jelinek <jakub@redhat.com>
13718
13719 PR debug/83666
13720 * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
13721 is BLKmode and bitpos not zero or mode change is needed.
13722
13723 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
13724
13725 PR target/83675
13726 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
13727 TARGET_VIS2.
13728
13729 2018-01-04 Uros Bizjak <ubizjak@gmail.com>
13730
13731 PR target/83628
13732 * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
13733 instead of MULT rtx. Update all corresponding splitters.
13734 (*saddl_se): Ditto.
13735 (*ssub<modesuffix>): Ditto.
13736 (*ssubl_se): Ditto.
13737 (*cmp_sadd_di): Update split patterns.
13738 (*cmp_sadd_si): Ditto.
13739 (*cmp_sadd_sidi): Ditto.
13740 (*cmp_ssub_di): Ditto.
13741 (*cmp_ssub_si): Ditto.
13742 (*cmp_ssub_sidi): Ditto.
13743 * config/alpha/predicates.md (const23_operand): New predicate.
13744 * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
13745 Look for ASHIFT, not MULT inner operand.
13746 (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
13747
13748 2018-01-04 Martin Liska <mliska@suse.cz>
13749
13750 PR gcov-profile/83669
13751 * gcov.c (output_intermediate_file): Add version to intermediate
13752 gcov file.
13753 * doc/gcov.texi: Document new field 'version' in intermediate
13754 file format. Fix location of '-k' option of gcov command.
13755
13756 2018-01-04 Martin Liska <mliska@suse.cz>
13757
13758 PR ipa/82352
13759 * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
13760
13761 2018-01-04 Jakub Jelinek <jakub@redhat.com>
13762
13763 * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
13764
13765 2018-01-03 Martin Sebor <msebor@redhat.com>
13766
13767 PR tree-optimization/83655
13768 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
13769 checking calls with invalid arguments.
13770
13771 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13772
13773 * tree-vect-stmts.c (vect_get_store_rhs): New function.
13774 (vectorizable_mask_load_store): Delete.
13775 (vectorizable_call): Return false for masked loads and stores.
13776 (vectorizable_store): Handle IFN_MASK_STORE. Use vect_get_store_rhs
13777 instead of gimple_assign_rhs1.
13778 (vectorizable_load): Handle IFN_MASK_LOAD.
13779 (vect_transform_stmt): Don't set is_store for call_vec_info_type.
13780
13781 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13782
13783 * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
13784 split out from..,
13785 (vectorizable_mask_load_store): ...here.
13786 (vectorizable_load): ...and here.
13787
13788 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13789
13790 * tree-vect-stmts.c (vect_build_all_ones_mask)
13791 (vect_build_zero_merge_argument): New functions, split out from...
13792 (vectorizable_load): ...here.
13793
13794 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13795
13796 * tree-vect-stmts.c (vect_check_store_rhs): New function,
13797 split out from...
13798 (vectorizable_mask_load_store): ...here.
13799 (vectorizable_store): ...and here.
13800
13801 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13802
13803 * tree-vect-stmts.c (vect_check_load_store_mask): New function,
13804 split out from...
13805 (vectorizable_mask_load_store): ...here.
13806
13807 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13808
13809 * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
13810 (vect_model_store_cost): Take a vec_load_store_type instead of a
13811 vect_def_type.
13812 * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
13813 (vect_model_store_cost): Take a vec_load_store_type instead of a
13814 vect_def_type.
13815 (vectorizable_mask_load_store): Update accordingly.
13816 (vectorizable_store): Likewise.
13817 * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
13818
13819 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13820
13821 * tree-vect-loop.c (vect_transform_loop): Stub out scalar
13822 IFN_MASK_LOAD calls here rather than...
13823 * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
13824
13825 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13826 Alan Hayward <alan.hayward@arm.com>
13827 David Sherwood <david.sherwood@arm.com>
13828
13829 * expmed.c (extract_bit_field_1): For vector extracts,
13830 fall back to extract_bit_field_as_subreg if vec_extract
13831 isn't available.
13832
13833 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13834 Alan Hayward <alan.hayward@arm.com>
13835 David Sherwood <david.sherwood@arm.com>
13836
13837 * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
13838 they are variable or constant sized.
13839 (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
13840 slots for constant-sized data.
13841
13842 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13843 Alan Hayward <alan.hayward@arm.com>
13844 David Sherwood <david.sherwood@arm.com>
13845
13846 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
13847 handling COND_EXPRs with boolean comparisons, try to find a better
13848 basis for the mask type than the boolean itself.
13849
13850 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13851
13852 * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
13853 is calculated and how it can be overridden.
13854 * genmodes.c (max_bitsize_mode_any_mode): New variable.
13855 (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
13856 if defined.
13857 (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
13858 if nonzero.
13859
13860 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13861 Alan Hayward <alan.hayward@arm.com>
13862 David Sherwood <david.sherwood@arm.com>
13863
13864 * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
13865 Remove the mode argument.
13866 (aarch64_simd_valid_immediate): Remove the mode and inverse
13867 arguments.
13868 * config/aarch64/iterators.md (bitsize): New iterator.
13869 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
13870 (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
13871 * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
13872 aarch64_simd_valid_immediate.
13873 * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
13874 (aarch64_reg_or_bic_imm): Likewise.
13875 * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
13876 with an insn_type enum and msl with a modifier_type enum.
13877 Replace element_width with a scalar_mode. Change the shift
13878 to unsigned int. Add constructors for scalar_float_mode and
13879 scalar_int_mode elements.
13880 (aarch64_vect_float_const_representable_p): Delete.
13881 (aarch64_can_const_movi_rtx_p)
13882 (aarch64_simd_scalar_immediate_valid_for_move)
13883 (aarch64_simd_make_constant): Update call to
13884 aarch64_simd_valid_immediate.
13885 (aarch64_advsimd_valid_immediate_hs): New function.
13886 (aarch64_advsimd_valid_immediate): Likewise.
13887 (aarch64_simd_valid_immediate): Remove mode and inverse
13888 arguments. Rewrite to use the above. Use const_vec_duplicate_p
13889 to detect duplicated constants and use aarch64_float_const_zero_rtx_p
13890 and aarch64_float_const_representable_p on the result.
13891 (aarch64_output_simd_mov_immediate): Remove mode argument.
13892 Update call to aarch64_simd_valid_immediate and use of
13893 simd_immediate_info.
13894 (aarch64_output_scalar_simd_mov_immediate): Update call
13895 accordingly.
13896
13897 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13898 Alan Hayward <alan.hayward@arm.com>
13899 David Sherwood <david.sherwood@arm.com>
13900
13901 * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
13902 (mode_nunits): Likewise CONST_MODE_NUNITS.
13903 * machmode.def (ADJUST_NUNITS): Document.
13904 * genmodes.c (mode_data::need_nunits_adj): New field.
13905 (blank_mode): Update accordingly.
13906 (adj_nunits): New variable.
13907 (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
13908 parameter.
13909 (emit_mode_size_inline): Set need_bytesize_adj for all modes
13910 listed in adj_nunits.
13911 (emit_mode_nunits_inline): Set need_nunits_adj for all modes
13912 listed in adj_nunits. Don't emit case statements for such modes.
13913 (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
13914 and CONST_MODE_PRECISION. Make CONST_MODE_SIZE expand to
13915 nothing if adj_nunits is nonnull.
13916 (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
13917 (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
13918 (emit_mode_fbit): Update use of print_maybe_const_decl.
13919 (emit_move_size): Likewise. Treat the array as non-const
13920 if adj_nunits.
13921 (emit_mode_adjustments): Handle adj_nunits.
13922
13923 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13924
13925 * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
13926 * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
13927 (VECTOR_MODES): Use it.
13928 (make_vector_modes): Take the prefix as an argument.
13929
13930 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13931 Alan Hayward <alan.hayward@arm.com>
13932 David Sherwood <david.sherwood@arm.com>
13933
13934 * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
13935 * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
13936 for MODE_VECTOR_BOOL.
13937 * machmode.def (VECTOR_BOOL_MODE): Document.
13938 * genmodes.c (VECTOR_BOOL_MODE): New macro.
13939 (make_vector_bool_mode): New function.
13940 (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
13941 MODE_VECTOR_BOOL.
13942 * lto-streamer-in.c (lto_input_mode_table): Likewise.
13943 * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
13944 Likewise.
13945 * stor-layout.c (int_mode_for_mode): Likewise.
13946 * tree.c (build_vector_type_for_mode): Likewise.
13947 * varasm.c (output_constant_pool_2): Likewise.
13948 * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
13949 CONSTM1_RTX (BImode) are the same thing. Initialize const_tiny_rtx
13950 for MODE_VECTOR_BOOL.
13951 * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
13952 of mode class checks.
13953 * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
13954 instead of a list of mode class checks.
13955 (expand_vector_scalar_condition): Likewise.
13956 (type_for_widest_vector_mode): Handle BImode as an inner mode.
13957
13958 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13959 Alan Hayward <alan.hayward@arm.com>
13960 David Sherwood <david.sherwood@arm.com>
13961
13962 * machmode.h (mode_size): Change from unsigned short to
13963 poly_uint16_pod.
13964 (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
13965 (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
13966 or if measurement_type is not polynomial.
13967 (fixed_size_mode::includes_p): Check for constant-sized modes.
13968 * genmodes.c (emit_mode_size_inline): Make mode_size_inline
13969 return a poly_uint16 rather than an unsigned short.
13970 (emit_mode_size): Change the type of mode_size from unsigned short
13971 to poly_uint16_pod. Use ZERO_COEFFS for the initializer.
13972 (emit_mode_adjustments): Cope with polynomial vector sizes.
13973 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
13974 for GET_MODE_SIZE.
13975 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
13976 for GET_MODE_SIZE.
13977 * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
13978 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
13979 * caller-save.c (setup_save_areas): Likewise.
13980 (replace_reg_with_saved_mem): Likewise.
13981 * calls.c (emit_library_call_value_1): Likewise.
13982 * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
13983 * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
13984 (gen_lowpart_for_combine): Likewise.
13985 * convert.c (convert_to_integer_1): Likewise.
13986 * cse.c (equiv_constant, cse_insn): Likewise.
13987 * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
13988 (cselib_subst_to_values): Likewise.
13989 * dce.c (word_dce_process_block): Likewise.
13990 * df-problems.c (df_word_lr_mark_ref): Likewise.
13991 * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
13992 * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
13993 (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
13994 (rtl_for_decl_location): Likewise.
13995 * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
13996 * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
13997 * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
13998 (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
13999 (expand_expr_real_1): Likewise.
14000 * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
14001 (pad_below): Likewise.
14002 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
14003 * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
14004 * ira.c (get_subreg_tracking_sizes): Likewise.
14005 * ira-build.c (ira_create_allocno_objects): Likewise.
14006 * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
14007 (ira_sort_regnos_for_alter_reg): Likewise.
14008 * ira-costs.c (record_operand_costs): Likewise.
14009 * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
14010 (resolve_simple_move): Likewise.
14011 * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
14012 (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
14013 (lra_constraints): Likewise.
14014 (CONST_POOL_OK_P): Reject variable-sized modes.
14015 * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
14016 (add_pseudo_to_slot, lra_spill): Likewise.
14017 * omp-low.c (omp_clause_aligned_alignment): Likewise.
14018 * optabs-query.c (get_best_extraction_insn): Likewise.
14019 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
14020 * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
14021 (expand_mult_highpart, valid_multiword_target_p): Likewise.
14022 * recog.c (offsettable_address_addr_space_p): Likewise.
14023 * regcprop.c (maybe_mode_change): Likewise.
14024 * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
14025 * regrename.c (build_def_use): Likewise.
14026 * regstat.c (dump_reg_info): Likewise.
14027 * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
14028 (find_reloads, find_reloads_subreg_address): Likewise.
14029 * reload1.c (eliminate_regs_1): Likewise.
14030 * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
14031 * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
14032 (simplify_binary_operation_1, simplify_subreg): Likewise.
14033 * targhooks.c (default_function_arg_padding): Likewise.
14034 (default_hard_regno_nregs, default_class_max_nregs): Likewise.
14035 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
14036 (verify_gimple_assign_ternary): Likewise.
14037 * tree-inline.c (estimate_move_cost): Likewise.
14038 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
14039 * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
14040 (get_address_cost_ainc): Likewise.
14041 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
14042 (vect_supportable_dr_alignment): Likewise.
14043 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
14044 (vectorizable_reduction): Likewise.
14045 * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
14046 (vectorizable_operation, vectorizable_load): Likewise.
14047 * tree.c (build_same_sized_truth_vector_type): Likewise.
14048 * valtrack.c (cleanup_auto_inc_dec): Likewise.
14049 * var-tracking.c (emit_note_insn_var_location): Likewise.
14050 * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
14051 (ADDR_VEC_ALIGN): Likewise.
14052
14053 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14054 Alan Hayward <alan.hayward@arm.com>
14055 David Sherwood <david.sherwood@arm.com>
14056
14057 * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
14058 unsigned short.
14059 (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
14060 or if measurement_type is polynomial.
14061 * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
14062 * combine.c (make_extraction): Likewise.
14063 * dse.c (find_shift_sequence): Likewise.
14064 * dwarf2out.c (mem_loc_descriptor): Likewise.
14065 * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
14066 (extract_bit_field, extract_low_bits): Likewise.
14067 * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
14068 (optimize_bitfield_assignment_op, expand_assignment): Likewise.
14069 (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
14070 * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
14071 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
14072 * reload.c (find_reloads): Likewise.
14073 * reload1.c (alter_reg): Likewise.
14074 * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
14075 * targhooks.c (default_secondary_memory_needed_mode): Likewise.
14076 * tree-if-conv.c (predicate_mem_writes): Likewise.
14077 * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
14078 * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
14079 * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
14080 * valtrack.c (dead_debug_insert_temp): Likewise.
14081 * varasm.c (mergeable_constant_section): Likewise.
14082 * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
14083
14084 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14085 Alan Hayward <alan.hayward@arm.com>
14086 David Sherwood <david.sherwood@arm.com>
14087
14088 * expr.c (expand_assignment): Cope with polynomial mode sizes
14089 when assigning to a CONCAT.
14090
14091 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14092 Alan Hayward <alan.hayward@arm.com>
14093 David Sherwood <david.sherwood@arm.com>
14094
14095 * machmode.h (mode_precision): Change from unsigned short to
14096 poly_uint16_pod.
14097 (mode_to_precision): Return a poly_uint16 rather than an unsigned
14098 short.
14099 (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
14100 or if measurement_type is not polynomial.
14101 (HWI_COMPUTABLE_MODE_P): Turn into a function. Optimize the case
14102 in which the mode is already known to be a scalar_int_mode.
14103 * genmodes.c (emit_mode_precision): Change the type of mode_precision
14104 from unsigned short to poly_uint16_pod. Use ZERO_COEFFS for the
14105 initializer.
14106 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
14107 for GET_MODE_PRECISION.
14108 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
14109 for GET_MODE_PRECISION.
14110 * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
14111 as polynomial.
14112 (try_combine, find_split_point, combine_simplify_rtx): Likewise.
14113 (expand_field_assignment, make_extraction): Likewise.
14114 (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
14115 (get_last_value): Likewise.
14116 * convert.c (convert_to_integer_1): Likewise.
14117 * cse.c (cse_insn): Likewise.
14118 * expr.c (expand_expr_real_1): Likewise.
14119 * lra-constraints.c (simplify_operand_subreg): Likewise.
14120 * optabs-query.c (can_atomic_load_p): Likewise.
14121 * optabs.c (expand_atomic_load): Likewise.
14122 (expand_atomic_store): Likewise.
14123 * ree.c (combine_reaching_defs): Likewise.
14124 * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
14125 * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
14126 * tree.h (type_has_mode_precision_p): Likewise.
14127 * ubsan.c (instrument_si_overflow): Likewise.
14128
14129 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14130 Alan Hayward <alan.hayward@arm.com>
14131 David Sherwood <david.sherwood@arm.com>
14132
14133 * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
14134 polynomial numbers of units.
14135 (SET_TYPE_VECTOR_SUBPARTS): Likewise.
14136 (valid_vector_subparts_p): New function.
14137 (build_vector_type): Remove temporary shim and take the number
14138 of units as a poly_uint64 rather than an int.
14139 (build_opaque_vector_type): Take the number of units as a
14140 poly_uint64 rather than an int.
14141 * tree.c (build_vector_from_ctor): Handle polynomial
14142 TYPE_VECTOR_SUBPARTS.
14143 (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
14144 (uniform_vector_p, vector_type_mode, build_vector): Likewise.
14145 (build_vector_from_val): If the number of units is variable,
14146 use build_vec_duplicate_cst for constant operands and
14147 VEC_DUPLICATE_EXPR otherwise.
14148 (make_vector_type): Remove temporary is_constant ().
14149 (build_vector_type, build_opaque_vector_type): Take the number of
14150 units as a poly_uint64 rather than an int.
14151 (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
14152 VECTOR_CST_NELTS.
14153 * cfgexpand.c (expand_debug_expr): Likewise.
14154 * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
14155 (store_constructor, expand_expr_real_1): Likewise.
14156 (const_scalar_mask_from_tree): Likewise.
14157 * fold-const-call.c (fold_const_reduction): Likewise.
14158 * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
14159 (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
14160 (native_encode_vector, vec_cst_ctor_to_array): Likewise.
14161 (fold_relational_const): Likewise.
14162 (native_interpret_vector): Likewise. Change the size from an
14163 int to an unsigned int.
14164 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
14165 TYPE_VECTOR_SUBPARTS.
14166 (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
14167 (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
14168 duplicating a non-constant operand into a variable-length vector.
14169 * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
14170 TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
14171 * ipa-icf.c (sem_variable::equals): Likewise.
14172 * match.pd: Likewise.
14173 * omp-simd-clone.c (simd_clone_subparts): Likewise.
14174 * print-tree.c (print_node): Likewise.
14175 * stor-layout.c (layout_type): Likewise.
14176 * targhooks.c (default_builtin_vectorization_cost): Likewise.
14177 * tree-cfg.c (verify_gimple_comparison): Likewise.
14178 (verify_gimple_assign_binary): Likewise.
14179 (verify_gimple_assign_ternary): Likewise.
14180 (verify_gimple_assign_single): Likewise.
14181 * tree-pretty-print.c (dump_generic_node): Likewise.
14182 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
14183 (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
14184 * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
14185 (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
14186 (vect_shift_permute_load_chain): Likewise.
14187 * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
14188 (expand_vector_condition, optimize_vector_constructor): Likewise.
14189 (lower_vec_perm, get_compute_type): Likewise.
14190 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
14191 (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
14192 * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
14193 (vect_recog_mask_conversion_pattern): Likewise.
14194 * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
14195 (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
14196 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
14197 (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
14198 (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
14199 (vectorizable_shift, vectorizable_operation, vectorizable_store)
14200 (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
14201 (supportable_widening_operation): Likewise.
14202 (supportable_narrowing_operation): Likewise.
14203 * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
14204 Likewise.
14205 * varasm.c (output_constant): Likewise.
14206
14207 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14208 Alan Hayward <alan.hayward@arm.com>
14209 David Sherwood <david.sherwood@arm.com>
14210
14211 * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
14212 so that both the length == 3 and length != 3 cases set up their
14213 own permute vectors. Add comments explaining why we know the
14214 number of elements is constant.
14215 (vect_permute_load_chain): Likewise.
14216
14217 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14218 Alan Hayward <alan.hayward@arm.com>
14219 David Sherwood <david.sherwood@arm.com>
14220
14221 * machmode.h (mode_nunits): Change from unsigned char to
14222 poly_uint16_pod.
14223 (ONLY_FIXED_SIZE_MODES): New macro.
14224 (pod_mode::measurement_type, scalar_int_mode::measurement_type)
14225 (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
14226 (complex_mode::measurement_type, fixed_size_mode::measurement_type):
14227 New typedefs.
14228 (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
14229 (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
14230 or if measurement_type is not polynomial.
14231 * genmodes.c (ZERO_COEFFS): New macro.
14232 (emit_mode_nunits_inline): Make mode_nunits_inline return a
14233 poly_uint16.
14234 (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
14235 Use ZERO_COEFFS when emitting initializers.
14236 * data-streamer.h (bp_pack_poly_value): New function.
14237 (bp_unpack_poly_value): Likewise.
14238 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
14239 for GET_MODE_NUNITS.
14240 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
14241 for GET_MODE_NUNITS.
14242 * tree.c (make_vector_type): Remove temporary shim and make
14243 the real function take the number of units as a poly_uint64
14244 rather than an int.
14245 (build_vector_type_for_mode): Handle polynomial nunits.
14246 * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
14247 * emit-rtl.c (const_vec_series_p_1): Likewise.
14248 (gen_rtx_CONST_VECTOR): Likewise.
14249 * fold-const.c (test_vec_duplicate_folding): Likewise.
14250 * genrecog.c (validate_pattern): Likewise.
14251 * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
14252 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
14253 * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
14254 (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
14255 (expand_vec_cond_expr, expand_mult_highpart): Likewise.
14256 * rtlanal.c (subreg_get_info): Likewise.
14257 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
14258 (vect_grouped_load_supported): Likewise.
14259 * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
14260 * tree-vect-loop.c (have_whole_vector_shift): Likewise.
14261 * simplify-rtx.c (simplify_unary_operation_1): Likewise.
14262 (simplify_const_unary_operation, simplify_binary_operation_1)
14263 (simplify_const_binary_operation, simplify_ternary_operation)
14264 (test_vector_ops_duplicate, test_vector_ops): Likewise.
14265 (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
14266 instead of CONST_VECTOR_NUNITS.
14267 * varasm.c (output_constant_pool_2): Likewise.
14268 * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
14269 explicit-encoded elements in the XVEC for variable-length vectors.
14270
14271 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14272
14273 * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
14274
14275 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14276 Alan Hayward <alan.hayward@arm.com>
14277 David Sherwood <david.sherwood@arm.com>
14278
14279 * coretypes.h (fixed_size_mode): Declare.
14280 (fixed_size_mode_pod): New typedef.
14281 * builtins.h (target_builtins::x_apply_args_mode)
14282 (target_builtins::x_apply_result_mode): Change type to
14283 fixed_size_mode_pod.
14284 * builtins.c (apply_args_size, apply_result_size, result_vector)
14285 (expand_builtin_apply_args_1, expand_builtin_apply)
14286 (expand_builtin_return): Update accordingly.
14287
14288 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14289
14290 * cse.c (hash_rtx_cb): Hash only the encoded elements.
14291 * cselib.c (cselib_hash_rtx): Likewise.
14292 * expmed.c (make_tree): Build VECTOR_CSTs directly from the
14293 CONST_VECTOR encoding.
14294
14295 2018-01-03 Jakub Jelinek <jakub@redhat.com>
14296 Jeff Law <law@redhat.com>
14297
14298 PR target/83641
14299 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
14300 noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
14301 only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
14302 and add REG_CFA_ADJUST_CFA notes in that case to both insns.
14303
14304 PR target/83641
14305 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
14306 explicitly probe *sp in a noreturn function if there were any callee
14307 register saves or frame pointer is needed.
14308
14309 2018-01-03 Jakub Jelinek <jakub@redhat.com>
14310
14311 PR debug/83621
14312 * cfgexpand.c (expand_debug_expr): Return NULL if mode is
14313 BLKmode for ternary, binary or unary expressions.
14314
14315 PR debug/83645
14316 * var-tracking.c (delete_vta_debug_insn): New inline function.
14317 (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
14318 insns from get_insns () to NULL instead of each bb separately.
14319 Use delete_vta_debug_insn. No longer static.
14320 (vt_debug_insns_local, variable_tracking_main_1): Adjust
14321 delete_vta_debug_insns callers.
14322 * rtl.h (delete_vta_debug_insns): Declare.
14323 * final.c (rest_of_handle_final): Call delete_vta_debug_insns
14324 instead of variable_tracking_main.
14325
14326 2018-01-03 Martin Sebor <msebor@redhat.com>
14327
14328 PR tree-optimization/83603
14329 * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
14330 arguments past the endof the argument list in functions declared
14331 without a prototype.
14332 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
14333 Avoid checking when arguments are null.
14334
14335 2018-01-03 Martin Sebor <msebor@redhat.com>
14336
14337 PR c/83559
14338 * doc/extend.texi (attribute const): Fix a typo.
14339 * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
14340 issuing -Wsuggest-attribute for void functions.
14341
14342 2018-01-03 Martin Sebor <msebor@redhat.com>
14343
14344 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
14345 offset_int::from instead of wide_int::to_shwi.
14346 (maybe_diag_overlap): Remove assertion.
14347 Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
14348 * gimple-ssa-sprintf.c (format_directive): Same.
14349 (parse_directive): Same.
14350 (sprintf_dom_walker::compute_format_length): Same.
14351 (try_substitute_return_value): Same.
14352
14353 2018-01-03 Jeff Law <law@redhat.com>
14354
14355 PR middle-end/83654
14356 * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
14357 non-constant residual for zero at runtime and avoid probing in
14358 that case. Reorganize code for trailing problem to mirror handling
14359 of the residual.
14360
14361 2018-01-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
14362
14363 PR tree-optimization/83501
14364 * tree-ssa-strlen.c (get_string_cst): New.
14365 (handle_char_store): Call get_string_cst.
14366
14367 2018-01-03 Martin Liska <mliska@suse.cz>
14368
14369 PR tree-optimization/83593
14370 * tree-ssa-strlen.c: Include tree-cfg.h.
14371 (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
14372 (strlen_dom_walker): Add new member variable m_cleanup_cfg.
14373 (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
14374 to false.
14375 (strlen_dom_walker::before_dom_children): Call
14376 gimple_purge_dead_eh_edges. Dump tranformation with details
14377 dump flags.
14378 (strlen_dom_walker::before_dom_children): Update call by adding
14379 new argument cleanup_eh.
14380 (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
14381
14382 2018-01-03 Martin Liska <mliska@suse.cz>
14383
14384 PR ipa/83549
14385 * cif-code.def (VARIADIC_THUNK): New enum value.
14386 * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
14387 thunks.
14388
14389 2018-01-03 Jan Beulich <jbeulich@suse.com>
14390
14391 * sse.md (mov<mode>_internal): Tighten condition for when to use
14392 vmovdqu<ssescalarsize> for TI and OI modes.
14393
14394 2018-01-03 Jakub Jelinek <jakub@redhat.com>
14395
14396 Update copyright years.
14397
14398 2018-01-03 Martin Liska <mliska@suse.cz>
14399
14400 PR ipa/83594
14401 * ipa-visibility.c (function_and_variable_visibility): Skip
14402 functions with noipa attribure.
14403
14404 2018-01-03 Jakub Jelinek <jakub@redhat.com>
14405
14406 * gcc.c (process_command): Update copyright notice dates.
14407 * gcov-dump.c (print_version): Ditto.
14408 * gcov.c (print_version): Ditto.
14409 * gcov-tool.c (print_version): Ditto.
14410 * gengtype.c (create_file): Ditto.
14411 * doc/cpp.texi: Bump @copying's copyright year.
14412 * doc/cppinternals.texi: Ditto.
14413 * doc/gcc.texi: Ditto.
14414 * doc/gccint.texi: Ditto.
14415 * doc/gcov.texi: Ditto.
14416 * doc/install.texi: Ditto.
14417 * doc/invoke.texi: Ditto.
14418
14419 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14420
14421 * vector-builder.h (vector_builder::m_full_nelts): Change from
14422 unsigned int to poly_uint64.
14423 (vector_builder::full_nelts): Update prototype accordingly.
14424 (vector_builder::new_vector): Likewise.
14425 (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
14426 (vector_builder::operator ==): Likewise.
14427 (vector_builder::finalize): Likewise.
14428 * int-vector-builder.h (int_vector_builder::int_vector_builder):
14429 Take the number of elements as a poly_uint64 rather than an
14430 unsigned int.
14431 * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
14432 from unsigned int to poly_uint64.
14433 (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
14434 (vec_perm_indices::new_vector): Likewise.
14435 (vec_perm_indices::length): Likewise.
14436 (vec_perm_indices::nelts_per_input): Likewise.
14437 (vec_perm_indices::input_nelts): Likewise.
14438 * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
14439 number of elements per input as a poly_uint64 rather than an
14440 unsigned int. Use the original encoding for variable-length
14441 vectors, rather than clamping each individual element.
14442 For the second and subsequent elements in each pattern,
14443 clamp the step and base before clamping their sum.
14444 (vec_perm_indices::series_p): Handle polynomial element counts.
14445 (vec_perm_indices::all_in_range_p): Likewise.
14446 (vec_perm_indices_to_tree): Likewise.
14447 (vec_perm_indices_to_rtx): Likewise.
14448 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
14449 * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
14450 (tree_vector_builder::new_binary_operation): Handle polynomial
14451 element counts. Return false if we need to know the number
14452 of elements at compile time.
14453 * fold-const.c (fold_vec_perm): Punt if the number of elements
14454 isn't known at compile time.
14455
14456 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14457
14458 * vec-perm-indices.h (vec_perm_builder): Change element type
14459 from HOST_WIDE_INT to poly_int64.
14460 (vec_perm_indices::element_type): Update accordingly.
14461 (vec_perm_indices::clamp): Handle polynomial element_types.
14462 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
14463 (vec_perm_indices::all_in_range_p): Likewise.
14464 (tree_to_vec_perm_builder): Check for poly_int64 trees rather
14465 than shwi trees.
14466 * vector-builder.h (vector_builder::stepped_sequence_p): Handle
14467 polynomial vec_perm_indices element types.
14468 * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
14469 * fold-const.c (fold_vec_perm): Likewise.
14470 * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
14471 * tree-vect-generic.c (lower_vec_perm): Likewise.
14472 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
14473 * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
14474 element type to HOST_WIDE_INT.
14475
14476 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14477 Alan Hayward <alan.hayward@arm.com>
14478 David Sherwood <david.sherwood@arm.com>
14479
14480 * alias.c (addr_side_effect_eval): Take the size as a poly_int64
14481 rather than an int. Use plus_constant.
14482 (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
14483 Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
14484
14485 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14486 Alan Hayward <alan.hayward@arm.com>
14487 David Sherwood <david.sherwood@arm.com>
14488
14489 * calls.c (emit_call_1, expand_call): Change struct_value_size from
14490 a HOST_WIDE_INT to a poly_int64.
14491
14492 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14493 Alan Hayward <alan.hayward@arm.com>
14494 David Sherwood <david.sherwood@arm.com>
14495
14496 * calls.c (load_register_parameters): Cope with polynomial
14497 mode sizes. Require a constant size for BLKmode parameters
14498 that aren't described by a PARALLEL. If BLOCK_REG_PADDING
14499 forces a parameter to be padded at the lsb end in order to
14500 fill a complete number of words, require the parameter size
14501 to be ordered wrt UNITS_PER_WORD.
14502
14503 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14504 Alan Hayward <alan.hayward@arm.com>
14505 David Sherwood <david.sherwood@arm.com>
14506
14507 * reload1.c (spill_stack_slot_width): Change element type
14508 from unsigned int to poly_uint64_pod.
14509 (alter_reg): Treat mode sizes as polynomial.
14510
14511 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14512 Alan Hayward <alan.hayward@arm.com>
14513 David Sherwood <david.sherwood@arm.com>
14514
14515 * reload.c (complex_word_subreg_p): New function.
14516 (reload_inner_reg_of_subreg, push_reload): Use it.
14517
14518 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14519 Alan Hayward <alan.hayward@arm.com>
14520 David Sherwood <david.sherwood@arm.com>
14521
14522 * lra-constraints.c (process_alt_operands): Reject matched
14523 operands whose sizes aren't ordered.
14524 (match_reload): Refer to this check here.
14525
14526 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14527 Alan Hayward <alan.hayward@arm.com>
14528 David Sherwood <david.sherwood@arm.com>
14529
14530 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
14531 that the mode size is in the set {1, 2, 4, 8, 16}.
14532
14533 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14534 Alan Hayward <alan.hayward@arm.com>
14535 David Sherwood <david.sherwood@arm.com>
14536
14537 * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
14538 Use plus_constant instead of gen_rtx_PLUS.
14539
14540 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14541 Alan Hayward <alan.hayward@arm.com>
14542 David Sherwood <david.sherwood@arm.com>
14543
14544 * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
14545 * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
14546 * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
14547 * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
14548 * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
14549 * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
14550 * config/i386/i386-protos.h (ix86_push_rounding): Declare.
14551 * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
14552 * config/i386/i386.c (ix86_push_rounding): ...this new function.
14553 * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
14554 a poly_int64.
14555 * config/m32c/m32c.c (m32c_push_rounding): Likewise.
14556 * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
14557 * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
14558 * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
14559 * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
14560 * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
14561 * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
14562 * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
14563 * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
14564 * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
14565 function.
14566 * expr.c (emit_move_resolve_push): Treat the input and result
14567 of PUSH_ROUNDING as a poly_int64.
14568 (emit_move_complex_push, emit_single_push_insn_1): Likewise.
14569 (emit_push_insn): Likewise.
14570 * lra-eliminations.c (mark_not_eliminable): Likewise.
14571 * recog.c (push_operand): Likewise.
14572 * reload1.c (elimination_effects): Likewise.
14573 * rtlanal.c (nonzero_bits1): Likewise.
14574 * calls.c (store_one_arg): Likewise. Require the padding to be
14575 known at compile time.
14576
14577 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14578 Alan Hayward <alan.hayward@arm.com>
14579 David Sherwood <david.sherwood@arm.com>
14580
14581 * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
14582 Use plus_constant instead of gen_rtx_PLUS.
14583
14584 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14585 Alan Hayward <alan.hayward@arm.com>
14586 David Sherwood <david.sherwood@arm.com>
14587
14588 * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
14589 rather than an int.
14590
14591 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14592 Alan Hayward <alan.hayward@arm.com>
14593 David Sherwood <david.sherwood@arm.com>
14594
14595 * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
14596 instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
14597 via stack temporaries. Treat the mode size as polynomial too.
14598
14599 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14600 Alan Hayward <alan.hayward@arm.com>
14601 David Sherwood <david.sherwood@arm.com>
14602
14603 * expr.c (expand_expr_real_2): When handling conversions involving
14604 unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
14605 multiplying int_size_in_bytes by BITS_PER_UNIT. Treat GET_MODE_BISIZE
14606 as a poly_uint64 too.
14607
14608 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14609 Alan Hayward <alan.hayward@arm.com>
14610 David Sherwood <david.sherwood@arm.com>
14611
14612 * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
14613
14614 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14615 Alan Hayward <alan.hayward@arm.com>
14616 David Sherwood <david.sherwood@arm.com>
14617
14618 * combine.c (can_change_dest_mode): Handle polynomial
14619 REGMODE_NATURAL_SIZE.
14620 * expmed.c (store_bit_field_1): Likewise.
14621 * expr.c (store_constructor): Likewise.
14622 * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
14623 and polynomial REGMODE_NATURAL_SIZE.
14624 (gen_lowpart_common): Likewise.
14625 * reginfo.c (record_subregs_of_mode): Likewise.
14626 * rtlanal.c (read_modify_subreg_p): Likewise.
14627
14628 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14629 Alan Hayward <alan.hayward@arm.com>
14630 David Sherwood <david.sherwood@arm.com>
14631
14632 * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
14633 numbers of elements.
14634
14635 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14636 Alan Hayward <alan.hayward@arm.com>
14637 David Sherwood <david.sherwood@arm.com>
14638
14639 * match.pd: Cope with polynomial numbers of vector elements.
14640
14641 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14642 Alan Hayward <alan.hayward@arm.com>
14643 David Sherwood <david.sherwood@arm.com>
14644
14645 * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
14646 in a POINTER_PLUS_EXPR.
14647
14648 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14649 Alan Hayward <alan.hayward@arm.com>
14650 David Sherwood <david.sherwood@arm.com>
14651
14652 * omp-simd-clone.c (simd_clone_subparts): New function.
14653 (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
14654 (ipa_simd_modify_function_body): Likewise.
14655
14656 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14657 Alan Hayward <alan.hayward@arm.com>
14658 David Sherwood <david.sherwood@arm.com>
14659
14660 * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
14661 (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
14662 (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
14663 (expand_vector_condition, vector_element): Likewise.
14664 (subparts_gt): New function.
14665 (get_compute_type): Use subparts_gt.
14666 (count_type_subparts): Delete.
14667 (expand_vector_operations_1): Use subparts_gt instead of
14668 count_type_subparts.
14669
14670 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14671 Alan Hayward <alan.hayward@arm.com>
14672 David Sherwood <david.sherwood@arm.com>
14673
14674 * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
14675 (vect_compile_time_alias): ...this new function. Do the calculation
14676 on poly_ints rather than trees.
14677 (vect_prune_runtime_alias_test_list): Update call accordingly.
14678
14679 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14680 Alan Hayward <alan.hayward@arm.com>
14681 David Sherwood <david.sherwood@arm.com>
14682
14683 * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
14684 numbers of units.
14685 (vect_schedule_slp_instance): Likewise.
14686
14687 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14688 Alan Hayward <alan.hayward@arm.com>
14689 David Sherwood <david.sherwood@arm.com>
14690
14691 * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
14692 constant and extern definitions for variable-length vectors.
14693 (vect_get_constant_vectors): Note that the number of units
14694 is known to be constant.
14695
14696 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14697 Alan Hayward <alan.hayward@arm.com>
14698 David Sherwood <david.sherwood@arm.com>
14699
14700 * tree-vect-stmts.c (vectorizable_conversion): Treat the number
14701 of units as polynomial. Choose between WIDE and NARROW based
14702 on multiple_p.
14703
14704 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14705 Alan Hayward <alan.hayward@arm.com>
14706 David Sherwood <david.sherwood@arm.com>
14707
14708 * tree-vect-stmts.c (simd_clone_subparts): New function.
14709 (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
14710
14711 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14712 Alan Hayward <alan.hayward@arm.com>
14713 David Sherwood <david.sherwood@arm.com>
14714
14715 * tree-vect-stmts.c (vectorizable_call): Treat the number of
14716 vectors as polynomial. Use build_index_vector for
14717 IFN_GOMP_SIMD_LANE.
14718
14719 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14720 Alan Hayward <alan.hayward@arm.com>
14721 David Sherwood <david.sherwood@arm.com>
14722
14723 * tree-vect-stmts.c (get_load_store_type): Treat the number of
14724 units as polynomial. Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
14725 for variable-length vectors.
14726 (vectorizable_mask_load_store): Treat the number of units as
14727 polynomial, asserting that it is constant if the condition has
14728 already been enforced.
14729 (vectorizable_store, vectorizable_load): Likewise.
14730
14731 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14732 Alan Hayward <alan.hayward@arm.com>
14733 David Sherwood <david.sherwood@arm.com>
14734
14735 * tree-vect-loop.c (vectorizable_live_operation): Treat the number
14736 of units as polynomial. Punt if we can't tell at compile time
14737 which vector contains the final result.
14738
14739 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14740 Alan Hayward <alan.hayward@arm.com>
14741 David Sherwood <david.sherwood@arm.com>
14742
14743 * tree-vect-loop.c (vectorizable_induction): Treat the number
14744 of units as polynomial. Punt on SLP inductions. Use an integer
14745 VEC_SERIES_EXPR for variable-length integer reductions. Use a
14746 cast of such a series for variable-length floating-point
14747 reductions.
14748
14749 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14750 Alan Hayward <alan.hayward@arm.com>
14751 David Sherwood <david.sherwood@arm.com>
14752
14753 * tree.h (build_index_vector): Declare.
14754 * tree.c (build_index_vector): New function.
14755 * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
14756 of units as polynomial, forcibly converting it to a constant if
14757 vectorizable_reduction has already enforced the condition.
14758 (vect_create_epilog_for_reduction): Likewise. Use build_index_vector
14759 to create a {1,2,3,...} vector.
14760 (vectorizable_reduction): Treat the number of units as polynomial.
14761 Choose vectype_in based on the largest scalar element size rather
14762 than the smallest number of units. Enforce the restrictions
14763 relied on above.
14764
14765 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14766 Alan Hayward <alan.hayward@arm.com>
14767 David Sherwood <david.sherwood@arm.com>
14768
14769 * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
14770 number of units as polynomial.
14771
14772 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14773 Alan Hayward <alan.hayward@arm.com>
14774 David Sherwood <david.sherwood@arm.com>
14775
14776 * target.h (vector_sizes, auto_vector_sizes): New typedefs.
14777 * target.def (autovectorize_vector_sizes): Return the vector sizes
14778 by pointer, using vector_sizes rather than a bitmask.
14779 * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
14780 * targhooks.c (default_autovectorize_vector_sizes): Likewise.
14781 * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
14782 Likewise.
14783 * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
14784 * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
14785 * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
14786 * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
14787 * omp-general.c (omp_max_vf): Likewise.
14788 * omp-low.c (omp_clause_aligned_alignment): Likewise.
14789 * optabs-query.c (can_vec_mask_load_store_p): Likewise.
14790 * tree-vect-loop.c (vect_analyze_loop): Likewise.
14791 * tree-vect-slp.c (vect_slp_bb): Likewise.
14792 * doc/tm.texi: Regenerate.
14793 * tree-vectorizer.h (current_vector_size): Change from an unsigned int
14794 to a poly_uint64.
14795 * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
14796 the vector size as a poly_uint64 rather than an unsigned int.
14797 (current_vector_size): Change from an unsigned int to a poly_uint64.
14798 (get_vectype_for_scalar_type): Update accordingly.
14799 * tree.h (build_truth_vector_type): Take the size and number of
14800 units as a poly_uint64 rather than an unsigned int.
14801 (build_vector_type): Add a temporary overload that takes
14802 the number of units as a poly_uint64 rather than an unsigned int.
14803 * tree.c (make_vector_type): Likewise.
14804 (build_truth_vector_type): Take the number of units as a poly_uint64
14805 rather than an unsigned int.
14806
14807 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14808 Alan Hayward <alan.hayward@arm.com>
14809 David Sherwood <david.sherwood@arm.com>
14810
14811 * target.def (get_mask_mode): Take the number of units and length
14812 as poly_uint64s rather than unsigned ints.
14813 * targhooks.h (default_get_mask_mode): Update accordingly.
14814 * targhooks.c (default_get_mask_mode): Likewise.
14815 * config/i386/i386.c (ix86_get_mask_mode): Likewise.
14816 * doc/tm.texi: Regenerate.
14817
14818 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14819 Alan Hayward <alan.hayward@arm.com>
14820 David Sherwood <david.sherwood@arm.com>
14821
14822 * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
14823 * omp-general.c (omp_max_vf): Likewise.
14824 * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
14825 (expand_omp_simd): Handle polynomial safelen.
14826 * omp-low.c (omplow_simd_context): Add a default constructor.
14827 (omplow_simd_context::max_vf): Change from int to poly_uint64.
14828 (lower_rec_simd_input_clauses): Update accordingly.
14829 (lower_rec_input_clauses): Likewise.
14830
14831 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14832 Alan Hayward <alan.hayward@arm.com>
14833 David Sherwood <david.sherwood@arm.com>
14834
14835 * tree-vectorizer.h (vect_nunits_for_cost): New function.
14836 * tree-vect-loop.c (vect_model_reduction_cost): Use it.
14837 * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
14838 (vect_analyze_slp_cost): Likewise.
14839 * tree-vect-stmts.c (vect_model_store_cost): Likewise.
14840 (vect_model_load_cost): Likewise.
14841
14842 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14843 Alan Hayward <alan.hayward@arm.com>
14844 David Sherwood <david.sherwood@arm.com>
14845
14846 * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
14847 (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
14848 from an unsigned int * to a poly_uint64_pod *.
14849 (calculate_unrolling_factor): New function.
14850 (vect_analyze_slp_instance): Use it. Track polynomial max_nunits.
14851
14852 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14853 Alan Hayward <alan.hayward@arm.com>
14854 David Sherwood <david.sherwood@arm.com>
14855
14856 * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
14857 from an unsigned int to a poly_uint64.
14858 (_loop_vec_info::slp_unrolling_factor): Likewise.
14859 (_loop_vec_info::vectorization_factor): Change from an int
14860 to a poly_uint64.
14861 (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
14862 (vect_get_num_vectors): New function.
14863 (vect_update_max_nunits, vect_vf_for_cost): Likewise.
14864 (vect_get_num_copies): Use vect_get_num_vectors.
14865 (vect_analyze_data_ref_dependences): Change max_vf from an int *
14866 to an unsigned int *.
14867 (vect_analyze_data_refs): Change min_vf from an int * to a
14868 poly_uint64 *.
14869 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
14870 than an unsigned HOST_WIDE_INT.
14871 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
14872 (vect_analyze_data_ref_dependence): Change max_vf from an int *
14873 to an unsigned int *.
14874 (vect_analyze_data_ref_dependences): Likewise.
14875 (vect_compute_data_ref_alignment): Handle polynomial vf.
14876 (vect_enhance_data_refs_alignment): Likewise.
14877 (vect_prune_runtime_alias_test_list): Likewise.
14878 (vect_shift_permute_load_chain): Likewise.
14879 (vect_supportable_dr_alignment): Likewise.
14880 (dependence_distance_ge_vf): Take the vectorization factor as a
14881 poly_uint64 rather than an unsigned HOST_WIDE_INT.
14882 (vect_analyze_data_refs): Change min_vf from an int * to a
14883 poly_uint64 *.
14884 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
14885 vfm1 as a poly_uint64 rather than an int. Make the same change
14886 for the returned bound_scalar.
14887 (vect_gen_vector_loop_niters): Handle polynomial vf.
14888 (vect_do_peeling): Likewise. Update call to
14889 vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
14890 (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
14891 be constant.
14892 * tree-vect-loop.c (vect_determine_vectorization_factor)
14893 (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
14894 (vect_get_known_peeling_cost): Likewise.
14895 (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
14896 (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
14897 (vect_transform_loop): Likewise. Use the lowest possible VF when
14898 updating the upper bounds of the loop.
14899 (vect_min_worthwhile_factor): Make static. Return an unsigned int
14900 rather than an int.
14901 * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
14902 polynomial unroll factors.
14903 (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
14904 (vect_make_slp_decision): Likewise.
14905 (vect_supported_load_permutation_p): Likewise, and polynomial
14906 vf too.
14907 (vect_analyze_slp_cost): Handle polynomial vf.
14908 (vect_slp_analyze_node_operations): Likewise.
14909 (vect_slp_analyze_bb_1): Likewise.
14910 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
14911 than an unsigned HOST_WIDE_INT.
14912 * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
14913 (vectorizable_load): Handle polynomial vf.
14914 * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
14915 a poly_uint64.
14916 (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
14917
14918 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14919 Alan Hayward <alan.hayward@arm.com>
14920 David Sherwood <david.sherwood@arm.com>
14921
14922 * match.pd: Handle bit operations involving three constants
14923 and try to fold one pair.
14924
14925 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14926
14927 * tree-vect-loop-manip.c: Include gimple-fold.h.
14928 (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
14929 niters_maybe_zero parameters. Handle other cases besides a step of 1.
14930 (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
14931 Add a path that uses a step of VF instead of 1, but disable it
14932 for now.
14933 (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
14934 and niters_no_overflow parameters. Update calls to
14935 slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
14936 Create a new SSA name if the latter choses to use a ste other
14937 than zero, and return it via niters_vector_mult_vf_var.
14938 * tree-vect-loop.c (vect_transform_loop): Update calls to
14939 vect_do_peeling, vect_gen_vector_loop_niters and
14940 slpeel_make_loop_iterate_ntimes.
14941 * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
14942 (vect_gen_vector_loop_niters): Update declarations after above changes.
14943
14944 2018-01-02 Michael Meissner <meissner@linux.vnet.ibm.com>
14945
14946 * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
14947 128-bit round to integer instructions.
14948 (ceil<mode>2): Likewise.
14949 (btrunc<mode>2): Likewise.
14950 (round<mode>2): Likewise.
14951
14952 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
14953
14954 * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
14955 unaligned VSX load/store on P8/P9.
14956 (expand_block_clear): Allow the use of unaligned VSX
14957 load/store on P8/P9.
14958
14959 2018-01-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
14960
14961 * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
14962 New function.
14963 (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
14964 swap associated with both a load and a store.
14965
14966 2018-01-02 Andrew Waterman <andrew@sifive.com>
14967
14968 * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
14969 * config/riscv/riscv.md (clear_cache): Use it.
14970
14971 2018-01-02 Artyom Skrobov <tyomitch@gmail.com>
14972
14973 * web.c: Remove out-of-date comment.
14974
14975 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
14976
14977 * expr.c (fixup_args_size_notes): Check that any existing
14978 REG_ARGS_SIZE notes are correct, and don't try to re-add them.
14979 (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
14980 (emit_single_push_insn): ...here.
14981
14982 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
14983
14984 * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
14985 (const_vector_encoded_nelts): New function.
14986 (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
14987 (const_vector_int_elt, const_vector_elt): Declare.
14988 * emit-rtl.c (const_vector_int_elt_1): New function.
14989 (const_vector_elt): Likewise.
14990 * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
14991 of CONST_VECTOR_ELT.
14992
14993 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
14994
14995 * expr.c: Include rtx-vector-builder.h.
14996 (const_vector_mask_from_tree): Use rtx_vector_builder and operate
14997 directly on the tree encoding.
14998 (const_vector_from_tree): Likewise.
14999 * optabs.c: Include rtx-vector-builder.h.
15000 (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
15001 sequence of "u" values.
15002 * vec-perm-indices.c: Include rtx-vector-builder.h.
15003 (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
15004 directly on the vec_perm_indices encoding.
15005
15006 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15007
15008 * doc/rtl.texi (const_vector): Describe new encoding scheme.
15009 * Makefile.in (OBJS): Add rtx-vector-builder.o.
15010 * rtx-vector-builder.h: New file.
15011 * rtx-vector-builder.c: Likewise.
15012 * rtl.h (rtx_def::u2): Add a const_vector field.
15013 (CONST_VECTOR_NPATTERNS): New macro.
15014 (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
15015 (CONST_VECTOR_DUPLICATE_P): Likewise.
15016 (CONST_VECTOR_STEPPED_P): Likewise.
15017 (CONST_VECTOR_ENCODED_ELT): Likewise.
15018 (const_vec_duplicate_p): Check for a duplicated vector encoding.
15019 (unwrap_const_vec_duplicate): Likewise.
15020 (const_vec_series_p): Check for a non-duplicated vector encoding.
15021 Say that the function only returns true for integer vectors.
15022 * emit-rtl.c: Include rtx-vector-builder.h.
15023 (gen_const_vec_duplicate_1): Delete.
15024 (gen_const_vector): Call gen_const_vec_duplicate instead of
15025 gen_const_vec_duplicate_1.
15026 (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
15027 (gen_const_vec_duplicate): Use rtx_vector_builder.
15028 (gen_const_vec_series): Likewise.
15029 (gen_rtx_CONST_VECTOR): Likewise.
15030 * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
15031 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
15032 Build a new vector rather than modifying a CONST_VECTOR in-place.
15033 (handle_special_swappables): Update call accordingly.
15034 * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
15035 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
15036 Build a new vector rather than modifying a CONST_VECTOR in-place.
15037 (handle_special_swappables): Update call accordingly.
15038
15039 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15040
15041 * simplify-rtx.c (simplify_const_binary_operation): Use
15042 CONST_VECTOR_ELT instead of XVECEXP.
15043
15044 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15045
15046 * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
15047 the selector elements to be different from the data elements
15048 if the selector is a VECTOR_CST.
15049 * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
15050 ssizetype for the selector.
15051
15052 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15053
15054 * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
15055 before testing each element individually.
15056 * tree-vect-generic.c (lower_vec_perm): Likewise.
15057
15058 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15059
15060 * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
15061 * selftest-run-tests.c (selftest::run_tests): Call it.
15062 * vector-builder.h (vector_builder::operator ==): New function.
15063 (vector_builder::operator !=): Likewise.
15064 * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
15065 (vec_perm_indices::all_from_input_p): New function.
15066 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
15067 (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
15068 * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
15069 instead of reading the VECTOR_CST directly. Detect whether both
15070 vector inputs are the same before constructing the vec_perm_indices,
15071 and update the number of inputs argument accordingly. Use the
15072 utility functions added above. Only construct sel2 if we need to.
15073
15074 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15075
15076 * optabs.c (expand_vec_perm_var): Use an explicit encoding for
15077 the broadcast of the low byte.
15078 (expand_mult_highpart): Use an explicit encoding for the permutes.
15079 * optabs-query.c (can_mult_highpart_p): Likewise.
15080 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
15081 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
15082 (vectorizable_bswap): Likewise.
15083 * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
15084 explicit encoding for the power-of-2 permutes.
15085 (vect_permute_store_chain): Likewise.
15086 (vect_grouped_load_supported): Likewise.
15087 (vect_permute_load_chain): Likewise.
15088
15089 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15090
15091 * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
15092 * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
15093 * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
15094 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
15095 * tree-vect-stmts.c (vectorizable_bswap): Likewise.
15096 (vect_gen_perm_mask_any): Likewise.
15097
15098 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15099
15100 * int-vector-builder.h: New file.
15101 * vec-perm-indices.h: Include int-vector-builder.h.
15102 (vec_perm_indices): Redefine as an int_vector_builder.
15103 (auto_vec_perm_indices): Delete.
15104 (vec_perm_builder): Redefine as a stand-alone class.
15105 (vec_perm_indices::vec_perm_indices): New function.
15106 (vec_perm_indices::clamp): Likewise.
15107 * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
15108 (vec_perm_indices::new_vector): New function.
15109 (vec_perm_indices::new_expanded_vector): Update for new
15110 vec_perm_indices class.
15111 (vec_perm_indices::rotate_inputs): New function.
15112 (vec_perm_indices::all_in_range_p): Operate directly on the
15113 encoded form, without computing elided elements.
15114 (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
15115 encoding. Update for new vec_perm_indices class.
15116 * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
15117 the given vec_perm_builder.
15118 (expand_vec_perm_var): Update vec_perm_builder constructor.
15119 (expand_mult_highpart): Use vec_perm_builder instead of
15120 auto_vec_perm_indices.
15121 * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
15122 vec_perm_indices instead of auto_vec_perm_indices. Use a single
15123 or double series encoding as appropriate.
15124 * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
15125 vec_perm_indices instead of auto_vec_perm_indices.
15126 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
15127 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
15128 (vect_permute_store_chain): Likewise.
15129 (vect_grouped_load_supported): Likewise.
15130 (vect_permute_load_chain): Likewise.
15131 (vect_shift_permute_load_chain): Likewise.
15132 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
15133 (vect_transform_slp_perm_load): Likewise.
15134 (vect_schedule_slp_instance): Likewise.
15135 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
15136 (vectorizable_mask_load_store): Likewise.
15137 (vectorizable_bswap): Likewise.
15138 (vectorizable_store): Likewise.
15139 (vectorizable_load): Likewise.
15140 * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
15141 vec_perm_indices instead of auto_vec_perm_indices. Use
15142 tree_to_vec_perm_builder to read the vector from a tree.
15143 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
15144 vec_perm_builder instead of a vec_perm_indices.
15145 (have_whole_vector_shift): Use vec_perm_builder and
15146 vec_perm_indices instead of auto_vec_perm_indices. Leave the
15147 truncation to calc_vec_perm_mask_for_shift.
15148 (vect_create_epilog_for_reduction): Likewise.
15149 * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
15150 from auto_vec_perm_indices to vec_perm_indices.
15151 (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
15152 instead of changing individual elements.
15153 (aarch64_vectorize_vec_perm_const): Use new_vector to install
15154 the vector in d.perm.
15155 * config/arm/arm.c (expand_vec_perm_d::perm): Change
15156 from auto_vec_perm_indices to vec_perm_indices.
15157 (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
15158 instead of changing individual elements.
15159 (arm_vectorize_vec_perm_const): Use new_vector to install
15160 the vector in d.perm.
15161 * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
15162 Update vec_perm_builder constructor.
15163 (rs6000_expand_interleave): Likewise.
15164 * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
15165 (rs6000_expand_interleave): Likewise.
15166
15167 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15168
15169 * optabs-query.c (can_vec_perm_var_p): Check whether lowering
15170 to qimode could truncate the indices.
15171 * optabs.c (expand_vec_perm_var): Likewise.
15172
15173 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15174
15175 * Makefile.in (OBJS): Add vec-perm-indices.o.
15176 * vec-perm-indices.h: New file.
15177 * vec-perm-indices.c: Likewise.
15178 * target.h (vec_perm_indices): Replace with a forward class
15179 declaration.
15180 (auto_vec_perm_indices): Move to vec-perm-indices.h.
15181 * optabs.h: Include vec-perm-indices.h.
15182 (expand_vec_perm): Delete.
15183 (selector_fits_mode_p, expand_vec_perm_var): Declare.
15184 (expand_vec_perm_const): Declare.
15185 * target.def (vec_perm_const_ok): Replace with...
15186 (vec_perm_const): ...this new hook.
15187 * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
15188 (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
15189 * doc/tm.texi: Regenerate.
15190 * optabs.def (vec_perm_const): Delete.
15191 * doc/md.texi (vec_perm_const): Likewise.
15192 (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
15193 * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
15194 expand_vec_perm for constant permutation vectors. Assert that
15195 the mode of variable permutation vectors is the integer equivalent
15196 of the mode that is being permuted.
15197 * optabs-query.h (selector_fits_mode_p): Declare.
15198 * optabs-query.c: Include vec-perm-indices.h.
15199 (selector_fits_mode_p): New function.
15200 (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
15201 is defined, instead of checking whether the vec_perm_const_optab
15202 exists. Use targetm.vectorize.vec_perm_const instead of
15203 targetm.vectorize.vec_perm_const_ok. Check whether the indices
15204 fit in the vector mode before using a variable permute.
15205 * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
15206 vec_perm_indices instead of an rtx.
15207 (expand_vec_perm): Replace with...
15208 (expand_vec_perm_const): ...this new function. Take the selector
15209 as a vec_perm_indices rather than an rtx. Also take the mode of
15210 the selector. Update call to shift_amt_for_vec_perm_mask.
15211 Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
15212 Use vec_perm_indices::new_expanded_vector to expand the original
15213 selector into bytes. Check whether the indices fit in the vector
15214 mode before using a variable permute.
15215 (expand_vec_perm_var): Make global.
15216 (expand_mult_highpart): Use expand_vec_perm_const.
15217 * fold-const.c: Includes vec-perm-indices.h.
15218 * tree-ssa-forwprop.c: Likewise.
15219 * tree-vect-data-refs.c: Likewise.
15220 * tree-vect-generic.c: Likewise.
15221 * tree-vect-loop.c: Likewise.
15222 * tree-vect-slp.c: Likewise.
15223 * tree-vect-stmts.c: Likewise.
15224 * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
15225 Delete.
15226 * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
15227 * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
15228 (aarch64_vectorize_vec_perm_const_ok): Fuse into...
15229 (aarch64_vectorize_vec_perm_const): ...this new function.
15230 (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
15231 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
15232 * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
15233 * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
15234 * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
15235 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
15236 (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
15237 into...
15238 (arm_vectorize_vec_perm_const): ...this new function. Explicitly
15239 check for NEON modes.
15240 * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
15241 * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
15242 * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
15243 (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
15244 into...
15245 (ix86_vectorize_vec_perm_const): ...this new function. Incorporate
15246 the old VEC_PERM_CONST conditions.
15247 * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
15248 * config/ia64/vect.md (vec_perm_const<mode>): Delete.
15249 * config/ia64/ia64.c (ia64_expand_vec_perm_const)
15250 (ia64_vectorize_vec_perm_const_ok): Merge into...
15251 (ia64_vectorize_vec_perm_const): ...this new function.
15252 * config/mips/loongson.md (vec_perm_const<mode>): Delete.
15253 * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
15254 * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
15255 * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
15256 * config/mips/mips.c (mips_expand_vec_perm_const)
15257 (mips_vectorize_vec_perm_const_ok): Merge into...
15258 (mips_vectorize_vec_perm_const): ...this new function.
15259 * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
15260 * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
15261 * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
15262 * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
15263 * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
15264 (rs6000_expand_vec_perm_const): Delete.
15265 * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
15266 Delete.
15267 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
15268 (altivec_expand_vec_perm_const_le): Take each operand individually.
15269 Operate on constant selectors rather than rtxes.
15270 (altivec_expand_vec_perm_const): Likewise. Update call to
15271 altivec_expand_vec_perm_const_le.
15272 (rs6000_expand_vec_perm_const): Delete.
15273 (rs6000_vectorize_vec_perm_const_ok): Delete.
15274 (rs6000_vectorize_vec_perm_const): New function.
15275 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
15276 an element count and rtx array.
15277 (rs6000_expand_extract_even): Update call accordingly.
15278 (rs6000_expand_interleave): Likewise.
15279 * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
15280 * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
15281 * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
15282 * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
15283 (rs6000_expand_vec_perm_const): Delete.
15284 * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
15285 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
15286 (altivec_expand_vec_perm_const_le): Take each operand individually.
15287 Operate on constant selectors rather than rtxes.
15288 (altivec_expand_vec_perm_const): Likewise. Update call to
15289 altivec_expand_vec_perm_const_le.
15290 (rs6000_expand_vec_perm_const): Delete.
15291 (rs6000_vectorize_vec_perm_const_ok): Delete.
15292 (rs6000_vectorize_vec_perm_const): New function. Remove stray
15293 reference to the SPE evmerge intructions.
15294 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
15295 an element count and rtx array.
15296 (rs6000_expand_extract_even): Update call accordingly.
15297 (rs6000_expand_interleave): Likewise.
15298 * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
15299 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
15300 new function.
15301 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
15302
15303 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15304
15305 * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
15306 vector mode and that that mode matches the mode of the data
15307 being permuted.
15308 (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
15309 out into expand_vec_perm_var. Do all CONST_VECTOR handling here,
15310 directly using expand_vec_perm_1 when forcing selectors into
15311 registers.
15312 (expand_vec_perm_var): New function, split out from expand_vec_perm.
15313
15314 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15315
15316 * optabs-query.h (can_vec_perm_p): Delete.
15317 (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
15318 * optabs-query.c (can_vec_perm_p): Split into...
15319 (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
15320 (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
15321 particular selector is valid.
15322 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
15323 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
15324 (vect_grouped_load_supported): Likewise.
15325 (vect_shift_permute_load_chain): Likewise.
15326 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
15327 (vect_transform_slp_perm_load): Likewise.
15328 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
15329 (vectorizable_bswap): Likewise.
15330 (vect_gen_perm_mask_checked): Likewise.
15331 * fold-const.c (fold_ternary_loc): Likewise. Don't take
15332 implementations of variable permutation vectors into account
15333 when deciding which selector to use.
15334 * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
15335 vec_perm_const_optab is supported; instead use can_vec_perm_const_p
15336 with a false third argument.
15337 * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
15338 to test whether the constant selector is valid and can_vec_perm_var_p
15339 to test whether a variable selector is valid.
15340
15341 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15342
15343 * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
15344 * optabs-query.c (can_vec_perm_p): Likewise.
15345 * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
15346 instead of vec_perm_indices.
15347 * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
15348 (vect_gen_perm_mask_checked): Likewise,
15349 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
15350 (vect_gen_perm_mask_checked): Likewise,
15351
15352 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
15353
15354 * optabs-query.h (qimode_for_vec_perm): Declare.
15355 * optabs-query.c (can_vec_perm_p): Split out qimode search to...
15356 (qimode_for_vec_perm): ...this new function.
15357 * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
15358
15359 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
15360
15361 * rtlanal.c (canonicalize_condition): Return 0 if final rtx
15362 does not have a conditional at the top.
15363
15364 2018-01-02 Richard Biener <rguenther@suse.de>
15365
15366 * ipa-inline.c (big_speedup_p): Fix expression.
15367
15368 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
15369
15370 PR target/81616
15371 * config/i386/x86-tune-costs.h: Increase cost of integer load costs
15372 for generic 4->6.
15373
15374 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
15375
15376 PR target/81616
15377 Generic tuning.
15378 * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
15379 cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
15380 and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
15381 cond_taken_branch_cost 3->4.
15382
15383 2018-01-01 Jakub Jelinek <jakub@redhat.com>
15384
15385 PR tree-optimization/83581
15386 * tree-loop-distribution.c (pass_loop_distribution::execute): Return
15387 TODO_cleanup_cfg if any changes have been made.
15388
15389 PR middle-end/83608
15390 * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
15391 convert_modes if target mode has the right side, but different mode
15392 class.
15393
15394 PR middle-end/83609
15395 * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
15396 last argument when extracting from CONCAT. If either from_real or
15397 from_imag is NULL, use expansion through memory. If result is not
15398 a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
15399 the parts directly to inner mode, if even that fails, use expansion
15400 through memory.
15401
15402 PR middle-end/83623
15403 * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
15404 check for bswap in mode rather than HImode and use that in expand_unop
15405 too.
15406 \f
15407 Copyright (C) 2018 Free Software Foundation, Inc.
15408
15409 Copying and distribution of this file, with or without modification,
15410 are permitted in any medium without royalty provided the copyright
15411 notice and this notice are preserved.