Handle a null lhs in expand_direct_optab_fn (PR85862)
[gcc.git] / gcc / ChangeLog
1 2018-05-22 Richard Sandiford <richard.sandiford@linaro.org>
2
3 PR middle-end/85862
4 * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
5
6 2018-05-22 Richard Biener <rguenther@suse.de>
7
8 PR tree-optimization/85834
9 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
10 non-constant and non-zero memset arguments.
11
12 2018-05-22 Martin Liska <mliska@suse.cz>
13
14 PR ipa/85607
15 * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
16
17 2018-05-22 Richard Biener <rguenther@suse.de>
18
19 PR tree-optimization/85863
20 * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
21 comparisons when vectype is specified.
22 (vectorizable_condition): Do not specify vectype for
23 vect_is_simple_cond when SLP vectorizing.
24
25 2018-05-21 Michael Meissner <meissner@linux.ibm.com>
26
27 PR target/85657
28 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
29 define __ibm128 as long double.
30 * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
31 as a distinct type when IEEE 128-bit support is enabled.
32 (init_float128_ieee): Fix up conversions between IFmode and IEEE
33 128-bit types to use the correct functions.
34 (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
35 convert between 128-bit floating point types that have different
36 modes but the same representation, instead of using gen_lowpart to
37 makean alias.
38 * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
39 KFmode.
40 (IFKF_reg): New attributes to give the register constraints for
41 IFmode and KFmode.
42 (extend<mode>tf2_internal): New insns to mark an explicit
43 conversion between 128-bit floating point types that have a
44 different mode but share the same representation.
45
46 2018-05-21 Richard Sandiford <richard.sandiford@linaro.org>
47
48 PR tree-optimization/85814
49 * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
50 a null return from get_strinfo when unsharing the next
51 strinfo in the chain.
52
53 2018-05-21 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
54
55 PR gcc/84923
56 * varasm.c (weak_finish): Clean up weak_decls.
57
58 2018-05-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
59
60 * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
61 UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
62 UNSPEC_UADALP values.
63 * config/aarch64/iterators.md (ABAL): New int iterator.
64 (ABDL2): Likewise.
65 (ADALP): Likewise.
66 (sur): Add mappings for the above.
67 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
68 New define_insn.
69 (aarch64_<sur>abal<mode>_4): Likewise.
70 (aarch64_<sur>adalp<mode>_3): Likewise.
71 (<sur>sadv16qi): New define_expand.
72
73 2018-05-21 Alexander Nesterovskiy <alexander.nesterovskiy@intel.com>
74
75 * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
76 (*movdf_internal): Ditto.
77 (*rcpsf2_sse): Ditto.
78 (*rsqrtsf2_sse): Ditto.
79 (*sqrt<mode>2_sse): Ditto.
80
81 2018-05-21 Tamar Christina <tamar.christina@arm.com>
82
83 * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
84 eor3q<mode>4.
85 (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
86 * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
87 veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
88 vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
89 vbcaxq_s64): New.
90 * config/aarch64/arm_neon.h: Likewise.
91 * config/aarch64/iterators.md (VQ_I): New.
92
93 2018-05-21 Alexey Brodkin <abrodkin@synopsys.com>
94
95 * config.gcc: Add arc/t-multilib-linux to tmake_file for
96 arc*-*-linux*.
97 * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
98 MULTILIB_DIRNAMES
99
100 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
101
102 * config/nds32/constraints.md (S): New constraint.
103 * config/nds32/nds32.md (call_internal): Use constraint S.
104 (call_value_internal): Likewise.
105 (sibcall_internal): Likewise.
106 (sibcall_value_internal): Likewise.
107
108 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
109 Chung-Ju Wu <jasonwucj@gmail.com>
110
111 * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
112 into consideration.
113
114 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
115 Chung-Ju Wu <jasonwucj@gmail.com>
116
117 * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
118 (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
119 (nds32_rtx_costs_impl): Simplify.
120 (nds32_address_cost_impl): Simplify.
121 (nds32_init_rtx_costs): New function.
122 (nds32_rtx_costs_speed_prefer): Likewise.
123 (nds32_rtx_costs_size_prefer): Likewise.
124 (nds32_address_cost_speed_prefer): Likewise.
125 (nds32_address_cost_speed_fwprop): Likewise.
126 (nds32_address_cost_size_prefer): Likewise.
127 * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
128 * config/nds32/nds32.c (nds32_option_override): Use
129 nds32_init_rtx_costs function.
130
131 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
132
133 * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
134 * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
135 (TARGET_PIPELINE_N8): Likewise.
136 (TARGET_PIPELINE_N10): Likewise.
137 (TARGET_PIPELINE_N13): Likewise.
138 (TARGET_PIPELINE_GRAYWOLF): Likewise.
139
140 2018-05-19 Monk Chiang <sh.chiang04@gmail.com>
141
142 * config/nds32/nds32-fpu.md: Update copyright year.
143
144 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
145
146 * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
147
148 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
149
150 * config/nds32/nds32.c
151 (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
152 * config/nds32/nds32.opt (minline-asm-r15): New option.
153
154 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
155
156 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
157 MASK_HW_ABS.
158 * config/nds32/nds32.md (abssi2): New pattern.
159
160 2018-05-19 Uros Bizjak <ubizjak@gmail.com>
161
162 * config/i386/i386.md (rex64namesuffix): New mode attribute.
163 * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
164 Merge insn pattern from sse_cvtsi2ss<round_name> and
165 sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
166 (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
167 from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
168 using SWI48 mode iterator.
169 (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
170 sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
171 (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
172 pattern from sse_cvttss2si<round_saeonly_name>
173 and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
174 (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
175 from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
176 using SWI48 mode iterator.
177 (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
178 insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
179 avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
180 (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
181 from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
182 using SWI48 mode iterator.
183 (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
184 insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
185 avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
186 (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
187 sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
188 SWI48 mode iterator.
189 (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
190 sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
191 (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
192 pattern from sse_cvttsd2si<round_saeonly_name>
193 and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
194
195 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
196
197 * config/nds32/nds32-md-auxiliary.c
198 (nds32_valid_smw_lwm_base_p): Refine.
199 (nds32_output_smw_single_word): Refine.
200 (nds32_output_smw_double_word): New.
201 * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
202
203 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
204
205 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
206 (nds32_output_stack_pop): Refine.
207 (nds32_expand_unaligned_load): Refine.
208 (nds32_expand_unaligned_store): Refine.
209
210 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
211 Chung-Ju Wu <jasonwucj@gmail.com>
212
213 * config/nds32/constants.md: Add TP_REGNUM constant.
214 (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
215 UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
216 UNSPEC_ADD32.
217 * config/nds32/nds32-doubleword.md: Consider flag_pic.
218 * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
219 * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
220 * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
221 and PIC code generation.
222 * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
223 code generation.
224 * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
225 optimization.
226 * config/nds32/nds32.md: Support TLS and PIC.
227 * config/nds32/nds32.c: Support TLS and PIC.
228 * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
229 * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
230 predicate.
231
232 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
233
234 * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
235 mode with E_ prefix.
236
237 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
238 Chung-Ju Wu <jasonwucj@gmail.com>
239
240 * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
241 * config/nds32/nds32-md-auxiliary.c
242 (symbolic_reference_mentioned_p): New.
243 (nds32_legitimize_ict_address): New.
244 (nds32_expand_ict_move): New.
245 (nds32_indirect_call_referenced_p): New.
246 (nds32_symbol_binds_local_p): Delete.
247 (nds32_long_call_p): Modify.
248 * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
249 * config/nds32/nds32-protos.h
250 (symbolic_reference_mentioned_p): Declare.
251 (nds32_legitimize_ict_address): Declare.
252 (nds32_expand_ict_move): Declare.
253 (nds32_indirect_call_referenced_p): Declare.
254 * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
255 (nds32_relax_group): Use nds32_ict_const_p as condition.
256 * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
257 (nds32_asm_file_start): Output ict_model directive in asm code.
258 (nds32_legitimate_address_p): Consider indirect call.
259 (nds32_print_operand): Consider indirect call.
260 (nds32_print_operand_address): Consider indirect call.
261 (nds32_insert_attributes): Handle "indirect_call" attribute.
262 (TARGET_LEGITIMATE_ADDRESS_P): Define.
263 (TARGET_LEGITIMATE_CONSTANT_P): Define.
264 (TARGET_CANNOT_FORCE_CONST_MEM): Define.
265 (TARGET_DELEGITIMIZE_ADDRESS): Define.
266 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
267 * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
268 (TARGET_ICT_MODEL_SMALL): Define.
269 (TARGET_ICT_MODEL_LARGE): Define.
270 * config/nds32/nds32.md (movsi): Consider ict model.
271 (call, call_value): Consider ict model.
272 (sibcall, sibcall_value): Consider ict model.
273 * config/nds32/nds32.opt (mict-model): New option.
274 * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
275 model.
276
277 2018-05-18 Kito Cheng <kito.cheng@gmail.com>
278 Monk Chiang <sh.chiang04@gmail.com>
279 Jim Wilson <jimw@sifive.com>
280
281 * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
282 Add support to parse rv32e*. Clear MASK_RVE for rv32i and rv64i.
283 * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
284 * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
285 __riscv_32e when TARGET_RVE. Handle ABI_ILP32E as soft-float ABI.
286 * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
287 * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
288 compute save_libcall_adjustment properly.
289 (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
290 (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
291 * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
292 (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
293 (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
294 (ABI_SPEC): Handle mabi=ilp32e.
295 * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
296 (RVE): Add RVE mask.
297 * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
298 <-march>: Add rv32e as an example.
299
300 2018-05-18 Marc Glisse <marc.glisse@inria.fr>
301
302 PR c++/82899
303 * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
304 (intra_create_variable_infos): Handle C++ constructors.
305
306 2018-05-18 Martin Liska <mliska@suse.cz>
307
308 * passes.def: Remove a redundant pass.
309
310 2018-05-18 Eric Botcazou <ebotcazou@adacore.com>
311
312 PR bootstrap/85838
313 * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
314
315 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
316
317 * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
318 (ARMv4): Update.
319 (ARMv2, ARMv3, ARMv3m): Delete fgroups.
320 (ARMv6m): Update.
321 (armv2, armv2a, armv3, armv3m): Delete architectures.
322 (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
323 arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
324 arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
325 Delete cpus.
326 * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
327 (*mulsidi3adddi): Likewise.
328 (mulsidi3): Likewise.
329 (*mulsidi3_nov6): Likewise.
330 (umulsidi3): Likewise.
331 (umulsidi3_nov6): Likewise.
332 (umaddsidi4): Likewise.
333 (*umulsidi3adddi): Likewise.
334 (smulsi3_highpart): Likewise.
335 (*smulsi3_highpart_nov6): Likewise.
336 (umulsi3_highpart): Likewise.
337 (*umulsi3_highpart_nov6): Likewise.
338 * config/arm/arm.h (arm_arch3m): Delete.
339 * config/arm/arm.c (arm_arch3m): Delete.
340 (arm_option_override_internal): Update armv3-related comment.
341 (arm_configure_build_target): Delete use of isa_bit_mode32.
342 (arm_option_reconfigure_globals): Delete set of arm_ach3m.
343 (arm_rtx_costs_internal): Delete check of arm_arch3m.
344 * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
345 (mulsa3): Likewise.
346 (mulusa3): Likewise.
347 * config/arm/arm-protos.h (arm_arch3m): Delete.
348 * config/arm/arm-tables.opt: Regenerate.
349 * config/arm/arm-tune.md: Likewise.
350 * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
351 deleted architectures.
352
353 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
354
355 * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
356 (armv5t, armv5te): New features.
357 (ARMv5, ARMv5e): Delete fgroups.
358 (ARMv5t, ARMv5te): Adjust for above changes.
359 (ARMv6m): Likewise.
360 (armv5, armv5e): Delete arches.
361 * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
362 arm_arch5.
363 (*call_reg_arm): Likewise.
364 (*call_value_reg_armv5): Likewise.
365 (*call_value_reg_arm): Likewise.
366 (*call_symbol): Likewise.
367 (*call_value_symbol): Likewise.
368 (*sibcall_insn): Likewise.
369 (*sibcall_value_insn): Likewise.
370 (clzsi2): Likewise.
371 (prefetch): Likewise.
372 (define_split and define_peephole2 dependent on arm_arch5):
373 Likewise.
374 * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
375 arm_arch5e.
376 (TARGET_ARM_QBIT): Likewise.
377 (TARGET_DSP_MULTIPLY): Likewise.
378 (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
379 (arm_arch5, arm_arch5e): Delete.
380 (arm_arch5t, arm_arch5te): Declare.
381 * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
382 (arm_arch5t): Declare.
383 (arm_option_reconfigure_globals): Update for the above.
384 (arm_options_perform_arch_sanity_checks): Update comment, replace
385 use of arm_arch5 with arm_arch5t.
386 (use_return_insn): Likewise.
387 (arm_emit_call_insn): Likewise.
388 (output_return_instruction): Likewise.
389 (arm_final_prescan_insn): Likewise.
390 (arm_coproc_builtin_available): Likewise.
391 * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
392 arm_arch5e with arm_arch5t and arm_arch5te.
393 * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
394 (arm_arch5t, arm_arch5te): Declare.
395 * config/arm/arm-tables.opt: Regenerate.
396 * config/arm/t-arm-elf: Remove references to armv5, armv5e.
397 * config/arm/t-multilib: Likewise.
398 * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
399 instead of arm_arch5.
400 (*call_reg_thumb1): Likewise.
401 (*call_value_reg_thumb1_v5): Likewise.
402 (*call_value_reg_thumb1): Likewise.
403 * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
404 unreachable path.
405 * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
406
407 2018-05-18 Martin Liska <mliska@suse.cz>
408
409 PR gcov-profile/84846
410 * doc/gcov.texi: Document -t option of gcov tool.
411
412 2018-05-18 Martin Liska <mliska@suse.cz>
413
414 PR gcov-profile/84846
415 * gcov.c (print_usage): Add new -t option.
416 (process_args): Handle the option.
417 (generate_results): Use stdout as output when requested by
418 the option.
419
420 2018-05-18 Martin Liska <mliska@suse.cz>
421
422 PR gcov-profile/84846
423 * coverage.c (coverage_init): Write PWD to .gcno file.
424 * doc/gcov.texi: Document how working directory is printed.
425 * gcov-dump.c (dump_gcov_file): Print PWD.
426 * gcov.c (output_intermediate_file): Likewise.
427 (read_graph_file): Read PWD string.
428 (output_lines): Print PWD.
429
430 2018-05-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
431
432 PR middle-end/85817
433 * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
434 for retval and return false if all args to phi are zero.
435
436 2018-05-18 Richard Biener <rguenther@suse.de>
437
438 * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
439 method.
440 (evrp_dom_walker::before_dom_children): Call it.
441
442 2018-05-18 Richard Biener <rguenther@suse.de>
443
444 * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
445 results when processing array refs with variable index.
446
447 2018-05-18 Toon Moene <toon@moene.org>
448
449 * doc/invoke.texi: Move -floop-unroll-and-jam documentation
450 directly after that of -floop-interchange. Indicate that both
451 options are enabled by default when specifying -O3.
452
453 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
454
455 * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
456 iterator. Delete separate integer-mode vec_set<mode> expander.
457 (aarch64_simd_vec_setv2di): Delete.
458 (vec_setv2di): Delete.
459 (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
460 Use VALL_F16 mode iterator. Add LD1 alternative and use vwcore for
461 the "w, r" alternative.
462
463 2018-05-18 Martin Liska <mliska@suse.cz>
464
465 * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
466 * tree-pass.h (make_pass_lower_switch_O0): New function.
467 * tree-switch-conversion.c (node_has_low_bound): Remove.
468 (node_has_high_bound): Likewise.
469 (node_is_bounded): Likewise.
470 (class pass_lower_switch): Make it a template type and create
471 two instances.
472 (pass_lower_switch::execute): Add template argument.
473 (make_pass_lower_switch): New function.
474 (make_pass_lower_switch_O0): New function.
475 (do_jump_if_equal): Remove.
476 (emit_case_nodes): Simplify to just handle all 3 cases and leave
477 all the hard work to tree optimization passes.
478
479 2018-05-18 Martin Liska <mliska@suse.cz>
480
481 * dbgcnt.c (limit_low): Renamed from limit.
482 (limit_high): New variable.
483 (dbg_cnt_is_enabled): Check for upper limit.
484 (dbg_cnt): Adjust dumping.
485 (dbg_cnt_set_limit_by_index): Add new argument for high
486 value.
487 (dbg_cnt_set_limit_by_name): Likewise.
488 (dbg_cnt_process_single_pair): Parse new format.
489 (dbg_cnt_process_opt): Use strtok.
490 (dbg_cnt_list_all_counters): Remove 'value' and add
491 'limit_high'.
492 * doc/invoke.texi: Document changes.
493
494 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
495
496 * doc/sourcebuild.texi (scalar_all_fma): Document.
497 * tree.def (FMA_EXPR): Delete.
498 * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
499 * internal-fn.c (ternary_direct): New macro.
500 (expand_ternary_optab_fn): Likewise.
501 (direct_ternary_optab_supported_p): Likewise.
502 * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
503 * builtins.c (fold_builtin_fma): Delete.
504 (fold_builtin_3): Don't call it.
505 * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
506 * expr.c (expand_expr_real_2): Likewise.
507 * fold-const.c (operand_equal_p): Likewise.
508 (fold_ternary_loc): Likewise.
509 * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
510 * gimple.c (DEFTREECODE): Likewise.
511 * gimplify.c (gimplify_expr): Likewise.
512 * optabs-tree.c (optab_for_tree_code): Likewise.
513 * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
514 * tree-eh.c (operation_could_trap_p): Likewise.
515 (stmt_could_throw_1_p): Likewise.
516 * tree-inline.c (estimate_operator_cost): Likewise.
517 * tree-pretty-print.c (dump_generic_node): Likewise.
518 (op_code_prio): Likewise.
519 * tree-ssa-loop-im.c (stmt_cost): Likewise.
520 * tree-ssa-operands.c (get_expr_operands): Likewise.
521 * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
522 * fold-const-call.h (fold_fma): Delete.
523 * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
524 CFN_FNMA and CFN_FNMS.
525 (fold_fma): Delete.
526 * genmatch.c (combined_fn): New enum.
527 (commutative_ternary_tree_code): Remove FMA_EXPR handling.
528 (commutative_op): New function.
529 (commutate): Use it. Handle more than 2 operands.
530 (dt_operand::gen_gimple_expr): Use commutative_op.
531 (parser::parse_expr): Allow :c to be used with non-binary
532 operators if the commutative operand is known.
533 * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
534 CFN_FMS, CFN_FNMA and CFN_FNMS.
535 (backprop::process_assign_use): Remove FMA_EXPR handling.
536 * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
537 (gen_hsa_fma): New function.
538 (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
539 IFN_FNMA and IFN_FNMS.
540 * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
541 * gimple-fold.h (follow_all_ssa_edges): Declare.
542 * gimple-fold.c (follow_all_ssa_edges): New function.
543 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
544 gimple_build interface and use follow_all_ssa_edges to fold the result.
545 (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
546 instead of checking for optabs directly.
547 * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
548 rather than FMA_EXPRs.
549 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
550 call to IFN_FMA instead of an FMA_EXPR.
551
552 2018-05-17 Jim Wilson <jimw@sifive.com>
553
554 * expr.c (do_tablejump): When converting index to Pmode, if we have a
555 sign extended promoted subreg, and the range does not have the sign bit
556 set, then do a sign extend.
557
558 * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
559 test, check for sign extended subreg and/or constant operands, and
560 do a sign extend in that case.
561
562 2018-05-17 Steve Ellcey <sellcey@cavium.com>
563
564 * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
565 (thunderx2t99_multiple): Delete psuedo-units from used cpus.
566 Add untyped.
567 (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
568 Change logics_shift_reg to logics_shift_imm.
569 (thunderx2t99_fp_loadpair_basic): Delete.
570 (thunderx2t99_fp_storepair_basic): Delete.
571 (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
572 (thunderx2t99_asimd_polynomial): Delete.
573 (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
574 and neon_fp_mul_d_scalar_q.
575 (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
576 (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
577 (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
578 (thunderx2t99_asimd_lut): Add missing tbl types.
579 (thunderx2t99_asimd_ext): Delete.
580 (thunderx2t99_asimd_load1_1_mult): Delete.
581 (thunderx2t99_asimd_load1_2_mult): Delete.
582 (thunderx2t99_asimd_load1_ldp): New.
583 (thunderx2t99_asimd_load1): New.
584 (thunderx2t99_asimd_load2): Add missing *load2* types.
585 (thunderx2t99_asimd_load3): New.
586 (thunderx2t99_asimd_load4): New.
587 (thunderx2t99_asimd_store1_1_mult): Delete.
588 (thunderx2t99_asimd_store1_2_mult): Delete.
589 (thunderx2t99_asimd_store2_mult): Delete.
590 (thunderx2t99_asimd_store2_onelane): Delete.
591 (thunderx2t99_asimd_store_stp): New.
592 (thunderx2t99_asimd_store1): New.
593 (thunderx2t99_asimd_store2): New.
594 (thunderx2t99_asimd_store3): New.
595 (thunderx2t99_asimd_store4): New.
596
597 2018-05-17 Jerome Lambourg <lambourg@adacore.com>
598
599 * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
600 #include <stdint.h>. Replace intptr_t with __INTPTR_TYPE__.
601
602 2018-05-17 Pat Haugen <pthaugen@us.ibm.com>
603 Segher Boessenkool <segher@kernel.crashing.org>
604
605 PR target/85698
606 * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
607 operand.
608
609 2018-05-17 Richard Biener <rguenther@suse.de>
610
611 * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
612 for pruning loop and prune defs feeding only already visited PHIs.
613
614 2018-05-17 Richard Biener <rguenther@suse.de>
615
616 * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
617
618 2018-05-17 Bin Cheng <bin.cheng@arm.com>
619 Richard Biener <rguenther@suse.de>
620
621 PR tree-optimization/85793
622 * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
623 for VMAT_ELEMENTWISE.
624
625 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
626
627 * internal-fn.h (lookup_internal_fn): Declare
628 * internal-fn.c (lookup_internal_fn): New function.
629 * gimple.c (gimple_build_call_from_tree): Handle calls to
630 internal functions.
631 * gimple-pretty-print.c (dump_gimple_call): Print "." before
632 internal function names.
633 * tree-pretty-print.c (dump_generic_node): Likewise.
634 * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
635
636 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
637
638 * gimple-fold.h (gimple_build): Make the function forms take
639 combined_fn rather than built_in_function.
640 (gimple_simplify): Likewise.
641 * gimple-match-head.c (gimple_simplify): Likewise.
642 * gimple-fold.c (gimple_build): Likewise.
643 * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
644 rather than gimple_build_call_internal.
645 (get_initial_defs_for_reduction): Likewise.
646 (vect_create_epilog_for_reduction): Likewise.
647 (vectorizable_live_operation): Likewise.
648
649 2018-05-17 Martin Liska <mliska@suse.cz>
650
651 * gimple-ssa-sprintf.c (format_directive): Do not use
652 space in between 'G_' and '('.
653
654 2018-05-17 Jakub Jelinek <jakub@redhat.com>
655
656 PR target/85323
657 * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
658 even if the mask is not all ones.
659
660 PR target/85323
661 * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
662 vector.
663 (ix86_gimple_fold_builtin): Likewise.
664
665 PR target/85323
666 * config/i386/i386.c: Include tree-vector-builder.h.
667 (ix86_vector_shift_count): New function.
668 (ix86_fold_builtin): Fold shift builtins by scalar count.
669 (ix86_gimple_fold_builtin): Likewise.
670
671 * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
672 _mm512_setzero): New intrinsics.
673
674 2018-05-17 James Greenhalgh <james.greenhalgh@arm.com>
675 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
676
677 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
678 code generation for cases where splatting a value is not useful.
679 * simplify-rtx.c (simplify_ternary_operation): Simplify
680 vec_merge across a vec_duplicate and a paradoxical subreg forming a vector
681 mode to a vec_concat.
682
683 2018-05-17 Olga Makhotina <olga.makhotina@intel.com>
684
685 * config.gcc: Support "goldmont-plus".
686 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
687 "goldmont-plus".
688 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
689 PROCESSOR_GOLDMONT_PLUS.
690 * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
691 (processor_target_table): Add "goldmont-plus".
692 (PTA_GOLDMONT_PLUS): Define.
693 (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
694 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
695 (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
696 (fold_builtin_cpu): Add "goldmont-plus".
697 (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
698 (ix86_option_override_internal): Add "goldmont-plus".
699 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
700 (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
701 * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
702 * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
703
704 2018-05-17 Richard Biener <rguenther@suse.de>
705
706 PR tree-optimization/85757
707 * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
708 remove defs that only feed that PHI from further processing.
709
710 2018-05-16 Jim Wilson <jimw@sifive.com>
711
712 * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
713 asterisk to name.
714 (<optab>di3_mask, <optab>di3_mask_1): Likewise.
715
716 2018-05-16 Mark Wielaard <mark@klomp.org>
717
718 * dwarf2out.c (count_index_strings): New function.
719 (output_indirect_strings): Call count_index_strings and generate
720 header for dwarf_version >= 5.
721
722 2018-05-16 Mark Wielaard <mark@klomp.org>
723
724 * dwarf2out.c (dwarf_FORM): New function.
725 (set_indirect_string): Use dwarf_FORM.
726 (reset_indirect_string): Likewise.
727 (size_of_die): Likewise.
728 (value_format): Likewise.
729 (output_die): Likewise.
730 (add_skeleton_AT_string): Likewise.
731 (output_macinfo_op): Likewise.
732 (index_string): Likewise.
733 (output_index_string_offset): Likewise.
734 (output_index_string): Likewise.
735 (count_index_strings): Likewise.
736
737 2018-05-16 Carl Love <cel@us.ibm.com>
738
739 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
740 dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
741
742 2018-05-16 Martin Jambor <mjambor@suse.cz>
743
744 * ipa-prop.c (ipa_free_all_edge_args): Remove.
745 * ipa-prop.h (ipa_free_all_edge_args): Likewise.
746
747 2018-05-16 Wilco Dijkstra <wdijkstr@arm.com>
748
749 * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
750 (fnma<mode>4): Likewise.
751 (fms<mode>4): Likewise.
752 (fnms<mode>4): Likewise.
753 (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
754 (aarch64_fnma<mode>4): Likewise.
755 (aarch64_fms<mode>4): Likewise.
756 (aarch64_fnms<mode>4): Likewise.
757 (aarch64_fnmadd<mode>4): Likewise.
758
759 2018-05-16 Jason Merrill <jason@redhat.com>
760
761 * tree.c (warn_deprecated_use): Return bool. Simplify logic.
762
763 2018-05-16 Richard Biener <rguenther@suse.de>
764
765 * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
766 (dump_stmt_cost): Declare.
767 (add_stmt_cost): Dump cost we add.
768 (add_stmt_costs): New function.
769 (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
770 No longer exported.
771 (vect_analyze_stmt): Adjust prototype.
772 (vectorizable_condition): Likewise.
773 (vectorizable_live_operation): Likewise.
774 (vectorizable_reduction): Likewise.
775 (vectorizable_induction): Likewise.
776 * tree-vect-loop.c (vect_analyze_loop_operations): Create local
777 cost vector to pass to vectorizable_ and record afterwards.
778 (vect_model_reduction_cost): Take cost vector argument and adjust.
779 (vect_model_induction_cost): Likewise.
780 (vectorizable_reduction): Likewise.
781 (vectorizable_induction): Likewise.
782 (vectorizable_live_operation): Likewise.
783 * tree-vect-slp.c (vect_create_new_slp_node): Initialize
784 SLP_TREE_NUMBER_OF_VEC_STMTS.
785 (vect_analyze_slp_cost_1): Remove.
786 (vect_analyze_slp_cost): Likewise.
787 (vect_slp_analyze_node_operations): Take visited args and
788 a target cost vector. Avoid processing already visited stmt sets.
789 (vect_slp_analyze_operations): Use a local cost vector to gather
790 costs and register those of non-discarded instances.
791 (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
792 (vect_schedule_slp_instance): Remove copying of
793 SLP_TREE_NUMBER_OF_VEC_STMTS. Instead assert that it is not
794 zero.
795 * tree-vect-stmts.c (record_stmt_cost): Remove path directly
796 adding cost. Record cost entry location.
797 (vect_prologue_cost_for_slp_op): Function to compute cost of
798 a constant or invariant generated for SLP vect in the prologue,
799 split out from vect_analyze_slp_cost_1.
800 (vect_model_simple_cost): Make static. Adjust for SLP costing.
801 (vect_model_promotion_demotion_cost): Likewise.
802 (vect_model_store_cost): Likewise, make static.
803 (vect_model_load_cost): Likewise.
804 (vectorizable_bswap): Add cost vector arg and adjust.
805 (vectorizable_call): Likewise.
806 (vectorizable_simd_clone_call): Likewise.
807 (vectorizable_conversion): Likewise.
808 (vectorizable_assignment): Likewise.
809 (vectorizable_shift): Likewise.
810 (vectorizable_operation): Likewise.
811 (vectorizable_store): Likewise.
812 (vectorizable_load): Likewise.
813 (vectorizable_condition): Likewise.
814 (vectorizable_comparison): Likewise.
815 (can_vectorize_live_stmts): Likewise.
816 (vect_analyze_stmt): Likewise.
817 (vect_transform_stmt): Adjust calls to vectorizable_*.
818 * tree-vectorizer.c: Include gimple-pretty-print.h.
819 (dump_stmt_cost): New function.
820
821 2018-05-16 Richard Biener <rguenther@suse.de>
822
823 * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
824 * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
825 * tree-ssa-dse.c: Include tree-ssa-loop.h.
826 (check_name): New callback.
827 (dse_classify_store): Track cycles via a visited bitmap of PHI
828 defs and simplify handling of in-loop and across loop dead stores
829 and properly fail for loop-variant refs. Handle byte-tracking with
830 multiple defs. Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
831 limiting the walk.
832
833 2018-05-16 Richard Sandiford <richard.sandiford@linaro.org>
834
835 * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
836 (vect_get_mask_type_for_stmt): Likewise.
837 * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
838 split out from...
839 (vect_build_slp_tree_1): ...here. Use vect_get_vector_types_for_stmt
840 to determine the statement's vector type and the vector type that
841 should be used for calculating nunits. Deal with cases in which
842 the type has to be deferred.
843 (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
844 and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
845 * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
846 (vect_determine_vf_for_stmt): New functions, split out from...
847 (vect_determine_vectorization_factor): ...here.
848 * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
849 (vect_get_mask_type_for_stmt): New functions, split out from
850 vect_determine_vectorization_factor.
851
852 2018-05-16 Richard Biener <rguenther@suse.de>
853
854 * tree-cfg.c (verify_gimple_assign_ternary): Properly
855 verify the [VEC_]COND_EXPR embedded comparison.
856
857 2018-05-15 Martin Sebor <msebor@redhat.com>
858
859 PR tree-optimization/85753
860 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
861 RECORD_TYPE in addition to ARRAY_TYPE.
862
863 2018-05-15 Martin Sebor <msebor@redhat.com>
864
865 PR middle-end/85643
866 * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
867
868 2018-05-15 Richard Biener <rguenther@suse.de>
869
870 * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
871 add by_clobber_p one. Change algorithm to collect all defs
872 representing uses we need to walk and try reducing them to
873 a single one before failing.
874 (dse_dom_walker::dse_optimize_stmt): Adjust.
875
876 2018-05-13 Mark Wielaard <mark@klomp.org>
877
878 * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
879 (size_of_loc_descr): Likewise.
880 (output_loc_operands): Likewise.
881 (output_loc_operands_raw): Likewise.
882 (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
883 (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
884 (hash_loc_operands): Likewise.
885 (compare_loc_operands): Likewise.
886
887 2018-05-14 Mark Wielaard <mark@klomp.org>
888
889 * dwarf2out.c (count_index_addrs): New function.
890 (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
891
892 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
893
894 PR tree-optimization/83648
895 * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
896 return value as malloc candidate.
897
898 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
899
900 PR ipa/85734
901 * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param
902 as true in call to suggest_attribute.
903
904 2018-05-14 Segher Boessenkool <segher@kernel.crashing.org>
905
906 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
907 -mreadonly-in-sdata.
908
909 2018-05-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
910
911 * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
912 New pattern.
913 (aarch64_crypto_aesd_fused): Likewise.
914
915 2018-05-14 Wilco Dijkstra <wdijkstr@arm.com>
916
917 * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
918 (movsi_aarch64): Likewise.
919 (load_pairsi): Likewise.
920 (load_pairdi): Likewise.
921 (store_pairsi): Likewise.
922 (store_pairdi): Likewise.
923 (load_pairsf): Likewise.
924 (load_pairdf): Likewise.
925 (store_pairsf): Likewise.
926 (store_pairdf): Likewise.
927 (zero_extend): Likewise.
928 (trunc): Swap alternatives.
929 (fcvt_target): Add '?' to prefer w over r.
930
931 2018-05-14 Jakub Jelinek <jakub@redhat.com>
932
933 PR target/85756
934 * config/i386/i386.md: Disallow non-commutative arithmetics in
935 last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
936 optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS
937 in the peephole2 before it.
938
939 2018-05-14 Sebastian Peryt <sebastian.peryt@intel.com>
940
941 * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
942 OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
943 (ix86_handle_option): Handle -mcldemote.
944 * config.gcc: New header.
945 * config/i386/cldemoteintrin.h: New file.
946 * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
947 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
948 -mcldemote.
949 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
950 OPTION_MASK_ISA_CLDEMOTE.
951 * config/i386/i386.c (ix86_target_string): Add -mcldemote.
952 (ix86_valid_target_attribute_inner_p): Ditto.
953 (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
954 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
955 (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
956 * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
957 * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
958 (cldemote): New.
959 * config/i386/i386.opt: Add -mcldemote.
960 * config/i386/x86intrin.h: New header.
961 * doc/invoke.texi: Add -mcldemote.
962
963 2018-05-14 Richard Biener <rguenther@suse.de>
964
965 * doc/match-and-simplify.texi: Adjust :s documentation.
966
967 2018-05-14 Alexander Monakov <amonakov@ispras.ru>
968
969 * sort.cc (REORDER_23): Pass the type for the temporaries instead of
970 intended memcpy size.
971 (REORDER_45): Likewise.
972
973 2018-05-13 Alexander Monakov <amonakov@ispras.ru>
974
975 * sort.cc: New file.
976 * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
977 * vec.c (qsort_chk): Use gcc_qsort.
978 * Makefile.in (OBJS-libcommon): Add sort.o.
979 (build/sort.o): New target. Use it...
980 (BUILD_RTL): ... here, and...
981 (build/gencfn-macros): ... here, and...
982 (build/genmatch): ... here.
983
984 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
985 Chung-Ju Wu <jasonwucj@gmail.com>
986
987 * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
988 * config/nds32/nds32-graywolf.md: New file.
989 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
990 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
991 pipeline.
992 * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
993 * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
994 * config/nds32/nds32.md (pipeline_model): Add graywolf.
995 * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
996 * config/nds32/pipelines.md: Include n15 settings.
997
998 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
999 Chung-Ju Wu <jasonwucj@gmail.com>
1000
1001 * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
1002 * config/nds32/nds32-n13.md: New file.
1003 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
1004 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
1005 pipeline.
1006 * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
1007 * config/nds32/nds32.md (pipeline_model): Add n13.
1008 * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
1009 * config/nds32/pipelines.md: Include n13 settings.
1010
1011 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
1012 Chung-Ju Wu <jasonwucj@gmail.com>
1013
1014 * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
1015 * config/nds32/nds32-n10.md: New file.
1016 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
1017 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
1018 pipeline.
1019 * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
1020 * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
1021 * config/nds32/nds32.md (pipeline_model): Add n10.
1022 * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
1023 * config/nds32/pipelines.md: Include n10 settings.
1024
1025 2018-05-13 Monk Chiang <sh.chiang04@gmail.com>
1026 Kito Cheng <kito.cheng@gmail.com>
1027 Chung-Ju Wu <jasonwucj@gmail.com>
1028
1029 * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
1030 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
1031 Add enum values for DSP extension instructions.
1032 * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
1033 New constraints.
1034 * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
1035 sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
1036 New code iterators.
1037 (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
1038 * config/nds32/nds32-dspext.md: New file for DSP implementation.
1039 * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
1040 * config/nds32/nds32-intrinsic.md: Likewise.
1041 * config/nds32/nds32_intrinsic.h: Likewise.
1042 * config/nds32/nds32-md-auxiliary.c: Likewise.
1043 * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
1044 * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
1045 (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
1046 (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
1047 * config/nds32/nds32-protos.h: New declarations for DSP extension.
1048 * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
1049 TYPE_DMAC in switch statement.
1050 * config/nds32/nds32.c: New checking and implementation for DSP
1051 extension instructions.
1052 * config/nds32/nds32.h: Likewise.
1053 * config/nds32/nds32.md: Likewise.
1054 * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
1055 * config/nds32/predicates.md: Implement new predicates for DSP
1056 extension.
1057
1058 2018-05-11 Michael Meissner <meissner@linux.vnet.ibm.com>
1059
1060 * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
1061 Reformat alternatives and attributes so it is easier to identify
1062 which constraints/attributes go with which instruction.
1063 (mov<mode>_hardfloat32, FMOVE64): Likewise.
1064 (mov<mode>_softfloat32, FMOVE64): Likewise.
1065 (mov<mode>_hardfloat64, FMOVE64): Likewise.
1066 (mov<mode>_softfloat64, FMOVE64): Likewise.
1067
1068 2018-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
1069
1070 * doc/extend.texi (PowerPC Built-in Functions): Rename this
1071 subsection.
1072 (Basic PowerPC Built-in Functions): The new name of the
1073 subsection previously known as "PowerPC Built-in Functions".
1074 (Basic PowerPC Built-in Functions Available on all Configurations):
1075 New subsubsection.
1076 (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
1077 (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
1078 (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
1079 (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
1080
1081 2018-05-11 Martin Jambor <mjambor@suse.cz>
1082
1083 PR ipa/85655
1084 * ipa-cp.c (intersect_with_plats): Check that the lattice contains
1085 single const.
1086
1087 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
1088
1089 PR target/85733
1090 * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
1091
1092 2018-05-11 Sebastian Peryt <sebastian.peryt@intel.com>
1093
1094 * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
1095 OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
1096 (ix86_handle_option): Handle -mwaitpkg.
1097 * config.gcc: New header.
1098 * config/i386/cpuid.h (bit_WAITPKG): New bit.
1099 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
1100 * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
1101 function type.
1102 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1103 OPTION_MASK_ISA_WAITPKG.
1104 * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
1105 (ix86_option_override_internal): Add PTA_WAITPKG.
1106 (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
1107 (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
1108 IX86_BUILTIN_TPAUSE.
1109 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
1110 __builtin_ia32_umwait and __builtin_ia32_tpause.
1111 (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
1112 IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
1113 * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
1114 * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
1115 UNSPECV_TPAUSE): New.
1116 (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
1117 * config/i386/i386.opt: Add -mwaitpkg.
1118 * config/i386/waitpkgintrin.h: New file.
1119 * config/i386/x86intrin.h: New header.
1120 * doc/invoke.texi: Add -mwaitpkg.
1121
1122 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
1123
1124 PR target/85606
1125 * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
1126 equivalent.
1127 (cortex-m0): Use armv6s-m isa.
1128 (cortex-m0plus): Likewise.
1129 (cortex-m1): Likewise.
1130 (cortex-m0.small-multiply): Likewise.
1131 (cortex-m0plus.small-multiply): Likewise.
1132 (cortex-m1.small-multiply): Likewise.
1133
1134 2018-05-11 Allan Sandfeld Jensen <allan.jensen@qt.io>
1135 Jakub Jelinek <jakub@redhat.com>
1136
1137 PR tree-optimization/85692
1138 * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
1139 source permute as well.
1140
1141 2018-05-11 Martin Liska <mliska@suse.cz>
1142
1143 PR sanitizer/85556
1144 * doc/extend.texi: Document LLVM style format for no_sanitize
1145 attribute.
1146
1147 2018-05-10 Michael Meissner <meissner@linux.vnet.ibm.com>
1148
1149 * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
1150 mode_supports_vsx_dform_quad to mode_supports_dq_form.
1151 (mode_supports_vsx_dform_quad): Likewise.
1152 (mode_supports_vmx_dform): Move these functions to be next to the
1153 other mode_supports functions.
1154 (mode_supports_dq_form): Likewise.
1155 (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
1156 mode_supports_dq_form.
1157 (reg_offset_addressing_ok_p): Likewise.
1158 (offsettable_ok_by_alignment): Likewise.
1159 (rs6000_legitimate_offset_address_p): Likewise.
1160 (legitimate_lo_sum_address_p): Likewise.
1161 (rs6000_legitimize_address): Likewise.
1162 (rs6000_legitimize_reload_address): Likewise.
1163 (rs6000_secondary_reload_inner): Likewise.
1164 (rs6000_preferred_reload_class): Likewise.
1165 (rs6000_output_move_128bit): Likewise.
1166
1167 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
1168
1169 * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
1170 Generate SImode target register for null target.
1171 <case IX86_BUILTIN_XGETBV>: Ditto.
1172 <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
1173 * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
1174
1175 2018-05-10 Carl Love <cel@us.ibm.com>
1176
1177 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
1178 dcbtt and dcbtstt if operands[2] is 0.
1179
1180 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
1181
1182 PR target/85693
1183 * config/i386/sse.md (usadv64qi): New expander.
1184
1185 2018-05-10 Segher Boessenkool <segher@kernel.crashing.org>
1186
1187 * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
1188 altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
1189 -maltivec=be support.
1190 (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
1191 vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
1192 vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
1193 vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
1194 vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
1195 vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
1196 altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
1197 altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
1198 altivec_vsumsws): Adjust.
1199 (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
1200 *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
1201 altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
1202 support.
1203 (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
1204 altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
1205 altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
1206 (altivec_lve<VI_char>x): Delete expand.
1207 (*altivec_lve<VI_char>x_internal): Rename to...
1208 (altivec_lve<VI_char>x): ... this.
1209 (altivec_lvxl_<mode>): Delete expand.
1210 (*altivec_lvxl_<mode>_internal): Rename to ...
1211 (altivec_lvxl_<mode>): ... this.
1212 (altivec_stvxl_<mode>): Delete expand.
1213 (*altivec_stvxl_<mode>_internal): Rename to ...
1214 (altivec_stvxl_<mode>): ... this.
1215 (altivec_stve<VI_char>x): Delete expand.
1216 (*altivec_stve<VI_char>x_internal): Rename to ...
1217 (altivec_stve<VI_char>x): ... this.
1218 (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
1219 doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
1220 reduc_plus_scal_<mode>): Adjust.
1221 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
1222 comment.
1223 (rs6000_cpu_cpp_builtins): Adjust.
1224 (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
1225 * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
1226 altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
1227 * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
1228 -maltivec=be support.
1229 (rs6000_split_vec_extract_var): Adjust.
1230 (rs6000_split_v4si_init): Adjust.
1231 (swap_selector_for_mode): Delete.
1232 (altivec_expand_lvx_be, altivec_expand_stvx_be,
1233 altivec_expand_stvex_be): Delete.
1234 (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
1235 -maltivec=be support.
1236 (rs6000_gimple_fold_builtin): Ditto.
1237 (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
1238 Adjust.
1239 * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
1240 (TARGET_DIRECT_MOVE_64BIT): Adjust.
1241 * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
1242 * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
1243 * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
1244 unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
1245 vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
1246 *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
1247 *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
1248 *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
1249 anonymous split): Adjust.
1250 (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
1251 (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
1252
1253 2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
1254
1255 * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
1256 when --with-gxx-include-dir is also specified.
1257 * configure: Regenerate.
1258
1259 2018-05-09 Jim Wilson <jimw@sifive.com>
1260
1261 PR target/84797
1262 * config.gcc (riscv*-*-*): Handle --with-multilib-list.
1263 * config/riscv/t-withmultilib: New.
1264 * config/riscv/withmultilib.h: New.
1265 * doc/install.texi: Document RISC-V --with-multilib-list support.
1266
1267 2018-05-09 Richard Biener <rguenther@suse.de>
1268
1269 * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
1270 vector.
1271 (vect_bb_vectorization_profitable_p): Adjust. Compute
1272 actual scalar cost using the cost vector and the add_stmt_cost
1273 machinery.
1274
1275 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1276
1277 PR rtl-optimization/85645
1278 * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
1279 in the REG_CFA_REGISTER note for LR, don't leave it empty.
1280
1281 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1282
1283 PR rtl-optimization/85645
1284 * shrink-wrap.c (spread_components): Return a boolean saying if
1285 anything was changed.
1286 (try_shrink_wrapping_separate): Iterate spread_components until
1287 nothing changes anymore.
1288
1289 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1290
1291 PR rtl-optimization/85645
1292 * regrename.c (build_def_use): Also kill the chains that include the
1293 destination of a REG_CFA_REGISTER note.
1294
1295 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1296
1297 PR rtl-optimization/85645
1298 * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
1299 insn that has a REG_CFA_REGISTER note.
1300
1301 2018-05-09 Richard Sandiford <richard.sandiford@linaro.org>
1302
1303 * cfgexpand.c (expand_clobber): New function.
1304 (expand_gimple_stmt_1): Use it.
1305 * tree-vect-stmts.c (vect_clobber_variable): New function,
1306 split out from...
1307 (vectorizable_simd_clone_call): ...here.
1308 (vectorizable_store): Emit a clobber either side of an
1309 IFN_STORE_LANES sequence.
1310 (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
1311
1312 2018-05-09 Tom de Vries <tom@codesourcery.com>
1313
1314 PR target/85626
1315 * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
1316 (define_insn "trap_if_false"): Add exit after trap.
1317
1318 2018-05-09 Eric Botcazou <ebotcazou@adacore.com>
1319
1320 PR rtl-optimization/85638
1321 * bb-reorder.c: Include common/common-target.h.
1322 (create_forwarder_block): New function extracted from...
1323 (fix_up_crossing_landing_pad): ...here. Rename into...
1324 (dw2_fix_up_crossing_landing_pad): ...this.
1325 (sjlj_fix_up_crossing_landing_pad): New function.
1326 (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
1327 call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
1328 from both partitions and exit the loop after one iteration.
1329
1330 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
1331
1332 Revert:
1333 * doc/extend.texi (PowerPC Built-in Functions): Rename this
1334 subsection.
1335 (Basic PowerPC Built-in Functions): The new name of the
1336 subsection previously known as "PowerPC Built-in Functions".
1337 (Basic PowerPC Built-in Functions Available on all Configurations):
1338 New subsubsection.
1339 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
1340 subsubsection.
1341 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
1342 subsubsection.
1343 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
1344 subsubsection.
1345 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
1346 subsubsection.
1347
1348 2018-05-08 Jim Wilson <jimw@sifive.com>
1349
1350 * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
1351 (LD_EMUL_SUFFIX): New.
1352 (LINK_SPEC): Use it.
1353
1354 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
1355
1356 * doc/extend.texi (PowerPC Built-in Functions): Rename this
1357 subsection.
1358 (Basic PowerPC Built-in Functions): The new name of the
1359 subsection previously known as "PowerPC Built-in Functions".
1360 (Basic PowerPC Built-in Functions Available on all Configurations):
1361 New subsubsection.
1362 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
1363 subsubsection.
1364 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
1365 subsubsection.
1366 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
1367 subsubsection.
1368 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
1369 subsubsection.
1370
1371 2018-05-08 Jakub Jelinek <jakub@redhat.com>
1372
1373 PR target/85683
1374 * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
1375 after cmpelim optimization.
1376
1377 2018-05-08 Olga Makhotina <olga.makhotina@intel.com>
1378
1379 * config.gcc: Support "goldmont".
1380 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
1381 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1382 PROCESSOR_GOLDMONT.
1383 * config/i386/i386.c (m_GOLDMONT): Define.
1384 (processor_target_table): Add "goldmont".
1385 (PTA_GOLDMONT): Define.
1386 (ix86_lea_outperforms): Add TARGET_GOLDMONT.
1387 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
1388 (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
1389 (fold_builtin_cpu): Add "goldmont".
1390 (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
1391 (ix86_option_override_internal): Add "goldmont".
1392 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
1393 (processor_type): Add PROCESSOR_GOLDMONT.
1394 * config/i386/i386.md: Add CPU "glm".
1395 * config/i386/glm.md: New file.
1396 * config/i386/x86-tune.def: Add m_GOLDMONT.
1397 * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
1398
1399 2018-05-08 Jakub Jelinek <jakub@redhat.com>
1400
1401 PR target/85572
1402 * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
1403 E_V4DImode.
1404 * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
1405 VI1248_AVX512VL_AVX512BW. Handle V2DImode and V4DImode if not
1406 TARGET_AVX512VL using ix86_expand_sse2_abs. Formatting fixes.
1407
1408 PR target/85317
1409 * config/i386/i386.c (ix86_fold_builtin): Handle
1410 IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
1411
1412 PR target/85480
1413 * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
1414 (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
1415
1416 2018-05-08 Richard Earnshaw <rearnsha@arm.com>
1417
1418 PR target/85658
1419 * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
1420 (check_arch): Likewise.
1421 (check_fpu): Return the result rather than printing it.
1422 (end arch): Fix operator precedence.
1423 (end cpu): Likewise.
1424 (END): Print the result from check_fpu.
1425
1426 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
1427 Alan Hayward <alan.hayward@arm.com>
1428 David Sherwood <david.sherwood@arm.com>
1429
1430 * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
1431 (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
1432 (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
1433 (*fcmuo<mode>_and): New patterns.
1434
1435 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
1436
1437 * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
1438 (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
1439 (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
1440 (cmp_op, sve_imm_con): New code attributes.
1441 (SVE_COND_INT_CMP, imm_con): Delete.
1442 (cmp_op): Remove above unspecs from int attribute.
1443 * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
1444 to...
1445 (*cmp<cmp_op><mode>): ...this. Use UNSPEC_MERGE_PTRUE instead of
1446 comparison-specific unspecs.
1447 (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
1448 (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
1449 (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
1450 (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
1451 (*vec_fcm<cmp_op><mode>): Rename to...
1452 (*fcm<cmp_op><mode>): ...this and adjust likewise.
1453 (*vec_fcmuo<mode>): Rename to...
1454 (*fcmuo<mode>): ...this and adjust likewise.
1455 (*pred_fcm<cmp_op><mode>): New pattern.
1456 * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
1457 (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
1458 functions.
1459 (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
1460 and UNORDERED.
1461 (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
1462 (aarch64_emit_sve_predicated_cond): New function.
1463 (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
1464 (aarch64_emit_unspec_cond_or): Replace with...
1465 (aarch64_emit_sve_or_conds): ...this new function. Use
1466 aarch64_emit_sve_ptrue_op for the individual comparisons and
1467 aarch64_emit_binop to OR them together.
1468 (aarch64_emit_inverted_unspec_cond): Replace with...
1469 (aarch64_emit_sve_inverted_cond): ...this new function. Use
1470 aarch64_emit_sve_ptrue_op for the comparison and
1471 aarch64_emit_unop to invert the result.
1472 (aarch64_expand_sve_vec_cmp_float): Update after the above
1473 changes. Use aarch64_emit_sve_ptrue_op for native comparisons.
1474
1475 2018-05-07 Nathan Sidwell <nathan@acm.org>
1476
1477 * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
1478 * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
1479 (Backwards Compatibility): Likewise.
1480
1481 2018-05-07 Luis Machado <luis.machado@linaro.org>
1482
1483 PR bootstrap/85681
1484 Revert:
1485 2018-05-07 Luis Machado <luis.machado@linaro.org>
1486
1487 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1488 <prefetch_dynamic_strides>: New const bool field.
1489 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1490 prefetch_dynamic_strides.
1491 (exynosm1_prefetch_tune): Likewise.
1492 (thunderxt88_prefetch_tune): Likewise.
1493 (thunderx_prefetch_tune): Likewise.
1494 (thunderx2t99_prefetch_tune): Likewise.
1495 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
1496 (aarch64_override_options_internal): Update to set
1497 PARAM_PREFETCH_DYNAMIC_STRIDES.
1498 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1499 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1500 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1501 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1502 prefetch-dynamic-strides setting.
1503
1504 2018-05-07 Luis Machado <luis.machado@linaro.org>
1505
1506 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1507 <minimum_stride>: New const int field.
1508 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1509 minimum_stride field.
1510 (exynosm1_prefetch_tune): Likewise.
1511 (thunderxt88_prefetch_tune): Likewise.
1512 (thunderx_prefetch_tune): Likewise.
1513 (thunderx2t99_prefetch_tune): Likewise.
1514 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
1515 (aarch64_override_options_internal): Update to set
1516 PARAM_PREFETCH_MINIMUM_STRIDE.
1517 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1518 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1519 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1520 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1521 stride is constant and is below the minimum stride threshold.
1522
1523 2018-05-07 Luis Machado <luis.machado@linaro.org>
1524
1525 * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
1526 to 512.
1527
1528 2018-05-07 Luis Machado <luis.machado@linaro.org>
1529
1530 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1531 <prefetch_dynamic_strides>: New const bool field.
1532 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1533 prefetch_dynamic_strides.
1534 (exynosm1_prefetch_tune): Likewise.
1535 (thunderxt88_prefetch_tune): Likewise.
1536 (thunderx_prefetch_tune): Likewise.
1537 (thunderx2t99_prefetch_tune): Likewise.
1538 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
1539 (aarch64_override_options_internal): Update to set
1540 PARAM_PREFETCH_DYNAMIC_STRIDES.
1541 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1542 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1543 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1544 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1545 prefetch-dynamic-strides setting.
1546
1547 2018-05-07 Luis Machado <luis.machado@linaro.org>
1548
1549 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1550 <minimum_stride>: New const int field.
1551 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1552 minimum_stride field.
1553 (exynosm1_prefetch_tune): Likewise.
1554 (thunderxt88_prefetch_tune): Likewise.
1555 (thunderx_prefetch_tune): Likewise.
1556 (thunderx2t99_prefetch_tune): Likewise.
1557 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
1558 (aarch64_override_options_internal): Update to set
1559 PARAM_PREFETCH_MINIMUM_STRIDE.
1560 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1561 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1562 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1563 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1564 stride is constant and is below the minimum stride threshold.
1565
1566 2018-05-06 Jakub Jelinek <jakub@redhat.com>
1567
1568 PR c++/85659
1569 * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
1570 the type is addressable. Don't force op into register if it has
1571 BLKmode.
1572
1573 2018-05-05 Roland McGrath <mcgrathr@google.com>
1574
1575 PR other/77609
1576 * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
1577 any section for which we don't know a specific type it should have,
1578 regardless of name. Previously this was done only for the exact
1579 names ".init_array", ".fini_array", and ".preinit_array".
1580 (default_elf_asm_named_section): Add comment about
1581 relationship with default_section_type_flags and SECTION_NOTYPE.
1582 (get_section): Don't consider it a type conflict if one side has
1583 SECTION_NOTYPE and the other doesn't, as long as neither has the
1584 SECTION_BSS et al used in the default_section_type_flags logic.
1585
1586 2018-05-05 Tom de Vries <tom@codesourcery.com>
1587
1588 PR target/85653
1589 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
1590 (workaround_barsyncs): New function.
1591 (nvptx_reorg): Use workaround_barsyncs.
1592 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
1593 (define_expand "nvptx_membar_cta"): New define_expand.
1594 (define_insn "*nvptx_membar_cta"): New insn.
1595
1596 2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
1597
1598 * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
1599 To improve optimization opportunities.
1600 * builtin-types.def: The new needed builtin types for the above.
1601
1602 2018-05-04 Richard Biener <rguenther@suse.de>
1603
1604 * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
1605 * gimple-ssa-store-merging.c
1606 (imm_store_chain_info::output_merged_store): Remove redundant create,
1607 release split_store vector contents on failure.
1608 * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
1609 scalar stmt vector on cache hit.
1610
1611 2018-05-04 Segher Boessenkool <segher@kernel.crashing.org>
1612
1613 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
1614 Xilinx FP support.
1615 * config.gcc (powerpc-xilinx-eabi*): Remove.
1616 * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
1617 support.
1618 (fusion_addis_mem_combo_load): Ditto.
1619 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
1620 FP support.
1621 (rs6000_cpu_cpp_builtins): Ditto.
1622 * config/rs6000/rs6000-linux.c
1623 (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
1624 * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
1625 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
1626 support.
1627 (rs6000_setup_reg_addr_masks): Ditto.
1628 (rs6000_init_hard_regno_mode_ok): Ditto.
1629 (rs6000_option_override_internal): Ditto.
1630 (legitimate_lo_sum_address_p): Ditto.
1631 (rs6000_legitimize_address): Ditto.
1632 (rs6000_legitimize_reload_address): Ditto.
1633 (rs6000_legitimate_address_p): Ditto.
1634 (abi_v4_pass_in_fpr): Ditto.
1635 (setup_incoming_varargs): Ditto.
1636 (rs6000_gimplify_va_arg): Ditto.
1637 (rs6000_split_multireg_move): Ditto.
1638 (rs6000_savres_strategy): Ditto.
1639 (rs6000_emit_prologue_components): Ditto.
1640 (rs6000_emit_epilogue_components): Ditto.
1641 (rs6000_emit_prologue): Ditto.
1642 (rs6000_emit_epilogue): Ditto.
1643 (rs6000_elf_file_end): Ditto.
1644 (rs6000_function_value): Ditto.
1645 (rs6000_libcall_value): Ditto.
1646 * config/rs6000/rs6000.h: Ditto.
1647 (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
1648 (TARGET_MINMAX): ... this. New.
1649 (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
1650 * config/rs6000/rs6000.md: Remove Xilinx FP support.
1651 (*movsi_internal1_single): Delete.
1652 * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
1653 mfpu=, mxilinx-fpu): Delete.
1654 * config/rs6000/singlefp.h: Delete.
1655 * config/rs6000/sysv4.h: Remove Xilinx FP support.
1656 * config/rs6000/t-rs6000: Ditto.
1657 * config/rs6000/t-xilinx: Delete.
1658 * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
1659 * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
1660 (VStype_simple): Delete.
1661 (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
1662 * config/rs6000/xfpu.h: Delete.
1663 * config/rs6000/xfpu.md: Delete.
1664 * config/rs6000/xilinx.h: Delete.
1665 * config/rs6000/xilinx.opt: Delete.
1666 * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
1667 -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
1668
1669 2018-05-04 Tom de Vries <tom@codesourcery.com>
1670
1671 PR libgomp/85639
1672 * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
1673 if ignore == 0.
1674
1675 2018-05-04 Richard Biener <rguenther@suse.de>
1676
1677 PR middle-end/85627
1678 * tree-complex.c (update_complex_assignment): We are always in SSA form.
1679 (expand_complex_div_wide): Likewise.
1680 (expand_complex_operations_1): Likewise.
1681 (expand_complex_libcall): Preserve EH info of the original stmt.
1682 (tree_lower_complex): Handle removed blocks.
1683 * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
1684 on complex multiplication and division libcall builtins.
1685
1686 2018-05-04 Richard Biener <rguenther@suse.de>
1687
1688 PR middle-end/85574
1689 * fold-const.c (negate_expr_p): Restrict negation of operand
1690 zero of a division to when we know that can happen without
1691 overflow.
1692 (fold_negate_expr_1): Likewise.
1693
1694 2018-05-04 Jakub Jelinek <jakub@redhat.com>
1695
1696 PR libstdc++/85466
1697 * real.h (real_nextafter): Declare.
1698 * real.c (real_nextafter): New function.
1699 * fold-const-call.c (fold_const_nextafter): New function.
1700 (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
1701 CASE_CFN_NEXTTOWARD.
1702 (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
1703 even when arg1_mode is different from arg0_mode.
1704
1705 2018-05-03 Nathan Sidwell <nathan@acm.org>
1706
1707 * doc/extend.texi (Deprecated Features): Remove
1708 -ffriend-injection.
1709 (Backwards Compatibility): Likewise.
1710 * doc/invoke.texi (C++ Language Options): Likewise.
1711 (C++ Dialect Options): Likewise.
1712
1713 2018-05-03 Jakub Jelinek <jakub@redhat.com>
1714
1715 PR target/85530
1716 * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
1717 _mm512_mask_mullox_epi64): New intrinsics.
1718
1719 2018-05-03 Tom de Vries <tom@codesourcery.com>
1720
1721 PR testsuite/85106
1722 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1723 dump files): Add offload-tree.
1724
1725 2018-05-03 Richard Biener <rguenther@suse.de>
1726
1727 PR tree-optimization/85615
1728 * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
1729 to loops not nested in BBs loop father to avoid creating multi-entry
1730 loops.
1731
1732 2018-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1733
1734 PR tree-optimization/70291
1735 * tree-complex.c (expand_complex_libcall): Add type, inplace_p
1736 arguments. Change return type to tree. Emit libcall as a new
1737 statement rather than replacing existing one when inplace_p is true.
1738 (expand_complex_multiplication_components): New function.
1739 (expand_complex_multiplication): Expand floating-point complex
1740 multiplication using the above.
1741 (expand_complex_division): Rename inner_type parameter to type.
1742 Update expand_complex_libcall call-site.
1743 (expand_complex_operations_1): Update expand_complex_multiplication
1744 and expand_complex_division call-sites.
1745
1746 2018-05-02 Jakub Jelinek <jakub@redhat.com>
1747
1748 PR target/85582
1749 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1750 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1751 *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
1752 the highest significant bit of the shift count mask is clear. In
1753 check whether and[sq]i3 is needed verify that all significant bits
1754 of the shift count other than the highest are set.
1755
1756 2018-05-02 Tom de Vries <tom@codesourcery.com>
1757
1758 PR libgomp/82428
1759 * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
1760 * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
1761 (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
1762 * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
1763 (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
1764 * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
1765 __builtin_goacc_parlevel_size.
1766
1767 2018-05-02 Richard Biener <rguenther@suse.de>
1768
1769 PR tree-optimization/85597
1770 * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
1771 do not use split vect_get_vec_defs call but call vect_get_slp_defs
1772 directly.
1773
1774 2018-05-02 Tom de Vries <tom@codesourcery.com>
1775
1776 PR testsuite/85106
1777 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1778 dump files): Add ltrans-tree.
1779
1780 2018-05-02 Tom de Vries <tom@codesourcery.com>
1781
1782 PR testsuite/85106
1783 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1784 dump files): Add wpa-ipa.
1785
1786 2018-05-02 Segher Boessenkool <segher@kernel.crashing.org>
1787
1788 * config.gcc (powerpc*-*-*): Remove paired.h. Unsupport the
1789 powerpc*-*-linux*paired* target.
1790 * config/rs6000/750cl.h: Delete.
1791 * config/rs6000/paired.h: Delete.
1792 * config/rs6000/paired.md: Delete.
1793 * config/rs6000/predicates.md (easy_vector_constant): Remove paired
1794 float support.
1795 * config/rs6000/rs6000-builtin.def: Remove paired float support.
1796 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
1797 comment. Remove paired float support.
1798 * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
1799 * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
1800 VECTOR_PAIRED.
1801 * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
1802 paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
1803 declarations.
1804 * config/rs6000/rs6000.c: Remove paired float support.
1805 (paired_expand_vector_init, paired_expand_vector_move,
1806 paired_emit_vector_compare, paired_emit_vector_cond_expr,
1807 (paired_expand_lv_builtin, paired_expand_stv_builtin,
1808 paired_expand_builtin, paired_expand_predicate_builtin,
1809 paired_init_builtins): Delete.
1810 * config/rs6000/rs6000.h: Remove paired float support.
1811 * config/rs6000/rs6000.md: Remove paired float support.
1812 (move_from_CR_ov_bit): Delete.
1813 * config/rs6000/rs6000.opt (mpaired): Delete.
1814 * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
1815 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
1816
1817 2018-05-02 Richard Biener <rguenther@suse.de>
1818
1819 PR middle-end/85567
1820 * gimplify.c (gimplify_save_expr): When in SSA form allow
1821 SAVE_EXPRs to compute to SSA vars.
1822
1823 2018-05-02 Jakub Jelinek <jakub@redhat.com>
1824
1825 PR target/85582
1826 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1827 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1828 *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
1829 clobber operands[2], instead use a new pseudo. Formatting fixes.
1830
1831 2018-05-02 Richard Sandiford <richard.sandiford@linaro.org>
1832
1833 PR tree-optimization/85586
1834 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
1835 exit early for statements in the same group if the accesses are
1836 not strided.
1837
1838 2018-05-02 Tom de Vries <tom@codesourcery.com>
1839
1840 PR lto/85451
1841 * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
1842 error message.
1843
1844 2018-05-01 Marc Glisse <marc.glisse@inria.fr>
1845
1846 PR tree-optimization/85143
1847 * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
1848
1849 2018-05-01 Tom de Vries <tom@codesourcery.com>
1850
1851 PR lto/85451
1852 * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
1853 not found" error message.
1854
1855 2018-05-01 Tom de Vries <tom@codesourcery.com>
1856
1857 PR other/83786
1858 * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
1859 * vec.c (test_ordered_remove_if): New function.
1860 (vec_c_tests): Call test_ordered_remove_if.
1861 * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
1862 * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
1863 * tree-vect-patterns.c (vect_pattern_recog_1): Use
1864 VEC_ORDERED_REMOVE_IF.
1865
1866 2018-05-01 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1867
1868 PR tree-optimization/82665
1869 * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
1870 pointer subtraction where arguments come from a memchr call.
1871
1872 2018-05-01 Jakub Jelinek <jakub@redhat.com>
1873
1874 * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
1875 --push-state --as-needed and --pop-state instead of --as-needed and
1876 --no-as-needed if ld supports it.
1877 * configure: Regenerated.
1878
1879 PR web/85578
1880 * doc/install.texi2html: Replace _002d with - and _002a with * in
1881 generated html files using sed.
1882
1883 2018-04-30 David Malcolm <dmalcolm@redhat.com>
1884
1885 PR c++/85523
1886 * gcc-rich-location.c (blank_line_before_p): New function.
1887 (use_new_line): New function.
1888 (gcc_rich_location::add_fixit_insert_formatted): New function.
1889 * gcc-rich-location.h
1890 (gcc_rich_location::add_fixit_insert_formatted): New function.
1891
1892 2018-04-30 David Malcolm <dmalcolm@redhat.com>
1893
1894 * selftest.c (assert_streq): Rename "expected" and "actual" to
1895 "val1" and "val2". Extend NULL-handling to cover both inputs
1896 symmetrically, while still requiring both to be non-NULL for a pass.
1897 * selftest.h (assert_streq): Rename "expected" and "actual" to
1898 "val1" and "val2".
1899 (ASSERT_EQ): Likewise.
1900 (ASSERT_EQ_AT): Likewise.
1901 (ASSERT_KNOWN_EQ): Likewise.
1902 (ASSERT_KNOWN_EQ_AT): Likewise.
1903 (ASSERT_NE): Likewise.
1904 (ASSERT_MAYBE_NE): Likewise.
1905 (ASSERT_MAYBE_NE_AT): Likewise.
1906 (ASSERT_STREQ): Likewise. Clarify that both must be non-NULL for
1907 the assertion to pass.
1908 (ASSERT_STREQ_AT): Likewise.
1909
1910 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
1911
1912 * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
1913 interaction with -pie.
1914
1915 2018-04-30 David Malcolm <dmalcolm@redhat.com>
1916
1917 * selftest.h: Fix alphabetization of per-source-file selftest
1918 declarations.
1919
1920 2018-04-30 Jason Merrill <jason@redhat.com>
1921
1922 PR c++/61982 - dead stores to destroyed objects.
1923 * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
1924 of clobber.
1925
1926 2018-04-30 Jason Merrill <jason@redhat.com>
1927
1928 * tree.c (build_clobber): New.
1929 * tree.h: Declare it.
1930 * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
1931
1932 2018-04-30 David Malcolm <dmalcolm@redhat.com>
1933
1934 * diagnostic-show-locus.c (layout::layout): Update for
1935 location_get_source_line returning a char_span.
1936 (struct char_span): Move to input.h.
1937 (struct correction): Update for fields in char_span becoming
1938 private.
1939 (struct source_line): Update for location_get_source_line
1940 returning a char_span.
1941 (layout::print_line): Likewise.
1942 * edit-context.c (edited_file::print_content): Likewise.
1943 (edited_file::print_diff_hunk): Likewise.
1944 (edited_file::print_run_of_changed_lines): Likewise.
1945 (edited_file::get_num_lines): Likewise.
1946 (edited_line::edited_line): Likewise.
1947 * final.c (asm_show_source): Likewise.
1948 * input.c (location_get_source_line): Convert return type
1949 from const char * to char_span, losing the final "line_len"
1950 param.
1951 (dump_location_info): Update for the above.
1952 (get_substring_ranges_for_loc): Likewise. Use a char_span
1953 when handling the literal within the line.
1954 (test_reading_source_line): Update for location_get_source_line
1955 returning a char_span.
1956 * input.h (class char_span): Move here from
1957 diagnostic-show-locus.c, converting from a struct to a class.
1958 Make data members private.
1959 (char_span::operator bool): New.
1960 (char_span::length): New.
1961 (char_span::get_buffer): New.
1962 (char_span::operator[]): New.
1963 (char_span::subspan): Make const.
1964 (char_span::xstrdup): New.
1965 (location_get_source_line): Convert return type from const char *
1966 to char_span, losing the final "line_size" param.
1967
1968 2018-04-30 Jan Hubicka <jh@suse.cz>
1969
1970 * lto-wrapper.c (ltrans_priorities): New static var.
1971 (cmp_priority): New.
1972 (run_gcc): Read priorities and if doing parallel build order
1973 the Makefile by them.
1974
1975 2018-04-30 David Malcolm <dmalcolm@redhat.com>
1976
1977 * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
1978
1979 2018-04-30 Richard Biener <rguenther@suse.de>
1980
1981 * tree-cfg.c (verify_address): Remove base argument, add
1982 flag whether to check TREE_ADDRESSABLE and do that.
1983 (verify_expr): Remove.
1984 (verify_types_in_gimple_reference): Add pieces from verify_expr.
1985 (verify_gimple_assign_single): Likewise.
1986 (verify_gimple_switch): Likewise.
1987 (verify_expr_location_1): Dereference tp once. Add (disabled)
1988 piece from verify_expr.
1989 (verify_gimple_in_cfg): Do not call verify_expr on all ops.
1990
1991 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
1992
1993 * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
1994
1995 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
1996
1997 * config/arc/arc-protos.h (prepare_extend_operands): Remove.
1998 (small_data_pattern): Likewise.
1999 (arc_rewrite_small_data): Likewise.
2000 * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
2001 (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
2002 (get_symbol_alignment): New function.
2003 (legitimate_small_data_address_p): Likewise.
2004 (legitimate_scaled_address): Update, call
2005 legitimate_small_data_address_p.
2006 (output_sdata): New static variable.
2007 (arc_print_operand): Update how we handle small data operands.
2008 (arc_print_operand_address): Likewise.
2009 (arc_legitimate_address_p): Update, use
2010 legitimate_small_data_address_p.
2011 (arc_rewrite_small_data_p): Remove.
2012 (arc_rewrite_small_data_1): Likewise.
2013 (arc_rewrite_small_data): Likewise.
2014 (small_data_pattern): Likewise.
2015 (compact_sda_memory_operand): Update to use
2016 legitimate_small_data_address_p and get_symbol_alignment.
2017 (prepare_move_operands): Don't rewite sdata pattern.
2018 (prepare_extend_operands): Remove.
2019 * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
2020 pattern.
2021 (zero_extendqisi2): Likewise.
2022 (zero_extendhisi2): Likewise.
2023 (extendqihi2): Likewise.
2024 (extendqisi2): Likewise.
2025 (extendhisi2): Likewise.
2026 (addsi3): Likewise.
2027 (subsi3): Likewise.
2028 (andsi3): Likewise.
2029 * config/arc/constraints.md (Usd): Change it to memory constraint.
2030
2031 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
2032
2033 * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
2034 as source of std instructions.
2035 * config/arc/arc.md (movsi_insn): Update pattern predicate to
2036 allow 6-bit constants as source for store instructions.
2037 (movdi_insn): Update instruction pattern to allow 6-bit constants
2038 as source for store instructions.
2039
2040 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
2041
2042 * doc/invoke.texi (-fdebug-types-section): Fix grammar.
2043
2044 2018-04-30 Nathan Sidwell <nathan@acm.org>
2045 Sandra Loosemore <sandra@codesourcery.com>
2046
2047 * dumpfile.c (dump_open): Allow '-' for stdout.
2048 * doc/invoke.texi (Developer Options): Document dump filename
2049 determination early. Document stdin/stdout selection.
2050
2051 2018-04-30 Andrew Sadek <andrew.sadek.se@gmail.com>
2052
2053 Microblaze Target: PIC data text relative
2054
2055 * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
2056 * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
2057 Add declaration.
2058 * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
2059 CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
2060 * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
2061 New addressing mode for data-text relative position indepenedent code.
2062 (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
2063 'ADDRESS_SYMBOLIC_TXT_REL'.
2064 (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
2065 (microblaze_legitimate_pic_operand): Exclude function calls from
2066 pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
2067 (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
2068 addresses cases.
2069 (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
2070 (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
2071 (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
2072 for 'address + offset'.
2073 (microblaze_expand_prologue): Add new function prologue call for
2074 'r20' assignation.
2075 (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
2076 'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
2077 table in case of TARGET_PIC_DATA_TEXT_REL.
2078 (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
2079 * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
2080 Add new macros 'UNSPEC_TEXT',
2081 'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
2082 + exclude function calls from 'UNSPEC_PLT' in case of data text
2083 relative mode.
2084 * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
2085 new target hook for generating address diff vector tables in case of
2086 flag_pic.
2087 * doc/tm.texi : Regenerate.
2088 * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
2089 'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
2090 of addr diff vector generation.
2091 * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
2092 target hook definition.
2093 * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
2094 Add default function for generate_pic_addr_diff_vec -> flag_pic.
2095 * doc/invoke.texi (Add new pic option): Add new microblaze pic
2096 option for data text relative.
2097
2098 2018-04-30 Richard Biener <rguenther@suse.de>
2099
2100 * tree-chrec.h (evolution_function_is_constant_p): Remove
2101 redundant check.
2102 * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
2103
2104 2018-04-30 Richard Biener <rguenther@suse.de>
2105
2106 PR bootstrap/85571
2107 * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
2108
2109 2018-04-30 Richard Biener <rguenther@suse.de>
2110
2111 PR tree-optimization/28364
2112 PR tree-optimization/85275
2113 * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
2114 copying first exit test.
2115
2116 2018-04-28 Mark Wielaard <mark@klomp.org>
2117
2118 * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
2119 dwarf_version >= 5.
2120 (dwarf_AT): Handle DW_AT_addr_base.
2121 (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
2122
2123 2018-04-28 Uros Bizjak <ubizjak@gmail.com>
2124
2125 PR target/84431
2126 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
2127 (*ashl<dwi>3_doubleword_mask_1): Ditto.
2128 (*<shift_insn><dwi>3_doubleword_mask): Ditto.
2129 (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
2130
2131 2018-04-28 Richard Biener <rguenther@suse.de>
2132
2133 * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
2134 (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
2135 to reflect use. Only add interesting stmts.
2136
2137 2018-04-27 Martin Jambor <mjambor@suse.cz>
2138
2139 PR ipa/85549
2140 * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
2141 the jump function allows for passing through aggregate values.
2142
2143 2018-04-27 David Malcolm <dmalcolm@redhat.com>
2144
2145 * input.h (in_system_header_at): Convert from macro to inline
2146 function.
2147 (from_macro_expansion_at): Likewise.
2148 (from_macro_definition_at): Likewise.
2149
2150 2018-04-27 Jeff Law <law@redhat.com>
2151
2152 * config.gcc: Mark tile* targets as deprecated/obsolete.
2153
2154 2018-04-27 Richard Biener <rguenther@suse.de>
2155
2156 * config/aarch64/aarch64.c: Simplify ap.__stack advance and
2157 fix for ILP32.
2158
2159 2018-04-27 Richard Biener <rguenther@suse.de>
2160
2161 * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
2162
2163 2018-04-27 Uros Bizjak <ubizjak@gmail.com>
2164
2165 * config/i386/i386.md (*movti_internal): Substitute Ye constraint
2166 with Yd constraint. Set "preferred_for_speed" attribute from
2167 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
2168 with Yd constraint.
2169 (*movdi_internal): Ditto.
2170 (movti_interunit splitters): Remove
2171 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
2172 (movdi_interunit splitters): Ditto.
2173 * config/i386/constraints.md (Ye): Remove.
2174 (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
2175
2176 2018-04-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2177
2178 PR target/85512
2179 * config/aarch64/constraints.md (Usg): Limit to 31.
2180 (Usj): Limit to 63.
2181
2182 2018-04-27 Jakub Jelinek <jakub@redhat.com>
2183
2184 PR tree-optimization/85529
2185 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
2186 argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
2187 rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
2188 zero extension or masking of the MSB bit.
2189 (optimize_range_tests): Add FIRST_BB argument, pass it through
2190 to optimize_range_tests_var_bound.
2191 (maybe_optimize_range_tests, reassociate_bb): Adjust
2192 optimize_range_tests callers.
2193
2194 2018-04-26 Richard Biener <rguenther@suse.de>
2195 Jakub Jelinek <jakub@redhat.com>
2196
2197 * cgraph.h (symbol_table): Just declare debug method here.
2198 * symtab.c (symbol_table::debug): Define.
2199
2200 2018-04-26 Eric Botcazou <ebotcazou@adacore.com>
2201
2202 * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
2203
2204 2018-04-26 Uros Bizjak <ubizjak@gmail.com>
2205
2206 * config/i386/i386.md ("isa" attribute): Add x64_sse2.
2207 ("enabled" attribute): Handle x64_sse2 "isa" attribute.
2208 (*movdi_internal): Substitute Yi and Yj constraint with x
2209 and Ym and Yn constraint with y constraint. Update "isa"
2210 attribute and set "preferred_for_speed" attribute from
2211 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
2212 (*movsi_internal): Ditto.
2213 (*movdf_internal): Ditto.
2214 (*movsf_internal): Ditto.
2215 (*zero_extendsidi2): Ditto.
2216 * config/i386/sse.md (vec_set<mode>_0): Ditto.
2217 (sse2_loadld): Ditto.
2218 (*vec_extract<ssevecmodelower>_0): Ditto.
2219 (*vec_extractv4si_0_zext_sse4): Ditto.
2220 (vec_concatv2di): Ditto.
2221 (*vec_dup<mode>): Ditto.
2222 * config/i386/mmx.md (*mov<mode>_internal): Ditto.
2223 * config/i386/constraints.md (Yi): Remove.
2224 (Yj): Remove.
2225 (Ym): Remove.
2226 (Yn): Remove.
2227
2228 2018-04-26 Nathan Sidwell <nathan@acm.org>
2229
2230 * dumpfile.c (dump_open): New.
2231 (dump_open_alternate_stream, dump_start, dump_begin): Call it.
2232 (dump_finish): Detect stdio/stderr by value not name.
2233
2234 2018-04-26 Jonathan Wakely <jwakely@redhat.com>
2235
2236 * doc/invoke.texi (-Wreturn-type): Document default status for C++.
2237
2238 2018-04-26 Tom de Vries <tom@codesourcery.com>
2239
2240 PR target/84952
2241 * config/nvptx/nvptx.c (verify_neutering_jumps)
2242 (verify_neutering_labels): New function
2243 (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
2244
2245 2018-04-26 Tom de Vries <tom@codesourcery.com>
2246
2247 PR target/84025
2248 * config/nvptx/nvptx.c (needs_neutering_p): New function.
2249 (nvptx_single): Use needs_neutering_p to skip over insns that do not
2250 need neutering.
2251
2252 2018-04-26 Richard Biener <rguenther@suse.de>
2253 Tom de Vries <tom@codesourcery.com>
2254
2255 PR lto/85422
2256 * lto-streamer-out.c (output_function): Fixup loops if required to match
2257 discovery done in the reader.
2258
2259 2018-04-26 Richard Biener <rguenther@suse.de>
2260
2261 PR tree-optimization/85116
2262 * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
2263 have a loop exit from the single latch predecessor. Remove
2264 case of header with just condition.
2265 (ch_base::copy_headers): Exclude infinite loops from any
2266 processing.
2267 (pass_ch::execute): Record exits.
2268
2269 2018-04-26 Richard Biener <rguenther@suse.de>
2270
2271 * tree-vect-data-refs.c (vect_get_data_access_cost): Get
2272 prologue cost vector and pass it to vect_get_load_cost.
2273 (vect_get_peeling_costs_all_drs): Likewise.
2274 (vect_peeling_hash_get_lowest_cost): Likewise.
2275 (vect_enhance_data_refs_alignment): Likewise.
2276
2277 2018-04-26 Richard Biener <rguenther@suse.de>
2278
2279 PR middle-end/85450
2280 * tree-cfg.c (verify_gimple_assign_unary): Restore proper
2281 checking of integer<->pointer conversions.
2282 * omp-expand.c (expand_omp_for_static_nochunk): Avoid
2283 sign-/zero-extending pointer types.
2284 (expand_omp_for_static_chunk): Likewise.
2285
2286 2018-03-22 Hans-Peter Nilsson <hp@axis.com>
2287 Jean Lee <xiaoyur347@gmail.com>
2288
2289 * config/mips/mips.c (mips_asan_shadow_offset): New function.
2290 (TARGET_ASAN_SHADOW_OFFSET): Define.
2291 * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
2292 true for -fsanitize=address.
2293
2294 2018-04-25 Mark Wielaard <mark@klomp.org>
2295
2296 * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
2297 shorter ones.
2298
2299 2018-04-25 Jakub Jelinek <jakub@redhat.com>
2300
2301 * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
2302 than "alu", remove explicit "memory" and "imm_disp" attributes.
2303 (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
2304
2305 PR middle-end/85414
2306 * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
2307 case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
2308 gen_lowpart_no_emit.
2309
2310 2018-04-25 Sebastian Peryt <sebastian.peryt@intel.com>
2311
2312 PR target/85473
2313 * config/i386/i386.c (ix86_expand_builtin): Change memory
2314 operand to XI, extend p0 to Pmode.
2315 * config/i386/i386.md: Change unspec volatile and operand
2316 1 mode to XI, change operand 0 mode to P.
2317
2318 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2319
2320 * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
2321 GET_MODE_MASK before any checking.
2322 (nds32_can_use_bset_p): Likewise.
2323 (nds32_can_use_btgl_p): Likewise.
2324
2325 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2326
2327 * config/nds32/nds32-doubleword.md: New define_split pattern for
2328 illegal register number.
2329
2330 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2331
2332 * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
2333
2334 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2335
2336 * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
2337
2338 2018-04-25 Richard Biener <rguenther@suse.de>
2339
2340 * lto-streamer.h (LTO_major_version): Bump to 8.
2341
2342 2018-04-25 Jakub Jelinek <jakub@redhat.com>
2343
2344 * BASE-VER: Set to 9.0.0.
2345
2346 2018-04-24 Segher Boessenkool <segher@kernel.crashing.org>
2347
2348 * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
2349 in __abskf2 and __powikf2.
2350
2351 2018-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2352
2353 PR target/85512
2354 * config/aarch64/constraints.md (Usg, Usj): New constraints.
2355 * config/aarch64/iterators.md (cmode_simd): New mode attribute.
2356 * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
2357 Use the above on operand 2. Reindent.
2358 (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
2359
2360 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
2361
2362 PR target/85485
2363 * common/config/i386/i386-common.c (ix86_handle_option): Don't
2364 handle OPT_mcet.
2365 * config/i386/i386.opt (mcet): Removed.
2366 * doc/install.texi: Remove -mcet documentation.
2367 * doc/invoke.texi: Likewise.
2368
2369 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
2370
2371 PR target/85485
2372 * doc/install.texi: Remove -mcet from bootstrap-cet.
2373
2374 2018-04-24 Jakub Jelinek <jakub@redhat.com>
2375
2376 PR target/85511
2377 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
2378 __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
2379 if TARGET_64BIT.
2380
2381 PR target/85503
2382 * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
2383 const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
2384 containing a CONST_VECTOR.
2385
2386 2018-04-24 Cesar Philippidis <cesar@codesourcery.com>
2387
2388 * doc/install.texi: Update newlib dependency for nvptx.
2389
2390 2018-04-24 Jakub Jelinek <jakub@redhat.com>
2391
2392 PR target/85508
2393 * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
2394 instead of INTVAL when shifting x left.
2395
2396 2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
2397
2398 PR tree-optimization/85478
2399 * tree-vect-loop.c (vect_analyze_loop_2): Do not call
2400 vect_grouped_store_supported for single element vectors.
2401
2402 2018-04-24 Richard Biener <rguenther@suse.de>
2403
2404 PR target/85491
2405 * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
2406 load cost increase to the case of non-constant step.
2407
2408 2018-04-24 Jakub Jelinek <jakub@redhat.com>
2409
2410 PR target/84828
2411 * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
2412 destination if any_malformed_asm.
2413
2414 2018-04-23 Eric Botcazou <ebotcazou@adacore.com>
2415
2416 PR middle-end/85496
2417 * expr.c (store_field): In the bitfield case, if the value comes from
2418 a function call and is returned in registers by means of a PARALLEL,
2419 do not change the mode of the temporary unless BLKmode and VOIDmode.
2420
2421 2018-04-23 Andrey Belevantsev <abel@ispras.ru>
2422
2423 PR rtl-optimization/85423
2424 * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
2425 dependencies to debug insns when the previous insn is non-debug.
2426
2427 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
2428
2429 * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
2430 enums into a single definition.
2431 (fls): Fix predicates and printing.
2432 (seti): Likewise.
2433
2434 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
2435
2436 * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
2437 * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
2438 and short u6 immediate.
2439 (check_if_valid_sleep_operand): Remove.
2440 * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
2441
2442 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2443
2444 * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
2445 flag_always_save_lp condition.
2446 * config/nds32/nds32.opt (malways-save-lp): New option.
2447
2448 2018-04-22 Shiva Chen <shiva0217@gmail.com>
2449
2450 * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
2451 * config/nds32/nds32.c (nds32_use_load_post_increment): New.
2452 * config/nds32/nds32.h
2453 (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
2454 (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
2455
2456 2018-04-22 Shiva Chen <shiva0217@gmail.com>
2457
2458 * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
2459 * config/nds32/nds32.c (nds32_ls_333_p): Remove.
2460
2461 2018-04-22 Shiva Chen <shiva0217@gmail.com>
2462 Chung-Ju Wu <jasonwucj@gmail.com>
2463
2464 * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
2465 Declare.
2466 * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
2467 * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
2468
2469 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2470
2471 * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
2472
2473 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2474
2475 * config/nds32/nds32-protos.h (nds32_data_alignment,
2476 nds32_local_alignment): Declare.
2477 * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
2478 nds32_local_alignment): New functions.
2479 (TARGET_CONSTANT_ALIGNMENT): Define.
2480 * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
2481
2482 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2483
2484 * config/nds32/nds32.c
2485 (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
2486 (TARGET_MODES_TIEABLE_P): Likewise.
2487
2488 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2489
2490 * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
2491 level Ofast and Og.
2492
2493 2018-04-22 Monk Chiang <sh.chiang04@gmail.com>
2494 Chung-Ju Wu <jasonwucj@gmail.com>
2495
2496 * config/nds32/constants.md (unspec_volatile_element): Add enum values
2497 for unaligned access.
2498 * config/nds32/nds32-intrinsic.c: Implementation of expanding
2499 unaligned access.
2500 * config/nds32/nds32-intrinsic.md: Likewise.
2501 * config/nds32/nds32_intrinsic.h: Likewise.
2502 * config/nds32/nds32.h (nds32_builtins): Likewise.
2503 * config/nds32/nds32.opt (munaligned-access): New option.
2504 * config/nds32/nds32.c (nds32_asm_file_start): Display
2505 flag_unaligned_access status.
2506
2507 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
2508
2509 * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
2510 -mno-relax is present.
2511 * config/riscv/linux.h (LINK_SPEC): Ditto.
2512
2513 2018-04-20 Martin Sebor <msebor@redhat.com>
2514
2515 PR c/85365
2516 * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
2517 for null pointers.
2518 (gimple_fold_builtin_stxcpy_chk): Same.
2519 * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
2520
2521 2018-04-20 Michael Meissner <meissner@linux.ibm.com>
2522
2523 PR target/85456
2524 * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
2525 __powikf2 when long double is IEEE 128-bit.
2526
2527 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
2528
2529 * config/riscv/riscv.c (riscv_first_stack_step): Round up min
2530 step to make sure stack always aligned.
2531
2532 2018-04-20 Carl Love <cel@us.ibm.com>
2533
2534 PR target/83402
2535 * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
2536 size check for arg0.
2537
2538 2018-04-20 Nathan Sidwell <nathan@codesourcery.com>
2539 Tom de Vries <tom@codesourcery.com>
2540
2541 PR target/85445
2542 * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
2543 Emit insns for calls too.
2544 (nvptx_find_par): Always look for worker-level predecessor insn.
2545 (nvptx_propagate): Add is_call parm, return bool. Copy frame for
2546 calls.
2547 (nvptx_vpropagate, nvptx_wpropagate): Adjust.
2548 (nvptx_process_pars): Propagate frames for calls.
2549
2550 2018-04-20 H.J. Lu <hongjiu.lu@intel.com>
2551
2552 PR target/85469
2553 * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
2554 Removed.
2555 (OPTION_MASK_ISA_IBT_UNSET): Likewise.
2556 (ix86_handle_option): Don't handle OPT_mibt.
2557 * config/i386/cet.h: Check __CET__ instead of __IBT__ and
2558 __SHSTK__.
2559 * config/i386/driver-i386.c (host_detect_local_cpu): Remove
2560 has_ibt and ibt.
2561 * config/i386/i386-c.c (ix86_target_macros_internal): Don't
2562 check OPTION_MASK_ISA_IBT nor flag_cf_protection.
2563 (ix86_target_macros): Define __CET__ with flag_cf_protection
2564 for -fcf-protection.
2565 * config/i386/i386.c (isa2_opts): Remove -mibt.
2566 * config/i386/i386.h (TARGET_IBT): Removed.
2567 (TARGET_IBT_P): Likewise.
2568 (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
2569 * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
2570 * config/i386/i386.opt (mcet): Update help message.
2571 (mshstk): Likewise.
2572 (mibt): Removed.
2573 * doc/invoke.texi: Remove -mibt. Document __CET__. Document
2574 -mcet as an alias for -mshstk.
2575
2576 2018-04-20 Richard Biener <rguenther@suse.de>
2577
2578 PR middle-end/85475
2579 * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
2580 complexity by forcing a single use of the multiply operand.
2581
2582 2018-04-20 Martin Jambor <mjambor@suse.cz>
2583
2584 ipa/85449
2585 * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
2586 recursion dependency to only apply to non-clones.
2587
2588 2018-04-20 Martin Jambor <mjambor@suse.cz>
2589
2590 ipa/85447
2591 * ipa-cp.c (create_specialized_node): Check that clones of
2592 self-recursive edges exist during IPA-CP.
2593
2594 2018-04-19 Toon Moene <toon@moene.org>
2595
2596 * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
2597 by -O3.
2598
2599 2018-04-19 Jakub Jelinek <jakub@redhat.com>
2600
2601 PR tree-optimization/85467
2602 * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
2603 VECTOR_TYPE_P macro. If type is vector type, VIEW_CONVERT_EXPR the
2604 VECTOR_CST element to type.
2605
2606 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
2607
2608 PR target/85397
2609 * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
2610 * config/i386/i386.md (builtin_setjmp_setup): Removed.
2611 (builtin_longjmp): Likewise.
2612 (save_stack_nonlocal): New pattern.
2613 (restore_stack_nonlocal): Likewise.
2614
2615 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
2616
2617 PR target/85404
2618 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
2619 Replace ASM_OUTPUT_LABEL with fprintf.
2620
2621 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
2622
2623 PR target/85417
2624 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
2625 Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
2626 * config/i386/i386-c.c (ix86_target_macros_internal): Also
2627 define __IBT__ and __SHSTK__ for -fcf-protection.
2628 * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
2629 TARGET_IBT.
2630 (ix86_trampoline_init): Likewise.
2631 (x86_output_mi_thunk): Likewise.
2632 (ix86_notrack_prefixed_insn_p): Likewise.
2633 (ix86_option_override_internal): Don't disallow -fcf-protection.
2634 * config/i386/i386.md (rdssp<mode>): Also enable for
2635 -fcf-protection.
2636 (incssp<mode>): Likewise.
2637 (nop_endbr): Likewise.
2638 * config/i386/i386.opt (mcet): Change help message to built-in
2639 functions only.
2640 (mibt): Likewise.
2641 (mshstk): Likewise.
2642 * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
2643 on -fcf-protection. Change -mcet, -mibt and -mshstk to only
2644 enable CET built-in functions.
2645
2646 2018-04-19 Sebastian Peryt <sebastian.peryt@intel.com>
2647
2648 * common/config/i386/i386-common.c
2649 (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
2650 OPTION_MASK_ISA_MOVDIRI_UNSET,
2651 OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
2652 (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
2653 * config.gcc (movdirintrin.h): New header.
2654 * config/i386/cpuid.h (bit_MOVDIRI,
2655 bit_MOVDIR64B): New bits.
2656 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
2657 and -mmvodir64b.
2658 * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
2659 (VOID, PVOID, PCVOID)): New function types.
2660 * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
2661 __builtin_ia32_directstoreu_u64,
2662 __builtin_ia32_movdir64b): New builtins.
2663 * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
2664 * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
2665 and -mmovdiri.
2666 (ix86_valid_target_attribute_inner_p): Ditto.
2667 (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
2668 and VOID_FTYPE_PUNSIGNED_UNSIGNED.
2669 (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
2670 * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
2671 TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
2672 * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
2673 (movdiri<mode>, movdir64b_<mode>): New.
2674 * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
2675 * config/i386/immintrin.h: Include movdirintrin.h.
2676 * config/i386/movdirintrin.h: New file.
2677 * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
2678
2679 2018-04-19 Richard Biener <rguenther@suse.de>
2680
2681 PR middle-end/85455
2682 * cfg.c (clear_bb_flags): When loop state says we have
2683 marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
2684
2685 2018-04-19 Richard Biener <rguenther@suse.de>
2686
2687 PR tree-optimization/84737
2688 * tree-vect-data-refs.c (vect_copy_ref_info): New function
2689 copying restrict info.
2690 (vect_setup_realignment): Use it.
2691 * tree-vectorizer.h (vect_copy_ref_info): Declare.
2692 * tree-vect-stmts.c (vectorizable_store): Copy ref info from
2693 the first DR to all generated stores.
2694 (vectorizable_load): Likewise for loads.
2695
2696 2018-04-19 Jakub Jelinek <jakub@redhat.com>
2697
2698 PR tree-optimization/85446
2699 * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
2700 the integral and pointer types to have the same precision.
2701
2702 * doc/install.texi: Document --disable-cet being the default and
2703 --enable-cet=auto.
2704
2705 2018-04-18 Martin Liska <mliska@suse.cz>
2706
2707 * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
2708 style.
2709
2710 2018-04-18 Martin Liska <mliska@suse.cz>
2711
2712 Revert
2713 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
2714
2715 PR ipa/83983
2716 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
2717 arguments if they are comparable.
2718
2719 2018-04-18 Martin Liska <mliska@suse.cz>
2720
2721 Revert
2722 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
2723
2724 PR lto/84805
2725 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
2726 incomplete types.
2727
2728 2018-04-18 H.J. Lu <hongjiu.lu@intel.com>
2729
2730 PR target/85388
2731 * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
2732 ENDBR after calling __morestack.
2733
2734 2018-04-18 David Malcolm <dmalcolm@redhat.com>
2735
2736 PR jit/85384
2737 * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
2738 by using gcc_base_ver to generate a gcc_driver_version, and use
2739 it when generating GCC_DRIVER_NAME.
2740 * configure: Regenerate.
2741
2742 2018-04-18 Jakub Jelinek <jakub@redhat.com>
2743
2744 PR target/81084
2745 * config.gcc: Obsolete powerpc*-*-*spe*.
2746
2747 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2748
2749 PR debug/84637
2750 * dbxout.c (dbxout_int): Perform negation in unsigned int type.
2751 (stabstr_D): Change type of unum from unsigned int to
2752 unsigned HOST_WIDE_INT. Perform negation in unsigned HOST_WIDE_INT
2753 type.
2754
2755 2018-04-17 Jim Wilson <jimw@sifive.com>
2756
2757 PR 84856
2758 * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
2759 RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
2760 Set arg_pointer_offset after using pretend_args_size.
2761
2762 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2763
2764 PR rtl-optimization/85431
2765 * dse.c (record_store): Ignore zero width stores.
2766
2767 PR sanitizer/85230
2768 * asan.c (handle_builtin_stack_restore): Adjust comment. Emit
2769 __asan_allocas_unpoison call and last_alloca_addr = new_sp before
2770 __builtin_stack_restore rather than after it.
2771 * builtins.c (expand_asan_emit_allocas_unpoison): Pass
2772 arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
2773 argument instead of virtual_dynamic_stack_rtx.
2774
2775 2018-04-17 Kelvin Nilsen <kelvin@gcc.gnu.org>
2776
2777 * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
2778 New prototype.
2779 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2780 Add note to error message to explain internal mapping of overloaded
2781 built-in function name to non-overloaded built-in function name.
2782 * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
2783 function.
2784
2785 2018-04-17 Michael Meissner <meissner@linux.vnet.ibm.com>
2786
2787 PR target/85424
2788 * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
2789 where the inputs overlap with the output.
2790
2791 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2792
2793 * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
2794 (=v, v) alternative and explicit "memory" attribute.
2795 (vec_extract_lo_<mode><mask_name>): Likewise. Also add
2796 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2797 attributes.
2798 (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
2799 "sselog1" type instead of "sselog".
2800 (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
2801 "sselog". Remove explicit "memory" attribute.
2802 (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
2803 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2804 attributes.
2805 (vec_extract_hi_v32hi): Merge all alternatives into one, use
2806 "sselog1" type instead of "sselog". Remove explicit "memory"
2807 attribute.
2808 (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
2809 use "sselog1" type instead of "sselog". Remove explicit "memory"
2810 attribute.
2811 (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
2812 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2813 attributes.
2814 (vec_extract_hi_v64qi): Merge all alternatives into one, use
2815 "sselog1" type instead of "sselog". Remove explicit "memory"
2816 attribute.
2817 (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
2818 use "sselog1" type instead of "sselog". Remove explicit "memory"
2819 attribute.
2820
2821 PR target/85430
2822 * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
2823
2824 PR middle-end/85414
2825 * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
2826 on a SUBREG.
2827
2828 2018-04-17 Martin Jambor <mjambor@suse.cz>
2829
2830 PR ipa/85421
2831 * ipa-cp.c (create_specialized_node): Call
2832 expand_all_artificial_thunks if necessary.
2833
2834 2018-04-17 Martin Liska <mliska@suse.cz>
2835
2836 PR lto/85405
2837 * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
2838 in message, remote space in between '_G' and '('.
2839
2840 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2841
2842 PR target/85281
2843 * config/i386/sse.md (reduces<mode><mask_scalar_name>,
2844 avx512f_vmcmp<mode>3<round_saeonly_name>,
2845 avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
2846 avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
2847 avx512f_rndscale<mode><round_saeonly_name>,
2848 avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
2849 avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
2850 Use %<iptr>2 instead of %2 for -masm=intel.
2851 (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
2852 avx512f_vcvttss2usi<round_saeonly_name>,
2853 avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
2854 -masm=intel.
2855 (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
2856 avx512f_vcvttsd2usi<round_saeonly_name>,
2857 avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
2858 Use %q1 instead of %1 for -masm=intel.
2859 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
2860 avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
2861 of %3 for -masm=intel.
2862 (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
2863 -masm=intel.
2864 (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
2865 -masm=intel.
2866 (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
2867 -masm=intel.
2868 (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
2869 %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
2870 %g1.
2871 (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
2872 -masm=intel.
2873 (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
2874 %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
2875 %g1 and one with %0 and %1.
2876 (avx512er_vmrcp28<mode><round_saeonly_name>,
2877 avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
2878 %1 for -masm=intel.
2879 (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
2880 avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
2881 avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
2882 of %0 and %{%4%} for -masm=intel.
2883 (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
2884 avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
2885 avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
2886 order of %0 and %{%5%}%{z%} for -masm=intel.
2887
2888 2018-04-17 Jan Hubicka <jh@suse.cz>
2889
2890 PR lto/85405
2891 * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
2892
2893 2018-04-17 Martin Liska <mliska@suse.cz>
2894
2895 PR ipa/85329
2896 * multiple_target.c (create_dispatcher_calls): Set apostrophes
2897 for target_clone error message. Make default implementation
2898 clone to be a local declaration.
2899 (separate_attrs): Add new argument and check for an empty
2900 string.
2901 (expand_target_clones): Handle it.
2902 (ipa_target_clone): Make redirection just for target_clones
2903 functions.
2904
2905 2018-04-16 Cesar Philippidis <cesar@codesourcery.com>
2906 Tom de Vries <tom@codesourcery.com>
2907
2908 PR middle-end/84955
2909 * omp-expand.c (expand_oacc_for): Add dummy false branch for
2910 tiled basic blocks without omp continue statements.
2911
2912 2018-04-16 Aaron Sawdey <acsawdey@linux.ibm.com>
2913
2914 PR target/83660
2915 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
2916 vec_extract expression as having side effects to make sure it gets
2917 a cleanup point.
2918
2919 2018-04-16 H.J. Lu <hongjiu.lu@intel.com>
2920
2921 PR target/85403
2922 * config/i386/i386.c (get_builtin_code_for_version): Check
2923 error_mark_node.
2924
2925 2018-04-16 Olga Makhotina <olga.makhotina@intel.com>
2926
2927 PR target/84331
2928 * gcc/config.gcc: Support "skylake".
2929 * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
2930 PROCESSOR_SKYLAKE.
2931 * gcc/config/i386/i386.c (m_SKYLAKE): Define.
2932 (processor_target_table): Add "skylake".
2933 (ix86_option_override_internal): Add "skylake".
2934 (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
2935 PROCESSOR_CANNONLAKE.
2936 (get_builtin_code_for_version): Fix priority for
2937 PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
2938 PROCESSOR_SKYLAKE-AVX512.
2939 * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
2940 (processor_type): Add PROCESSOR_SKYLAKE.
2941
2942 2018-04-16 Paolo Carlini <paolo.carlini@oracle.com>
2943 Jason Merrill <jason@redhat.com>
2944
2945 PR c++/85112
2946 * convert.c (convert_to_integer_1): Use direct recursion for
2947 enumeral types and types with a precision less than the number
2948 of bits in their mode.
2949
2950 2018-04-16 Julia Koval <julia.koval@intel.com>
2951
2952 PR target/84413
2953 * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
2954 X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
2955
2956 2018-04-14 Segher Boessenkool <segher@kernel.crashing.org>
2957
2958 PR target/85293
2959 * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
2960 * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
2961 and -mno-direct-move.
2962
2963 2018-04-13 Paul A. Clarke <pc@us.ibm.com>
2964
2965 PR target/83402
2966 * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
2967 Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
2968 Ensure negative shifts result in {0}.
2969
2970 2018-04-13 Vladimir Makarov <vmakarov@redhat.com>
2971
2972 PR rtl-optimization/79916
2973 * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
2974 regs (if any) to define how to gnerate SD moves when LRA is in
2975 progress.
2976
2977 2018-04-13 Jakub Jelinek <jakub@redhat.com>
2978
2979 PR rtl-optimization/85393
2980 * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
2981 * except.c (expand_dw2_landing_pad_for_region): Make static.
2982 * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
2983 a label and unconditional jump to old_bb, rather than
2984 expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
2985 basic block.
2986
2987 PR rtl-optimization/85376
2988 * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
2989 zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
2990 instead of a specific value.
2991
2992 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
2993 Bin Cheng <bin.cheng@arm.com>
2994
2995 PR tree-optimization/82965
2996 PR tree-optimization/83991
2997 * cfgloopanal.c (expected_loop_iterations_unbounded): Add
2998 by_profile_only parameter.
2999 * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
3000 information if the loop was predicted to iterate too many times.
3001 * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
3002
3003 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
3004
3005 PR lto/71991
3006 * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
3007 always inline.
3008
3009 2018-04-13 Martin Liska <mliska@suse.cz>
3010 Jakub Jelinek <jakub@redhat.com>
3011
3012 PR middle-end/81657
3013 * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
3014 * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
3015 * builtins.c (expand_builtin_memory_copy_args): Use
3016 BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
3017 handle dest_addr == pc_rtx.
3018
3019 2018-04-12 Segher Boessenkool <segher@kernel.crashing.org>
3020
3021 PR target/85291
3022 * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
3023 asked to not generate direct moves.
3024 (fix_trunc<mode>si2_stfiwx): Similar.
3025 (fix_trunc<mode>si2_internal): Similar.
3026
3027 2018-04-12 Jakub Jelinek <jakub@redhat.com>
3028
3029 PR debug/83157
3030 * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
3031 * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
3032 lookup if dest in some wider mode is known to be const0_rtx and
3033 if so, record permanent equivalence for it to be ZERO_EXTEND of
3034 the narrower mode destination.
3035
3036 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
3037
3038 * lto-streamer-out.c (output_function): Revert 259346.
3039 * omp-expand.c (expand_oacc_for): Likewise.
3040
3041 2018-04-12 Alexander Monakov <amonakov@ispras.ru>
3042
3043 PR rtl-optimization/85354
3044 * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
3045 * sel-sched.c (sel_global_init): ... here.
3046
3047 2018-04-12 Eric Botcazou <ebotcazou@adacore.com>
3048
3049 PR target/85238
3050 * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
3051 * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
3052 mode for PE-COFF targets.
3053 * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
3054 (i386_pe_asm_lto_end): Likewise.
3055 * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
3056 (TARGET_ASM_LTO_END): Likewise.
3057 * config/i386/winnt.c (saved_debug_info_level): New static variable.
3058 (i386_pe_asm_lto_start): New function.
3059 (i386_pe_asm_lto_end): Likewise.
3060
3061 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
3062 Richard Biener <rguenther@suse.de>
3063
3064 PR middle-end/84955
3065 * lto-streamer-out.c (output_function): Fix CFG loop state before
3066 streaming out.
3067 * omp-expand.c (expand_oacc_for): Handle calls to internal
3068 functions like regular functions.
3069
3070 2018-04-12 Richard Biener <rguenther@suse.de>
3071
3072 PR lto/85371
3073 * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
3074 for the early LTO debug to properly generate references to it
3075 during DIE emission. Do not re-use that for the skeleton for
3076 split-dwarf.
3077 (dwarf2out_early_finish): Likewise.
3078
3079 2018-04-12 Jakub Jelinek <jakub@redhat.com>
3080
3081 PR target/85328
3082 * config/i386/sse.md
3083 (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
3084 <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
3085 vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
3086 vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
3087 and output is a reg, avoid creating invalid lowpart subreg, but
3088 instead split into a 512-bit move. Don't split if not AVX512VL,
3089 input is xmm16+ reg and output is a mem.
3090 (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
3091 vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
3092 xmm16+ reg and output is a mem.
3093
3094 2018-04-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
3095
3096 * config/s390/s390.c (s390_output_indirect_thunk_function): Check
3097 also for flag_dwarf2_cfi_asm.
3098
3099 2018-04-12 Jakub Jelinek <jakub@redhat.com>
3100
3101 PR rtl-optimization/85342
3102 * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
3103 a bool scalar var inside of the loop instead. Don't try to update
3104 recog_data.operand after failed apply_change_group.
3105
3106 2018-04-12 Tom de Vries <tom@codesourcery.com>
3107
3108 PR target/85296
3109 * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
3110 (nvptx_assemble_decl_begin): Add undefined param. Declare undefined
3111 array with flexible array member as array without given dimension.
3112 (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
3113 argument for undefined param to true.
3114
3115 2018-04-11 Aaron Sawdey <acsawdey@linux.ibm.com>
3116
3117 PR target/85321
3118 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
3119 -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
3120 from PowerPC section.
3121 * config/rs6000/sysv4.opt (mcall-): Improve help text.
3122 * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
3123 help text that is too long.
3124 * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
3125 help text that is too long.
3126 * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
3127 help text that is too long.
3128
3129 2018-04-11 Uros Bizjak <ubizjak@gmail.com>
3130
3131 * config/alpha/alpha.md (stack_probe_internal): Rename
3132 from "probe_stack". Update all callers.
3133
3134 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
3135
3136 PR rtl-optimization/84566
3137 * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
3138 sched_macro_fuse_insns.
3139
3140 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
3141
3142 PR target/84301
3143 * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
3144 (compute_block_dependences): ... from here.
3145
3146 2018-04-11 Jakub Jelinek <jakub@redhat.com>
3147
3148 PR tree-optimization/85331
3149 * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
3150 from int to HOST_WIDE_INT.
3151
3152 2018-04-11 Martin Jambor <mjambor@suse.cz>
3153
3154 PR ipa/84149
3155 * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
3156 (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
3157 not the same as the source val.
3158 (cgraph_edge_brings_value_p): New parameter.
3159 (gather_edges_for_value): Pass destination value to
3160 cgraph_edge_brings_value_p.
3161 (perhaps_add_new_callers): Likewise.
3162 (get_info_about_necessary_edges): Likewise and exclude values brought
3163 only by self-recursive edges.
3164 (create_specialized_node): Redirect only clones of self-calling edges.
3165 (+self_recursive_pass_through_p): New function.
3166 (find_more_scalar_values_for_callers_subset): Use it.
3167 (find_aggregate_values_for_callers_subset): Likewise.
3168 (known_aggs_to_agg_replacement_list): Removed.
3169 (decide_whether_version_node): Re-calculate known constants for all
3170 remaining context clones.
3171
3172 2018-04-11 Richard Biener <rguenther@suse.de>
3173
3174 PR lto/85339
3175 * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
3176 from early DWARF output.
3177 (dwarf2out_early_finish): Output line info unconditionally into
3178 early DWARF and add reference to it.
3179
3180 2018-04-11 Jakub Jelinek <jakub@redhat.com>
3181
3182 PR target/85281
3183 * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
3184 (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
3185 other than V2DFmode using iptr mode attribute.
3186 (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
3187
3188 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
3189
3190 PR rtl-optimization/84659
3191 * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
3192
3193 2018-04-11 Jakub Jelinek <jakub@redhat.com>
3194
3195 PR debug/85302
3196 * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
3197 SIZEP is NULL.
3198 (output_loc_list): Pass address of a dummy size variable even in the
3199 locview handling loop.
3200 (index_location_lists): Add comment on why skip_loc_list_entry can't
3201 call size_of_locs.
3202
3203 2018-04-11 Thomas Preud'homme <thomas.preudhomme@arm.com>
3204
3205 PR target/85261
3206 * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
3207 into register.
3208
3209 2018-04-10 Aaron Sawdey <acsawdey@linux.ibm.com>
3210
3211 PR target/85321
3212 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
3213 -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
3214 and -mstring-compare-inline-limit.
3215
3216 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
3217
3218 PR target/85287
3219 * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
3220 for stack clash protection in a register whenever we need it to be in
3221 a register.
3222
3223 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
3224
3225 * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
3226 Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
3227
3228 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
3229
3230 PR target/85321
3231 * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
3232 the help text.
3233 (mlong-double-): Ditto.
3234 * config/rs6000/sysv4.opt (msdata=): Ditto.
3235 (mtls-size=): Ditto.
3236
3237 2018-04-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
3238
3239 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
3240 erroneous entries for
3241 "vector int vec_ldl (int, long int *)", and
3242 "vector unsigned int vec_ldl (int, unsigned long int *)".
3243 Add comments and entries for
3244 "vector bool char vec_ldl (int, bool char *)",
3245 "vector bool short vec_ldl (int, bool short *)",
3246 "vector bool int vec_ldl (int, bool int *)",
3247 "vector bool long long vec_ldl (int, bool long long *)",
3248 "vector pixel vec_ldl (int, pixel *)",
3249 "vector long long vec_ldl (int, long long *)",
3250 "vector unsigned long long vec_ldl (int, unsigned long long *)".
3251 * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
3252 type tree bool_long_long_type_node and correct definition of
3253 bool_V2DI_type_node to make reference to this new type tree.
3254 (rs6000_mangle_type): Replace erroneous reference to
3255 bool_long_type_node with bool_long_long_type_node.
3256 * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
3257 comments to emphasize sign distinctions for char and int types and
3258 replace RS6000_BTI_bool_long constant with
3259 RS6000_BTI_bool_long_long constant. Also add comment to restrict
3260 use of RS6000_BTI_pixel.
3261 (bool_long_type_node): Remove this macro definition.
3262 (bool_long_long_type_node): New macro definition
3263
3264 2018-04-10 Jakub Jelinek <jakub@redhat.com>
3265
3266 PR rtl-optimization/85300
3267 * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
3268 into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
3269 simplify_unary_operation fails.
3270
3271 2018-04-10 Martin Liska <mliska@suse.cz>
3272
3273 * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
3274 cgraph_edge and ipa_ref.
3275
3276 2018-04-10 Jakub Jelinek <jakub@redhat.com>
3277
3278 PR target/85177
3279 PR target/85255
3280 * config/i386/sse.md
3281 (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
3282 computation of the VEC_MERGE selector from mask.
3283 (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
3284 Fix decoding of the VEC_MERGE selector into mask.
3285
3286 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
3287
3288 PR tree-optimization/85286
3289 * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
3290
3291 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
3292
3293 * final.c (final_1): Set insn_last_address as well as
3294 insn_current_address.
3295
3296 2018-04-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3297
3298 PR target/85173
3299 * explow.c (emit_stack_probe): Call validize_mem on memory location
3300 before passing it to gen_probe_stack. Create address operand and
3301 legitimize it for the probe_stack_address case.
3302
3303 2018-04-09 Jan Hubicka <jh@suse.cz>
3304
3305 PR lto/85078
3306 * ipa-devirt.c (rebuild_type_inheritance-hash): New.
3307 * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
3308 * tree.c (free_lang_data_in_type): Fix handling of binfos;
3309 walk basetypes.
3310 (free_lang_data): Rebuild type inheritance graph.
3311
3312 2018-04-09 Martin Sebor <msebor@redhat.com>
3313
3314 * invoke.texi (-finline-small-functions): Mention other optimization
3315 options.
3316 (-findirect-inlining, -fpartial-inlining): Same.
3317 (-finline-functions-called-once): Same.
3318 (-freorder-blocks-and-partition): Same.
3319
3320 2018-04-09 Jan Hubicka <jh@suse.cz>
3321
3322 PR rtl/84058
3323 * cfgcleanup.c (try_forward_edges): Do not give up on crossing
3324 jumps; choose last target that matches the criteria (i.e.
3325 no partition changes for non-crossing jumps).
3326 * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
3327 support for redirecting crossing jumps to non-crossing.
3328
3329 2018-04-09 Alexey Brodkin <abrodkin@synopsys.com>
3330
3331 * config/arc/arc.c (arc_expand_prologue): Set stack usage info
3332 also for naked functions.
3333
3334 2018-04-09 Claudiu Zissulescu <claziss@synopsys.com>
3335
3336 * config/arc/arc.md (add_shift): New pattern.
3337 (add_shift2): Likewise.
3338 (sub_shift): Likewise.
3339 (sub_shift_cmp0_noout): Likewise.
3340 (compare_si_ashiftsi): Likewise.
3341 (xbfu_cmp0_noout): New combine pattern.
3342 (xbfu_cmp0"): Likewise.
3343 (movsi_set_cc_insn): Place the predicable variant first.
3344 (commutative_binary_cmp0_noout): Remove clobber.
3345 (commutative_binary_cmp0): New pattern.
3346 (noncommutative_binary_cmp0): Likewise.
3347 (noncommutative_binary_cmp0_noout): Likewise.
3348 (noncommutative_binary_comparison_result_used): Removed.
3349 (rsub_cmp0): New pattern.
3350 (rsub_cmp0_noout): Likewise.
3351 (extzvsi): Changed, keep only meaningful variants.
3352 (SQH, SEZ): New iterators.
3353 (SQH_postfix): New mode attribute.
3354 (SEZ_prefix): New code attribute.
3355 (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
3356 (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
3357 * config/arc/predicates.md (cc_set_register): Use CC_REG instead
3358 of numerical value.
3359 (noncommutative_operator): Check the availability of barrel
3360 shifter option.
3361
3362 2018-04-09 Richard Biener <rguenther@suse.de>
3363
3364 PR tree-optimization/85284
3365 * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
3366 Only use the niter constraining form of simple_iv when the exit
3367 is always executed.
3368
3369 2018-04-09 Tom de Vries <tom@codesourcery.com>
3370
3371 PR target/84041
3372 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
3373 (define_expand "*memory_barrier"): New define_expand.
3374 (define_insn "memory_barrier"): New insn.
3375
3376 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3377
3378 PR rtl-optimization/80463
3379 PR rtl-optimization/83972
3380 PR rtl-optimization/83480
3381
3382 * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
3383 correct producer for the insn.
3384 (tidy_control_flow): Fixup seqnos in case of debug insns.
3385
3386 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3387
3388 PR rtl-optimization/83913
3389
3390 * sel-sched-ir.c (merge_expr_data): Choose the middle between two
3391 different sched-times when merging exprs.
3392
3393 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3394
3395 PR rtl-optimization/83962
3396
3397 * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
3398 tidy_fallthru_edge and tidy_control_flow.
3399
3400 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3401
3402 PR rtl-optimization/83530
3403
3404 * sel-sched.c (force_next_insn): New global variable.
3405 (remove_insn_for_debug): When force_next_insn is true, also leave only
3406 next insn in the ready list.
3407 (sel_sched_region): When the region wasn't scheduled, make another pass
3408 over it with force_next_insn set to 1.
3409
3410 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
3411
3412 * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
3413 into tm_file.
3414 * config/nds32/constants.md (unspec_volatile_element): Add enum values
3415 for interrupt control.
3416 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
3417 functions for interrupt control.
3418 * config/nds32/nds32-intrinsic.md: Likewise.
3419 * config/nds32/nds32_intrinsic.h: Likewise.
3420 * config/nds32/nds32.h (nds32_builtins): Likewise.
3421
3422 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
3423
3424 * config/nds32/nds32.c (nds32_init_machine_status,
3425 nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
3426 strict_aligned_p field.
3427 (nds32_expand_to_rtl_hook): New function.
3428 (TARGET_EXPAND_TO_RTL_HOOK): Define.
3429 * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
3430
3431 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3432 Chung-Ju Wu <jasonwucj@gmail.com>
3433
3434 * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
3435 * config/nds32/nds32-n7.md: New file.
3436 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
3437 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
3438 pipeline.
3439 * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
3440 * config/nds32/nds32.md (pipeline_model): Add n7.
3441 * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
3442 * config/nds32/pipelines.md: Include n7 settings.
3443
3444 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3445 Chung-Ju Wu <jasonwucj@gmail.com>
3446
3447 * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
3448 * config/nds32/nds32-e8.md: New file.
3449 * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
3450 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
3451 pipeline.
3452 * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
3453 * config/nds32/nds32.md (pipeline_model): Add e8.
3454 * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
3455 * config/nds32/pipelines.md: Include e8 settings.
3456
3457 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3458 Chung-Ju Wu <jasonwucj@gmail.com>
3459
3460 * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
3461 * config/nds32/nds32-n8.md: New file.
3462 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
3463 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
3464 pipeline.
3465 * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
3466 * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
3467 * config/nds32/nds32.md (pipeline_model): Add n8.
3468 * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
3469 * config/nds32/pipelines.md: Include n8 settings.
3470
3471 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3472 Chung-Ju Wu <jasonwucj@gmail.com>
3473
3474 * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
3475 * config/nds32/nds32-n9-2r1w.md: New file.
3476 * config/nds32/nds32-n9-3r2w.md: New file.
3477 * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
3478 nds32_register_ports): New or modify for cpu n9.
3479 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
3480 pipeline.
3481 * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
3482 * config/nds32/nds32-utils.c: New file.
3483 * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
3484 TARGET_MUL_SLOW): Define.
3485 * config/nds32/nds32.md (pipeline_model): New attribute.
3486 * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
3487 New options that support cpu n9.
3488 * config/nds32/pipelines.md: Include n9 settings.
3489 * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
3490
3491 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
3492
3493 * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
3494 information if necessary.
3495 (output_cond_branch_compare_zero): Likewise.
3496 * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
3497 (nds32_target_alignment): Refine for alignment.
3498 * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
3499 (FUNCTION_BOUNDARY): Modify.
3500 * config/nds32/nds32.md (call_internal, call_value_internal): Consider
3501 align case.
3502 * config/nds32/nds32.opt (malways-align, malign-functions): New.
3503
3504 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
3505
3506 * config/nds32/constants.md (unspec_volatile_element): Add values for
3507 TLB operation and data prefetch.
3508 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
3509 functions for TLB operation and data prefetch.
3510 * config/nds32/nds32-intrinsic.md: Likewise.
3511 * config/nds32/nds32_intrinsic.h: Likewise.
3512 * config/nds32/nds32.c (nds32_dpref_names): Likewise.
3513 (nds32_print_operand): Likewise.
3514 * config/nds32/nds32.h (nds32_builtins): Likewise.
3515
3516 2018-04-07 Thomas Koenig <tkoenig@gcc.gnu.org>
3517 Andrew Pinski <pinsika@gcc.gnu.org>
3518
3519 PR middle-end/82976
3520 * match.pd: Use constant_boolean_node of correct type instead of
3521 boolean_true_node or boolean_false_node for simplifying
3522 pointer comparisons to zero.
3523
3524 2018-04-07 Jakub Jelinek <jakub@redhat.com>
3525
3526 PR tree-optimization/80021
3527 * tree.c (verify_type_variant): Make error call in verify_variant_match
3528 translatable and remove final full stop.
3529
3530 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3531
3532 * config/nds32/constants.md (unspec_volatile_element): Add
3533 UNSPEC_VOLATILE_EH_RETURN.
3534 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
3535 nds32_output_stack_pop): Support dwarf exception handling process.
3536 * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
3537 * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
3538 exception handling process.
3539 (nds32_compute_stack_frame): Likewise.
3540 (nds32_return_addr_rtx): Likewise.
3541 (nds32_initial_elimination_offset): Likewise.
3542 (nds32_expand_prologue): Likewise.
3543 (nds32_expand_epilogue): Likewise.
3544 (nds32_dynamic_chain_address): New function.
3545 * config/nds32/nds32.h (machine_function): Add fields for dwarf
3546 exception handling.
3547 (DYNAMIC_CHAIN_ADDRESS): Define.
3548 (EH_RETURN_DATA_REGNO): Define.
3549 (EH_RETURN_STACKADJ_RTX): Define.
3550 * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
3551 patterns for dwarf exception handling.
3552
3553 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3554
3555 * config/nds32/nds32.h: Clean up obsolete macros.
3556
3557 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3558
3559 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3560 Add enum values for particular instructions.
3561 * config/nds32/nds32-intrinsic.c: Implementation of expanding
3562 particular intrinsic functions.
3563 * config/nds32/nds32-intrinsic.md: Likewise.
3564 * config/nds32/nds32_intrinsic.h: Likewise.
3565 * config/nds32/nds32.h (nds32_builtins): Likewise.
3566 * config/nds32/nds32.md (type): Add pbsad and pbsada.
3567 (btst, ave): New patterns for particular instructions.
3568
3569 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3570
3571 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3572 Add enum values for atomic load/store and memory sync.
3573 * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
3574 and memory sync.
3575 * config/nds32/nds32-intrinsic.md: Likewise.
3576 * config/nds32/nds32_intrinsic.h: Likewise.
3577 * config/nds32/nds32.h (nds32_builtins): Likewise.
3578
3579 2018-04-07 Jakub Jelinek <jakub@redhat.com>
3580
3581 PR tree-optimization/85257
3582 * fold-const.c (native_encode_vector): If not all elts could fit
3583 and off is -1, return 0 rather than offset.
3584 * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
3585 (offseti - offset2) / BITS_PER_UNIT as 4th argument to
3586 native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't
3587 adjust buffer in native_interpret_expr call.
3588
3589 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3590
3591 * config/nds32/constants.md (unspec_volatile_element): Add cache
3592 control enum values.
3593 * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
3594 * config/nds32/nds32-intrinsic.md: Add cache control patterns.
3595 * config/nds32/nds32.c (nds32_cctl_names): New.
3596 (nds32_print_operand): Handle cache control register names.
3597 * config/nds32/nds32.h (nds32_builtins): New enum values.
3598 * config/nds32/nds32_intrinsic.h: Add cache control enum types and
3599 macros.
3600 * config/nds32/nds32.md (type): Add mmu.
3601 * config/nds32/pipelines.md (simple_insn): Add mmu.
3602
3603 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3604
3605 * config/nds32/nds32.md (type): Remove call.
3606 * config/nds32/pipelines.md (simple_insn): Likewise.
3607
3608 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3609
3610 * config/nds32/constants.md (unspec_volatile_element): Add
3611 UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
3612 UNSPEC_VOLATILE_FMFCFG.
3613 * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
3614 description for fmfcfg and fmfcsr.
3615 (bdesc_1arg): Add fmtcsr.
3616 (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
3617 (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
3618 * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
3619 unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
3620 unspec_fmfcfg): New patterns.
3621 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
3622 NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
3623 NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
3624 * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
3625 __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
3626 __nds32__fmfcfg): Define.
3627
3628 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3629
3630 * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
3631 intrinsic register names.
3632 * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
3633 intrinsic register enum values and macros.
3634
3635 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3636
3637 * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
3638 for load/store addressing form.
3639 (nds32_print_operand_address): Likewise.
3640
3641 2018-04-06 Eric Botcazou <ebotcazou@adacore.com>
3642
3643 PR target/85196
3644 * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
3645 based on LABEL_REF. Remove useless assertion.
3646 (pic_address_needs_scratch): Fix formatting.
3647 (sparc_legitimize_pic_address): Minor tweaks.
3648 (sparc_delegitimize_address): Adjust assertion accordingly.
3649 * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
3650 into symbolic_operand.
3651 (movsi_high_pic_label_ref): Likewise.
3652 (movsi_lo_sum_pic_label_ref): Likewise.
3653 (movdi_pic_label_ref): Likewise.
3654 (movdi_high_pic_label_ref): Likewise.
3655 (movdi_lo_sum_pic_label_ref): Likewise.
3656
3657 2018-04-06 Amaan Cheval <amaan.cheval@gmail.com>
3658
3659 * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
3660 custom LIB_SPEC setup.
3661
3662 2018-04-06 Ruslan Bukin <br@bsdpad.com>
3663 Kito Cheng <kito.cheng@gmail.com>
3664
3665 * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
3666 * config/riscv/freebsd.h: New.
3667
3668 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
3669
3670 * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
3671 * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
3672 file.
3673
3674 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
3675 Kito Cheng <kito.cheng@gmail.com>
3676
3677 * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
3678 nds32_output_call, nds32_symbol_binds_local_p): New functions.
3679 * config/nds32/nds32-protos.h (nds32_output_call,
3680 nds32_output_return): Declare.
3681 * config/nds32/nds32.md: Refine all the call and return patterns.
3682
3683 2018-04-06 Jakub Jelinek <jakub@redhat.com>
3684
3685 PR debug/85252
3686 * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
3687 build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
3688
3689 PR rtl-optimization/84872
3690 * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
3691 nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
3692 EDGE_CROSSING edge.
3693
3694 2018-04-06 Tamar Christina <tamar.christina@arm.com>
3695
3696 * expr.c (copy_blkmode_to_reg): Revert 254862.
3697 * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
3698
3699 2018-04-06 Richard Biener <rguenther@suse.de>
3700
3701 PR middle-end/85244
3702 * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
3703 after seeing a component reference with an adjacent field. Treat
3704 refs to arrays at struct end of external decls similar to
3705 refs to unconstrained commons.
3706
3707 2018-04-06 Jakub Jelinek <jakub@redhat.com>
3708
3709 PR sanitizer/85213
3710 * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
3711 look through SAVE_EXPRs with non-side-effects argument. Adjust
3712 recursive calls.
3713 (fold_comparison): Adjust twoval_comparison_p caller, don't handle
3714 save_p here.
3715
3716 2018-04-06 Richard Biener <rguenther@suse.de>
3717
3718 PR middle-end/85180
3719 * alias.c (find_base_term): New wrapper around find_base_term
3720 unwinding CSELIB_VAL_PTR changes.
3721 (find_base_term): Do not restore CSELIB_VAL_PTR during the
3722 recursion.
3723
3724 2018-04-06 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
3725
3726 * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
3727 instructions.
3728 * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
3729 constant definitions.
3730 ("nop"): lr 0,0 -> nopr r0
3731 ("nop_lr0", "nop_lr1"): New insn definitions.
3732
3733 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
3734
3735 * config/nds32/nds32.md (*stack_push, *stack_pop): Use
3736 NDS32_V3PUSH_AVAILABLE_P macro.
3737
3738 2018-04-06 Monk Chiang <sh.chiang04@gmail.com>
3739 Chung-Ju Wu <jasonwucj@gmail.com>
3740
3741 * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
3742 (nds32*-*-*): Add float and fpu_config into supported_defaults.
3743 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
3744 Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
3745 * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
3746 UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
3747 * config/nds32/constraints.md: New constraints and checking for hard
3748 float configuration.
3749 * config/nds32/iterators.md: New mode iterator and attribute for hard
3750 float configuration.
3751 * config/nds32/nds32-doubleword.md: Use hard float alternatives and
3752 patterns.
3753 * config/nds32/nds32-fpu.md: New file.
3754 * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
3755 deal with hard float code generation.
3756 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
3757 ARCH_V3S.
3758 (abi_type, float_reg_number): New enum type.
3759 * config/nds32/nds32-predicates.c: New predicates for hard float.
3760 * config/nds32/nds32-protos.h: Declare functions for hard float.
3761 * config/nds32/nds32.c: Implementation for hard float configuration.
3762 * config/nds32/nds32.h: Definitions for hard float configuration.
3763 * config/nds32/nds32.md: Include hard float machine description and
3764 modify patterns for hard float configuration.
3765 * config/nds32/nds32.opt: New options for hard float configuration.
3766 * config/nds32/predicates.md: New predicates for hard float
3767 configuration.
3768
3769 2018-04-06 Kuan-Lin Chen <kuanlinchentw@gmail.com>
3770
3771 * common/config/nds32/nds32-common.c
3772 (nds32_option_optimization_table): Enable -mreleax-hint by default.
3773
3774 2018-04-05 Jakub Jelinek <jakub@redhat.com>
3775
3776 PR middle-end/85195
3777 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
3778 CONSTRUCTOR_ELT (ctor, ...)->value.
3779
3780 2018-04-05 Uros Bizjak <ubizjak@gmail.com>
3781
3782 PR target/85193
3783 * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
3784
3785 2018-04-05 Tom de Vries <tom@codesourcery.com>
3786
3787 PR target/85204
3788 * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
3789 cond jump.
3790
3791 2018-04-05 Shiva Chen <shiva0217@gmail.com>
3792 Kito Cheng <kito.cheng@gmail.com>
3793
3794 * config/nds32/constraints.md (U33): Fine-tune checking condition.
3795 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
3796 * config/nds32/nds32.h (nds32_16bit_address_type): Add
3797 ADDRESS_POST_MODIFY_LO_REG_IMM3U.
3798
3799 2018-04-05 Shiva Chen <shiva0217@gmail.com>
3800 Kito Cheng <kito.cheng@gmail.com>
3801
3802 * config/nds32/constraints.md (Ufe): New memory constraint.
3803 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
3804 nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
3805 * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
3806 operands.
3807 * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
3808 * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
3809
3810 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3811
3812 * config/nds32/nds32.md: Use optimize_size in the condition for
3813 alu-shift instructions.
3814
3815 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3816
3817 * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
3818
3819 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3820
3821 * config/nds32/nds32.md (negsi2): Refine pattern.
3822
3823 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
3824 Chung-Ju Wu <jasonwucj@gmail.com>
3825
3826 * config/nds32/iterators.md (shift_rotate): New code iterator.
3827 (shift): New code attribute.
3828 * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
3829 * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
3830 * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
3831 * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
3832 bit-wise operations.
3833 (andsi3, *andsi3): Ditto.
3834 (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
3835 (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
3836 (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
3837 * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
3838 nds32_ior_operand, nds32_xor_operand): New predicates.
3839
3840 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3841
3842 * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
3843 (addsi3, subsi3): ... this.
3844
3845 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3846
3847 * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
3848
3849 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3850
3851 * config/nds32/nds32.md: Adjust indention.
3852
3853 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
3854
3855 * config/nds32/nds32.md (feature): New attribute.
3856
3857 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3858
3859 * config/nds32/nds32.md (subtype): New attribute.
3860
3861 2018-04-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
3862
3863 PR target/85203
3864 * config/arm/arm-builtins.c (arm_expand_builtin): Change
3865 expansion to perform a bitwise AND of the argument followed by a
3866 boolean negation of the result.
3867
3868 2018-04-04 Peter Bergner <bergner@vnet.ibm.com>
3869
3870 PR rtl-optimization/84878
3871 * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
3872 the basic block. Assert the use reference is not artificial and that
3873 it has an associated insn.
3874
3875 2018-04-04 Michael Matz <matz@suse.de>
3876
3877 * builtins.c (compute_objsize): Pass correct operand
3878 to array_at_struct_end_p.
3879
3880 2018-04-04 Richard Biener <rguenther@suse.de>
3881
3882 PR lto/85176
3883 * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
3884 from contexts for DINFO_LEVEL_TERSE and below.
3885
3886 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
3887
3888 * config/nds32/nds32-doubleword.md (move_<mode>): Require
3889 resiter_operand condition.
3890 * config/nds32/nds32.md (*move<mode>): Ditto.
3891
3892 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
3893 Monk Chiang <sh.chiang04@gmail.com>
3894
3895 * config/nds32/nds32.md (movmisalign<mode>): New pattern.
3896
3897 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
3898
3899 * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
3900
3901 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
3902 Kito Cheng <kito.cheng@gmail.com>
3903
3904 * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
3905 nds32_cond_code_str, output_cond_branch,
3906 output_cond_branch_compare_zero, nds32_expand_cbranch,
3907 nds32_expand_cstore, nds32_expand_movcc,
3908 nds32_output_cbranchsi4_equality_zero,
3909 nds32_output_cbranchsi4_equality_reg,
3910 nds32_output_cbranchsi4_equality_reg_or_const_int,
3911 nds32_output_cbranchsi4_greater_less_zero: New functions.
3912 * config/nds32/nds32-protos.h (nds32_expand_cbranch,
3913 nds32_expand_cstore, nds32_expand_movcc,
3914 nds32_output_cbranchsi4_equality_zero,
3915 nds32_output_cbranchsi4_equality_reg,
3916 nds32_output_cbranchsi4_equality_reg_or_const_int,
3917 nds32_output_cbranchsi4_greater_less_zero): Declare.
3918 * config/nds32/predicates.md (nds32_movecc_comparison_operator,
3919 nds32_rimm11s_operand): New predicates.
3920 * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
3921 * config/nds32/nds32.md: Rewrite all the branch and conditional move
3922 patterns.
3923
3924 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
3925
3926 * config/nds32/nds32-doubleword.md: Refine all the instruction type.
3927 * config/nds32/nds32.md: Ditto.
3928 * config/nds32/pipelines.md: Ditto.
3929
3930 2018-04-04 Richard Biener <rguenther@suse.de>
3931
3932 PR tree-optimization/85168
3933 * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
3934 propagating abnormals.
3935
3936 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
3937
3938 * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
3939
3940 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
3941 Kito Cheng <kito.cheng@gmail.com>
3942
3943 * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
3944 * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
3945 * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
3946 (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
3947 * config/nds32/nds32.md (sibcall_internal): New.
3948 (sibcall_register): Remove.
3949 (sibcall_immediate): Remove.
3950 (sibcall_value_internal): New.
3951 (sibcall_value_register): Remove.
3952 (sibcall_value_immediate): Remove.
3953 * config/nds32/predicates.md (nds32_general_register_operand): New.
3954 (nds32_call_address_operand): New.
3955
3956 2018-04-03 Jakub Jelinek <jakub@redhat.com>
3957
3958 PR rtl-optimization/85167
3959 * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
3960 bb_defs if *split_p, instead preinitialize it to NULL.
3961
3962 PR tree-optimization/85156
3963 * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
3964 evaluating the argument multiple times.
3965
3966 2018-04-03 Bill Schmidt <wschmidt@linux.ibm.com>
3967
3968 * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
3969 than vector.
3970 (_mm_cvtpd_ps): Likewise.
3971 (_mm_cvttpd_epi32): Likewise.
3972 * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
3973 * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
3974 vector, pixel, and bool following altivec.h include.
3975
3976 2018-04-03 Martin Sebor <msebor@redhat.com>
3977
3978 * doc/extend.texi (Common Function Attributes): Clarify.
3979 (const attribute): Likewise.
3980 (pure attribute): Likewise.
3981
3982 2018-04-03 Jakub Jelinek <jakub@redhat.com>
3983
3984 PR target/85169
3985 * config/i386/i386.c (ix86_expand_vector_set): Use
3986 HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix.
3987
3988 2018-04-03 Uros Bizjak <ubizjak@gmail.com>
3989
3990 * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
3991 instructions when changing rounding bits to preserve precision bits
3992 in the x87 control word.
3993
3994 2018-04-03 Martin Liska <mliska@suse.cz>
3995
3996 PR tree-optimization/82491
3997 * rtl.h (strip_offset_and_add): Replace += suboffset with
3998 poly_uint64 () + suboffset.
3999
4000 2018-03-29 Martin Liska <mliska@suse.cz>
4001 Martin Jambor <mjambor@suse.cz>
4002
4003 PR ipa/84947
4004 * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
4005 param_type is not an integral or pointer type.
4006
4007 2018-04-03 Richard Biener <rguenther@suse.de>
4008
4009 * sese.h (recompute_all_dominators): Remove.
4010
4011 2018-04-02 Martin Sebor <msebor@redhat.com>
4012
4013 * doc/invoke.texi (-Wrestrict): Fix typos.
4014
4015 2018-04-02 Jim Wilson <jimw@sifive.com>
4016
4017 * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
4018 * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
4019 (<optab>di3, <optab>si3_extend): Likewise.
4020 (<optab>si3_mask, <optab>si3_mask_1): New.
4021 (<optab>di3_mask, <optab>di3_mask_1): New.
4022 (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
4023 (lshrsi3_zero_extend_1): Use VOIDmode shift count.
4024 * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
4025
4026 2018-04-02 Gerald Pfeifer <gerald@pfeifer.com>
4027
4028 * doc/cpp.texi (Variadic Macros): Fix line continuation in an
4029 example.
4030
4031 2018-04-02 Chung-Ju Wu <jasonwucj@gmail.com>
4032
4033 * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
4034 (nds32_canonicalize_comparison): New function.
4035
4036 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
4037 Kito Cheng <kito.cheng@gmail.com>
4038 Kuan-Lin Chen <kuanlinchentw@gmail.com>
4039
4040 * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
4041 * config/nds32/constants.md (unspec_volatile_element): Add
4042 UNSPEC_VOLATILE_RELAX_GROUP.
4043 * config/nds32/nds32-relax-opt.c: New file.
4044 * config/nds32/nds32-predicates.c
4045 (nds32_symbol_load_store_p): New function.
4046 * config/nds32/nds32-protos.h
4047 (nds32_symbol_load_store_p): Declare function.
4048 (make_pass_nds32_relax_opt): Declare new rtl pass function.
4049 * config/nds32/nds32.c
4050 (nds32_register_pass): New function to register pass.
4051 (nds32_register_passes): New function to register passes.
4052 * config/nds32/nds32.md (relax_group): New pattern.
4053 * config/nds32/nds32.opt (mrelax-hint): New option.
4054 * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
4055
4056 2018-04-01 Kito Cheng <kito.cheng@gmail.com>
4057
4058 * config/nds32/t-nds32: Modify files dependency.
4059
4060 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
4061
4062 * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
4063 (PROFILE_HOOK): Define its implementation.
4064
4065 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
4066
4067 * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
4068 type and 32-bit size.
4069
4070 2018-04-01 Jakub Jelinek <jakub@redhat.com>
4071
4072 PR middle-end/85090
4073 * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
4074 (V_128_256): New mode iterator.
4075 (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
4076 (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
4077 (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
4078 of V.
4079 * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
4080 V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
4081
4082 2018-03-31 Segher Boessenkool <segher@kernel.crashing.org>
4083
4084 PR target/83315
4085 * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
4086 NaN inputs correctly.
4087
4088 2018-03-30 Peter Bergner <bergner@vnet.ibm.com>
4089
4090 PR target/80546
4091 * config/rs6000/vsx.md (??r): New mode attribute.
4092 (*vsx_mov<mode>_64bit): Use it.
4093 (*vsx_mov<mode>_32bit): Likewise.
4094
4095 2018-03-30 Martin Sebor <msebor@redhat.com>
4096
4097 PR tree-optimization/84818
4098 * builtins.c (check_access): Use warning_n.
4099
4100 2018-03-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
4101
4102 PR target/83822
4103 * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
4104 condition.
4105 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
4106 condition.
4107
4108 2018-03-30 Julia Koval <julia.koval@intel.com>
4109
4110 PR target/84413
4111 * x86-tune.def (movx, partial_reg_dependency): Enable for
4112 m_SKYLAKE_AVX512.
4113
4114 2018-03-29 Vladimir Makarov <vmakarov@redhat.com>
4115
4116 PR inline-asm/84985
4117 * lra-constraints.c (process_alt_operands): Move setting
4118 this_alternative_matches below.
4119
4120 2018-03-29 Martin Liska <mliska@suse.cz>
4121
4122 PR lto/84995.
4123 * doc/invoke.texi: Document how LTO works with debug info.
4124 Describe auto-load support of binutils. Mention 'x86-64'
4125 as valid option value of -march option.
4126
4127 2018-03-29 Jakub Jelinek <jakub@redhat.com>
4128
4129 * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
4130
4131 PR c/85094
4132 * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
4133 For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
4134 OEP_NO_HASH_CHECK for recursive call, to avoid exponential
4135 checking.
4136
4137 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
4138
4139 PR target/84912
4140 * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
4141 (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
4142 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
4143 for RS6000_BTM_POWERPC64.
4144 (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
4145 (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
4146 * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
4147 definition.
4148 (DIVDE): Use it.
4149 (DIVDEU): Likewise.
4150
4151 2018-03-28 Carl Love <cel@us.ibm.com>
4152
4153 Revert
4154 2017-09-27 Carl Love <cel@us.ibm.com>
4155
4156 * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
4157 (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
4158 * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
4159 fctiw instruction.
4160
4161 2018-03-28 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
4162
4163 * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
4164 instead of __vector bool.
4165 (_mm_max_pu8): Likewise.
4166 (_mm_min_pi16): Likewise.
4167
4168 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
4169
4170 PR target/84912
4171 * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
4172 (DIVWEUO): Likewise.
4173 (DIVDEO): Likewise.
4174 (DIVDEUO): Likewise.
4175 * config/rs6000/rs6000.c (builtin_function_type): Remove support for
4176 DIVWEUO and DIVDEUO.
4177 * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
4178 (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
4179 (div_extend): Likewise.
4180 * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
4181 builtin function.
4182 (__builtin_divweuo): Likewise.
4183 (__builtin_divdeo): Likewise.
4184 (__builtin_divdeuo): Likewise.
4185
4186 2018-03-28 Jakub Jelinek <jakub@redhat.com>
4187
4188 PR target/85095
4189 * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
4190 *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
4191
4192 PR tree-optimization/82004
4193 * gimple-match-head.c (optimize_pow_to_exp): New function.
4194 * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
4195 Don't fold to exp if optimize_pow_to_exp is false.
4196
4197 2018-03-28 Martin Liska <mliska@suse.cz>
4198
4199 PR other/84819
4200 * calls.c (initialize_argument_information): Fix trailing space.
4201 * common.opt: Fix typo and provide better explanation for
4202 -fsanitize-coverage option.
4203 * config/i386/i386.opt: Fix typo.
4204
4205 2018-03-28 Jakub Jelinek <jakub@redhat.com>
4206 Martin Liska <mliska@suse.cz>
4207
4208 PR sanitizer/85081
4209 * gimplify.c (asan_poison_variable): Don't do the check for
4210 gimplify_omp_ctxp here.
4211 (gimplify_decl_expr): Do it here.
4212 (gimplify_target_expr): Likewise.
4213
4214 2018-03-28 Martin Liska <mliska@suse.cz>
4215
4216 PR target/84988
4217 * config/i386/i386.c (ix86_function_arg_advance): Do not call
4218 chkp_type_bounds_count if MPX is not enabled.
4219
4220 2018-03-27 Chung-Ju Wu <jasonwucj@gmail.com>
4221
4222 * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
4223
4224 2018-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
4225
4226 PR target/84914
4227 * config/rs6000/rs6000.c (create_complex_muldiv): New helper
4228 function to create the function decl for complex long double
4229 multiply and divide for -mabi=ieeelongdouble.
4230 (init_float128_ieee): Call it.
4231
4232 2018-03-27 H.J. Lu <hongjiu.lu@intel.com>
4233
4234 PR target/85044
4235 * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
4236 -fcf-protection=branch -mibt.
4237 * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
4238
4239 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4240
4241 PR target/81863
4242 * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
4243
4244 2018-03-27 Cesar Philippidis <cesar@codesourcery.com>
4245
4246 PR target/85056
4247 * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
4248 extern array declarations.
4249
4250 2018-03-27 Richard Biener <rguenther@suse.de>
4251
4252 PR middle-end/84067
4253 * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
4254 explicit single_use checks.
4255
4256 2018-03-27 Richard Biener <rguenther@suse.de>
4257
4258 PR tree-optimization/85082
4259 * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
4260 Valueize the VUSE.
4261
4262 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4263
4264 * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
4265 * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
4266 Turn on fasynchronous-unwind-tables and funwind-tables.
4267
4268 2018-03-26 Uros Bizjak <ubizjak@gmail.com>
4269
4270 PR target/85073
4271 * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
4272 (*bmi_blsr_<mode>_ccz): Ditto.
4273
4274 2018-03-26 Tom de Vries <tom@codesourcery.com>
4275
4276 PR tree-optimization/85063
4277 * omp-general.c (offloading_function_p): New function. Factor out
4278 of ...
4279 * omp-offload.c (pass_omp_target_link::gate): ... here.
4280 * omp-general.h (offloading_function_p): Declare.
4281 * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
4282 with attribute omp declare target for offloading functions.
4283
4284 2018-03-24 Richard Sandiford <richard.sandiford@linaro.org>
4285
4286 PR tree-optimization/84005
4287 * tree-data-ref.h (get_base_for_alignment): Declare.
4288 * tree-data-ref.c (get_base_for_alignment_1): New function.
4289 (get_base_for_alignment): Likewise.
4290 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
4291 get_base_for_alignment to find a suitable base object, instead
4292 of always using drb->base_address.
4293
4294 2018-03-23 Jakub Jelinek <jakub@redhat.com>
4295
4296 PR inline-asm/85022
4297 * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
4298 known size by default.
4299
4300 2018-03-23 Vladimir Makarov <vmakarov@redhat.com>
4301
4302 PR inline-asm/85030
4303 * lra-constraints.c (process_alt_operands): Don't match BLKmode
4304 and non BLKmode operands.
4305
4306 2018-03-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4307
4308 PR target/85026
4309 * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
4310 Clean up attributes.
4311
4312 2018-03-23 Richard Biener <rguenther@suse.de>
4313
4314 PR debug/85020
4315 * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
4316 we are going to emit early debug for LTO.
4317
4318 2018-03-23 Jakub Jelinek <jakub@redhat.com>
4319
4320 PR inline-asm/85034
4321 * function.c (match_asm_constraints_1): Don't optimize if input
4322 doesn't satisfy general_operand predicate for output's mode.
4323
4324 PR inline-asm/85022
4325 * alias.c (write_dependence_p): Don't require for x_canonicalized
4326 non-VOIDmode if x has VOIDmode.
4327
4328 PR sanitizer/85029
4329 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
4330 just don't try to optimize it rather than assert it never happens.
4331
4332 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
4333
4334 * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
4335 macro expansions for definition of ST_INTERNAL_<mode> and
4336 LD_INTERNAL_<mode> builtins.
4337 * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
4338 Remove prototype.
4339 * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
4340 function.
4341 (altivec_expand_st_builtin): Likewise.
4342 (altivec_expand_builtin): Remove calls to deleted functions.
4343 (rs6000_address_for_altivec): Delete this function.
4344 * config/rs6000/vector.md: Remove expands for
4345 vector_altivec_load_<mode> and vector_altivec_store_<mode>.
4346
4347 2018-03-22 Sudakshina Das <sudi.das@arm.com>
4348
4349 PR target/84826
4350 * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
4351 * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
4352 re-computing once computed.
4353 (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
4354 (arm_init_machine_status): Initialize
4355 machine->static_chain_stack_bytes.
4356
4357 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
4358
4359 PR target/84760
4360 * doc/extend.texi: Add four new prototypes for vec_ld.
4361 * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
4362 definitions for more logical presentation.
4363 * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
4364 entries for V1TI variants of __builtin_altivec_ld builtin.
4365 * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
4366 handling of V1TI variant of LVX icode pattern.
4367 (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
4368 (rs6000_gimple_fold_builtin): Likewise.
4369 (altivec_init_builtins): Add code to define
4370 __builtin_altivec_lvx_v1ti function.
4371
4372 2018-03-22 Jakub Jelinek <jakub@redhat.com>
4373
4374 PR inline-asm/84941
4375 * function.c (match_asm_constraints_1): Don't do the optimization
4376 if input isn't a REG, SUBREG, MEM or constant.
4377
4378 2018-03-22 Tom de Vries <tom@codesourcery.com>
4379
4380 PR tree-optimization/84956
4381 * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
4382 bb_has_abnormal_pred.
4383
4384 2018-03-22 Jakub Jelinek <jakub@redhat.com>
4385
4386 PR sanitizer/85018
4387 * dwarf2asm.c (dw2_output_indirect_constant_1): Set
4388 DECL_INITIAL (decl) to decl at the end.
4389 * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
4390 adjust the comment.
4391
4392 2018-03-21 Joseph Myers <joseph@codesourcery.com>
4393
4394 * doc/extend.texi (__builtin_tgmath): Document when complex
4395 integer types are treated as _Complex _Float64.
4396
4397 2018-03-21 Tom de Vries <tom@codesourcery.com>
4398
4399 * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
4400
4401 2018-03-21 Jakub Jelinek <jakub@redhat.com>
4402
4403 PR tree-optimization/84960
4404 * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
4405 if it is ENTRY block, move them into single succ of ENTRY in that case.
4406
4407 2018-03-21 Richard Sandiford <richard.sandiford@linaro.org>
4408
4409 PR tree-optimization/84811
4410 * poly-int.h (poly_span_traits): Remove the T3 parameter and
4411 promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
4412 (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
4413 (known_subrange_p): Update accordingly. Cast each value involved
4414 in the size comparison, rather than casting the result of the
4415 subtraction.
4416
4417 2018-03-21 Jakub Jelinek <jakub@redhat.com>
4418
4419 PR tree-optimization/84982
4420 * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
4421 by flipping the least significant bit rather than all bits from
4422 bitpos to bitpos + bitsize - 1.
4423
4424 2018-03-21 Nathan Sidwell <nathan@acm.org>
4425
4426 * doc/extend.texi (Deprecated Features): Remove mention of
4427 long-deleted deprecations.
4428
4429 2018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4430
4431 PR jit/84288
4432 * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
4433 * configure: Regenerate.
4434
4435 2018-03-21 Tom de Vries <tom@codesourcery.com>
4436
4437 PR tree-optimization/83126
4438 * tree-parloops.c (num_phis): New function.
4439 (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
4440
4441 2018-03-21 Nathan Sidwell <nathan@acm.org>
4442
4443 * doc/extend.texi (Deprecated Features): Update deprecated flags,
4444 mention anon-struct/union members and trailing attributes.
4445
4446 2018-03-21 Bin Cheng <bin.cheng@arm.com>
4447
4448 PR tree-optimization/84969
4449 * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
4450 builtin memset partitions if they set different rhs values.
4451
4452 2018-03-21 Jakub Jelinek <jakub@redhat.com>
4453
4454 PR rtl-optimization/84989
4455 * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
4456 VEC_DUPLICATE with scalar result mode.
4457
4458 2018-03-21 Martin Liska <mliska@suse.cz>
4459
4460 PR ipa/84963
4461 * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
4462 not intended return statement.
4463
4464 2018-03-21 Martin Liska <mliska@suse.cz>
4465
4466 PR target/84988
4467 * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
4468 (chkp_find_bound_slots_1): Limit number of iterations.
4469
4470 2018-03-20 David H. Gutteridge <dhgutteridge@sympatico.ca>
4471
4472 PR target/84838
4473 * Minor grammar fixes for x86 options.
4474
4475 2018-03-20 Jakub Jelinek <jakub@redhat.com>
4476
4477 PR debug/84875
4478 * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
4479 holding REG_CFA_RESTORE notes, instead turn them into a USE.
4480
4481 2018-03-20 Peter Bergner <bergner@vnet.ibm.com>
4482
4483 PR target/83789
4484 * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
4485 (altivec_lvx_<mode>_1op): Likewise.
4486 (altivec_stvx_<mode>_2op): Likewise.
4487 (altivec_stvx_<mode>_1op): Likewise.
4488 (altivec_lvx_<VM2:mode>): New define_expand.
4489 (altivec_stvx_<VM2:mode>): Likewise.
4490 (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
4491 (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
4492 (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
4493 (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
4494 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
4495 (rs6000_gen_lvx): Likewise.
4496 * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
4497 (altivec_expand_stv_builtin): Likewise.
4498 (altivec_expand_builtin): Likewise.
4499 * config/rs6000/vector.md: Likewise.
4500
4501 2018-03-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4502
4503 PR target/82518
4504 * config/arm/arm.c (arm_array_mode_supported_p): Return false for
4505 BYTES_BIG_ENDIAN.
4506
4507 2018-03-20 Richard Biener <rguenther@suse.de>
4508
4509 PR target/84986
4510 * config/i386/i386.c (ix86_add_stmt_cost): Only cost
4511 sign-conversions as zero, fall back to standard scalar_stmt
4512 cost for the rest.
4513
4514 2018-03-20 Martin Liska <mliska@suse.cz>
4515
4516 PR ipa/84825
4517 * predict.c (rebuild_frequencies): Handle case when we have
4518 PROFILE_ABSENT, but flag_guess_branch_prob is false.
4519
4520 2018-03-20 Jakub Jelinek <jakub@redhat.com>
4521
4522 PR target/84990
4523 * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
4524 flag_section_anchors.
4525 * varasm.c (use_blocks_for_decl_p): Remove hack for
4526 dw2_force_const_mem.
4527
4528 PR target/84845
4529 * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
4530 to ...
4531 (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this. If pseudos can't
4532 be created, use lowpart_subreg of operands[0] rather than operands[0]
4533 itself.
4534 (*aarch64_reg_<mode>3_minus_mask): Rename to ...
4535 (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
4536 (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
4537 and n constraint instead of aarch64_shift_imm_di and Usd.
4538 (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
4539 (*aarch64_<optab>_reg_minus<mode>3): ... this.
4540
4541 2018-03-20 Sudakshina Das <sudi.das@arm.com>
4542
4543 PR target/82989
4544 * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
4545 to favor GPR over NEON registers.
4546 (<shift>di3_neon): Likewise.
4547
4548 2018-03-20 Tom de Vries <tom@codesourcery.com>
4549
4550 PR target/84952
4551 * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
4552 (nvptx_process_pars): Emit bar.sync asap and alap.
4553
4554 2018-03-20 Tom de Vries <tom@codesourcery.com>
4555
4556 PR target/84954
4557 * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
4558 seen_label if seen_label is already set.
4559
4560 2018-03-20 Jakub Jelinek <jakub@redhat.com>
4561
4562 PR target/84945
4563 * config/i386/i386.c (fold_builtin_cpu): For features above 31
4564 use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
4565 Use 1U instead of 1. Formatting fixes.
4566
4567 PR c/84953
4568 * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
4569 instead of TREE_TYPE (s1) for the return value.
4570
4571 2018-03-19 Jakub Jelinek <jakub@redhat.com>
4572
4573 PR tree-optimization/84946
4574 * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
4575 bitsize + bitsize in poly_uint64 rather than poly_int64.
4576
4577 PR sanitizer/78651
4578 * dwarf2asm.c: Include fold-const.c.
4579 (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
4580 of decl rather than decl itself.
4581
4582 PR rtl-optimization/84643
4583 * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
4584
4585 2018-03-19 Maxim Ostapenko <m.ostapenko@samsung.com>
4586
4587 PR sanitizer/78651
4588 * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
4589 calling assemble_variable.
4590
4591 2018-03-19 Sudakshina Das <sudi.das@arm.com>
4592
4593 PR target/81647
4594 * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
4595 instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
4596
4597 2018-03-19 Jim Wilson <jimw@sifive.com>
4598
4599 PR bootstrap/84856
4600 * config/riscv/riscv.c (riscv_function_arg_boundary): Use
4601 PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
4602 (riscv_first_stack_step): Likewise.
4603 (riscv_option_override): Use STACK_BOUNDARY instead of
4604 MIN_STACK_BOUNDARY.
4605 * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
4606 MIN_STACK_BOUNDARY.
4607 (BIGGEST_ALIGNMENT): Set to 128.
4608 (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
4609 (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
4610 STACK_BOUNDARY.
4611
4612 2018-03-19 Richard Biener <rguenther@suse.de>
4613
4614 PR tree-optimization/84933
4615 * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
4616 values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
4617
4618 2018-03-19 Richard Biener <rguenther@suse.de>
4619
4620 PR tree-optimization/84859
4621 * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
4622 (cond_if_else_store_replacement): Perform sinking operation on
4623 single-store BBs regardless of MAX_STORES_TO_SINK setting.
4624 Generalize what a BB with a single eligible store is.
4625
4626 2018-03-19 Richard Biener <rguenther@suse.de>
4627
4628 PR tree-optimization/84929
4629 * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
4630 chrec_is_positive against non-chrec arg.
4631
4632 2018-03-19 Tamar Christina <tamar.christina@arm.com>
4633
4634 PR target/84711
4635 * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
4636
4637 2018-03-18 Martin Liska <mliska@suse.cz>
4638
4639 PR rtl-optimization/84635
4640 * regrename.c (build_def_use): Use matches_mode only when
4641 matches >= 0.
4642
4643 2018-03-18 Richard Sandiford <richard.sandiford@linaro.org>
4644
4645 PR tree-optimization/84913
4646 * tree-vect-loop.c (vectorizable_reduction): Don't try to
4647 vectorize chains of COND_EXPRs.
4648
4649 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
4650
4651 * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
4652
4653 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
4654
4655 * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
4656
4657 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
4658
4659 * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
4660
4661 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
4662 Kito Cheng <kito.cheng@gmail.com>
4663
4664 * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
4665 * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
4666 (nds32_adjust_reg_alloc_order): New function.
4667 * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
4668
4669 2018-03-17 Kito Cheng <kito.cheng@gmail.com>
4670
4671 * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
4672 nds32_print_operand, nds32_print_operand_address): Use
4673 HOST_WIDE_INT_PRINT_DEC instead.
4674
4675 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
4676
4677 * config/nds32/nds32.c (nds32_register_priority): Modify cost.
4678
4679 2018-03-17 Jakub Jelinek <jakub@redhat.com>
4680
4681 PR target/84902
4682 * config/i386/i386.c (initial_ix86_tune_features,
4683 initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
4684 unsigned long long.
4685 (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
4686 to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
4687 rather than 1u << ix86_tune. Formatting fix.
4688 (ix86_option_override_internal): Change ix86_arch_mask from
4689 unsigned int to unsigned HOST_WIDE_INT, initialize to
4690 HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
4691 (ix86_function_specific_restore): Likewise.
4692
4693 2018-03-16 Jakub Jelinek <jakub@redhat.com>
4694
4695 PR target/84899
4696 * postreload.c (reload_combine_recognize_pattern): Perform
4697 INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
4698 truncate_int_for_mode the result for the destination's mode.
4699
4700 PR c/84909
4701 * hsa-gen.c (mem_type_for_type): Fix comment typo.
4702 * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
4703 Likewise.
4704 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
4705 Likewise.
4706
4707 2018-03-16 Vladimir Makarov <vmakarov@redhat.com>
4708
4709 PR target/84876
4710 * lra-assigns.c (lra_split_hard_reg_for): Don't use
4711 regno_allocno_class_array and sorted_pseudos.
4712 * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
4713 insns where regno is used.
4714
4715 2018-03-16 Martin Liska <mliska@suse.cz>
4716
4717 PR ipa/84833
4718 * multiple_target.c (create_dispatcher_calls): Redirect
4719 reference in the symbol table.
4720
4721 2018-03-16 Martin Liska <mliska@suse.cz>
4722
4723 PR ipa/84722
4724 * multiple_target.c (create_dispatcher_calls): Redirect also
4725 an alias.
4726
4727 2018-03-16 Jakub Jelinek <jakub@redhat.com>
4728
4729 PR c++/79937
4730 PR c++/82410
4731 * tree.h (TARGET_EXPR_NO_ELIDE): Define.
4732 * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
4733 TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
4734
4735 2018-03-16 Julia Koval <julia.koval@intel.com>
4736
4737 * doc/invoke.texi (Skylake Server): Add CLWB.
4738 Cannonlake): Remove CLWB.
4739
4740 2018-03-16 Jakub Jelinek <jakub@redhat.com>
4741
4742 PR tree-optimization/84841
4743 * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
4744 1 << 3.
4745 (FLOAT_ONE_CONST_TYPE): Define.
4746 (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
4747 (sort_by_operand_rank): Put entries with higher constant_type last
4748 rather than first to match comments.
4749
4750 2018-03-15 Sandra Loosemore <sandra@codesourcery.com>
4751
4752 * config/nios2/nios2.md (movsi_internal): Fix thinko in
4753 split predicate.
4754
4755 2018-03-15 Jakub Jelinek <jakub@redhat.com>
4756
4757 PR c++/79085
4758 * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
4759 check and use address of target always.
4760
4761 2018-03-15 H.J. Lu <hongjiu.lu@intel.com>
4762
4763 PR target/84574
4764 * config/i386/i386.c (indirect_thunk_needed): Update comments.
4765 (indirect_thunk_bnd_needed): Likewise.
4766 (indirect_thunks_used): Likewise.
4767 (indirect_thunks_bnd_used): Likewise.
4768 (indirect_return_needed): New.
4769 (indirect_return_bnd_needed): Likewise.
4770 (output_indirect_thunk_function): Add a bool argument for
4771 function return.
4772 (output_indirect_thunk_function): Don't generate alias for
4773 function return thunk.
4774 (ix86_code_end): Call output_indirect_thunk_function to generate
4775 function return thunks.
4776 (ix86_output_function_return): Set indirect_return_bnd_needed
4777 and indirect_return_needed instead of indirect_thunk_bnd_needed
4778 and indirect_thunk_needed.
4779
4780 2018-03-15 Olga Makhotina <olga.makhotina@intel.com>
4781
4782 * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
4783 (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
4784 (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
4785
4786 2018-03-15 David Malcolm <dmalcolm@redhat.com>
4787 Paul Hua <paul.hua.gm@gmail.com>
4788
4789 PR c/84852
4790 * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
4791
4792 2018-03-15 Segher Boessenkool <segher@kernel.crashing.org>
4793
4794 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
4795 TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
4796 resp. SFmode cases.
4797
4798 2018-03-15 Tamar Christina <tamar.christina@arm.com>
4799
4800 PR target/84711
4801 * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
4802 instead of GET_MODE_SIZE when comparing Units.
4803
4804 2018-03-15 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
4805
4806 PR target/68256
4807 * varasm.c (hash_section): Return an unchangeble hash value
4808 * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
4809 Return !aarch64_can_use_per_function_literal_pools_p ().
4810
4811 2018-03-15 Jakub Jelinek <jakub@redhat.com>
4812
4813 PR target/84860
4814 * optabs.c (emit_conditional_move): Pass address of cmode's copy
4815 rather than address of cmode as last argument to prepare_cmp_insn.
4816
4817 2018-03-15 Julia Koval <julia.koval@intel.com>
4818
4819 * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
4820 F_AVX512VNNI, F_AVX512BITALG): New.
4821
4822 2018-03-14 John David Anglin <danglin@gcc.gnu.org>
4823
4824 PR target/83451
4825 * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload
4826 insn for floating-point loads and stores.
4827
4828 2018-03-14 Carl Love <cel@us.ibm.com>
4829
4830 * config/rs6000/rs6000-c.c: Add macro definitions for
4831 ALTIVEC_BUILTIN_VEC_PERMXOR.
4832 * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
4833 * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
4834 * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
4835 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
4836 UNSPEC_VPERMXOR.
4837 * config/doc/extend.texi: Add prototypes for vec_permxor.
4838
4839 2018-03-14 David Malcolm <dmalcolm@redhat.com>
4840
4841 PR c/84852
4842 * diagnostic-show-locus.c (class layout_point): Convert m_line
4843 from int to linenum_type.
4844 (line_span::comparator): Use linenum "compare" function when
4845 comparing line numbers.
4846 (test_line_span): New function.
4847 (layout_range::contains_point): Convert param "row" from int to
4848 linenum_type.
4849 (layout_range::intersects_line_p): Likewise.
4850 (layout::will_show_line_p): Likewise.
4851 (layout::print_source_line): Likewise.
4852 (layout::should_print_annotation_line_p): Likewise.
4853 (layout::print_annotation_line): Likewise.
4854 (layout::print_leading_fixits): Likewise.
4855 (layout::annotation_line_showed_range_p): Likewise.
4856 (struct line_corrections): Likewise for field m_row.
4857 (line_corrections::line_corrections): Likewise for param "row".
4858 (layout::print_trailing_fixits): Likewise.
4859 (layout::get_state_at_point): Likewise.
4860 (layout::get_x_bound_for_row): Likewise.
4861 (layout::print_line): Likewise.
4862 (diagnostic_show_locus): Likewise for locals "last_line" and
4863 "row".
4864 (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
4865 * input.c (selftest::test_linenum_comparisons): New function.
4866 (selftest::input_c_tests): Call it.
4867 * selftest.c (selftest::test_assertions): Test ASSERT_GT,
4868 ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
4869 * selftest.h (ASSERT_GT): New macro.
4870 (ASSERT_GT_AT): New macro.
4871 (ASSERT_LT): New macro.
4872 (ASSERT_LT_AT): New macro.
4873
4874 2018-03-14 Segher Boessenkool <segher@kernel.crashing.org>
4875
4876 PR rtl-optimization/84780
4877 * combine.c (distribute_links): Don't make a link based on pc_rtx.
4878
4879 2018-03-14 Martin Liska <mliska@suse.cz>
4880
4881 * tree.c (record_node_allocation_statistics): Use
4882 get_stats_node_kind.
4883 (get_stats_node_kind): New function extracted from
4884 record_node_allocation_statistics.
4885 (free_node): Use get_stats_node_kind.
4886
4887 2018-03-14 Richard Biener <rguenther@suse.de>
4888
4889 * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
4890 that the value-set of ANTIC_IN doesn't grow.
4891
4892 Revert
4893 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
4894 member.
4895 (BB_VISITED_WITH_VISITED_SUCCS): New define.
4896 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
4897
4898 2018-03-14 Julia Koval <julia.koval@intel.com>
4899
4900 * config.gcc (icelake-client, icelake-server): New.
4901 (icelake): Remove.
4902 * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
4903 (initial_ix86_arch_features): Ditto.
4904 (PTA_SKYLAKE): Add SGX.
4905 (PTA_ICELAKE): Remove.
4906 (PTA_ICELAKE_CLIENT): New.
4907 (PTA_ICELAKE_SERVER): New.
4908 (ix86_option_override_internal): Split up icelake on icelake client and
4909 icelake server.
4910 (get_builtin_code_for_version): Ditto.
4911 (fold_builtin_cpu): Ditto.
4912 * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
4913 * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
4914 * config/i386/i386.h (processor_type): Ditto.
4915 * doc/invoke.texi: Ditto.
4916
4917 2018-03-14 Jakub Jelinek <jakub@redhat.com>
4918
4919 PR sanitizer/83392
4920 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
4921 INTEGER_CST offset, add it together with bitpos / 8 and
4922 sign extend based on POINTER_SIZE.
4923
4924 PR target/84844
4925 Revert
4926 2017-04-20 Uros Bizjak <ubizjak@gmail.com>
4927
4928 PR target/78090
4929 * config/i386/constraints.md (Yc): New register constraint.
4930 * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
4931 Use Yc constraint for alternative 2 of operand 0. Remove
4932 preferred_for_speed attribute.
4933
4934 2018-03-14 Richard Biener <rguenther@suse.de>
4935
4936 PR tree-optimization/84830
4937 * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
4938 with the old one to avoid oscillations.
4939
4940 2018-03-13 Vladimir Makarov <vmakarov@redhat.com>
4941
4942 PR target/83712
4943 * lra-assigns.c (find_all_spills_for): Ignore uninteresting
4944 pseudos.
4945 (assign_by_spills): Return a flag of reload assignment failure.
4946 Do not process the reload assignment failures. Do not spill other
4947 reload pseudos if they has the same reg class. Update n if
4948 necessary.
4949 (lra_assign): Add a return arg. Set up from the result of
4950 assign_by_spills call.
4951 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
4952 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
4953 usage_insns if it is not NULL.
4954 (spill_hard_reg_in_range): New function.
4955 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
4956 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
4957 function prototypes.
4958 (lra_assign): Change prototype.
4959 * lra.c (lra): Add code to deal with fails by splitting hard reg
4960 live ranges.
4961
4962 2018-03-01 Palmer Dabbelt <palmer@sifive.com>
4963
4964 * config/riscv/riscv.opt (mrelax): New option.
4965 * config/riscv/riscv.c (riscv_file_start): Emit ".option
4966 "norelax" when riscv_mrelax is disabled.
4967 * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
4968
4969 2018-03-13 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
4970
4971 PR target/84743
4972 * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
4973 reassociation for int modes.
4974
4975 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
4976
4977 * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
4978 Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
4979 for big-endian.
4980 * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
4981 * config/aarch64/aarch64-sve.md
4982 (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
4983 (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
4984 (*extend<mode><Vwide>2): Rename to...
4985 (aarch64_sve_extend<mode><Vwide>2): ...this.
4986 (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
4987 renaming the old pattern to...
4988 (aarch64_sve_punpk<perm_hilo>_<mode>): ...this. Only define
4989 unsigned packs.
4990 (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
4991 define_expand, renaming the old pattern to...
4992 (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
4993 (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
4994 (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
4995 account when deciding which SVE instruction the optab should use.
4996 (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
4997
4998 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
4999
5000 * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
5001 (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
5002 (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
5003 (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
5004 (tlsdesc_small_<mode>): Turn a define_expand and use
5005 tlsdesc_small_sve_<mode> for SVE. Rename original define_insn to...
5006 (tlsdesc_small_advsimd_<mode>): ...this.
5007 (tlsdesc_small_sve_<mode>): New pattern.
5008
5009 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
5010
5011 * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
5012 (UNSPEC_UMUL_HIGHPART): New constants.
5013 (MUL_HIGHPART): New int iteraor.
5014 (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
5015 * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
5016 define_expand.
5017 (*<su>mul<mode>3_highpart): New define_insn.
5018
5019 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
5020
5021 PR lto/84805
5022 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
5023 incomplete types.
5024
5025 2018-03-13 Martin Liska <mliska@suse.cz>
5026
5027 PR ipa/84658.
5028 * (sem_item_optimizer::sem_item_optimizer): Initialize new
5029 vector.
5030 (sem_item_optimizer::~sem_item_optimizer): Release it.
5031 (sem_item_optimizer::merge_classes): Register variable aliases.
5032 (sem_item_optimizer::fixup_pt_set): New function.
5033 (sem_item_optimizer::fixup_points_to_sets): Likewise.
5034 * ipa-icf.h: Declare new variables and functions.
5035
5036 2018-03-13 Jakub Jelinek <jakub@redhat.com>
5037
5038 PR middle-end/84834
5039 * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
5040 integer_pow2p@2 and test integer_pow2p in condition.
5041 (A < 0 ? C : 0): Similarly for @1.
5042
5043 PR middle-end/84831
5044 * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
5045 characters starting at p contain '\0' character, don't look beyond
5046 that.
5047
5048 PR target/84827
5049 * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
5050 pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
5051
5052 PR target/84828
5053 * reg-stack.c (change_stack): Change update_end var from int to
5054 rtx_insn *, if non-NULL don't update just BB_END (current_block), but
5055 also call set_block_for_insn on the newly added insns and rescan.
5056
5057 PR target/84786
5058 * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
5059 on the last operand.
5060
5061 PR c++/84704
5062 * tree.c (stabilize_reference_1): Return save_expr (e) for
5063 STATEMENT_LIST even if it doesn't have side-effects.
5064
5065 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
5066
5067 * doc/invoke.texi (-mclflushopt): Fix spelling of option.
5068
5069 2018-03-12 Renlin Li <renlin.li@arm.com>
5070
5071 * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
5072 aarch64_output_scalar_simd_mov_immediate.
5073
5074 2018-03-12 Martin Sebor <msebor@redhat.com>
5075
5076 PR tree-optimization/83456
5077 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
5078 for perfectly overlapping calls to memcpy.
5079 (gimple_fold_builtin_memory_chk): Same.
5080 (gimple_fold_builtin_strcpy): Handle no-warning.
5081 (gimple_fold_builtin_stxcpy_chk): Same.
5082 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
5083
5084 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
5085
5086 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
5087 parameter. Use it for SFmode.
5088 (rs6000_function_arg_advance_1): Adjust.
5089 (rs6000_function_arg): Adjust.
5090 (rs6000_gimplify_va_arg): Pass false for that new parameter.
5091
5092 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
5093
5094 PR rtl-optimization/84169
5095 PR rtl-optimization/84780
5096 * combine.c (can_combine_p): Check for a 2-insn combination whether
5097 the destination register is used between the two insns, too.
5098
5099 2018-03-12 Richard Biener <rguenther@suse.de>
5100
5101 PR tree-optimization/84803
5102 * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
5103 for refs DR analysis didn't process.
5104
5105 2018-03-12 Richard Biener <rguenther@suse.de>
5106
5107 PR tree-optimization/84777
5108 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
5109 force-vectorize loops ignore whether we are optimizing for size.
5110
5111 2018-03-12 Chung-Ju Wu <jasonwucj@gmail.com>
5112
5113 * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
5114 (TARGET_MD_ASM_ADJUST): Define.
5115
5116 2018-03-12 Monk Chiang <sh.chiang04@gmail.com>
5117 Kito Cheng <kito.cheng@gmail.com>
5118 Chung-Ju Wu <jasonwucj@gmail.com>
5119
5120 * config/nds32/nds32.c (nds32_compute_stack_frame,
5121 nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
5122 nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
5123 nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
5124 nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
5125 * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
5126 NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
5127 * config/nds32/nds32.md (prologue, epilogue): Use macro
5128 NDS32_V3PUSH_AVAILABLE_P to do checking.
5129
5130 2018-03-11 Jakub Jelinek <jakub@redhat.com>
5131
5132 PR debug/58150
5133 * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
5134 DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
5135 but on TYPE_SIZE. Don't do anything for ENUM_IS_OPAQUE if not creating
5136 a new die. Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE. Guard
5137 addition of most attributes on !orig_type_die or the attribute not
5138 being present already. Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
5139
5140 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
5141 Chung-Ju Wu <jasonwucj@gmail.com>
5142
5143 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
5144 __NDS32_VH__ macro.
5145 * config/nds32/nds32.opt (mvh): New option.
5146
5147 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
5148 Chung-Ju Wu <jasonwucj@gmail.com>
5149
5150 * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
5151 function.
5152 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
5153 * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
5154 definition.
5155
5156 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
5157 Chung-Ju Wu <jasonwucj@gmail.com>
5158
5159 * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
5160 function.
5161 * config/nds32/nds32-multiple.md (strlensi): New pattern.
5162 * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
5163
5164 2018-03-11 Monk Chiang <sh.chiang04@gmail.com>
5165 Kito Cheng <kito.cheng@gmail.com>
5166 Chung-Ju Wu <jasonwucj@gmail.com>
5167
5168 * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
5169 UNSPEC_FFMISM and UNSPEC_FLMISM.
5170 * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
5171 for ffb, ffmism and flmism.
5172 * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
5173 (unspec_ffmism): Ditto.
5174 (unspec_flmism): Ditto.
5175 (nds32_expand_builtin_impl): Check if string extension is available.
5176 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
5177 NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
5178
5179 2018-03-10 Vladimir Makarov <vmakarov@redhat.com>
5180
5181 Reverting patch:
5182 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
5183
5184 PR target/83712
5185 * lra-assigns.c (assign_by_spills): Return a flag of reload
5186 assignment failure. Do not process the reload assignment
5187 failures. Do not spill other reload pseudos if they has the same
5188 reg class.
5189 (lra_assign): Add a return arg. Set up from the result of
5190 assign_by_spills call.
5191 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5192 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
5193 usage_insns if it is not NULL.
5194 (spill_hard_reg_in_range): New function.
5195 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5196 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5197 function prototypes.
5198 (lra_assign): Change prototype.
5199 * lra.c (lra): Add code to deal with fails by splitting hard reg
5200 live ranges.
5201
5202 2018-03-10 H.J. Lu <hongjiu.lu@intel.com>
5203
5204 PR target/84807
5205 * config/i386/i386.opt: Replace Enforcment with Enforcement.
5206
5207 2018-03-10 Alexandre Oliva <aoliva@redhat.com>
5208
5209 PR debug/84620
5210 * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
5211 (dw_val_node): Add val_symbolic_view.
5212 * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
5213 (symview_upper_bound): New.
5214 (new_line_info_table): Initialize symviews_since_reset.
5215 (dwarf2out_source_line): Count symviews_since_reset and set
5216 symview_upper_bound.
5217 (dw_val_equal_p): Handle symview.
5218 (add_AT_symview): New.
5219 (print_dw_val): Handle symview.
5220 (attr_checksum, attr_checksum_ordered): Likewise.
5221 (same_dw_val_p, size_of_die): Likewise.
5222 (value_format, output_die): Likewise.
5223 (add_high_low_attributes): Use add_AT_symview for entry_view.
5224 (dwarf2out_finish): Reset symview_upper_bound, clear
5225 zero_view_p.
5226
5227 2018-03-09 Peter Bergner <bergner@vnet.ibm.com>
5228
5229 PR target/83969
5230 * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
5231 Add strict argument and use it.
5232 (rs6000_split_multireg_move): Update for new strict argument.
5233 (mem_operand_gpr): Disallow all non-offsettable addresses.
5234 * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
5235
5236 2018-03-09 Jakub Jelinek <jakub@redhat.com>
5237
5238 PR target/84772
5239 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
5240 temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
5241 * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
5242
5243 PR c++/84767
5244 * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
5245 decl, use remap_type if we want to use the type.
5246
5247 2018-03-09 Martin Sebor <msebor@redhat.com>
5248
5249 PR tree-optimization/84526
5250 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
5251 Remove dead code.
5252 (builtin_access::generic_overlap): Be prepared to handle non-array
5253 base objects.
5254
5255 2018-03-09 Alexandre Oliva <aoliva@redhat.com>
5256
5257 PR rtl-optimization/84682
5258 * lra-constraints.c (process_address_1): Check is_address flag
5259 for address constraints.
5260 (process_alt_operands): Likewise.
5261 * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
5262 preprocess_constraints.
5263 * recog.h (preprocess_constraints): Add oploc parameter.
5264 Adjust callers.
5265 * recog.c (preprocess_constraints): Test address_operand for
5266 CT_ADDRESS constraints.
5267
5268 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
5269
5270 PR target/83712
5271 * lra-assigns.c (assign_by_spills): Return a flag of reload
5272 assignment failure. Do not process the reload assignment
5273 failures. Do not spill other reload pseudos if they has the same
5274 reg class.
5275 (lra_assign): Add a return arg. Set up from the result of
5276 assign_by_spills call.
5277 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5278 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
5279 usage_insns if it is not NULL.
5280 (spill_hard_reg_in_range): New function.
5281 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5282 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5283 function prototypes.
5284 (lra_assign): Change prototype.
5285 * lra.c (lra): Add code to deal with fails by splitting hard reg
5286 live ranges.
5287
5288 2018-03-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5289
5290 PR target/83193
5291 * common/config/arm/arm-common.c (arm_parse_arch_option_name):
5292 Accept complain bool parameter. Only emit errors if it is true.
5293 (arm_parse_cpu_option_name): Likewise.
5294 (arm_target_thumb_only): Adjust callers of the above.
5295 * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
5296 prototype to take a default true bool parameter.
5297 (arm_parse_arch_option_name): Likewise.
5298
5299 2018-03-09 David Malcolm <dmalcolm@redhat.com>
5300 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
5301
5302 PR jit/64089
5303 PR jit/84288
5304 * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
5305 * configure: Regenerate.
5306 * configure.ac ("linker --version-script option"): New.
5307 ("linker soname option"): New.
5308
5309 2018-03-09 Richard Biener <rguenther@suse.de>
5310
5311 PR tree-optimization/84775
5312 * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
5313 immediate uses of predicate stmts and mark them modified.
5314
5315 Revert
5316 PR tree-optimization/84178
5317 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
5318 to caller.
5319 (version_loop_for_if_conversion): Delay update_ssa call.
5320 (tree_if_conversion): Delay update_ssa until after predicate
5321 insertion.
5322
5323 2018-03-09 Eric Botcazou <ebotcazou@adacore.com>
5324
5325 PR target/84763
5326 * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
5327 when the function accesses prior frames.
5328
5329 2018-03-08 Jakub Jelinek <jakub@redhat.com>
5330
5331 PR debug/84456
5332 * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
5333 gen_llsym, otherwise call maybe_gen_llsym.
5334
5335 PR inline-asm/84742
5336 * recog.c (asm_operand_ok): Return 0 if multi-character constraint
5337 has ',' character inside of it.
5338
5339 2018-03-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5340
5341 PR target/84748
5342 * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
5343 as clobbering CC_REGNUM.
5344
5345 2018-03-08 Richard Biener <rguenther@suse.de>
5346
5347 PR middle-end/84552
5348 * tree-scalar-evolution.c: Include tree-into-ssa.h.
5349 (follow_copies_to_constant): Do not follow SSA names registered
5350 for update.
5351
5352 2018-03-08 Richard Biener <rguenther@suse.de>
5353
5354 PR tree-optimization/84178
5355 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
5356 to caller.
5357 (version_loop_for_if_conversion): Delay update_ssa call.
5358 (tree_if_conversion): Delay update_ssa until after predicate
5359 insertion.
5360
5361 2018-03-08 David Malcolm <dmalcolm@redhat.com>
5362
5363 PR tree-optimization/84178
5364 * tree-if-conv.c (release_bb_predicate): Remove the
5365 the assertion that the stmts have NULL use_ops.
5366 Discard the statements, asserting that they haven't
5367 yet been added to a BB.
5368
5369 2018-03-08 Richard Biener <rguenther@suse.de>
5370
5371 PR tree-optimization/84746
5372 * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
5373 (phi_translate): Pass in destination ANTIC_OUT set.
5374 (phi_translate_1): Likewise. For a simplified result lookup
5375 a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
5376 (phi_translate_set): Adjust.
5377 (do_pre_regular_insertion): Likewise.
5378 (do_pre_partial_partial_insertion): Likewise.
5379
5380 2018-03-08 Martin Liska <mliska@suse.cz>
5381
5382 PR gcov-profile/84735
5383 * doc/gcov.texi: Document usage of profile files.
5384 * gcov-io.h: Document changes in the format.
5385
5386 2018-03-08 Alexandre Oliva <aoliva@redhat.com>
5387
5388 PR debug/84404
5389 PR debug/84408
5390 * dwarf2out.c (struct dw_line_info_table): Update comments for
5391 view == -1.
5392 (FORCE_RESET_NEXT_VIEW): New.
5393 (FORCE_RESETTING_VIEW_P): New.
5394 (RESETTING_VIEW_P): Check for -1 too.
5395 (ZERO_VIEW_P): Likewise.
5396 (new_line_info_table): Force-reset next view.
5397 (dwarf2out_begin_function): Likewise.
5398 (dwarf2out_source_line): Simplify zero_view_p initialization.
5399 Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
5400 view directly. Omit view when omitting .loc at line 0.
5401
5402 2018-03-08 Jakub Jelinek <jakub@redhat.com>
5403
5404 PR tree-optimization/84740
5405 * tree-switch-conversion.c (process_switch): Call build_constructors
5406 only if info.phi_count is non-zero.
5407
5408 PR tree-optimization/84739
5409 * tree-tailcall.c (find_tail_calls): Check call arguments against
5410 DECL_ARGUMENTS (current_function_decl) rather than
5411 DECL_ARGUMENTS (func) when checking for tail recursion.
5412
5413 2018-03-07 Jakub Jelinek <jakub@redhat.com>
5414
5415 * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
5416 Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
5417 Volker Reichelt's entry and add entries for people that perform
5418 GCC fuzzy testing and report numerous bugs.
5419
5420 2018-03-07 Segher Boessenkool <segher@kernel.crashing.org>
5421
5422 PR target/82411
5423 * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
5424 readonly data in sdata, if that is disabled.
5425 * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
5426 * doc/invoke.texi (RS/6000 and PowerPC Options): Document
5427 -mreadonly-in-sdata option.
5428
5429 2018-03-07 Martin Sebor <msebor@redhat.com>
5430
5431 PR tree-optimization/84468
5432 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
5433 basic block when looking for nul assignment.
5434
5435 2018-03-07 Eric Botcazou <ebotcazou@adacore.com>
5436
5437 PR target/84277
5438 * except.h (output_function_exception_table): Adjust prototype.
5439 * except.c (output_function_exception_table): Remove FNNAME parameter
5440 and add SECTION parameter. Ouput one part of the table at a time.
5441 * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
5442 the first part of the exception table and emit unwind directives.
5443 * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
5444 (i386_pe_seh_cold_init): Likewise.
5445 * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
5446 (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
5447 * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
5448 (ix86_output_call_insn): Emit a nop in one more case for SEH.
5449 * config/i386/winnt.c: Include except.h.
5450 (struct seh_frame_state): Add reg_offset, after_prologue and
5451 in_cold_section fields.
5452 (i386_pe_seh_end_prologue): Set seh->after_prologue.
5453 (i386_pe_seh_cold_init): New function.
5454 (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
5455 to seh->in_cold_section.
5456 (seh_emit_push): Record the offset of the push.
5457 (seh_emit_save): Record the offet of the save.
5458 (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
5459 Test seh->after_prologue to disregard the epilogue.
5460 (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
5461 (i386_pe_end_cold_function): New function.
5462
5463 2018-03-07 Jakub Jelinek <jakub@redhat.com>
5464
5465 PR fortran/84565
5466 * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
5467 aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
5468
5469 PR c++/84704
5470 * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
5471 on tmp_var.
5472 * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
5473 don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
5474
5475 PR middle-end/84723
5476 * multiple_target.c: Include tree-inline.h and intl.h.
5477 (expand_target_clones): Diagnose and fail if node->definition and
5478 !tree_versionable_function_p (node->decl).
5479
5480 2018-03-06 John David Anglin <danglin@gcc.gnu.org>
5481
5482 * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
5483 sprint_ul.
5484 (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
5485 (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
5486 * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
5487
5488 2018-03-06 Jakub Jelinek <jakub@redhat.com>
5489
5490 PR target/84710
5491 * combine.c (try_combine): Use reg_or_subregno instead of handling
5492 just paradoxical SUBREGs and REGs.
5493
5494 2018-03-06 Claudiu Zissulescu <claziss@synopsys.com>
5495
5496 * config/arc/arc.c (arc_finalize_pic): Remove function.
5497 (arc_must_save_register): We use single base PIC register, remove
5498 checks to save/restore the PIC register.
5499 (arc_expand_prologue): Likewise.
5500 * config/arc/arc-protos.h (arc_set_default_type_attributes):
5501 Remove.
5502 (arc_verify_short): Likewise.
5503 (arc_attr_type): Likewise.
5504 * config/arc/arc.c (arc_set_default_type_attributes): Remove.
5505 (walk_stores): Likewise.
5506 (arc_address_cost): Make it static.
5507 (arc_verify_short): Likewise.
5508 (branch_dest): Likewise.
5509 (arc_attr_type): Likewise.
5510 * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
5511 (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
5512 (arc_final_prescan_insn): Remove inserting the nops due to
5513 hardware hazards. It is done in reorg step.
5514 (insn_length_variant_t): Remove.
5515 (insn_length_parameters_t): Likewise.
5516 (arc_insn_length_parameters): Likewise.
5517 (arc_get_insn_variants): Likewise.
5518 * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
5519
5520 2018-03-06 Jakub Jelinek <jakub@redhat.com>
5521
5522 PR inline-asm/84683
5523 * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
5524 assertion failure.
5525
5526 PR tree-optimization/84687
5527 * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
5528 on new_node->decl.
5529 * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
5530
5531 2018-03-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
5532
5533 * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
5534 Rename to ppc_speculation_barrier.
5535 * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
5536 __builtin_ppc_speculation_barrier.
5537
5538 2018-03-05 Jakub Jelinek <jakub@redhat.com>
5539
5540 PR target/84700
5541 * combine.c (combine_simplify_rtx): Don't try to simplify if
5542 if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
5543 are equal to x.
5544
5545 2018-03-05 Segher Boessenkool <segher@kernel.crashing.org>
5546
5547 * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
5548 to 32 bytes when compiling for POWER9.
5549
5550 2018-03-05 Jakub Jelinek <jakub@redhat.com>
5551
5552 PR target/84564
5553 * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
5554 regparm >= 3 with no arg reg available also for calls with
5555 flag_force_indirect_call. Pass decl to ix86_function_regparm.
5556
5557 PR target/84524
5558 * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
5559 orig,vex.
5560 (*<plusminus_insn><mode>3): Likewise. Remove <mask_operand3> uses.
5561
5562 2018-03-05 Peter Bergner <bergner@vnet.ibm.com>
5563
5564 PR target/84264
5565 * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
5566
5567 2018-03-05 Richard Biener <rguenther@suse.de>
5568
5569 PR tree-optimization/84486
5570 * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
5571 When inserting a __builtin_assume_aligned call set the LHS
5572 SSA name alignment info accordingly.
5573
5574 2018-03-05 Wilco Dijkstra <wdijkstr@arm.com>
5575
5576 PR tree-optimization/84114
5577 * config/aarch64/aarch64.c (aarch64_reassociation_width)
5578 Avoid reassociation of FLOAT_MODE addition.
5579
5580 2018-03-05 Olga Makhotina <olga.makhotina@intel.com>
5581
5582 * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
5583 OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
5584 OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
5585 (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
5586 * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
5587 * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
5588 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
5589 and -mwbnoinvd.
5590 * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
5591 __builtin_ia32_wbinvd): New builtins.
5592 (SPECIAL_ARGS2): New.
5593 * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
5594 (SPECIAL_ARGS2): New.
5595 * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
5596 (ix86_valid_target_attribute_inner_p): Ditto.
5597 (ix86_init_mmx_sse_builtins): Add special_args2.
5598 * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
5599 TARGET_WBNOINVD_P): New.
5600 * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
5601 (define_insn "wbinvd", define_insn "wbnoinvd"): New.
5602 * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
5603 * config/i386/immintrin.h (_wbinvd): New intrinsic.
5604 * config/i386/pconfigintrin.h: New file.
5605 * config/i386/wbnoinvdintrin.h: Ditto.
5606 * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
5607 * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
5608
5609 2018-03-05 Richard Biener <rguenther@suse.de>
5610
5611 PR tree-optimization/84670
5612 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
5613 member.
5614 (BB_VISITED_WITH_VISITED_SUCCS): New define.
5615 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
5616 (compute_antic_aux): Only assert the number of values in ANTIC_IN
5617 doesn't grow if all successors (recursively) were visited at least
5618 once.
5619
5620 2018-03-05 Richard Biener <rguenther@suse.de>
5621
5622 PR tree-optimization/84650
5623 * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
5624 if executed in the loop pipeline.
5625
5626 2018-03-05 Sandra Loosemore <sandra@codesourcery.com>
5627
5628 * doc/configfiles.texi (Configuration Files): Move info about
5629 conditionalizing $target-protos.h to...
5630 * doc/sourcebuild.texi (Back End): Here. Explain how $target.h
5631 differs from $target-protos.h.
5632
5633 2018-03-05 Kito Cheng <kito.cheng@gmail.com>
5634 Chung-Ju Wu <jasonwucj@gmail.com>
5635
5636 * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
5637 * config/nds32/nds32-multiple.md (setmemsi): Define.
5638 * config/nds32/nds32-memory-manipulation.c
5639 (nds32_gen_dup_4_byte_to_word_value): New.
5640 (emit_setmem_word_loop): New.
5641 (emit_setmem_byte_loop): New.
5642 (nds32_expand_setmem_loop): New.
5643 (nds32_expand_setmem_loop_v3m): New.
5644 (nds32_expand_setmem_unroll): New.
5645 (nds32_expand_setmem): New.
5646
5647 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
5648 Chung-Ju Wu <jasonwucj@gmail.com>
5649
5650 * config/nds32/nds32-memory-manipulation.c
5651 (nds32_emit_load_store): New.
5652 (nds32_emit_post_inc_load_store): New.
5653 (nds32_emit_mem_move): New.
5654 (nds32_emit_mem_move_block): New.
5655 (nds32_expand_movmemsi_loop_unknown_size): New.
5656 (nds32_expand_movmemsi_loop_known_size): New.
5657 (nds32_expand_movmemsi_loop): New.
5658 (nds32_expand_movmemsi_unroll): New.
5659 (nds32_expand_movmemqi): Rename ...
5660 (nds32_expand_movmemsi): ... to this.
5661 * config/nds32/nds32-multiple.md (movmemqi): Rename ...
5662 (movmemsi): ... to this.
5663 * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
5664 (nds32_expand_movmemsi): ... to this.
5665
5666 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
5667 Monk Chiang <sh.chiang04@gmail.com>
5668 Chung-Ju Wu <jasonwucj@gmail.com>
5669
5670 * config/nds32/nds32-protos.h
5671 (nds32_expand_load_multiple): New arguments.
5672 (nds32_expand_store_multiple): Ditto.
5673 (nds32_valid_multiple_load_store): Rename ...
5674 (nds32_valid_multiple_load_store_p): ... to this.
5675 * config/nds32/nds32-memory-manipulation.c
5676 (nds32_expand_load_multiple): Refine implementation.
5677 (nds32_expand_store_multiple): Ditto.
5678 * config/nds32/nds32-multiple.md
5679 (load_multiple): Update nds32_expand_load_multiple interface.
5680 (store_multiple): Update nds32_expand_store_multiple interface.
5681 * config/nds32/nds32-predicates.c
5682 (nds32_valid_multiple_load_store): Rename ...
5683 (nds32_valid_multiple_load_store_p): ... to this and refine
5684 implementation.
5685 * config/nds32/predicates.md
5686 (nds32_load_multiple_and_update_address_operation): New predicate.
5687 (nds32_store_multiple_and_update_address_operation): New predicate.
5688
5689 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
5690 Chung-Ju Wu <jasonwucj@gmail.com>
5691
5692 * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
5693 (combo): New attribute.
5694 * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
5695
5696 2018-03-03 Chung-Ju Wu <jasonwucj@gmail.com>
5697
5698 * config/nds32/nds32.opt: Change -mcmodel= default value.
5699
5700 2018-03-03 Kito Cheng <kito.cheng@gmail.com>
5701 Monk Chiang <sh.chiang04@gmail.com>
5702 Chung-Ju Wu <jasonwucj@gmail.com>
5703
5704 * config/nds32/constants.md (unspec_element): New enum.
5705 * config/nds32/constraints.md (Umw): New constraint.
5706 * config/nds32/nds32-intrinsic.c: Add more builtin functions.
5707 * config/nds32/nds32-intrinsic.md: Likewise.
5708 * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
5709 (nds32_valid_smw_lwm_base_p): New.
5710 (nds32_output_smw_single_word): New.
5711 (nds32_output_lmw_single_word): New.
5712 (nds32_expand_unaligned_load): New.
5713 (nds32_expand_unaligned_store): New.
5714 * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
5715 (nds32_output_smw_single_word): Declare.
5716 (nds32_output_lmw_single_word): Declare.
5717 (nds32_expand_unaligned_load): Declare.
5718 (nds32_expand_unaligned_store): Declare.
5719 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
5720 NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
5721 NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
5722 NDS32_BUILTIN_UASTORE_DW.
5723 * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
5724 predicate.
5725
5726 2018-03-03 Monk Chiang <sh.chiang04@gmail.com>
5727 Kito Cheng <kito.cheng@gmail.com>
5728 Chung-Ju Wu <jasonwucj@gmail.com>
5729
5730 * config/nds32/nds32-intrinsic.c
5731 (nds32_expand_builtin_null_ftype_reg): Delete.
5732 (nds32_expand_builtin_reg_ftype_imm): Ditto.
5733 (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
5734 (nds32_read_argument): New.
5735 (nds32_legitimize_target): Ditto.
5736 (nds32_legitimize_argument): Ditto.
5737 (nds32_check_constant_argument): Ditto.
5738 (nds32_expand_unop_builtin): Ditto.
5739 (nds32_expand_unopimm_builtin): Ditto.
5740 (nds32_expand_binop_builtin): Ditto.
5741 (nds32_builtin_decl_impl): Ditto.
5742 (builtin_description): Ditto.
5743 (nds32_expand_builtin_impl): Rewrite with new infrastructure.
5744 (nds32_init_builtins_impl): Ditto.
5745 * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
5746 (nds32_builtin_decl): New.
5747 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
5748 * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
5749
5750 2018-03-02 Jeff Law <law@redhat.com>
5751
5752 * reorg.c (stop_search_p): Handle DEBUG_INSN.
5753 (redundant_insn, fill_simple_delay_slots): Likewise.
5754 (fill_slots_from_thread): Likewise.
5755 * resource.c (mark_referenced_resources): Likewise.
5756 (mark_set_resources, find_dead_or_set_registers): Likewise.
5757
5758 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5759
5760 * substring-locations.h (format_warning_va): Formatting fix for
5761 ATTRIBUTE_GCC_DIAG.
5762 (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
5763 argument.
5764 (format_warning_n_va, format_warning_at_substring_n): New prototypes.
5765 * substring-locations.c: Include intl.h.
5766 (format_warning_va): Turned into small wrapper around
5767 format_warning_n_va, renamed to ...
5768 (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
5769 rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
5770 use ngettext.
5771 (format_warning_at_substring_n): New function.
5772 * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
5773 (fmtwarn): Add ATTRIBUTE_GCC_DIAG. Turn into a copy of
5774 format_warning_at_substring with just a shorter name instead of
5775 const function pointer.
5776 (fmtwarn_n): New function.
5777 (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
5778 appropriate, get rid of all the fmtstr temporaries, move conditionals
5779 with G_() wrapped string literals directly into fmtwarn arguments,
5780 cast dir.len to (int), formatting fixes.
5781
5782 2018-03-02 Thomas Schwinge <thomas@codesourcery.com>
5783
5784 * doc/invoke.texi: Remove "Cilk Plus" references.
5785
5786 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5787 Richard Biener <rguenther@suse.de>
5788
5789 PR ipa/84628
5790 * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
5791 for error or warning attributes if CALL_FROM_THUNK_P is set.
5792 Formatting fixes.
5793
5794 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5795
5796 PR target/56540
5797 * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
5798 __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
5799
5800 PR target/56540
5801 * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
5802 __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
5803
5804 * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
5805 instead of -1U in last predictors element's probability member.
5806
5807 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
5808
5809 PR ipa/83983
5810 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
5811 arguments if they are comparable.
5812
5813 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
5814
5815 PR tree-optimization/84634
5816 * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
5817 masks and masked_loop_p with a single loop_masks, making sure it's
5818 null for bb vectorization.
5819
5820 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
5821
5822 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
5823 (vect_analyze_data_ref_access): Use loop->safe_len rather than
5824 loop->force_vectorize to check whether there is no alias.
5825
5826 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5827
5828 PR target/84614
5829 * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
5830 prototypes.
5831 * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
5832 comments.
5833 (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
5834 * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
5835 instead of a loop around prev_real_insn.
5836 * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
5837 prev_real_insn.
5838
5839 PR inline-asm/84625
5840 * config/i386/i386.c (ix86_print_operand): Use conditional
5841 output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
5842 zero vector.
5843
5844 2018-03-02 Richard Biener <rguenther@suse.de>
5845
5846 PR tree-optimization/84427
5847 * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
5848 (bitmap_set_subtract_values): Rewrite to handle multiple
5849 exprs per value.
5850 (clean): Likewise.
5851 (prune_clobbered_mems): Likewise.
5852 (phi_translate): Take edge instead of pred/phiblock.
5853 (phi_translate_1): Likewise.
5854 (phi_translate_set): Likewise. Insert all translated
5855 exprs for a value into the set, keeping possibly multiple
5856 expressions per value.
5857 (compute_antic_aux): Adjust for phi_translate changes.
5858 When intersecting union the expressions and prune those
5859 not in the final value set, keeping possibly multiple
5860 expressions per value. Do not use value-insertion
5861 for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
5862 all expressions. Add verification that the value-sets
5863 only shrink during iteration.
5864 (compute_partial_antic_aux): Adjust for the phi_translate changes.
5865 (do_pre_regular_insertion): Likewise.
5866 (do_pre_partial_partial_insertion): Likewise.
5867
5868 2018-03-02 Richard Biener <rguenther@suse.de>
5869
5870 PR target/82005
5871 * config/darwin.c (saved_debug_info_level): New static global.
5872 (darwin_asm_lto_start): Disable debug info generation for LTO out.
5873 (darwin_asm_lto_end): Restore debug info generation settings.
5874
5875 2018-03-01 Martin Liska <mliska@suse.cz>
5876
5877 PR sanitizer/82484
5878 * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
5879 volatile arguments.
5880
5881 2018-03-01 Richard Biener <rguenther@suse.de>
5882
5883 PR debug/84645
5884 * dwarf2out.c (gen_variable_die): Properly handle late VLA
5885 type annotation with LTO when debug was disabled at compile-time.
5886
5887 2018-03-01 Matthew Fortune <mfortune@gmail.com>
5888
5889 * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
5890 XINT with INTVAL.
5891 (mips_final_postscan_insn): Likewise.
5892
5893 2018-03-01 Richard Sandiford <richard.sandiford@linaro.org>
5894
5895 PR rtl-optimization/84528
5896 * alias.c (init_alias_target): Add commentary.
5897 (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
5898 a unique base value if the frame pointer is not eliminated
5899 to the stack pointer.
5900
5901 2018-03-01 Tom de Vries <tom@codesourcery.com>
5902
5903 PR rtl-optimization/83327
5904 * lra-int.h (hard_regs_spilled_into): Declare.
5905 * lra.c (hard_regs_spilled_into): Define.
5906 (init_reg_info): Init hard_regs_spilled_into.
5907 * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
5908 * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
5909 (process_bb_lives): Handle hard_regs_spilled_into.
5910 (lra_create_live_ranges_1): Before doing liveness propagation, clear
5911 regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
5912
5913 2018-02-28 David Edelsohn <dje.gcc@gmail.com>
5914
5915 * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
5916 (powerpc-ibm-aix[789]*): Default to AIX 7.2.
5917 * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
5918 * config/rs6000/aix72.h: New file.
5919
5920 2018-02-28 Jakub Jelinek <jakub@redhat.com>
5921
5922 * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
5923 instead of warning_at with conditional singular and plural messages
5924 where possible.
5925
5926 PR target/52991
5927 * stor-layout.c (update_alignment_for_field): For
5928 targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
5929 && !DECL_PACKED (field), do the alignment update, just use
5930 only desired_align instead of MAX (type_align, desired_align)
5931 as the alignment.
5932 (place_field): Don't do known_align < desired_align handling
5933 early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
5934 is non-NULL, instead do it after rli->prev_field handling and
5935 only if not within a bitfield word. For DECL_PACKED (field)
5936 use type_align of BITS_PER_UNIT.
5937
5938 2018-02-28 Eric Botcazou <ebotcazou@adacore.com>
5939
5940 * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
5941 superfluous parentheses and trailing spaces.
5942
5943 2018-02-28 Richard Biener <rguenther@suse.de>
5944
5945 PR tree-optimization/84584
5946 * graphite-scop-detection.c (scop_detection::add_scop): Discard
5947 SCoPs with fake exit edge.
5948
5949 2018-02-28 Martin Liska <mliska@suse.cz>
5950
5951 PR testsuite/84597
5952 * timevar.c (timer::print): Fix format to properly print 100%
5953 values.
5954
5955 2018-02-28 Richard Biener <rguenther@suse.de>
5956
5957 PR middle-end/84607
5958 * genmatch.c (capture_info::walk_match): Do not mark
5959 captured expressions without operands as expr_p given
5960 they act more like predicates and should be subject to
5961 "lost tail" side-effect preserving.
5962
5963 2018-02-28 Alexandre Oliva <aoliva@redhat.com>
5964
5965 PR rtl-optimization/81611
5966 * auto-inc-dec.c (attempt_change): Move dead note from
5967 mem_insn if it's the next use of regno
5968 (find_address): Take address use of reg holding
5969 non-incremented value. Add parm to limit search to the named
5970 reg only.
5971 (merge_in_block): Attempt to use a mem insn that is the next
5972 use of the original regno.
5973
5974 2018-02-27 Martin Sebor <msebor@redhat.com>
5975
5976 PR c++/83871
5977 * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
5978 * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
5979
5980 2018-02-27 Martin Sebor <msebor@redhat.com>
5981
5982 PR translation/84207
5983 * diagnostic-core.h (warning_n, error_n, inform_n): Change
5984 n argument to unsigned HOST_WIDE_INT.
5985 * diagnostic.c (warning_n, error_n, inform_n): Ditto.
5986 (diagnostic_n_impl): Ditto. Handle arguments in excess of LONG_MAX.
5987 * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
5988 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
5989
5990 2018-02-27 Richard Biener <rguenther@suse.de>
5991
5992 PR tree-optimization/84512
5993 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
5994 Do not use the estimate returned from record_stmt_cost for
5995 the scalar iteration cost but sum properly using add_stmt_cost.
5996
5997 2018-02-27 Richard Biener <rguenther@suse.de>
5998
5999 PR tree-optimization/84466
6000 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
6001 Adjust last change to less strictly validate use operands.
6002
6003 2018-02-27 Martin Liska <mliska@suse.cz>
6004
6005 PR gcov-profile/84548
6006 * gcov.c (process_file): Allow partial overlap and consider it
6007 also as group functions.
6008 (output_lines): Properly calculate range of lines for a group.
6009
6010 2018-02-27 Martin Liska <mliska@suse.cz>
6011
6012 * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
6013 'ggc' suffixes. Change first column width.
6014 (timer::print): Fix formatting of the column.
6015
6016 2018-02-27 Alexandre Oliva <aoliva@redhat.com>
6017
6018 * tree-ssa-live.c (remove_unused_scope_block_p): Do not
6019 preserve inline entry blocks for the sake of debug inline
6020 entry point markers alone.
6021 (remove_unused_locals): Suggest in comments a better place to
6022 force the preservation of inline entry blocks that are
6023 otherwise unused, but do not preserve them.
6024
6025 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
6026
6027 * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
6028
6029 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
6030
6031 PR target/84039
6032 * config/i386/constraints.md (Bs): Replace
6033 ix86_indirect_branch_register with
6034 TARGET_INDIRECT_BRANCH_REGISTER.
6035 (Bw): Likewise.
6036 * config/i386/i386.md (indirect_jump): Likewise.
6037 (tablejump): Likewise.
6038 (*sibcall_memory): Likewise.
6039 (*sibcall_value_memory): Likewise.
6040 Peepholes of indirect call and jump via memory: Likewise.
6041 (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
6042 (*sibcall_value_GOT_32): Likewise.
6043 * config/i386/predicates.md (indirect_branch_operand): Likewise.
6044 (GOT_memory_operand): Likewise.
6045 (call_insn_operand): Likewise.
6046 (sibcall_insn_operand): Likewise.
6047 (GOT32_symbol_operand): Likewise.
6048 * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
6049
6050 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
6051
6052 PR rtl-optimization/83496
6053 * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
6054 booleans to RTXes. Call fix_reg_dead_note on every non-null element.
6055 (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
6056 redundant insn, if any.
6057 (relax_delay_slots): Likewise.
6058 (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
6059
6060 2018-02-26 Richard Sandiford <richard.sandiford@linaro.org>
6061
6062 PR tree-optimization/83965
6063 * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
6064 that grouped statements are part of a reduction chain. Return
6065 true if the statement is not marked as a reduction itself but
6066 is part of a group.
6067 (vect_recog_dot_prod_pattern): Don't check whether the statement
6068 is part of a group here.
6069 (vect_recog_sad_pattern): Likewise.
6070 (vect_recog_widen_sum_pattern): Likewise.
6071
6072 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
6073
6074 PR debug/84545
6075 * final.c (rest_of_clean_state): Also look for calls inside sequences.
6076
6077 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
6078
6079 PR target/84530
6080 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
6081 the bool argument.
6082 (ix86_output_indirect_function_return): New prototype.
6083 (ix86_split_simple_return_pop_internal): Likewise.
6084 * config/i386/i386.c (indirect_return_via_cx): New.
6085 (indirect_return_via_cx_bnd): Likewise.
6086 (indirect_thunk_name): Handle return va CX_REG.
6087 (output_indirect_thunk_function): Create alias for
6088 __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
6089 (ix86_output_indirect_jmp): Remove the bool argument.
6090 (ix86_output_indirect_function_return): New function.
6091 (ix86_split_simple_return_pop_internal): Likewise.
6092 * config/i386/i386.md (*indirect_jump): Don't pass false
6093 to ix86_output_indirect_jmp.
6094 (*tablejump_1): Likewise.
6095 (simple_return_pop_internal): Change it to define_insn_and_split.
6096 Call ix86_split_simple_return_pop_internal to split it for
6097 -mfunction-return=.
6098 (simple_return_indirect_internal): Call
6099 ix86_output_indirect_function_return instead of
6100 ix86_output_indirect_jmp.
6101
6102 2018-02-26 Jakub Jelinek <jakub@redhat.com>
6103
6104 PR bootstrap/84405
6105 * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
6106 memset and value initialization afterwards.
6107
6108 2018-02-26 Christophe Lyon <christophe.lyon@linaro.org>
6109
6110 * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
6111
6112 2018-02-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
6113
6114 PR target/84521
6115 * common/config/aarch64/aarch64-common.c
6116 (aarch_option_optimization_table[]): Switch
6117 off fomit-frame-pointer
6118
6119 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
6120 Chung-Ju Wu <jasonwucj@gmail.com>
6121
6122 * config/nds32/nds32-multiple.md (load_multiple): Disallow
6123 volatile memory.
6124 (store_multiple): Ditto.
6125
6126 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
6127
6128 * config.gcc: Add --with-cpu support for nds32 target.
6129 * config/nds32/nds32-opts.h (nds32_cpu_type): New.
6130 * config/nds32/nds32.opt: Add -mcpu= option.
6131
6132 2018-02-25 Segher Boessenkool <segher@kernel.crashing.org>
6133
6134 * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
6135 isel=yes): Warn for these deprecated options.
6136
6137 2018-02-23 David Edelsohn <dje.gcc@gmail.com>
6138
6139 * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
6140 ISA_2_5_MASKS_EMBEDDED.
6141
6142 2018-02-23 Jakub Jelinek <jakub@redhat.com>
6143
6144 * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
6145 p->max as pointers rather than using iterative_hash_expr.
6146
6147 2018-02-23 Carl Love <cel@us.ibm.com>
6148
6149 * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
6150 macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
6151 BU_P8V_OVERLOAD_2.
6152 * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
6153 P8V_BUILTIN_VEC_VSIGNED2. Change VSX_BUILTIN_VEC_VUNSIGNED2 to
6154 P8V_BUILTIN_VEC_VUNSIGNED2.
6155
6156 2018-02-22 Vladimir Makarov <vmakarov@redhat.com>
6157
6158 PR target/81572
6159 * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
6160 * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
6161 LRA_UNKNOWN_ALT.
6162 * lra-constraints.c (curr_insn_transform): Set up
6163 LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use
6164 LRA_UNKNOWN_ALT.
6165 (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
6166 * lra-eliminations.c (spill_pseudos): Ditto.
6167 (process_insn_for_elimination): Ditto.
6168 * lra-lives.c (reg_early_clobber_p): Use the new macros.
6169 * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
6170 LRA_NON_CLOBBERED_ALT.
6171
6172 2018-02-22 Martin Sebor <msebor@redhat.com>
6173
6174 PR tree-optimization/84480
6175 * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
6176 to maybe_diag_stxncpy_trunc. Call it.
6177 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
6178 from gimple_fold_builtin_strcpy. Print inlining stack.
6179 (handle_builtin_stxncpy): Print inlining stack.
6180 * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
6181
6182 2018-02-22 H.J. Lu <hongjiu.lu@intel.com>
6183
6184 PR target/84176
6185 * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
6186 error when -mindirect-branch=thunk-extern, -fcf-protection=branch
6187 and -fcheck-pointer-bounds are used together.
6188 (indirect_thunk_prefix): New enum.
6189 (indirect_thunk_need_prefix): New function.
6190 (indirect_thunk_name): Replace need_bnd_p with need_prefix. Use
6191 "_nt" instead of "_bnd" for NOTRACK prefix.
6192 (output_indirect_thunk): Replace need_bnd_p with need_prefix.
6193 (output_indirect_thunk_function): Likewise.
6194 (): Likewise.
6195 (ix86_code_end): Update output_indirect_thunk_function calls.
6196 (ix86_output_indirect_branch_via_reg): Replace
6197 ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
6198 (ix86_output_indirect_branch_via_push): Likewise.
6199 (ix86_output_function_return): Likewise.
6200 * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
6201 incompatible with -fcf-protection=branch and
6202 -fcheck-pointer-bounds.
6203
6204 2018-02-22 Steve Ellcey <sellcey@cavium.com>
6205
6206 PR target/83335
6207 * config/aarch64/aarch64.c (aarch64_print_address_internal):
6208 Change gcc_assert call to output_operand_lossage.
6209
6210 2018-02-22 Steve Ellcey <sellcey@cavium.com>
6211
6212 * doc/extend.texi (__builtin_extend_pointer): Document builtin.
6213
6214 2018-02-22 DJ Delorie <dj@redhat.com>
6215 Sebastian Perta <sebastian.perta@renesas.com>
6216 Oleg Endo <olegendo@gcc.gnu.org>
6217
6218 * config/rx/rx.c (rx_rtx_costs): New function.
6219 (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
6220
6221 2018-02-22 Thomas Preud'homme <thomas.preudhomme@arm.com>
6222
6223 * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
6224
6225 2018-02-22 Martin Liska <mliska@suse.cz>
6226
6227 PR driver/83193
6228 * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
6229 Add "native" as a possible value.
6230
6231 2018-02-22 Martin Liska <mliska@suse.cz>
6232
6233 PR driver/83193
6234 * config/i386/i386.c (ix86_option_override_internal):
6235 Add "native" as a possible value for -march and -mtune.
6236
6237 2018-02-22 Jakub Jelinek <jakub@redhat.com>
6238
6239 PR target/84502
6240 * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
6241 to all type variants.
6242
6243 PR tree-optimization/84503
6244 * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
6245 width as info->bitpos + info->bitsize - start.
6246 (merged_store_group::merge_overlapping): Simplify width computation.
6247 (check_no_overlap): New function.
6248 (imm_store_chain_info::try_coalesce_bswap): Compute expected
6249 start + width and last_order of the group, fail if check_no_overlap
6250 fails.
6251 (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
6252 to group if check_no_overlap fails.
6253
6254 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
6255
6256 * config/rs6000/altivec.md: Delete contraint arguments to
6257 define_expand, define_split, and define_peephole2, and in
6258 define_insn_and_split if always unused.
6259 * config/rs6000/darwin.md: Ditto.
6260 * config/rs6000/dfp.md: Ditto.
6261 * config/rs6000/rs6000.md: Ditto.
6262 * config/rs6000/sync.md: Ditto.
6263 * config/rs6000/vector.md: Ditto.
6264 * config/rs6000/vsx.md: Ditto.
6265
6266 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
6267
6268 * config/rs6000/altivec.md: Write output control strings as braced
6269 blocks instead of double-quoted strings.
6270 * config/rs6000/darwin.md: Ditto.
6271 * config/rs6000/rs6000.md: Ditto.
6272 * config/rs6000/vector.md: Ditto.
6273 * config/rs6000/vsx.md: Ditto.
6274
6275 2018-02-21 Jason Merrill <jason@redhat.com>
6276
6277 PR c++/84314 - ICE with templates and fastcall attribute.
6278 * attribs.c (build_type_attribute_qual_variant): Remove assert.
6279
6280 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
6281
6282 * ipa-cp.c (determine_versionability): Fix comment typos.
6283
6284 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
6285
6286 PR c/84229
6287 * ipa-cp.c (determine_versionability): Do not version functions caling
6288 va_arg_pack.
6289
6290 2018-02-21 Martin Liska <mliska@suse.cz>
6291
6292 PR driver/83193
6293 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
6294 Add "native" as a possible value.
6295 * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT): Define
6296 the macro when native cpu detection is available.
6297
6298 2018-02-21 Martin Liska <mliska@suse.cz>
6299
6300 PR driver/83193
6301 * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
6302 Add "native" as a possible value.
6303 * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
6304 when native cpu detection is available.
6305
6306 2018-02-21 Jakub Jelinek <jakub@redhat.com>
6307 Martin Sebor <msebor@redhat.com>
6308
6309 PR tree-optimization/84478
6310 * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
6311 false.
6312 * gimple-fold.c (get_range_strlen): Make minlen const and assume it
6313 can't be NULL. Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
6314 support which is conservatively correct, for 2 only stay conservative
6315 for maxlen. Formatting and comment capitalization fixes. Add STRICT
6316 argument to the 2 argument get_range_strlen, adjust 6 arg
6317 get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
6318 false.
6319 (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
6320 (gimple_fold_builtin_strlen): Pass true as last argument to
6321 get_range_strlen.
6322
6323 2018-02-20 Martin Sebor <msebor@redhat.com>
6324
6325 PR middle-end/84095
6326 * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
6327 (builtin_memref::set_base_and_offset): Same. Handle inner references.
6328 (builtin_memref::builtin_memref): Factor out parts into
6329 set_base_and_offset and call it.
6330
6331 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
6332
6333 PR middle-end/84406
6334 * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
6335 is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
6336 greater precision. If to_mode is a MODE_PARTIAL_INT, stop the
6337 search at the associated MODE_INT.
6338
6339 2018-02-20 Jeff Law <law@redhat.com>
6340
6341 PR middle-end/82123
6342 PR tree-optimization/81592
6343 PR middle-end/79257
6344 * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
6345 for range data rather than using global data.
6346 * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
6347 range data rather than using global data.
6348 * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
6349 pass it to children as needed.
6350 (struct directive::fmtresult): Similarly.
6351 (struct directive::set_width): Similarly.
6352 (struct directive::set_precision): Similarly.
6353 (format_integer, format_directive, parse_directive): Similarly.
6354 (format_none): Accept unnamed vr_values parameter.
6355 (format_percent, format_floating, format_character): Similarly.
6356 (format_string, format_plain): Similarly.
6357 * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
6358 the EVRP range analyzer for range data rather than using global data.
6359 * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
6360 gimple-ssa-evrp-analyze.h
6361 (class sprintf_dom_walker): Add after_dom_children member function.
6362 Add evrp_range_analyzer member.
6363 (sprintf_dom_walker::before_dom_children): Call into the EVRP
6364 range analyzer as needed.
6365 (sprintf_dom_walker::after_dom_children): New member function.
6366 * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
6367 if not optimizing.
6368 (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
6369 (evrp_range_analyzer::pop_to_marker): Likewise.
6370
6371 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
6372
6373 PR tree-optimization/84419
6374 * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
6375 with the required type if its current type is compatible but
6376 different.
6377
6378 2018-02-20 Jakub Jelinek <jakub@redhat.com>
6379
6380 PR middle-end/82004
6381 * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
6382 after vectorization.
6383
6384 2018-02-20 Martin Liska <mliska@suse.cz>
6385
6386 PR driver/83193
6387 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
6388 possible values if we don't have a hint.
6389
6390 2018-02-20 Martin Liska <mliska@suse.cz>
6391
6392 PR c/84310
6393 PR target/79747
6394 * final.c (shorten_branches): Build align_tab array with one
6395 more element.
6396 * opts.c (finish_options): Add alignment option limit check.
6397 (MAX_CODE_ALIGN): Likewise.
6398 (MAX_CODE_ALIGN_VALUE): Likewise.
6399 * doc/invoke.texi: Document maximum allowed option value for
6400 all -falign-* options.
6401
6402 2018-02-19 Jakub Jelinek <jakub@redhat.com>
6403
6404 PR target/84146
6405 * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
6406 * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
6407 * var-tracking.c (emit_note_insn_var_location): Remove all references
6408 to NOTE_INSN_CALL_ARG_LOCATION.
6409 (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
6410 the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
6411 Use copy_rtx_if_shared.
6412 * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
6413 NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
6414 (dwarf2out_var_location): Remove handling of
6415 NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
6416 on call_insn.
6417 * final.c (final_scan_insn): Remove all references to
6418 NOTE_INSN_CALL_ARG_LOCATION.
6419 (rest_of_clean_state): Likewise. Remove REG_CALL_ARG_LOCATION notes
6420 before dumping final insns.
6421 * except.c (emit_note_eh_region_end): Remove all references to
6422 NOTE_INSN_CALL_ARG_LOCATION.
6423 * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
6424 * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
6425 * config/arc/arc.c (hwloop_optimize): Likewise.
6426 * config/arm/arm.c (create_fix_barrier): Likewise.
6427 * config/s390/s390.c (s390_chunkify_start): Likewise.
6428 * config/sh/sh.c (find_barrier): Likewise.
6429 * config/i386/i386.c (rest_of_insert_endbranch,
6430 ix86_seh_fixup_eh_fallthru): Likewise.
6431 * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
6432 * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
6433 * config/frv/frv.c (frv_function_prologue): Likewise.
6434 * emit-rtl.c (try_split): Likewise. Copy over REG_CALL_ARG_LOCATION
6435 reg note.
6436 (note_outside_basic_block_p): Remove all references to
6437 NOTE_INSN_CALL_ARG_LOCATION.
6438 * gengtype.c (adjust_field_rtx_def): Likewise.
6439 * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
6440 Likewise.
6441 * jump.c (cleanup_barriers, delete_related_insns): Likewise.
6442 * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
6443
6444 PR c++/84444
6445 * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
6446 is ADDR_EXPR.
6447
6448 PR tree-optimization/84452
6449 * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
6450 expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
6451 is NULL.
6452
6453 2018-02-19 Martin Liska <mliska@suse.cz>
6454
6455 PR sanitizer/82183
6456 * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
6457
6458 2018-02-19 Martin Liska <mliska@suse.cz>
6459 Richard Sandiford <richard.sandiford@linaro.org>
6460
6461 PR tree-optimization/82491
6462 * gimple-fold.c (get_base_constructor): Make earlier bail out
6463 to prevent ubsan.
6464
6465 2018-02-19 Carl Love <cel@us.ibm.com>
6466
6467 * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
6468 BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
6469 BU_P8V_OVERLOAD_1.
6470 * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
6471 P8V_BUILTIN_VEC_NEG.
6472
6473 2018-02-19 Sebastian Perta <sebastian.perta@renesas.com>
6474
6475 * config/rl78/rl78.md (movdf): New define expand.
6476
6477 2018-02-19 Martin Liska <mliska@suse.cz>
6478
6479 PR other/80589
6480 * doc/invoke.texi: Fix typo.
6481 * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
6482
6483 2018-02-18 Segher Boessenkool <segher@kernel.crashing.org>
6484
6485 * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
6486 handle rs6000_single_float and rs6000_double_float specially for
6487 e500 family CPUs.
6488
6489 2018-02-16 Jeff Law <law@redhat.com>
6490
6491 * config/rx/rx.c (add_pop_cfi_notes): New function.;
6492 (pop_regs): Use it.
6493
6494 2018-02-16 Jakub Jelinek <jakub@redhat.com>
6495
6496 PR ipa/84425
6497 * ipa-inline.c (inline_small_functions): Fix a typo.
6498
6499 2018-02-16 Nathan Sidwell <nathan@acm.org>
6500
6501 * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
6502
6503 2018-02-16 Carl Love <cel@us.ibm.com>
6504
6505 * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
6506 Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
6507 from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
6508 * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
6509 expansion to P8V_BUILTIN_VEC_FLOAT2.
6510
6511 2018-02-16 Vladimir Makarov <vmakarov@redhat.com>
6512
6513 PR rtl-optimization/70023
6514 * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
6515 src_regno into account.
6516
6517 2018-02-16 Carl Love <cel@us.ibm.com>
6518
6519 * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
6520 * config/rs6000/rs6000-builtin.def: Remove macro expansion for
6521 VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
6522 * config/rs6000/rs6000.c: Remove case statements for
6523 P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
6524 P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
6525 and P9V_BUILTIN_VEC_VINSERT4B.
6526 * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
6527 P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
6528 * config/rs6000/vsx.md:
6529 * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
6530 vec_insert4b.
6531
6532 2018-02-16 Carl Love <cel@us.ibm.com>
6533
6534 * config/rs6000/altivec.h: Add builtin names vec_extract4b
6535 vec_insert4b.
6536 * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
6537 definitions.
6538 * config/rs6000/rs6000-c.c: Add the definitions for
6539 P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
6540 * config/rs6000/rs6000.c (altivec_expand_builtin): Add
6541 P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
6542 * config/rs6000/vsx.md: Add define_insn extract4b. Add define_expand
6543 definition for insert4b and define insn *insert3b_internal.
6544 * doc/extend.texi: Add documentation for vec_extract4b.
6545
6546 2018-02-16 Nathan Sidwell <nathan@acm.org>
6547
6548 * doc/extend.texi (Backwards Compatibility): Mention friend
6549 injection. Note for-scope is deprecated.
6550 * doc/invoke.texi (-ffriend-injection): Deprecate.
6551
6552 2018-02-16 Segher Boessenkool <segher@kernel.crashing.org>
6553
6554 * combine.c (try_combine): When adjusting LOG_LINKS for the destination
6555 that moved to I2, also allow destinations that are a paradoxical
6556 subreg (instead of a normal reg).
6557
6558 2018-02-16 Oleg Endo <olegendo@gcc.gnu.org>
6559
6560 PR target/83831
6561 * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
6562 to QImode.
6563
6564 2018-02-16 Richard Biener <rguenther@suse.de>
6565
6566 PR tree-optimization/84037
6567 PR tree-optimization/84016
6568 PR target/82862
6569 * config/i386/i386.c (ix86_builtin_vectorization_cost):
6570 Adjust vec_construct for the fact we need additional higher latency
6571 128bit inserts for AVX256 and AVX512 vector builds.
6572 (ix86_add_stmt_cost): Scale vector construction cost for
6573 elementwise loads.
6574
6575 2018-02-16 Richard Biener <rguenther@suse.de>
6576
6577 PR tree-optimization/84417
6578 * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
6579 the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
6580 (non_rewritable_lvalue_p): Likewise, use poly-ints.
6581
6582 2018-02-16 Martin Liska <mliska@suse.cz>
6583
6584 PR sanitizer/84307
6585 * internal-fn.def (ASAN_CHECK): Set proper flags.
6586 (ASAN_MARK): Likewise.
6587
6588 2018-02-16 Julia Koval <julia.koval@intel.com>
6589
6590 * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
6591 from PTA_CANNONLAKE.
6592
6593 2018-02-16 Jakub Jelinek <jakub@redhat.com>
6594
6595 PR target/84272
6596 * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
6597 Use ++iter rather than iter++ for std::list iterators.
6598 (func_fma_steering::dfs): Likewise. Don't delete nodes right away,
6599 defer deleting them until all nodes in the forest are processed. Do
6600 free even leaf nodes. Change to_process into auto_vec.
6601
6602 PR bootstrap/84405
6603 * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
6604 * vec.h (vec_default_construct): Use memset instead of placement new
6605 if BROKEN_VALUE_INITIALIZATION is defined.
6606 * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
6607 memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
6608 is defined.
6609
6610 PR rtl-optimization/83723
6611 * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
6612 * lra.c (lra_substitute_pseudo): Likewise. If true, use
6613 gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to
6614 recursive calls.
6615 (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
6616 callers.
6617 * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
6618
6619 2018-02-16 Eric Botcazou <ebotcazou@adacore.com>
6620
6621 PR rtl-optimization/81443
6622 * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
6623 from inner REGs to paradoxical SUBREGs.
6624
6625 2018-02-16 Richard Biener <rguenther@suse.de>
6626
6627 PR tree-optimization/84399
6628 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
6629 For operands we can analyze at their definition make sure we can
6630 analyze them at each use as well.
6631
6632 2018-02-16 Richard Biener <rguenther@suse.de>
6633
6634 PR tree-optimization/84190
6635 * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
6636 volatile accesses if the decl isn't volatile.
6637
6638 2018-02-15 Jason Merrill <jason@redhat.com>
6639
6640 PR c++/84314 - ICE with templates and fastcall attribute.
6641 * attribs.c (build_type_attribute_qual_variant): Don't clobber
6642 TYPE_CANONICAL on an existing type.
6643
6644 2018-02-15 Jakub Jelinek <jakub@redhat.com>
6645
6646 PR tree-optimization/84383
6647 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
6648 dstoff nor call operand_equal_p if dstbase is NULL.
6649
6650 PR tree-optimization/84334
6651 * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
6652 also a CONSTANT_CLASS_P, punt.
6653
6654 2018-02-14 Jim Wilson <jimw@sifive.com>
6655
6656 * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
6657 first SMALL_OPERAND check. New local min_second_step. Move assert
6658 to where locals are set. Add TARGET_RVC support.
6659 * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
6660
6661 2018-02-14 Indu Bhagat <indu.bhagat@oracle.com>
6662
6663 * doc/invoke.texi: Correct -Wformat-overflow code sample.
6664
6665 2018-02-14 Martin Sebor <msebor@redhat.com>
6666
6667 PR tree-optimization/83698
6668 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
6669 arrays constrain the offset range to their bounds.
6670 (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
6671 (builtin_access::overlap): Avoid setting the size of overlap if it's
6672 already been set.
6673 (maybe_diag_overlap): Also consider arrays when deciding what values
6674 of offsets to include in diagnostics.
6675
6676 2018-02-14 Martin Sebor <msebor@redhat.com>
6677
6678 PR c/84108
6679 * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
6680 that correspond to the kind of a declaration.
6681
6682 2018-02-14 John David Anglin <danglin@gcc.gnu.org>
6683
6684 PR target/83984
6685 * config/pa/pa.md: Load address of PIC label using the linkage table
6686 if the label is nonlocal.
6687
6688 2018-02-14 Kelvin Nilsen <kelvin@gcc.gnu.org>
6689
6690 * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
6691 warning message if user requests -maltivec=be.
6692 * doc/invoke.texi: Document deprecation of -maltivec=be.
6693
6694 2018-02-14 Will Schmidt <will_schmidt@vnet.ibm.com>
6695
6696 PR target/84220
6697 * config/rs6000/rs6000-c.c: Update definitions for
6698 ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
6699 VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
6700
6701 2018-02-14 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
6702
6703 PR target/84239
6704 * config/i386/cetintrin.h: Remove _rdssp[d|q] and
6705 add _get_ssp intrinsics. Remove argument from
6706 __builtin_ia32_rdssp[d|q].
6707 * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
6708 * config/i386/i386-builtin.def: Remove argument from
6709 __builtin_ia32_rdssp[d|q].
6710 * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
6711 ix86_expand_special_args_builtin for _rdssp[d|q].
6712 * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
6713 Clear register before usage.
6714 * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
6715 Add documentation for new _get_ssp and _inc_ssp intrinsics.
6716
6717 2018-02-14 Richard Sandiford <richard.sandiford@linaro.org>
6718
6719 PR tree-optimization/84357
6720 * tree-data-ref.c (object_address_invariant_in_loop_p): Check
6721 operand 1 of an ARRAY_REF too.
6722
6723 2018-02-14 Oleg Endo <olegendo@gcc.gnu.org>
6724
6725 PR target/83831
6726 * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
6727 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6728 declarations.
6729 (set_of_reg): New struct.
6730 (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
6731 * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
6732 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6733 functions.
6734 * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
6735 Split into bitclr, bitset, bitinvert patterns if appropriate.
6736 (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
6737 use rx_fuse_in_memory_bitop.
6738 (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
6739 to named insn, correct maximum insn length.
6740
6741 2018-02-14 Jozef Lawrynowicz <jozefl.gcc@gmail.com>
6742
6743 PR target/79242
6744 * machmode.def: Define a complex mode for PARTIAL_INT.
6745 * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
6746 MODE_PARTIAL_INT.
6747 * doc/rtl.texi: Document CSPImode.
6748 * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
6749 handling.
6750 (msp430_hard_regno_nregs_with_padding): Likewise.
6751
6752 2018-02-13 Peter Bergner <bergner@vnet.ibm.com>
6753
6754 PR target/84279
6755 * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
6756
6757 2018-02-13 Segher Boessenkool <segher@kernel.crashing.org>
6758
6759 PR rtl-optimization/84169
6760 * combine.c (try_combine): New variable split_i2i3. Set it to true if
6761 we generated a parallel as new i3 and we split that to new i2 and i3
6762 instructions. Handle split_i2i3 similar to swap_i2i3: scan the
6763 LOG_LINKs of i3 to see which of those need to link to i2 now. Link
6764 those to i2, not i1. Partially rewrite this scan code.
6765
6766 2018-02-13 Jakub Jelinek <jakub@redhat.com>
6767
6768 PR c/82210
6769 * stor-layout.c (place_field): For variable length fields, adjust
6770 offset_align afterwards not just based on the field's alignment,
6771 but also on the size.
6772
6773 PR middle-end/84309
6774 * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
6775 of exps and logs in the use_exp2 case.
6776
6777 2018-02-13 Jeff Law <law@redhat.com>
6778
6779 * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
6780 entry for "vector".
6781
6782 * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
6783 ARGS as unused.
6784
6785 2018-02-13 Alexandre Oliva <aoliva@redhat.com>
6786
6787 PR debug/84342
6788 PR debug/84319
6789 * common.opt (gas-loc-support, gas-locview-support): New.
6790 (ginline-points, ginternal-reset-location-views): New.
6791 * doc/invoke.texi: Document them. Use @itemx where intended.
6792 (gvariable-location-views): Adjust.
6793 * target.def (reset_location_view): New.
6794 * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
6795 (TARGET_RESET_LOCATION_VIEW): New.
6796 * doc/tm.texi: Rebuilt.
6797 * dwarf2out.c (dwarf2out_default_as_loc_support): New.
6798 (dwarf2out_default_as_locview_support): New.
6799 (output_asm_line_debug_info): Use option variables.
6800 (dwarf2out_maybe_output_loclist_view_pair): Likewise.
6801 (output_loc_list): Likewise.
6802 (add_high_low_attributes): Check option variables.
6803 Don't output entry view attribute in strict mode.
6804 (gen_inlined_subroutine_die): Check option variables.
6805 (dwarf2out_inline_entry): Likewise.
6806 (init_sections_and_labels): Likewise.
6807 (dwarf2out_early_finish): Likewise.
6808 (maybe_reset_location_view): New, from...
6809 (dwarf2out_var_location): ... here. Call it.
6810 * debug.h (dwarf2out_default_as_loc_support): Declare.
6811 (dwarf2out_default_as_locview_support): Declare.
6812 * hooks.c (hook_int_rtx_insn_0): New.
6813 * hooks.h (hook_int_rtx_insn_0): Declare.
6814 * toplev.c (process_options): Take -gas-loc-support and
6815 -gas-locview-support from dwarf2out. Enable
6816 -gvariable-location-views by default only with locview
6817 assembler support. Enable -ginternal-reset-location-views by
6818 default only if the target defines the corresponding hook.
6819 Enable -ginline-points by default if location views are
6820 enabled; force it disabled if statement frontiers are
6821 disabled.
6822 * tree-inline.c (expand_call_inline): Check option variables.
6823 * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
6824
6825 2018-02-13 Richard Sandiford <richard.sandiford@linaro.org>
6826
6827 PR tree-optimization/84321
6828 * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
6829 handling. Also check whether the anti-range contains any values
6830 that satisfy the mask; switch to a VR_RANGE if not.
6831
6832 2018-02-13 Paolo Bonzini <bonzini@gnu.org>
6833
6834 PR sanitizer/84340
6835 * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
6836
6837 2018-02-13 Martin Jambor <mjambor@suse.cz>
6838
6839 PR c++/83990
6840 * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
6841 of call statements, also set location of a load to a temporary.
6842
6843 2018-02-13 Sebastian Perta <sebastian.perta@renesas.com>
6844
6845 * config/rl78/rl78.c (add_vector_labels): New function.
6846 * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
6847 * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
6848 * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert
6849 which checks that no arguments are passed.
6850 * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
6851 * doc/extend.texi: Documentation for the new attribute.
6852
6853 2018-02-13 Andreas Schwab <schwab@suse.de>
6854
6855 * config/riscv/linux.h (CPP_SPEC): Define.
6856
6857 2018-02-13 Jakub Jelinek <jakub@redhat.com>
6858
6859 PR target/84335
6860 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
6861 OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
6862 OPTION_MASK_ISA_AES as first argument to def_builtin_const
6863 for AES builtins. Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
6864 instead of OPTION_MASK_ISA_PCLMUL as first argument to
6865 def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
6866 * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
6867 temporarily for AES and PCLMUL builtins.
6868
6869 PR tree-optimization/84339
6870 * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
6871 ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
6872 Formatting fixes.
6873
6874 PR middle-end/84309
6875 * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
6876 exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
6877 * generic-match-head.c (canonicalize_math_after_vectorization_p): New
6878 inline function.
6879 * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
6880 inline function.
6881 * omp-simd-clone.h: New file.
6882 * omp-simd-clone.c: Include omp-simd-clone.h.
6883 (expand_simd_clones): No longer static.
6884 * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
6885 cgraph.h and omp-simd-clone.h.
6886 (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
6887 (vect_recog_widen_shift_pattern): Formatting fix.
6888 (vect_pattern_recog_1): Don't check optab for calls.
6889
6890 PR target/84336
6891 * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
6892 operands[2] into a REG before using gen_lowpart on it.
6893
6894 2018-02-12 Jeff Law <law@redhat.com>
6895
6896 PR target/83760
6897 * config/sh/sh.c (find_barrier): Consider a sibling call
6898 a barrier as well.
6899
6900 * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
6901 successfully back substituting a reg.
6902
6903 2018-02-12 Richard Biener <rguenther@suse.de>
6904
6905 PR tree-optimization/84037
6906 * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
6907 parameter, move visited init to caller.
6908 (vect_slp_analyze_operations): Separate cost from validity
6909 check, initialize visited once for all instances.
6910 (vect_schedule_slp): Analyze map to CSE vectorized nodes once
6911 for all instances.
6912 * tree-vect-stmts.c (vect_model_simple_cost): Make early
6913 out an assert.
6914 (vect_model_promotion_demotion_cost): Likewise.
6915 (vectorizable_bswap): Guard cost modeling with !slp_node
6916 instead of !PURE_SLP_STMT to avoid double-counting on hybrid
6917 SLP stmts.
6918 (vectorizable_call): Likewise.
6919 (vectorizable_conversion): Likewise.
6920 (vectorizable_assignment): Likewise.
6921 (vectorizable_shift): Likewise.
6922 (vectorizable_operation): Likewise.
6923 (vectorizable_store): Likewise.
6924 (vectorizable_load): Likewise.
6925 (vectorizable_condition): Likewise.
6926 (vectorizable_comparison): Likewise.
6927
6928 2018-02-12 Paolo Bonzini <bonzini@gnu.org>
6929
6930 PR sanitizer/84307
6931 * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
6932 (ASAN_MARK): Fix fnspec to account for return value, change pointer
6933 argument from 'R' to 'W' so that the pointed-to datum is clobbered.
6934
6935 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
6936
6937 PR middle-end/83665
6938 * params.def (inline-min-speedup): Increase from 8 to 15.
6939 (max-inline-insns-auto): Decrease from 40 to 30.
6940 * ipa-split.c (consider_split): Add some buffer for function to
6941 be considered inlining candidate.
6942 * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
6943 default values.
6944
6945 2018-02-12 Richard Biener <rguenther@suse.de>
6946
6947 PR tree-optimization/84037
6948 * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
6949 matched stmts if we cannot swap the non-matched ones.
6950
6951 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
6952
6953 * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
6954 _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
6955 _mm_maskz_scalef_round_ss): New intrinsics.
6956 (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
6957 * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
6958 __builtin_ia32_scalefss_round): Remove.
6959 (__builtin_ia32_scalefsd_mask_round,
6960 __builtin_ia32_scalefss_mask_round): New intrinsics.
6961 * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
6962 (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
6963 ((match_operand:VF_128 2 "<round_nimm_predicate>"
6964 "<round_constraint>")): Changed to ...
6965 ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
6966 "<round_scalar_constraint>")): ... this.
6967 ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
6968 %0, %1, %2<round_op3>}"): Changed to ...
6969 ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
6970 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
6971 %2<round_scalar_mask_op3>}"): ... this.
6972 * config/i386/subst.md (round_scalar_nimm_predicate): New.
6973
6974 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
6975
6976 * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
6977 (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
6978 (_mm_maskz_sqrt_round_ss): New intrinsics.
6979 (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
6980 (__builtin_ia32_sqrtsd_mask_round)
6981 (__builtin_ia32_sqrtss_mask_round): New builtins.
6982 * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
6983 (__builtin_ia32_sqrtss_round): Remove.
6984 (__builtin_ia32_sqrtsd_mask_round)
6985 (__builtin_ia32_sqrtss_mask_round): New builtins.
6986 * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
6987 (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
6988 ((match_operand:VF_128 1 "vector_operand"
6989 "xBm,<round_constraint>")): Changed to ...
6990 ((match_operand:VF_128 1 "vector_operand"
6991 "xBm,<round_scalar_constraint>")): ... this.
6992 (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
6993 %0, %2, %<iptr>1<round_op3>}): Changed to ...
6994 (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
6995 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
6996 %<iptr>1<round_scalar_mask_op3>}): ... this.
6997 ((set_attr "prefix" "<round_prefix>")): Changed to ...
6998 ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
6999
7000 2018-02-11 Steven Munroe <munroesj@gcc.gnu.org>
7001
7002 PR target/84266
7003 * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
7004 Cast vec_cmpeq result to correct type.
7005 * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
7006 Cast vec_cmpgt result to correct type.
7007
7008 2018-02-11 Alexandre Oliva <aoliva@redhat.com>
7009
7010 * final.c (final_scan_insn_1): Renamed from...
7011 (final_scan_insn): ... this. New wrapper, to recover
7012 seen from the outermost call in recursive ones.
7013 * config/sparc/sparc.c (output_return): Drop seen from call.
7014 (output_sibcall): Likewise.
7015 * config/visium/visium.c (output_branch): Likewise.
7016
7017 2018-02-10 John David Anglin <danglin@gcc.gnu.org>
7018
7019 * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
7020 function label.
7021
7022 2018-02-10 Alan Modra <amodra@gmail.com>
7023
7024 PR target/84300
7025 * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
7026 Specify LR as an input.
7027
7028 2018-02-10 Jakub Jelinek <jakub@redhat.com>
7029
7030 PR sanitizer/83987
7031 * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
7032 remove_member_access_dummy_vars): New functions.
7033 (lower_omp_for, lower_omp_taskreg, lower_omp_target,
7034 lower_omp_1, execute_lower_omp): Use them.
7035
7036 PR rtl-optimization/84308
7037 * shrink-wrap.c (spread_components): Release todo vector.
7038
7039 2018-02-09 Vladimir Makarov <vmakarov@redhat.com>
7040
7041 PR rtl-optimization/57193
7042 * ira-color.c (struct allocno_color_data): Add member
7043 conflict_allocno_hard_prefs.
7044 (update_conflict_allocno_hard_prefs): New.
7045 (bucket_allocno_compare_func): Add a preference based on
7046 conflict_allocno_hard_prefs.
7047 (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
7048 (color_allocnos): Remove a dead code. Initiate
7049 conflict_allocno_hard_prefs. Call update_costs_from_prefs.
7050
7051 2018-02-09 Jakub Jelinek <jakub@redhat.com>
7052
7053 PR target/84226
7054 * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
7055 constraint from =wa to wa. Avoid a subreg on the output operand,
7056 instead use a pseudo and subreg it in a move.
7057 (p9_xxbrd_<mode>): Changed to ...
7058 (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
7059 (p9_xxbrd_v2df): New expander.
7060 (p9_xxbrw_<mode>): Changed to ...
7061 (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
7062 (p9_xxbrw_v4sf): New expander.
7063
7064 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
7065
7066 * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
7067
7068 2018-02-09 Peter Bergner <bergner@vnet.ibm.com>
7069
7070 PR target/83926
7071 * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
7072 multiply in 32-bit mode.
7073 (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
7074 (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
7075 mode.
7076
7077 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
7078
7079 * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
7080 to allow or block "symbol_ref" depending on the value of TARGET_JSR.
7081 * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
7082 * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
7083
7084 2018-02-09 Pierre-Marie de Rodat <derodat@adacore.com>
7085
7086 PR lto/84213
7087 * dwarf2out.c (is_trivial_indirect_ref): New function.
7088 (dwarf2out_late_global_decl): Do not generate a location
7089 attribute for variables that have a non-trivial DECL_VALUE_EXPR
7090 and that are not defined in the current unit.
7091
7092 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
7093
7094 * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
7095 instead of a libcall for UNORDERED.
7096
7097 2018-02-09 Tamar Christina <tamar.christina@arm.com>
7098
7099 PR target/82641
7100 * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
7101 __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
7102
7103 2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
7104
7105 PR target/PR84295
7106 * config/s390/s390.c (s390_set_current_function): Invoke
7107 s390_indirect_branch_settings also if fndecl didn't change.
7108
7109 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
7110
7111 * config/rs6000/rs6000.md (blockage): Set length to zero.
7112
7113 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
7114
7115 * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
7116
7117 2018-02-09 Jakub Jelinek <jakub@redhat.com>
7118
7119 PR sanitizer/84285
7120 * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
7121 STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
7122 -static-lib*san.
7123
7124 PR debug/84252
7125 * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
7126 PARALLEL incoming that failed vt_get_decl_and_offset check.
7127
7128 PR middle-end/84237
7129 * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
7130 * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
7131 TREE_READONLY bit.
7132 (get_variable_section): For decls in named .bss* sections pass true as
7133 second argument to bss_initializer_p.
7134
7135 2018-02-09 Marek Polacek <polacek@redhat.com>
7136 Jakub Jelinek <jakub@redhat.com>
7137
7138 PR c++/83659
7139 * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
7140 Formatting fixes. Verify first that tree_fits_poly_int64_p (op01).
7141 Sync some changes from cxx_fold_indirect_ref.
7142
7143 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
7144
7145 * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
7146 markers.
7147 * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
7148 (BLOCK_INLINE_ENTRY_LABEL): New.
7149 (dwarf2out_var_location): Disregard inline entry markers.
7150 (inline_entry_data): New struct.
7151 (inline_entry_data_hasher): New hashtable type.
7152 (inline_entry_data_hasher::hash): New.
7153 (inline_entry_data_hasher::equal): New.
7154 (inline_entry_data_table): New variable.
7155 (add_high_low_attributes): Add DW_AT_entry_pc and
7156 DW_AT_GNU_entry_view attributes if a pending entry is found
7157 in inline_entry_data_table. Add old entry_pc attribute only
7158 if debug nonbinding markers are disabled.
7159 (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
7160 markers are enabled.
7161 (block_within_block_p, dwarf2out_inline_entry): New.
7162 (dwarf2out_finish): Check that no entries remained in
7163 inline_entry_data_table.
7164 * final.c (reemit_insn_block_notes): Handle inline entry notes.
7165 (final_scan_insn, notice_source_line): Likewise.
7166 (rest_of_clean_state): Skip inline entry markers.
7167 * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
7168 markers.
7169 * gimple.c (gimple_build_debug_inline_entry): New.
7170 * gimple.h (enum gimple_debug_subcode): Add
7171 GIMPLE_DEBUG_INLINE_ENTRY.
7172 (gimple_build_debug_inline_entry): Declare.
7173 (gimple_debug_inline_entry_p): New.
7174 (gimple_debug_nonbind_marker_p): Adjust.
7175 * insn-notes.def (INLINE_ENTRY): New.
7176 * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
7177 inline entry marker notes.
7178 (print_insn): Likewise.
7179 * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
7180 (INSN_DEBUG_MARKER_KIND): Likewise.
7181 (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
7182 * tree-inline.c (expand_call_inline): Build and insert
7183 debug_inline_entry stmt.
7184 * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
7185 inline entry blocks early, if nonbind markers are enabled.
7186 (dump_scope_block): Dump fragment info.
7187 * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
7188 * doc/gimple.texi (gimple_debug_inline_entry_p): New.
7189 (gimple_build_debug_inline_entry): New.
7190 * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
7191 Enable/disable inline entry points too.
7192 * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
7193 (DEBUG_INSN): Describe inline entry markers.
7194
7195 * common.opt (gvariable-location-views): New.
7196 (gvariable-location-views=incompat5): New.
7197 * config.in: Rebuilt.
7198 * configure: Rebuilt.
7199 * configure.ac: Test assembler for view support.
7200 * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
7201 * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
7202 * dwarf2out.c (var_loc_view): New typedef.
7203 (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
7204 (dwarf2out_locviews_in_attribute): New.
7205 (dwarf2out_locviews_in_loclist): New.
7206 (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
7207 (enum dw_line_info_opcode): Add LI_adv_address.
7208 (struct dw_line_info_table): Add view.
7209 (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
7210 (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
7211 (zero_view_p): New variable.
7212 (ZERO_VIEW_P): New macro.
7213 (output_asm_line_debug_info): New.
7214 (struct var_loc_node): Add view.
7215 (add_AT_view_list, AT_loc_list): New.
7216 (add_var_loc_to_decl): Add view param. Test it against last.
7217 (new_loc_list): Add view params. Record them.
7218 (AT_loc_list_ptr): Handle loc and view lists.
7219 (view_list_to_loc_list_val_node): New.
7220 (print_dw_val): Handle dw_val_class_view_list.
7221 (size_of_die): Likewise.
7222 (value_format): Likewise.
7223 (loc_list_has_views): New.
7224 (gen_llsym): Set vl_symbol too.
7225 (maybe_gen_llsym, skip_loc_list_entry): New.
7226 (dwarf2out_maybe_output_loclist_view_pair): New.
7227 (output_loc_list): Output view list or entries too.
7228 (output_view_list_offset): New.
7229 (output_die): Handle dw_val_class_view_list.
7230 (output_dwarf_version): New.
7231 (output_compilation_unit_header): Use it.
7232 (output_skeleton_debug_sections): Likewise.
7233 (output_rnglists, output_line_info): Likewise.
7234 (output_pubnames, output_aranges): Update version comments.
7235 (output_one_line_info_table): Output view numbers in asm comments.
7236 (dw_loc_list): Determine current endview, pass it to new_loc_list.
7237 Call maybe_gen_llsym.
7238 (loc_list_from_tree_1): Adjust.
7239 (add_AT_location_description): Create view list attribute if
7240 needed, check it's absent otherwise.
7241 (convert_cfa_to_fb_loc_list): Adjust.
7242 (maybe_emit_file): Call output_asm_line_debug_info for test.
7243 (dwarf2out_var_location): Reset views as needed. Precompute
7244 add_var_loc_to_decl args. Call get_attr_min_length only if we have the
7245 attribute. Set view.
7246 (new_line_info_table): Reset next view.
7247 (set_cur_line_info_table): Call output_asm_line_debug_info for test.
7248 (dwarf2out_source_line): Likewise. Output view resets and labels to
7249 the assembler, or select appropriate line info opcodes.
7250 (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
7251 (optimize_string_length): Catch it. Adjust.
7252 (resolve_addr): Copy vl_symbol along with ll_symbol. Handle
7253 dw_val_class_view_list, and remove it if no longer needed.
7254 (hash_loc_list): Hash view numbers.
7255 (loc_list_hasher::equal): Compare them.
7256 (optimize_location_lists): Check whether a view list symbol is
7257 needed, and whether the locview attribute is present, and
7258 whether they match. Remove the locview attribute if no longer
7259 needed.
7260 (index_location_lists): Call skip_loc_list_entry for test.
7261 (dwarf2out_finish): Call output_asm_line_debug_info for test.
7262 Use output_dwarf_version.
7263 * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
7264 (struct dw_val_node): Add val_view_list.
7265 * final.c (SEEN_NEXT_VIEW): New.
7266 (set_next_view_needed): New.
7267 (clear_next_view_needed): New.
7268 (maybe_output_next_view): New.
7269 (final_start_function): Rename to...
7270 (final_start_function_1): ... this. Take pointer to FIRST,
7271 add SEEN parameter. Emit param bindings in the initial view.
7272 (final_start_function): Reintroduce SEEN-less interface.
7273 (final): Rename to...
7274 (final_1): ... this. Take SEEN parameter. Output final pending
7275 next view at the end.
7276 (final): Reintroduce seen-less interface.
7277 (final_scan_insn): Output pending next view before switching
7278 sections or ending a block. Mark the next view as needed when
7279 outputting variable locations. Notify debug backend of section
7280 changes, and of location view changes.
7281 (rest_of_handle_final): Adjust.
7282 * toplev.c (process_options): Autodetect value for debug variable
7283 location views option. Warn on incompat5 without -gdwarf-5.
7284 * doc/invoke.texi (gvariable-location-views): New.
7285 (gvariable-location-views=incompat5): New.
7286 (gno-variable-location-views): New.
7287
7288 2018-02-08 David Malcolm <dmalcolm@redhat.com>
7289
7290 PR tree-optimization/84136
7291 * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
7292 that the result of find_edge is non-NULL.
7293
7294 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
7295
7296 PR target/83008
7297 * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
7298 storing integer register in SImode. Fix cost of 256 and 512
7299 byte aligned SSE register store.
7300
7301 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
7302
7303 * config/i386/i386.c (ix86_multiplication_cost): Fix
7304 multiplication cost for TARGET_AVX512DQ.
7305
7306 2018-02-08 Marek Polacek <polacek@redhat.com>
7307
7308 PR tree-optimization/84238
7309 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
7310 get_range_strlen.
7311
7312 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
7313
7314 PR tree-optimization/84265
7315 * tree-vect-stmts.c (vectorizable_store): Don't treat
7316 VMAT_CONTIGUOUS accesses as grouped.
7317 (vectorizable_load): Likewise.
7318
7319 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
7320
7321 PR tree-optimization/81635
7322 * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
7323 * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
7324 (test_round_for_mask): New functions.
7325 (wide_int_cc_tests): Call test_round_for_mask.
7326 * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
7327 * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
7328 * tree-data-ref.c (split_constant_offset_1): Use it to refine the
7329 range returned by get_range_info.
7330
7331 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
7332
7333 PR ipa/81360
7334 * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
7335 * symtab.c: Include builtins.h
7336 (symtab_node::output_to_lto_symbol_table_p): Move here
7337 from lto-streamer-out.c:output_symbol_p.
7338 * lto-streamer-out.c (write_symbol): Turn early exit to assert.
7339 (output_symbol_p): Move all logic to symtab.c
7340 (produce_symtab): Update.
7341
7342 2018-02-08 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
7343
7344 * config/s390/s390-opts.h (enum indirect_branch): Define.
7345 * config/s390/s390-protos.h (s390_return_addr_from_memory)
7346 (s390_indirect_branch_via_thunk)
7347 (s390_indirect_branch_via_inline_thunk): Add function prototypes.
7348 (enum s390_indirect_branch_type): Define.
7349 * config/s390/s390.c (struct s390_frame_layout, struct
7350 machine_function): Remove.
7351 (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
7352 (indirect_branch_table_label_no, indirect_branch_table_name):
7353 Define variables.
7354 (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
7355 (enum s390_indirect_branch_option): Define.
7356 (s390_return_addr_from_memory): New function.
7357 (s390_handle_string_attribute): New function.
7358 (s390_attribute_table): Add new attribute handler.
7359 (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
7360 (s390_indirect_branch_via_thunk): New function.
7361 (s390_indirect_branch_via_inline_thunk): New function.
7362 (s390_function_ok_for_sibcall): When jumping via thunk disallow
7363 sibling call optimization for non z10 compiles.
7364 (s390_emit_call): Force indirect branch target to be a single
7365 register. Add r1 clobber for non-z10 compiles.
7366 (s390_emit_epilogue): Emit return jump via return_use expander.
7367 (s390_reorg): Handle JUMP_INSNs as execute targets.
7368 (s390_option_override_internal): Perform validity checks for the
7369 new command line options.
7370 (s390_indirect_branch_attrvalue): New function.
7371 (s390_indirect_branch_settings): New function.
7372 (s390_set_current_function): Invoke s390_indirect_branch_settings.
7373 (s390_output_indirect_thunk_function): New function.
7374 (s390_code_end): Implement target hook.
7375 (s390_case_values_threshold): Implement target hook.
7376 (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
7377 macros.
7378 * config/s390/s390.h (struct s390_frame_layout)
7379 (struct machine_function): Move here from s390.c.
7380 (TARGET_INDIRECT_BRANCH_NOBP_RET)
7381 (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
7382 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
7383 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
7384 (TARGET_INDIRECT_BRANCH_NOBP_CALL)
7385 (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
7386 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
7387 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
7388 (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
7389 * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
7390 (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
7391 (mnemonic attribute): Add values which aren't recognized
7392 automatically.
7393 ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
7394 pattern for branch conversion. Fix mnemonic attribute.
7395 ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
7396 indirect branch via thunk if requested.
7397 ("indirect_jump", "<code>"): Expand patterns for branch conversion.
7398 ("*indirect_jump"): Disable for branch conversion using out of
7399 line thunks.
7400 ("indirect_jump_via_thunk<mode>_z10")
7401 ("indirect_jump_via_thunk<mode>")
7402 ("indirect_jump_via_inlinethunk<mode>_z10")
7403 ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
7404 ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
7405 ("casesi_jump_via_inlinethunk<mode>_z10")
7406 ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
7407 ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
7408 ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
7409 ("*indirect2_jump"): Disable for branch conversion.
7410 ("casesi_jump"): Turn into expander and expand patterns for branch
7411 conversion.
7412 ("return_use"): New expander.
7413 ("*return"): Emit return via thunk and rename it to ...
7414 ("*return<mode>"): ... this one.
7415 * config/s390/s390.opt: Add new options and and enum for the
7416 option values.
7417
7418 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
7419
7420 * lra-constraints.c (match_reload): Unconditionally use
7421 gen_lowpart_SUBREG, rather than selecting between that
7422 and equivalent gen_rtx_SUBREG code.
7423
7424 2018-02-08 Richard Biener <rguenther@suse.de>
7425
7426 PR tree-optimization/84233
7427 * tree-ssa-phiprop.c (propagate_with_phi): Use separate
7428 changed flag instead of boguously re-using phi_inserted.
7429
7430 2018-02-08 Martin Jambor <mjambor@suse.cz>
7431
7432 * hsa-gen.c (get_symbol_for_decl): Set program allocation for
7433 static local variables.
7434
7435 2018-02-08 Richard Biener <rguenther@suse.de>
7436
7437 PR tree-optimization/84278
7438 * tree-vect-stmts.c (vectorizable_store): When looking for
7439 smaller vector types to perform grouped strided loads/stores
7440 make sure the mode is supported by the target.
7441 (vectorizable_load): Likewise.
7442
7443 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
7444
7445 * config/aarch64/aarch64.c (aarch64_components_for_bb):
7446 Increase LDP/STP opportunities by adding adjacent callee-saves.
7447
7448 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
7449
7450 PR rtl-optimization/84068
7451 PR rtl-optimization/83459
7452 * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
7453
7454 2018-02-08 Aldy Hernandez <aldyh@redhat.com>
7455
7456 PR tree-optimization/84224
7457 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
7458 * calls.c (gimple_alloca_call_p): Only return TRUE when we have
7459 non-zero arguments.
7460
7461 2018-02-07 Iain Sandoe <iain@codesourcery.com>
7462
7463 PR target/84113
7464 * config/rs6000/altivec.md (*restore_world): Remove LR use.
7465 * config/rs6000/predicates.md (restore_world_operation): Adjust op
7466 count, remove one USE.
7467
7468 2018-02-07 Michael Meissner <meissner@linux.vnet.ibm.com>
7469
7470 * doc/install.texi (Configuration): Document the
7471 --with-long-double-format={ibm,ieee} PowerPC configuration
7472 options.
7473
7474 PR target/84154
7475 * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
7476 Convert from define_expand to be define_insn_and_split. Rework
7477 float/double/_Float128 conversions to QI/HI/SImode to work with
7478 both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where
7479 conversions to QI/HImode types did a store and then a load to
7480 truncate the value. For conversions to VSX registers, don't split
7481 the insn, instead emit the code directly. Use the code iterator
7482 any_fix to combine signed and unsigned conversions.
7483 (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
7484 (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
7485 (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
7486 (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
7487 (fix_<mode>di2_hw): Likewise.
7488 (fixuns_<mode>di2_hw): Likewise.
7489 (fix_<mode>si2_hw): Likewise.
7490 (fixuns_<mode>si2_hw): Likewise.
7491 (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
7492 (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
7493 (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
7494 fix<uns>_trunc<SFDF:mode>si2_p8.
7495 (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
7496 used.
7497 (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
7498 (fix<uns>_<mode>_mem): Likewise.
7499 (fctiw<u>z_<mode>_mem): Likewise.
7500 (fix<uns>_<mode>_mem): Likewise.
7501 (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
7502 the register allocator from doing a direct move to the GPRs to do
7503 a store, and instead use the ISA 3.0 store byte/half-word from
7504 vector register instruction. For IEEE 128-bit floating point,
7505 also optimize stores of 32-bit ints.
7506 (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
7507
7508 2018-02-07 Alan Hayward <alan.hayward@arm.com>
7509
7510 * genextract.c (push_pathstr_operand): New function to support
7511 [a-zA-Z].
7512 (walk_rtx): Call push_pathstr_operand.
7513 (print_path): Support [a-zA-Z].
7514
7515 2018-02-07 Richard Biener <rguenther@suse.de>
7516
7517 PR tree-optimization/84037
7518 * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
7519 (cse_and_gimplify_to_preheader): Declare.
7520 (vect_get_place_in_interleaving_chain): Likewise.
7521 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
7522 ivexpr_map.
7523 (_loop_vec_info::~_loop_vec_info): Delete it.
7524 (cse_and_gimplify_to_preheader): New function.
7525 * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
7526 * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
7527 (vectorizable_load): Likewise. For grouped stores always base
7528 the IV on the first element.
7529 * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
7530 condition before gimplifying.
7531
7532 2018-02-07 Jakub Jelinek <jakub@redhat.com>
7533
7534 * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
7535 *DIV_EXPR and *MOD_EXPR.
7536
7537 2018-02-07 H.J. Lu <hongjiu.lu@intel.com>
7538
7539 PR target/84248
7540 * config/i386/i386.c (ix86_option_override_internal): Mask out
7541 the CF_SET bit when checking -fcf-protection.
7542
7543 2018-02-07 Tom de Vries <tom@codesourcery.com>
7544
7545 PR libgomp/84217
7546 * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
7547 enough.
7548
7549 2018-02-07 Richard Biener <rguenther@suse.de>
7550
7551 PR tree-optimization/84204
7552 * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
7553 this place.
7554
7555 PR tree-optimization/84205
7556 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
7557 special-case isl_ast_op_zdiv_r.
7558
7559 PR tree-optimization/84223
7560 * graphite-scop-detection.c (gather_bbs::before_dom_children):
7561 Only add conditions from within the region.
7562 (gather_bbs::after_dom_children): Adjust.
7563
7564 2018-02-07 Georg-Johann Lay <avr@gjlay.de>
7565
7566 PR target/84209
7567 * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
7568 * config/avr/avr.md: Only post-reload split REG-REG moves if
7569 either register is GENERAL_REG_P.
7570
7571 2018-02-07 Jakub Jelinek <jakub@redhat.com>
7572
7573 PR tree-optimization/84235
7574 * tree-ssa-scopedtables.c
7575 (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
7576 if the subtraction is performed in floating point type where NaNs are
7577 honored. For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
7578 build 1. Formatting fix.
7579
7580 2018-02-06 Jakub Jelinek <jakub@redhat.com>
7581
7582 PR target/84146
7583 * config/i386/i386.c (rest_of_insert_endbranch): Only skip
7584 NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
7585 and skip it regardless of bb boundaries. Use CALL_P macro,
7586 don't test INSN_P (insn) together with CALL_P or JUMP_P check
7587 unnecessarily, formatting fix.
7588
7589 2018-02-06 Michael Collison <michael.collison@arm.com>
7590
7591 * config/arm/thumb2.md:
7592 (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
7593 (*thumb_mov_notscc): Ditto.
7594
7595 2018-02-06 Michael Meissner <meissner@linux.vnet.ibm.com>
7596
7597 PR target/84154
7598 * config/rs6000/rs6000.md (su code attribute): Use "u" for
7599 unsigned_fix, not "s".
7600
7601 2018-02-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
7602
7603 * configure.ac (gcc_fn_eh_frame_ro): New function.
7604 (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
7605 correct .eh_frame permissions.
7606 * configure: Regenerate.
7607
7608 2018-02-06 Andrew Jenner <andrew@codeourcery.com>
7609
7610 * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
7611 irrelevant options.
7612
7613 2018-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
7614
7615 * config/rs6000/rs6000.c (rs6000_option_override_internal):
7616 Display warning message for -mno-speculate-indirect-jumps.
7617
7618 2018-02-06 Andrew Jenner <andrew@codesourcery.com>
7619
7620 * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
7621 Undocumented.
7622 * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
7623
7624 2018-02-06 Aldy Hernandez <aldyh@redhat.com>
7625
7626 PR tree-optimization/84225
7627 * tree-eh.c (find_trapping_overflow): Only call
7628 operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
7629
7630 2018-02-06 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
7631
7632 PR target/84145
7633 * config/i386/i386.c: Reimplement the check of possible options
7634 -mibt/-mshstk conbination. Change error messages.
7635 * doc/invoke.texi: Fix a typo: remove extra '='.
7636
7637 2018-02-06 Marek Polacek <polacek@redhat.com>
7638
7639 PR tree-optimization/84228
7640 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
7641
7642 2018-02-06 Tamar Christina <tamar.christina@arm.com>
7643
7644 PR target/82641
7645 * config/arm/arm.c (arm_print_asm_arch_directives): Record already
7646 emitted arch directives.
7647 * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
7648 __ARM_FEATURE_COPROC before changing architectures.
7649
7650 2018-02-06 Richard Biener <rguenther@suse.de>
7651
7652 * config/i386/i386.c (print_reg): Fix typo.
7653 (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
7654
7655 2018-02-06 Eric Botcazou <ebotcazou@adacore.com>
7656
7657 * configure: Regenerate.
7658
7659 2018-02-05 Martin Sebor <msebor@redhat.com>
7660
7661 PR tree-optimization/83369
7662 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
7663 inlining context.
7664
7665 2018-02-05 Martin Liska <mliska@suse.cz>
7666
7667 * doc/invoke.texi: Cherry-pick upstream r323995.
7668
7669 2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
7670
7671 * ira.c (ira_init_register_move_cost): Adjust comment.
7672
7673 2018-02-05 Martin Liska <mliska@suse.cz>
7674
7675 PR gcov-profile/84137
7676 * doc/gcov.texi: Fix typo in documentation.
7677
7678 2018-02-05 Martin Liska <mliska@suse.cz>
7679
7680 PR gcov-profile/83879
7681 * doc/gcov.texi: Document necessity of --dynamic-list-data when
7682 using dlopen functionality.
7683
7684 2018-02-05 Olga Makhotina <olga.makhotina@intel.com>
7685
7686 * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
7687 _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
7688 _mm_maskz_range_ss, _mm_mask_range_round_ss,
7689 _mm_maskz_range_round_ss): New intrinsics.
7690 (__builtin_ia32_rangesd128_round)
7691 (__builtin_ia32_rangess128_round): Remove.
7692 (__builtin_ia32_rangesd128_mask_round,
7693 __builtin_ia32_rangess128_mask_round): New builtins.
7694 * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
7695 __builtin_ia32_rangess128_round): Remove.
7696 (__builtin_ia32_rangesd128_mask_round,
7697 __builtin_ia32_rangess128_mask_round): New builtins.
7698 * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
7699 (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
7700 ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
7701 "<round_saeonly_constraint>")): Changed to ...
7702 ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
7703 "<round_saeonly_scalar_constraint>")): ... this.
7704 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
7705 %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
7706 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
7707 %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
7708 %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
7709
7710 2018-02-02 Andrew Jenner <andrew@codesourcery.com>
7711
7712 * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
7713 options.
7714 * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
7715 Remove all values except native, 8540 and 8548.
7716
7717 2018-02-02 H.J. Lu <hongjiu.lu@intel.com>
7718
7719 * config/i386/i386.c (ix86_output_function_return): Pass
7720 INVALID_REGNUM, instead of -1, as invalid register number to
7721 indirect_thunk_name and output_indirect_thunk.
7722
7723 2018-02-02 Julia Koval <julia.koval@intel.com>
7724
7725 * config.gcc: Add -march=icelake.
7726 * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
7727 * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
7728 * config/i386/i386.c (processor_costs): Add m_ICELAKE.
7729 (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
7730 PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
7731 (processor_target_table): Add icelake.
7732 (ix86_option_override_internal): Handle new PTAs.
7733 (get_builtin_code_for_version): Handle icelake.
7734 (M_INTEL_COREI7_ICELAKE): New.
7735 (fold_builtin_cpu): Handle icelake.
7736 * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
7737 * doc/invoke.texi: Add -march=icelake.
7738
7739 2018-02-02 Julia Koval <julia.koval@intel.com>
7740
7741 * config/i386/i386.c (ix86_option_override_internal): Change flags type
7742 to wide_int_bitmask.
7743 * wide-int-bitmask.h: New.
7744
7745 2018-02-02 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
7746
7747 PR target/84066
7748 * config/i386/i386.md: Replace Pmode with word_mode in
7749 builtin_setjmp_setup and builtin_longjmp to support x32.
7750
7751 2018-02-01 Peter Bergner <bergner@vnet.ibm.com>
7752
7753 PR target/56010
7754 PR target/83743
7755 * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
7756 #include "opts.h".
7757 (rs6000_supported_cpu_names): New static variable.
7758 (linux_cpu_translation_table): Likewise.
7759 (elf_platform) <cpu>: Define new static variable and use it.
7760 Translate kernel AT_PLATFORM name to canonical name if needed.
7761 Error if platform name is unknown.
7762
7763 2018-02-01 Aldy Hernandez <aldyh@redhat.com>
7764
7765 PR target/84089
7766 * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
7767
7768 2018-02-01 Jeff Law <law@redhat.com>
7769
7770 PR target/84128
7771 * config/i386/i386.c (release_scratch_register_on_entry): Add new
7772 OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore
7773 the scratch if RELEASE_VIA_POP is false.
7774 (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
7775 If we have to save a temporary register, decrement SIZE appropriately.
7776 Pass new arguments to release_scratch_register_on_entry.
7777 (ix86_adjust_stack_and_probe): Likewise.
7778 (ix86_emit_probe_stack_range): Pass new arguments to
7779 release_scratch_register_on_entry.
7780
7781 2018-02-01 Uros Bizjak <ubizjak@gmail.com>
7782
7783 PR rtl-optimization/84157
7784 * combine.c (change_zero_ext): Use REG_P predicate in
7785 front of HARD_REGISTER_P predicate.
7786
7787 2018-02-01 Georg-Johann Lay <avr@gjlay.de>
7788
7789 * config/avr/avr.c (avr_option_override): Move disabling of
7790 -fdelete-null-pointer-checks to...
7791 * common/config/avr/avr-common.c (avr_option_optimization_table):
7792 ...here.
7793
7794 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7795
7796 PR tree-optimization/81635
7797 * tree-data-ref.c (split_constant_offset_1): For types that
7798 wrap on overflow, try to use range info to prove that wrapping
7799 cannot occur.
7800
7801 2018-02-01 Renlin Li <renlin.li@arm.com>
7802
7803 PR target/83370
7804 * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
7805 TAILCALL_ADDR_REGS.
7806 (aarch64_register_move_cost): Likewise.
7807 * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
7808 TAILCALL_ADDR_REGS.
7809 (REG_CLASS_NAMES): Likewise.
7810 (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
7811 TAILCALL_ADDR_REGS. Remove IP registers.
7812 * config/aarch64/aarch64.md (Ucs): Update register constraint.
7813
7814 2018-02-01 Richard Biener <rguenther@suse.de>
7815
7816 * domwalk.h (dom_walker::dom_walker): Add additional constructor
7817 for specifying RPO order and allow NULL for that.
7818 * domwalk.c (dom_walker::dom_walker): Likewise.
7819 (dom_walker::walk): Handle NULL RPO order.
7820 * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
7821 in RPO order.
7822 (rewrite_update_dom_walker): Likewise.
7823 (mark_def_dom_walker): Likewise.
7824
7825 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7826
7827 * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
7828 (aarch64_maybe_expand_sve_subreg_move): Declare.
7829 * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
7830 * config/aarch64/predicates.md (aarch64_any_register_operand): New
7831 predicate.
7832 * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
7833 that are semantically a reverse operation.
7834 (*aarch64_sve_mov<mode>_subreg_be): New pattern.
7835 * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
7836 (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
7837 functions.
7838 (aarch64_can_change_mode_class): For big-endian, forbid changes
7839 between two SVE modes if they have different element sizes.
7840
7841 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7842
7843 * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
7844 the TImode handling for big-endian targets.
7845
7846 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7847
7848 * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
7849 (*sve_ld1rq<Vesize>): ... this new pattern. Handle all element sizes,
7850 not just bytes.
7851 * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
7852 Remove BSWAP handing for big-endian targets and use the form of
7853 LD1RQ appropariate for the mode.
7854
7855 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7856
7857 * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
7858 all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
7859 duplicated element.
7860
7861 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7862
7863 PR tearget/83845
7864 * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
7865 check for operands that need to go through aarch64_sve_reload_be.
7866
7867 2018-02-01 Jakub Jelinek <jakub@redhat.com>
7868
7869 PR tree-optimization/81661
7870 PR tree-optimization/84117
7871 * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
7872 * tree-eh.c: Include gimplify.h.
7873 (find_trapping_overflow, replace_trapping_overflow,
7874 rewrite_to_non_trapping_overflow): New functions.
7875 * tree-vect-loop.c: Include tree-eh.h.
7876 (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
7877 * tree-data-ref.c: Include tree-eh.h.
7878 (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
7879
7880 2018-01-31 Uros Bizjak <ubizjak@gmail.com>
7881
7882 PR rtl-optimization/84123
7883 * combine.c (change_zero_ext): Check if hard register satisfies
7884 can_change_dest_mode before calling gen_lowpart_SUBREG.
7885
7886 2018-01-31 Vladimir Makarov <vmakarov@redhat.com>
7887
7888 PR target/82444
7889 * ira.c (ira_init_register_move_cost): Remove assert.
7890
7891 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
7892
7893 PR rtl-optimization/84071
7894 * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
7895 * doc/tm.texi: Regenerate.
7896
7897 2018-01-31 Richard Biener <rguenther@suse.de>
7898
7899 PR tree-optimization/84132
7900 * tree-data-ref.c (analyze_miv_subscript): Properly
7901 check whether evolution_function_is_affine_multivariate_p
7902 before calling gcd_of_steps_may_divide_p.
7903
7904 2018-01-31 Julia Koval <julia.koval@intel.com>
7905
7906 PR target/83618
7907 * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
7908 * config/i386/i386.md (rdpid_rex64) New.
7909 (rdpid): Make 32bit only.
7910
7911 2018-01-29 Aldy Hernandez <aldyh@redhat.com>
7912
7913 PR lto/84105
7914 * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
7915 an IDENTIFIER_NODE for FUNCTION_TYPE's.
7916
7917 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
7918
7919 Revert
7920 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
7921
7922 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
7923
7924 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
7925
7926 PR rtl-optimization/84071
7927 * combine.c (record_dead_and_set_regs_1): Record the source unmodified
7928 for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
7929
7930 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
7931
7932 * config/arc/arc.c (arc_handle_aux_attribute): New function.
7933 (arc_attribute_table): Add 'aux' attribute.
7934 (arc_in_small_data_p): Consider aux like variables.
7935 (arc_is_aux_reg_p): New function.
7936 (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
7937 (arc_get_aux_arg): New function.
7938 (prepare_move_operands): Handle aux-register access.
7939 (arc_handle_aux_attribute): New function.
7940 * doc/extend.texi (ARC Variable attributes): Add subsection.
7941
7942 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
7943
7944 * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
7945 * config/arc/arc.c (arc_handle_uncached_attribute): New function.
7946 (arc_attribute_table): Add 'uncached' attribute.
7947 (arc_print_operand): Print '.di' flag for uncached memory
7948 accesses.
7949 (arc_in_small_data_p): Do not consider for small data the uncached
7950 types.
7951 (arc_is_uncached_mem_p): New function.
7952 * config/arc/predicates.md (compact_store_memory_operand): Check
7953 for uncached memory accesses.
7954 (nonvol_nonimm_operand): Likewise.
7955 * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
7956
7957 2018-01-31 Jakub Jelinek <jakub@redhat.com>
7958
7959 PR c/84100
7960 * common.opt (falign-functions=, falign-jumps=, falign-labels=,
7961 falign-loops=): Add Optimization flag.
7962
7963 2018-01-30 Jeff Law <law@redhat.com>
7964
7965 PR target/84064
7966 * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
7967 INT_REGISTERS_SAVED. Check it prior to calling
7968 get_scratch_register_on_entry.
7969 (ix86_adjust_stack_and_probe): Similarly.
7970 (ix86_emit_probe_stack_range): Similarly.
7971 (ix86_expand_prologue): Corresponding changes.
7972
7973 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
7974
7975 PR target/40411
7976 * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
7977 -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
7978
7979 2018-01-30 Vladimir Makarov <vmakarov@redhat.com>
7980
7981 PR target/84112
7982 * lra-constraints.c (curr_insn_transform): Process AND in the
7983 address.
7984
7985 2018-01-30 Jakub Jelinek <jakub@redhat.com>
7986
7987 PR rtl-optimization/83986
7988 * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
7989 dependence against last_pending_memory_flush in addition to
7990 pending_jump_insns.
7991
7992 2018-01-30 Alexandre Oliva <aoliva@redhat.com>
7993
7994 PR tree-optimization/81611
7995 * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
7996 copies.
7997
7998 2018-01-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
7999
8000 PR target/83758
8001 * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
8002 a reg rtx.
8003
8004 2018-01-30 Richard Biener <rguenther@suse.de>
8005 Jakub Jelinek <jakub@redhat.com>
8006
8007 PR tree-optimization/84111
8008 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
8009 inner loops added during recursion, as they don't have up-to-date
8010 SSA form.
8011
8012 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
8013
8014 PR ipa/81360
8015 * ipa-inline.c (can_inline_edge_p): Break out late tests to...
8016 (can_inline_edge_by_limits_p): ... here.
8017 (can_early_inline_edge_p, check_callers,
8018 update_caller_keys, update_callee_keys, recursive_inlining,
8019 add_new_edges_to_heap, speculation_useful_p,
8020 inline_small_functions,
8021 inline_small_functions, flatten_function,
8022 inline_to_all_callers_1): Update.
8023
8024 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
8025
8026 * profile-count.c (profile_count::combine_with_ipa_count): Handle
8027 zeros correctly.
8028
8029 2018-01-30 Richard Biener <rguenther@suse.de>
8030
8031 PR tree-optimization/83008
8032 * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
8033 invariant and constant vector uses in stmts when they need
8034 more than one stmt.
8035
8036 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8037
8038 PR bootstrap/84017
8039 * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
8040 * configure: Regenerate.
8041
8042 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
8043
8044 * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
8045 pattern.
8046 (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
8047 Use gen_rtx_REG rather than gen_lowpart.
8048
8049 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
8050
8051 * lra-constraints.c (match_reload): Use subreg_lowpart_offset
8052 rather than 0 when creating partial subregs.
8053
8054 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
8055
8056 * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
8057 of usage.
8058
8059 2018-01-29 Michael Meissner <meissner@linux.vnet.ibm.com>
8060
8061 PR target/81550
8062 * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
8063 and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
8064 -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
8065 flags. This restores the settings used before the 2017-07-24.
8066 Turning off pre increment/decrement/modify allows IVOPTS to
8067 optimize DF/SF loops where the index is an int.
8068
8069 2018-01-29 Richard Biener <rguenther@suse.de>
8070 Kelvin Nilsen <kelvin@gcc.gnu.org>
8071
8072 PR bootstrap/80867
8073 * tree-vect-stmts.c (vectorizable_call): Don't call
8074 targetm.vectorize_builtin_md_vectorized_function if callee is
8075 NULL.
8076
8077 2018-01-22 Carl Love <cel@us.ibm.com>
8078
8079 * doc/extend.tex: Fix typo in second arg in
8080 __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
8081
8082 2018-01-29 Richard Biener <rguenther@suse.de>
8083
8084 PR tree-optimization/84086
8085 * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
8086 (flush_ssaname_freelist): When SSA names were released reset
8087 the SCEV hash table.
8088
8089 2018-01-29 Richard Biener <rguenther@suse.de>
8090
8091 PR tree-optimization/84057
8092 * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
8093 removed paths when removing edges.
8094
8095 2018-01-27 H.J. Lu <hongjiu.lu@intel.com>
8096
8097 * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
8098 -mfunction-return=@var{choice}.
8099
8100 2018-01-27 Bernd Edlinger <bernd.edlinger@hotmail.de>
8101
8102 PR diagnostic/84034
8103 * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
8104 Handle CR like TAB.
8105 (layout::print_source_line): Likewise.
8106 (test_get_line_width_without_trailing_whitespace): Add test cases.
8107
8108 2018-01-27 Jakub Jelinek <jakub@redhat.com>
8109
8110 PR middle-end/84040
8111 * sched-deps.c (sched_macro_fuse_insns): Return immediately for
8112 debug insns.
8113
8114 2018-01-26 Jim Wilson <jimw@sifive.com>
8115
8116 * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
8117
8118 * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
8119 specified.
8120
8121 2018-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8122
8123 * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
8124 and CMP + SUB-immediate -> SUBS.
8125
8126 2018-01-26 Martin Sebor <msebor@redhat.com>
8127
8128 PR tree-optimization/83896
8129 * tree-ssa-strlen.c (get_string_len): Rename...
8130 (get_string_cst_length): ...to this. Return HOST_WIDE_INT.
8131 Avoid assuming length is constant.
8132 (handle_char_store): Use HOST_WIDE_INT for string length.
8133
8134 2018-01-26 Uros Bizjak <ubizjak@gmail.com>
8135
8136 PR target/81763
8137 * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
8138 to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
8139
8140 2018-01-26 Richard Biener <rguenther@suse.de>
8141
8142 PR rtl-optimization/84003
8143 * dse.c (record_store): Only record redundant stores when
8144 the earlier store aliases at least all accesses the later one does.
8145
8146 2018-01-26 Jakub Jelinek <jakub@redhat.com>
8147
8148 PR rtl-optimization/83985
8149 * dce.c (deletable_insn_p): Return false for separate shrink wrapping
8150 REG_CFA_RESTORE insns.
8151 (delete_unmarked_insns): Don't ignore separate shrink wrapping
8152 REG_CFA_RESTORE insns here.
8153
8154 PR c/83989
8155 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
8156 use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
8157
8158 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8159
8160 * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
8161 * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
8162 (arc_init): Likewise.
8163 (arc_override_options): Likewise.
8164 (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
8165 value.
8166 (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
8167 support.
8168 * config/arc/arc.h (TARGET_DBNZ): Define.
8169 * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
8170 properly set the tune attribute.
8171 (dbnz): Use TARGET_DBNZ guard.
8172 * config/arc/arc.opt (mtune): Add core3 option.
8173
8174 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8175
8176 * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
8177 recognize new pic like addresses.
8178 (arc_delegitimize_address): Clean up.
8179
8180 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8181
8182 * config/arc/arc-arches.def: Option mrf16 valid for all
8183 architectures.
8184 * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
8185 * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
8186 * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
8187 * config/arc/arc-tables.opt: Regenerate.
8188 * config/arc/arc.c (arc_conditional_register_usage): Handle
8189 reduced register file case.
8190 (arc_file_start): Set must have build attributes.
8191 * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
8192 mrf16 option value.
8193 * config/arc/arc.opt (mrf16): Add new option.
8194 * config/arc/elf.h (ATTRIBUTE_PCS): Define.
8195 * config/arc/genmultilib.awk: Handle new mrf16 option.
8196 * config/arc/linux.h (ATTRIBUTE_PCS): Define.
8197 * config/arc/t-multilib: Regenerate.
8198 * doc/invoke.texi (ARC Options): Document mrf16 option.
8199
8200 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8201
8202 * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
8203 * config/arc/arc.c (arc_handle_secure_attribute): New function.
8204 (arc_attribute_table): Add 'secure_call' attribute.
8205 (arc_print_operand): Print secure call operand.
8206 (arc_function_ok_for_sibcall): Don't optimize tail calls when
8207 secure.
8208 (arc_is_secure_call_p): New function. * config/arc/arc.md
8209 (call_i): Add support for sjli instruction.
8210 (call_value_i): Likewise.
8211 * config/arc/constraints.md (Csc): New constraint.
8212
8213 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8214 John Eric Martin <John.Martin@emmicro-us.com>
8215
8216 * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
8217 * config/arc/arc.c (_arc_jli_section): New struct.
8218 (arc_jli_section): New type.
8219 (rc_jli_sections): New static variable.
8220 (arc_handle_jli_attribute): New function.
8221 (arc_attribute_table): Add jli_always and jli_fixed attribute.
8222 (arc_file_end): New function.
8223 (TARGET_ASM_FILE_END): Define.
8224 (arc_print_operand): Reuse 'S' letter for JLI output instruction.
8225 (arc_add_jli_section): New function.
8226 (jli_call_scan): Likewise.
8227 (arc_reorg): Call jli_call_scan.
8228 (arc_output_addsi): Remove 'S' from printing asm operand.
8229 (arc_is_jli_call_p): New function.
8230 * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
8231 operand.
8232 (movhi_insn): Likewise.
8233 (movsi_insn): Likewise.
8234 (movsi_set_cc_insn): Likewise.
8235 (loadqi_update): Likewise.
8236 (load_zeroextendqisi_update): Likewise.
8237 (load_signextendqisi_update): Likewise.
8238 (loadhi_update): Likewise.
8239 (load_zeroextendhisi_update): Likewise.
8240 (load_signextendhisi_update): Likewise.
8241 (loadsi_update): Likewise.
8242 (loadsf_update): Likewise.
8243 (movsicc_insn): Likewise.
8244 (bset_insn): Likewise.
8245 (bxor_insn): Likewise.
8246 (bclr_insn): Likewise.
8247 (bmsk_insn): Likewise.
8248 (bicsi3_insn): Likewise.
8249 (cmpsi_cc_c_insn): Likewise.
8250 (movsi_ne): Likewise.
8251 (movsi_cond_exec): Likewise.
8252 (clrsbsi2): Likewise.
8253 (norm_f): Likewise.
8254 (normw): Likewise.
8255 (swap): Likewise.
8256 (divaw): Likewise.
8257 (flag): Likewise.
8258 (sr): Likewise.
8259 (kflag): Likewise.
8260 (ffs): Likewise.
8261 (ffs_f): Likewise.
8262 (fls): Likewise.
8263 (call_i): Remove 'S' asm letter, add jli instruction.
8264 (call_value_i): Likewise.
8265 * config/arc/arc.op (mjli-always): New option.
8266 * config/arc/constraints.md (Cji): New constraint.
8267 * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
8268 operand.
8269 (subsf3_fpx): Likewise.
8270 (mulsf3_fpx): Likewise.
8271 * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
8272 asm operand.
8273 * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
8274 function attrbutes.
8275 * doc/invoke.texi (ARC): Document mjli-always option.
8276
8277 2018-01-26 Sebastian Perta <sebastian.perta@renesas.com>
8278
8279 * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const
8280 avoid addition with 0 and use incw and decw where possible.
8281
8282 2018-01-26 Richard Biener <rguenther@suse.de>
8283
8284 PR tree-optimization/81082
8285 * fold-const.c (fold_plusminus_mult_expr): Do not perform the
8286 association if it requires casting to unsigned.
8287 * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
8288 from fold_plusminus_mult_expr to catch important cases late when
8289 range info is available.
8290
8291 2018-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8292
8293 * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
8294 * configure.ac (hidden_linkonce): New test.
8295 * configure: Regenerate.
8296 * config.in: Regenerate.
8297
8298 2018-01-26 Julia Koval <julia.koval@intel.com>
8299
8300 * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
8301 _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
8302 _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
8303 _mm_mask_bitshuffle_epi64_mask): Fix type.
8304 * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
8305 USI_FTYPE_V4DI_V4DI_USI): Remove.
8306 * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
8307 __builtin_ia32_vpshufbitqmb256_mask,
8308 __builtin_ia32_vpshufbitqmb128_mask): Fix types.
8309 * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
8310 * config/i386/sse.md (VI1_AVX512VLBW): Change types.
8311
8312 2018-01-26 Alan Modra <amodra@gmail.com>
8313
8314 PR target/84033
8315 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
8316 UNSPEC_VBPERMQ. Sort other unspecs.
8317
8318 2018-01-25 David Edelsohn <dje.gcc@gmail.com>
8319
8320 * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
8321
8322 2018-01-25 Jan Hubicka <hubicka@ucw.cz>
8323
8324 PR middle-end/83055
8325 * predict.c (drop_profile): Do not push/pop cfun; update also
8326 node->count.
8327 (handle_missing_profiles): Fix logic looking for zero profiles.
8328
8329 2018-01-25 Jakub Jelinek <jakub@redhat.com>
8330
8331 PR middle-end/83977
8332 * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
8333 on functions with #pragma omp declare simd or functions with simd
8334 attribute.
8335 * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
8336 * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
8337 Remove trailing \n from warning_at calls.
8338
8339 2018-01-25 Tom de Vries <tom@codesourcery.com>
8340
8341 PR target/84028
8342 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
8343 for neutered workers.
8344
8345 2018-01-24 Joseph Myers <joseph@codesourcery.com>
8346
8347 PR target/68467
8348 * config/m68k/m68k.c (m68k_promote_function_mode): New function.
8349 (TARGET_PROMOTE_FUNCTION_MODE): New macro.
8350
8351 2018-01-24 Jeff Law <law@redhat.com>
8352
8353 PR target/83994
8354 * i386.c (get_probe_interval): Move to earlier point.
8355 (ix86_compute_frame_layout): If -fstack-clash-protection and
8356 the frame is larger than the probe interval, then use pushes
8357 to save registers rather than reg->mem moves.
8358 (ix86_expand_prologue): Remove conditional for int_registers_saved
8359 assertion.
8360
8361 2018-01-24 Vladimir Makarov <vmakarov@redhat.com>
8362
8363 PR target/84014
8364 * ira-build.c (setup_min_max_allocno_live_range_point): Set up
8365 min/max for never referenced object.
8366
8367 2018-01-24 Jakub Jelinek <jakub@redhat.com>
8368
8369 PR middle-end/83977
8370 * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
8371 here.
8372 * omp-low.c (create_omp_child_function): Remove "omp declare simd"
8373 attributes from DECL_ATTRIBUTES (decl) without affecting
8374 DECL_ATTRIBUTES (current_function_decl).
8375 * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
8376 functions with non-NULL DECL_ABSTRACT_ORIGIN.
8377
8378 2018-01-24 Richard Sandiford <richard.sandiford@linaro.org>
8379
8380 PR tree-optimization/83979
8381 * fold-const.c (fold_comparison): Use constant_boolean_node
8382 instead of boolean_{true,false}_node.
8383
8384 2018-01-24 Jan Hubicka <hubicka@ucw.cz>
8385
8386 * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
8387 with zero counts.
8388
8389 2018-01-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
8390
8391 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8392 Simplify the clause that sets the length attribute.
8393 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8394 (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
8395 clause that sets the length attribute.
8396 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8397
8398 2018-01-24 Tom de Vries <tom@codesourcery.com>
8399
8400 PR target/83589
8401 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
8402 (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
8403 Add strict parameter.
8404 (prevent_branch_around_nothing): Insert dummy insn between branch to
8405 label and label with no ptx insn inbetween.
8406 * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
8407
8408 2018-01-24 Tom de Vries <tom@codesourcery.com>
8409
8410 PR target/81352
8411 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
8412 for neutered threads in warp.
8413 * config/nvptx/nvptx.md (define_insn "exit"): New insn.
8414
8415 2018-01-24 Richard Biener <rguenther@suse.de>
8416
8417 PR tree-optimization/83176
8418 * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
8419 operands.
8420
8421 2018-01-24 Richard Biener <rguenther@suse.de>
8422
8423 PR tree-optimization/82819
8424 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
8425 code generating pluses that are no-ops in the target precision.
8426
8427 2018-01-24 Richard Biener <rguenther@suse.de>
8428
8429 PR middle-end/84000
8430 * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
8431
8432 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
8433
8434 * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
8435 to merge probabilities.
8436 * predict.c (probably_never_executed): Also mark as cold functions
8437 with global 0 profile and guessed local profile.
8438 * profile-count.c (profile_probability::combine_with_count): New
8439 member function.
8440 * profile-count.h (profile_probability::operator*,
8441 profile_probability::operator*=, profile_probability::operator/,
8442 profile_probability::operator/=): Reduce precision to adjusted
8443 and set value to guessed on contradictory divisions.
8444 (profile_probability::combine_with_freq): Remove.
8445 (profile_probability::combine_wiht_count): Declare.
8446 (profile_count::force_nonzero):: Set to adjusted.
8447 (profile_count::probability_in):: Set quality to adjusted.
8448 * tree-ssa-tail-merge.c (replace_block_by): Use
8449 combine_with_count.
8450
8451 2018-01-23 Andrew Waterman <andrew@sifive.com>
8452 Jim Wilson <jimw@sifive.com>
8453
8454 * config/riscv/riscv.c (riscv_stack_boundary): New.
8455 (riscv_option_override): Set riscv_stack_boundary. Handle
8456 riscv_preferred_stack_boundary_arg.
8457 * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
8458 (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
8459 (STACK_BOUNDARY): Set to riscv_stack_boundary.
8460 (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
8461 * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
8462 * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
8463
8464 2018-01-23 H.J. Lu <hongjiu.lu@intel.com>
8465
8466 PR target/83905
8467 * config/i386/i386.c (ix86_expand_prologue): Use cost reference
8468 of struct ix86_frame.
8469 (ix86_expand_epilogue): Likewise. Add a local variable for
8470 the reg_save_offset field in struct ix86_frame.
8471
8472 2018-01-23 Bin Cheng <bin.cheng@arm.com>
8473
8474 PR tree-optimization/82604
8475 * tree-loop-distribution.c (enum partition_kind): New enum item
8476 PKIND_PARTIAL_MEMSET.
8477 (partition_builtin_p): Support above new enum item.
8478 (generate_code_for_partition): Ditto.
8479 (compute_access_range): Differentiate cases that equality can be
8480 proven at all loops, the innermost loops or no loops.
8481 (classify_builtin_st, classify_builtin_ldst): Adjust call to above
8482 function. Set PKIND_PARTIAL_MEMSET for partition appropriately.
8483 (finalize_partitions, distribute_loop): Don't fuse partition of
8484 PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
8485 (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
8486 parloop is enabled.
8487
8488 2018-01-23 Martin Liska <mliska@suse.cz>
8489
8490 * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
8491 order to ignore the predictor.
8492 (PRED_POLYMORPHIC_CALL): Likewise.
8493 (PRED_RECURSIVE_CALL): Likewise.
8494
8495 2018-01-23 Martin Liska <mliska@suse.cz>
8496
8497 * tree-profile.c (tree_profiling): Print function header to
8498 aware reader which function we are working on.
8499 * value-prof.c (gimple_find_values_to_profile): Do not print
8500 not interesting value histograms.
8501
8502 2018-01-23 Martin Liska <mliska@suse.cz>
8503
8504 * profile-count.h (enum profile_quality): Add
8505 profile_uninitialized as the first value. Do not number values
8506 as they are zero based.
8507 (profile_count::verify): Update sanity check.
8508 (profile_probability::verify): Likewise.
8509
8510 2018-01-23 Nathan Sidwell <nathan@acm.org>
8511
8512 * doc/invoke.texi (ffor-scope): Deprecate.
8513
8514 2018-01-23 David Malcolm <dmalcolm@redhat.com>
8515
8516 PR tree-optimization/83510
8517 * domwalk.c (set_all_edges_as_executable): New function.
8518 (dom_walker::dom_walker): Convert bool param
8519 "skip_unreachable_blocks" to enum reachability. Move setup of
8520 edge flags to set_all_edges_as_executable and only do it when
8521 reachability is REACHABLE_BLOCKS.
8522 * domwalk.h (enum dom_walker::reachability): New enum.
8523 (dom_walker::dom_walker): Convert bool param
8524 "skip_unreachable_blocks" to enum reachability.
8525 (set_all_edges_as_executable): New decl.
8526 * graphite-scop-detection.c (gather_bbs::gather_bbs): Convert
8527 from false for "skip_unreachable_blocks" to ALL_BLOCKS for
8528 "reachability".
8529 * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
8530 but converting true to REACHABLE_BLOCKS.
8531 * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
8532 * tree-vrp.c
8533 (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
8534 Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
8535 (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
8536 REACHABLE_BLOCKS.
8537 (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
8538 if check_all_array_refs will be called.
8539
8540 2018-01-23 David Malcolm <dmalcolm@redhat.com>
8541
8542 * tree.c (selftest::test_location_wrappers): Add more test
8543 coverage.
8544
8545 2018-01-23 David Malcolm <dmalcolm@redhat.com>
8546
8547 * sbitmap.c (selftest::test_set_range): Fix memory leaks.
8548 (selftest::test_bit_in_range): Likewise.
8549
8550 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
8551
8552 PR testsuite/83888
8553 * doc/sourcebuild.texi (vect_float): Say that the selector
8554 only describes the situation when -funsafe-math-optimizations is on.
8555 (vect_float_strict): Document.
8556
8557 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
8558
8559 PR tree-optimization/83965
8560 * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
8561 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
8562 instead of checking only for a reduction.
8563 (vect_recog_widen_sum_pattern): Likewise.
8564
8565 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
8566
8567 * predict.c (probably_never_executed): Only use precise profile info.
8568 (compute_function_frequency): Skip after inlining hack since we now
8569 have quality checking.
8570
8571 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
8572
8573 * profile-count.h (profile_probability::very_unlikely,
8574 profile_probability::unlikely, profile_probability::even): Set
8575 precision to guessed.
8576
8577 2018-01-23 Richard Biener <rguenther@suse.de>
8578
8579 PR tree-optimization/83963
8580 * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
8581 Properly terminate dominator walk when crossing the exit edge not
8582 when visiting its source block.
8583
8584 2018-01-23 Jakub Jelinek <jakub@redhat.com>
8585
8586 PR c++/83918
8587 * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
8588 VIEW_CONVERT_EXPR to wrap CONST_DECLs.
8589
8590 2018-01-22 Jakub Jelinek <jakub@redhat.com>
8591
8592 PR tree-optimization/83957
8593 * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs. Remove
8594 semicolon after for body surrounded by braces.
8595
8596 PR tree-optimization/83081
8597 * profile-count.h (profile_probability::split): New method.
8598 * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
8599 Use profile_probability::split.
8600 (do_compare_rtx_and_jump): Fix adjustment of probabilities
8601 when splitting a single conditional jump into 2.
8602
8603 2018-01-22 David Malcolm <dmalcolm@redhat.com>
8604
8605 PR tree-optimization/69452
8606 * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
8607 decl.
8608
8609 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8610
8611 * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
8612 * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
8613 * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
8614
8615 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8616
8617 * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
8618 * config/rl78/rl78.md (movdi): New define_expand.
8619 * config/rl78/rl78.c (rl78_split_movdi): New function.
8620
8621 2018-01-22 Michael Meissner <meissner@linux.vnet.ibm.com>
8622
8623 PR target/83862
8624 * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
8625 no longer used.
8626 * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
8627 * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
8628 128-bit to produce an UNSPEC move to get the double word with the
8629 signbit and then a shift directly to do signbit.
8630 (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
8631 implementation with a new version that just does either a direct
8632 move or a regular move. Move memory interface to separate insns.
8633 Move insns so they are next to the expander.
8634 (signbit<mode>2_dm_mem_be): New combiner insns to combine load
8635 with signbit move. Split big and little endian case.
8636 (signbit<mode>2_dm_mem_le): Likewise.
8637 (signbit<mode>2_dm_<su>ext): Delete, no longer used.
8638 (signbit<mode>2_dm2): Likewise.
8639
8640 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8641
8642 * config/rl78/rl78.md (anddi3): New define_expand.
8643
8644 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8645
8646 * config/rl78/rl78.md (umindi3): New define_expand.
8647
8648 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8649
8650 * config/rl78/rl78.md (smindi3): New define_expand.
8651
8652 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8653
8654 * config/rl78/rl78.md (smaxdi3): New define_expand.
8655
8656 2018-01-22 Carl Love <cel@us.ibm.com>
8657
8658 * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
8659 LVX_V1TI): Add macro expansion.
8660 * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
8661 definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
8662 VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
8663 * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
8664 Change check to determine if the instruction is a byte reversing
8665 entry. Fix typo in comment.
8666 * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
8667 for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
8668 Add def_builtin calls for new builtins.
8669 * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
8670 Add define_insn expansion.
8671
8672 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8673
8674 * config/rl78/rl78.md (umaxdi3): New define_expand.
8675
8676 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8677
8678 * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
8679 for non-QImode registers.
8680
8681 2018-01-22 Richard Biener <rguenther@suse.de>
8682
8683 PR tree-optimization/83963
8684 * graphite-scop-detection.c (scop_detection::get_sese): Delay
8685 including the loop exit block.
8686 (scop_detection::merge_sese): Likewise.
8687 (scop_detection::add_scop): Do it here instead.
8688
8689 2018-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8690
8691 * doc/sourcebuild.texi (arm_softfloat): Document.
8692
8693 2018-01-21 John David Anglin <danglin@gcc.gnu.org>
8694
8695 PR gcc/77734
8696 * config/pa/pa.c (pa_function_ok_for_sibcall): Use
8697 targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
8698 Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
8699
8700 2018-01-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
8701 David Edelsohn <dje.gcc@gmail.com>
8702
8703 PR target/83946
8704 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8705 Change "crset eq" to "crset 2".
8706 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8707 (*call_indirect_aix<mode>_nospec): Likewise.
8708 (*call_value_indirect_aix<mode>_nospec): Likewise.
8709 (*call_indirect_elfv2<mode>_nospec): Likewise.
8710 (*call_value_indirect_elfv2<mode>_nospec): Likewise.
8711 (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
8712 change assembly output from . to $.
8713 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8714 (indirect_jump<mode>_nospec): Change assembly output from . to $.
8715 (*tablejump<mode>_internal1_nospec): Likewise.
8716
8717 2018-01-21 Oleg Endo <olegendo@gcc.gnu.org>
8718
8719 PR target/80870
8720 * config/sh/sh_optimize_sett_clrt.cc:
8721 Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
8722
8723 2018-01-20 Richard Sandiford <richard.sandiford@linaro.org>
8724
8725 PR tree-optimization/83940
8726 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
8727 offset_dt to vect_constant_def rather than vect_unknown_def_type.
8728 (vect_check_load_store_mask): Add a mask_dt_out parameter and
8729 use it to pass back the definition type.
8730 (vect_check_store_rhs): Likewise rhs_dt_out.
8731 (vect_build_gather_load_calls): Add a mask_dt argument and use
8732 it instead of a call to vect_is_simple_use.
8733 (vectorizable_store): Update calls to vect_check_load_store_mask
8734 and vect_check_store_rhs. Use the dt returned by the latter instead
8735 of scatter_src_dt. Use the cached mask_dt and gs_info.offset_dt
8736 instead of calls to vect_is_simple_use. Pass the scalar rather
8737 than the vector operand to vect_is_simple_use when handling
8738 second and subsequent copies of an rhs value.
8739 (vectorizable_load): Update calls to vect_check_load_store_mask
8740 and vect_build_gather_load_calls. Use the cached mask_dt and
8741 gs_info.offset_dt instead of calls to vect_is_simple_use.
8742
8743 2018-01-20 Jakub Jelinek <jakub@redhat.com>
8744
8745 PR middle-end/83945
8746 * tree-emutls.c: Include gimplify.h.
8747 (lower_emutls_2): New function.
8748 (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
8749 with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
8750 it before further processing.
8751
8752 PR target/83930
8753 * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
8754 UINTVAL (trueop1) instead of INTVAL (op1).
8755
8756 2018-01-19 Jakub Jelinek <jakub@redhat.com>
8757
8758 PR debug/81570
8759 PR debug/83728
8760 * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
8761 INCOMING_FRAME_SP_OFFSET if not defined.
8762 (scan_trace): Add ENTRY argument. If true and
8763 DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
8764 emit a note to adjust the CFA offset.
8765 (create_cfi_notes): Adjust scan_trace callers.
8766 (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
8767 INCOMING_FRAME_SP_OFFSET in the CIE.
8768 * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
8769 * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
8770 Likewise.
8771 * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
8772 * doc/tm.texi: Regenerated.
8773
8774 2018-01-19 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
8775
8776 PR rtl-optimization/83147
8777 * lra-constraints.c (remove_inheritance_pseudos): Use
8778 lra_substitute_pseudo_within_insn.
8779
8780 2018-01-19 Tom de Vries <tom@codesourcery.com>
8781 Cesar Philippidis <cesar@codesourcery.com>
8782
8783 PR target/83920
8784 * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
8785
8786 2018-01-19 Cesar Philippidis <cesar@codesourcery.com>
8787
8788 PR target/83790
8789 * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
8790 spaces for function labels.
8791
8792 2018-01-19 Martin Liska <mliska@suse.cz>
8793
8794 * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
8795 (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
8796 (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
8797 (PRED_OPCODE_POSITIVE): Change from 64 to 59.
8798 (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
8799 (PRED_CONST_RETURN): Change from 69 to 65.
8800 (PRED_NULL_RETURN): Change from 91 to 71.
8801 (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
8802 (PRED_LOOP_GUARD): Change from 66 to 73.
8803
8804 2018-01-19 Martin Liska <mliska@suse.cz>
8805
8806 * predict.c (predict_insn_def): Add new assert.
8807 (struct branch_predictor): Change type to signed integer.
8808 (test_prediction_value_range): Amend test to cover
8809 PROB_UNINITIALIZED.
8810 * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
8811 (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
8812 (PRED_LOOP_ITERATIONS_MAX): Likewise.
8813 (PRED_LOOP_IV_COMPARE): Likewise.
8814 * predict.h (PROB_UNINITIALIZED): Define new constant.
8815
8816 2018-01-19 Martin Liska <mliska@suse.cz>
8817
8818 * predict.c (dump_prediction): Add new format for
8819 analyze_brprob.py script which is enabled with -details
8820 suboption.
8821 * profile-count.h (precise_p): New function.
8822
8823 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
8824
8825 PR tree-optimization/83922
8826 * tree-vect-loop.c (vect_verify_full_masking): Return false if
8827 there are no statements that need masking.
8828 (vect_active_double_reduction_p): New function.
8829 (vect_analyze_loop_operations): Use it when handling phis that
8830 are not in the loop header.
8831
8832 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
8833
8834 PR tree-optimization/83914
8835 * tree-vect-loop.c (vectorizable_induction): Don't convert
8836 init_expr or apply the peeling adjustment for inductions
8837 that are nested within the vectorized loop.
8838
8839 2018-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8840
8841 * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
8842 instead of NEG.
8843
8844 2018-01-18 Jakub Jelinek <jakub@redhat.com>
8845
8846 PR sanitizer/81715
8847 PR testsuite/83882
8848 * function.h (gimplify_parameters): Add gimple_seq * argument.
8849 * function.c: Include gimple.h and options.h.
8850 (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
8851 for the added local temporaries if needed.
8852 * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
8853 if there are any parameter cleanups, wrap whole body into a
8854 try/finally with the cleanups.
8855
8856 2018-01-18 Wilco Dijkstra <wdijkstr@arm.com>
8857
8858 PR target/82964
8859 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
8860 Use GET_MODE_CLASS for scalar floating point.
8861
8862 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
8863
8864 PR ipa/82256
8865 patch by PaX Team
8866 * cgraphclones.c (cgraph_node::create_version_clone_with_body):
8867 Fix call of call_cgraph_insertion_hooks.
8868
8869 2018-01-18 Martin Sebor <msebor@redhat.com>
8870
8871 * doc/invoke.texi (-Wclass-memaccess): Tweak text.
8872
8873 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
8874
8875 PR ipa/83619
8876 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
8877 frequencies.
8878
8879 2018-01-18 Boris Kolpackov <boris@codesynthesis.com>
8880
8881 PR other/70268
8882 * common.opt: (-ffile-prefix-map): New option.
8883 * opts.c (common_handle_option): Defer it.
8884 * opts-global.c (handle_common_deferred_options): Handle it.
8885 * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
8886 * file-prefix-map.h: New file.
8887 (remap_debug_filename, add_debug_prefix_map): ...here.
8888 (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
8889 * final.c (debug_prefix_map, add_debug_prefix_map
8890 remap_debug_filename): Move to...
8891 * file-prefix-map.c: New file.
8892 (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
8893 generalize, get rid of alloca(), use strrchr() instead of strchr().
8894 (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
8895 Implement in terms of add_prefix_map().
8896 (remap_macro_filename, remap_debug_filename): Implement in term of
8897 remap_filename().
8898 * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
8899 * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
8900 * dbxout.c: Include file-prefix-map.h.
8901 * varasm.c: Likewise.
8902 * vmsdbgout.c: Likewise.
8903 * xcoffout.c: Likewise.
8904 * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
8905 * doc/cppopts.texi (-fmacro-prefix-map): Document.
8906 * doc/invoke.texi (-ffile-prefix-map): Document.
8907 (-fdebug-prefix-map): Update description.
8908
8909 2018-01-18 Martin Liska <mliska@suse.cz>
8910
8911 * config/i386/i386.c (indirect_thunk_name): Document that also
8912 lfence is emitted.
8913 (output_indirect_thunk): Document why both instructions
8914 (pause and lfence) are generated.
8915
8916 2018-01-18 Richard Biener <rguenther@suse.de>
8917
8918 PR tree-optimization/83887
8919 * graphite-scop-detection.c
8920 (scop_detection::get_nearest_dom_with_single_entry): Remove.
8921 (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
8922 (scop_detection::merge_sese): Re-implement with a flood-fill
8923 algorithm that properly finds a SESE region if it exists.
8924
8925 2018-01-18 Jakub Jelinek <jakub@redhat.com>
8926
8927 PR c/61240
8928 * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
8929 pointer_diff optimizations use view_convert instead of convert.
8930
8931 2018-01-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
8932
8933 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8934 Generate different code for -mno-speculate-indirect-jumps.
8935 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8936 (*call_indirect_aix<mode>): Disable for
8937 -mno-speculate-indirect-jumps.
8938 (*call_indirect_aix<mode>_nospec): New define_insn.
8939 (*call_value_indirect_aix<mode>): Disable for
8940 -mno-speculate-indirect-jumps.
8941 (*call_value_indirect_aix<mode>_nospec): New define_insn.
8942 (*sibcall_nonlocal_sysv<mode>): Generate different code for
8943 -mno-speculate-indirect-jumps.
8944 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8945
8946 2018-01-17 Michael Meissner <meissner@linux.vnet.ibm.com>
8947
8948 * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
8949 long double type, set the flags for noting the default long double
8950 type, even if we don't pass or return a long double type.
8951
8952 2018-01-17 Jan Hubicka <hubicka@ucw.cz>
8953
8954 PR ipa/83051
8955 * ipa-inline.c (flatten_function): Do not overwrite final inlining
8956 failure.
8957
8958 2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com>
8959
8960 * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
8961 support for merge[hl].
8962 (fold_mergehl_helper): New helper function.
8963 (tree-vector-builder.h): New #include for tree_vector_builder usage.
8964 * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
8965 (altivec_vmrglw_direct): Add xxmrglw insn.
8966
8967 2018-01-17 Andrew Waterman <andrew@sifive.com>
8968
8969 * config/riscv/riscv.c (riscv_conditional_register_usage): If
8970 UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
8971
8972 2018-01-17 David Malcolm <dmalcolm@redhat.com>
8973
8974 PR lto/83121
8975 * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
8976 call the lto_location_cache before reading the
8977 DECL_SOURCE_LOCATION of the types.
8978
8979 2018-01-17 Wilco Dijkstra <wdijkstr@arm.com>
8980 Richard Sandiford <richard.sandiford@linaro.org>
8981
8982 * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
8983 * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
8984 (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
8985 SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
8986 * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
8987 Add declaration.
8988 * config/aarch64/constraints.md (aarch64_movti_operand):
8989 Limit immediates.
8990 * config/aarch64/predicates.md (Uti): Add new constraint.
8991
8992 2018-01-17 Carl Love <cel@us.ibm.com>
8993
8994 * config/rs6000/vsx.md (define_expand xl_len_r,
8995 define_expand stxvl, define_expand *stxvl): Add match_dup argument.
8996 (define_insn): Add, match_dup 1 argument to define_insn stxvll and
8997 lxvll.
8998 (define_expand, define_insn): Move the shift left from the
8999 define_insn to the define_expand for lxvl and stxvl instructions.
9000 * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
9001 and XL_LEN_R definitions to PURE.
9002
9003 2018-01-17 Uros Bizjak <ubizjak@gmail.com>
9004
9005 * config/i386/i386.c (indirect_thunk_name): Declare regno
9006 as unsigned int. Compare regno with INVALID_REGNUM.
9007 (output_indirect_thunk): Ditto.
9008 (output_indirect_thunk_function): Ditto.
9009 (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM
9010 in the call to output_indirect_thunk_function.
9011
9012 2018-01-17 Richard Sandiford <richard.sandiford@linaro.org>
9013
9014 PR middle-end/83884
9015 * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
9016 rather than the size of inner_type to determine the stack slot size
9017 when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
9018
9019 2018-01-16 Sebastian Peryt <sebastian.peryt@intel.com>
9020
9021 PR target/83546
9022 * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
9023 to PTA_SILVERMONT.
9024
9025 2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com>
9026
9027 * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
9028 endian Linux systems to optionally enable multilibs for selecting
9029 the long double type if the user configured an explicit type.
9030 * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
9031 have no long double multilibs if not defined.
9032 * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
9033 warn if the user used -mabi={ieee,ibm}longdouble and we built
9034 multilibs for long double.
9035 * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
9036 appropriate multilib option.
9037 (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
9038 multilib options.
9039 * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
9040 for building long double multilibs.
9041 * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
9042
9043 2018-01-16 John David Anglin <danglin@gcc.gnu.org>
9044
9045 * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
9046 copies.
9047
9048 * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
9049 64 bits.
9050 * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
9051 128 bits.
9052
9053 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
9054 variables.
9055
9056 * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
9057 return value.
9058
9059 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
9060
9061 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
9062 ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
9063
9064 2018-01-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
9065
9066 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
9067 different rtl trees depending on TARGET_64BIT.
9068 (rs6000_gen_lvx): Likewise.
9069
9070 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
9071
9072 * config/visium/visium.md (nop): Tweak comment.
9073 (hazard_nop): Likewise.
9074
9075 2018-01-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
9076
9077 * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
9078 -mspeculate-indirect-jumps.
9079 * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
9080 for -mno-speculate-indirect-jumps.
9081 (*call_indirect_elfv2<mode>_nospec): New define_insn.
9082 (*call_value_indirect_elfv2<mode>): Disable for
9083 -mno-speculate-indirect-jumps.
9084 (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
9085 (indirect_jump): Emit different RTL for
9086 -mno-speculate-indirect-jumps.
9087 (*indirect_jump<mode>): Disable for
9088 -mno-speculate-indirect-jumps.
9089 (*indirect_jump<mode>_nospec): New define_insn.
9090 (tablejump): Emit different RTL for
9091 -mno-speculate-indirect-jumps.
9092 (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
9093 (tablejumpsi_nospec): New define_expand.
9094 (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
9095 (tablejumpdi_nospec): New define_expand.
9096 (*tablejump<mode>_internal1): Disable for
9097 -mno-speculate-indirect-jumps.
9098 (*tablejump<mode>_internal1_nospec): New define_insn.
9099 * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
9100 option.
9101
9102 2018-01-16 Artyom Skrobov tyomitch@gmail.com
9103
9104 * caller-save.c (insert_save): Drop unnecessary parameter. All
9105 callers updated.
9106
9107 2018-01-16 Jakub Jelinek <jakub@redhat.com>
9108 Richard Biener <rguenth@suse.de>
9109
9110 PR libgomp/83590
9111 * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
9112 return early, inline manually is_gimple_sizepos. Make sure if we
9113 call gimplify_expr we don't end up with a gimple constant.
9114 * tree.c (variably_modified_type_p): Don't return true for
9115 is_gimple_constant (_t). Inline manually is_gimple_sizepos.
9116 * gimplify.h (is_gimple_sizepos): Remove.
9117
9118 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9119
9120 PR tree-optimization/83857
9121 * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
9122 vectorizable_live_operation for pure SLP statements.
9123 (vectorizable_live_operation): Handle PHIs.
9124
9125 2018-01-16 Richard Biener <rguenther@suse.de>
9126
9127 PR tree-optimization/83867
9128 * tree-vect-stmts.c (vect_transform_stmt): Precompute
9129 nested_in_vect_loop_p since the scalar stmt may get invalidated.
9130
9131 2018-01-16 Jakub Jelinek <jakub@redhat.com>
9132
9133 PR c/83844
9134 * stor-layout.c (handle_warn_if_not_align): Use byte_position and
9135 multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
9136 If off is not INTEGER_CST, issue a may not be aligned warning
9137 rather than isn't aligned. Use isn%'t rather than isn't.
9138 * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
9139 into MULT_EXPR.
9140 <case MULT_EXPR>: Improve the case when bottom and one of the
9141 MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
9142 operand, in that case check if the other operand is multiple of
9143 bottom divided by the INTEGER_CST operand.
9144
9145 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9146
9147 PR target/83858
9148 * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
9149 * config/pa/pa-protos.h (pa_function_arg_size): Declare.
9150 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
9151 pa_function_arg_size instead of FUNCTION_ARG_SIZE.
9152 * config/pa/pa.c (pa_function_arg_advance): Likewise.
9153 (pa_function_arg, pa_arg_partial_bytes): Likewise.
9154 (pa_function_arg_size): New function.
9155
9156 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9157
9158 * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
9159 in a separate statement.
9160
9161 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9162
9163 PR tree-optimization/83847
9164 * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
9165 group gathers and scatters.
9166
9167 2018-01-16 Jakub Jelinek <jakub@redhat.com>
9168
9169 PR rtl-optimization/86620
9170 * params.def (max-sched-ready-insns): Bump minimum value to 1.
9171
9172 PR rtl-optimization/83213
9173 * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
9174 to last if both are JUMP_INSNs.
9175
9176 PR tree-optimization/83843
9177 * gimple-ssa-store-merging.c
9178 (imm_store_chain_info::output_merged_store): Handle bit_not_p on
9179 store_immediate_info for bswap/nop orig_stores.
9180
9181 2018-01-15 Andrew Waterman <andrew@sifive.com>
9182
9183 * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
9184 !TARGET_MUL.
9185 <UDIV>: Increase cost if !TARGET_DIV.
9186
9187 2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
9188
9189 * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
9190 (define_attr "cr_logical_3op"): New.
9191 (cceq_ior_compare): Adjust.
9192 (cceq_ior_compare_complement): Adjust.
9193 (*cceq_rev_compare): Adjust.
9194 * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
9195 (is_cracked_insn): Adjust.
9196 (insn_must_be_first_in_group): Adjust.
9197 * config/rs6000/40x.md: Adjust.
9198 * config/rs6000/440.md: Adjust.
9199 * config/rs6000/476.md: Adjust.
9200 * config/rs6000/601.md: Adjust.
9201 * config/rs6000/603.md: Adjust.
9202 * config/rs6000/6xx.md: Adjust.
9203 * config/rs6000/7450.md: Adjust.
9204 * config/rs6000/7xx.md: Adjust.
9205 * config/rs6000/8540.md: Adjust.
9206 * config/rs6000/cell.md: Adjust.
9207 * config/rs6000/e300c2c3.md: Adjust.
9208 * config/rs6000/e500mc.md: Adjust.
9209 * config/rs6000/e500mc64.md: Adjust.
9210 * config/rs6000/e5500.md: Adjust.
9211 * config/rs6000/e6500.md: Adjust.
9212 * config/rs6000/mpc.md: Adjust.
9213 * config/rs6000/power4.md: Adjust.
9214 * config/rs6000/power5.md: Adjust.
9215 * config/rs6000/power6.md: Adjust.
9216 * config/rs6000/power7.md: Adjust.
9217 * config/rs6000/power8.md: Adjust.
9218 * config/rs6000/power9.md: Adjust.
9219 * config/rs6000/rs64.md: Adjust.
9220 * config/rs6000/titan.md: Adjust.
9221
9222 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9223
9224 * config/i386/predicates.md (indirect_branch_operand): Rewrite
9225 ix86_indirect_branch_register logic.
9226
9227 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9228
9229 * config/i386/constraints.md (Bs): Update
9230 ix86_indirect_branch_register check. Don't check
9231 ix86_indirect_branch_register with GOT_memory_operand.
9232 (Bw): Likewise.
9233 * config/i386/predicates.md (GOT_memory_operand): Don't check
9234 ix86_indirect_branch_register here.
9235 (GOT32_symbol_operand): Likewise.
9236
9237 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9238
9239 * config/i386/predicates.md (constant_call_address_operand):
9240 Rewrite ix86_indirect_branch_register logic.
9241 (sibcall_insn_operand): Likewise.
9242
9243 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9244
9245 * config/i386/constraints.md (Bs): Replace
9246 ix86_indirect_branch_thunk_register with
9247 ix86_indirect_branch_register.
9248 (Bw): Likewise.
9249 * config/i386/i386.md (indirect_jump): Likewise.
9250 (tablejump): Likewise.
9251 (*sibcall_memory): Likewise.
9252 (*sibcall_value_memory): Likewise.
9253 Peepholes of indirect call and jump via memory: Likewise.
9254 * config/i386/i386.opt: Likewise.
9255 * config/i386/predicates.md (indirect_branch_operand): Likewise.
9256 (GOT_memory_operand): Likewise.
9257 (call_insn_operand): Likewise.
9258 (sibcall_insn_operand): Likewise.
9259 (GOT32_symbol_operand): Likewise.
9260
9261 2018-01-15 Jakub Jelinek <jakub@redhat.com>
9262
9263 PR middle-end/83837
9264 * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
9265 type rather than type addr's type points to.
9266 (expand_omp_atomic_mutex): Likewise.
9267 (expand_omp_atomic): Likewise.
9268
9269 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9270
9271 PR target/83839
9272 * config/i386/i386.c (output_indirect_thunk_function): Use
9273 ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
9274 for __x86_return_thunk.
9275
9276 2018-01-15 Richard Biener <rguenther@suse.de>
9277
9278 PR middle-end/83850
9279 * expmed.c (extract_bit_field_1): Fix typo.
9280
9281 2018-01-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9282
9283 PR target/83687
9284 * config/arm/iterators.md (VF): New mode iterator.
9285 * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
9286 Remove integer-related logic from pattern.
9287 (neon_vabd<mode>_3): Likewise.
9288
9289 2018-01-15 Jakub Jelinek <jakub@redhat.com>
9290
9291 PR middle-end/82694
9292 * common.opt (fstrict-overflow): No longer an alias.
9293 (fwrapv-pointer): New option.
9294 * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
9295 also for pointer types based on flag_wrapv_pointer.
9296 * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
9297 opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
9298 opts->x_flag_wrapv got set.
9299 * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
9300 changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
9301 POINTER_TYPE_OVERFLOW_UNDEFINED.
9302 * match.pd: Likewise in address comparison pattern.
9303 * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
9304
9305 2018-01-15 Richard Biener <rguenther@suse.de>
9306
9307 PR lto/83804
9308 * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
9309 from TYPE_FIELDS. Free TYPE_BINFO if not used by devirtualization.
9310 Reset type names to their identifier if their TYPE_DECL doesn't
9311 have linkage (and thus is used for ODR and devirt).
9312 (save_debug_info_for_decl): Remove.
9313 (save_debug_info_for_type): Likewise.
9314 (add_tree_to_fld_list): Adjust.
9315 * tree-pretty-print.c (dump_generic_node): Make dumping of
9316 type names more robust.
9317
9318 2018-01-15 Richard Biener <rguenther@suse.de>
9319
9320 * BASE-VER: Bump to 8.0.1.
9321
9322 2018-01-14 Martin Sebor <msebor@redhat.com>
9323
9324 PR other/83508
9325 * builtins.c (check_access): Avoid warning when the no-warning bit
9326 is set.
9327
9328 2018-01-14 Cory Fields <cory-nospam-@coryfields.com>
9329
9330 * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
9331 * ira-color (allocno_hard_regs_compare): Likewise.
9332
9333 2018-01-14 Nathan Rossi <nathan@nathanrossi.com>
9334
9335 PR target/83013
9336 * config/microblaze/microblaze.c (microblaze_asm_output_ident):
9337 Use .pushsection/.popsection.
9338
9339 2018-01-14 Martin Sebor <msebor@redhat.com>
9340
9341 PR c++/81327
9342 * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
9343
9344 2018-01-14 Jakub Jelinek <jakub@redhat.com>
9345
9346 * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
9347 entry from extra_headers.
9348 (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
9349 extra_headers, make the list bitwise identical to the i?86-*-* one.
9350
9351 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9352
9353 * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
9354 -mcmodel=large with -mindirect-branch=thunk,
9355 -mindirect-branch=thunk-extern, -mfunction-return=thunk and
9356 -mfunction-return=thunk-extern.
9357 * doc/invoke.texi: Document -mcmodel=large is incompatible with
9358 -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
9359 -mfunction-return=thunk and -mfunction-return=thunk-extern.
9360
9361 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9362
9363 * config/i386/i386.c (print_reg): Print the name of the full
9364 integer register without '%'.
9365 (ix86_print_operand): Handle 'V'.
9366 * doc/extend.texi: Document 'V' modifier.
9367
9368 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9369
9370 * config/i386/constraints.md (Bs): Disallow memory operand for
9371 -mindirect-branch-register.
9372 (Bw): Likewise.
9373 * config/i386/predicates.md (indirect_branch_operand): Likewise.
9374 (GOT_memory_operand): Likewise.
9375 (call_insn_operand): Likewise.
9376 (sibcall_insn_operand): Likewise.
9377 (GOT32_symbol_operand): Likewise.
9378 * config/i386/i386.md (indirect_jump): Call convert_memory_address
9379 for -mindirect-branch-register.
9380 (tablejump): Likewise.
9381 (*sibcall_memory): Likewise.
9382 (*sibcall_value_memory): Likewise.
9383 Disallow peepholes of indirect call and jump via memory for
9384 -mindirect-branch-register.
9385 (*call_pop): Replace m with Bw.
9386 (*call_value_pop): Likewise.
9387 (*sibcall_pop_memory): Replace m with Bs.
9388 * config/i386/i386.opt (mindirect-branch-register): New option.
9389 * doc/invoke.texi: Document -mindirect-branch-register option.
9390
9391 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9392
9393 * config/i386/i386-protos.h (ix86_output_function_return): New.
9394 * config/i386/i386.c (ix86_set_indirect_branch_type): Also
9395 set function_return_type.
9396 (indirect_thunk_name): Add ret_p to indicate thunk for function
9397 return.
9398 (output_indirect_thunk_function): Pass false to
9399 indirect_thunk_name.
9400 (ix86_output_indirect_branch_via_reg): Likewise.
9401 (ix86_output_indirect_branch_via_push): Likewise.
9402 (output_indirect_thunk_function): Create alias for function
9403 return thunk if regno < 0.
9404 (ix86_output_function_return): New function.
9405 (ix86_handle_fndecl_attribute): Handle function_return.
9406 (ix86_attribute_table): Add function_return.
9407 * config/i386/i386.h (machine_function): Add
9408 function_return_type.
9409 * config/i386/i386.md (simple_return_internal): Use
9410 ix86_output_function_return.
9411 (simple_return_internal_long): Likewise.
9412 * config/i386/i386.opt (mfunction-return=): New option.
9413 (indirect_branch): Mention -mfunction-return=.
9414 * doc/extend.texi: Document function_return function attribute.
9415 * doc/invoke.texi: Document -mfunction-return= option.
9416
9417 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9418
9419 * config/i386/i386-opts.h (indirect_branch): New.
9420 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
9421 * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
9422 with local indirect jump when converting indirect call and jump.
9423 (ix86_set_indirect_branch_type): New.
9424 (ix86_set_current_function): Call ix86_set_indirect_branch_type.
9425 (indirectlabelno): New.
9426 (indirect_thunk_needed): Likewise.
9427 (indirect_thunk_bnd_needed): Likewise.
9428 (indirect_thunks_used): Likewise.
9429 (indirect_thunks_bnd_used): Likewise.
9430 (INDIRECT_LABEL): Likewise.
9431 (indirect_thunk_name): Likewise.
9432 (output_indirect_thunk): Likewise.
9433 (output_indirect_thunk_function): Likewise.
9434 (ix86_output_indirect_branch_via_reg): Likewise.
9435 (ix86_output_indirect_branch_via_push): Likewise.
9436 (ix86_output_indirect_branch): Likewise.
9437 (ix86_output_indirect_jmp): Likewise.
9438 (ix86_code_end): Call output_indirect_thunk_function if needed.
9439 (ix86_output_call_insn): Call ix86_output_indirect_branch if
9440 needed.
9441 (ix86_handle_fndecl_attribute): Handle indirect_branch.
9442 (ix86_attribute_table): Add indirect_branch.
9443 * config/i386/i386.h (machine_function): Add indirect_branch_type
9444 and has_local_indirect_jump.
9445 * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
9446 to true.
9447 (tablejump): Likewise.
9448 (*indirect_jump): Use ix86_output_indirect_jmp.
9449 (*tablejump_1): Likewise.
9450 (simple_return_indirect_internal): Likewise.
9451 * config/i386/i386.opt (mindirect-branch=): New option.
9452 (indirect_branch): New.
9453 (keep): Likewise.
9454 (thunk): Likewise.
9455 (thunk-inline): Likewise.
9456 (thunk-extern): Likewise.
9457 * doc/extend.texi: Document indirect_branch function attribute.
9458 * doc/invoke.texi: Document -mindirect-branch= option.
9459
9460 2018-01-14 Jan Hubicka <hubicka@ucw.cz>
9461
9462 PR ipa/83051
9463 * ipa-inline.c (edge_badness): Tolerate roundoff errors.
9464
9465 2018-01-14 Richard Sandiford <richard.sandiford@linaro.org>
9466
9467 * ipa-inline.c (want_inline_small_function_p): Return false if
9468 inlining has already failed with CIF_FINAL_ERROR.
9469 (update_caller_keys): Call want_inline_small_function_p before
9470 can_inline_edge_p.
9471 (update_callee_keys): Likewise.
9472
9473 2018-01-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
9474
9475 * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
9476 New function.
9477 (rs6000_quadword_masked_address_p): Likewise.
9478 (quad_aligned_load_p): Likewise.
9479 (quad_aligned_store_p): Likewise.
9480 (const_load_sequence_p): Add comment to describe the outer-most loop.
9481 (mimic_memory_attributes_and_flags): New function.
9482 (rs6000_gen_stvx): Likewise.
9483 (replace_swapped_aligned_store): Likewise.
9484 (rs6000_gen_lvx): Likewise.
9485 (replace_swapped_aligned_load): Likewise.
9486 (replace_swapped_load_constant): Capitalize argument name in
9487 comment describing this function.
9488 (rs6000_analyze_swaps): Add a third pass to search for vector loads
9489 and stores that access quad-word aligned addresses and replace
9490 with stvx or lvx instructions when appropriate.
9491 * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
9492 New function prototype.
9493 (rs6000_quadword_masked_address_p): Likewise.
9494 (rs6000_gen_lvx): Likewise.
9495 (rs6000_gen_stvx): Likewise.
9496 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
9497 VSX_D (V2DF, V2DI), modify this split to select lvx instruction
9498 when memory address is aligned.
9499 (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
9500 this split to select lvx instruction when memory address is aligned.
9501 (*vsx_le_perm_load_v8hi): Modify this split to select lvx
9502 instruction when memory address is aligned.
9503 (*vsx_le_perm_load_v16qi): Likewise.
9504 (four unnamed splitters): Modify to select the stvx instruction
9505 when memory is aligned.
9506
9507 2018-01-13 Jan Hubicka <hubicka@ucw.cz>
9508
9509 * predict.c (determine_unlikely_bbs): Handle correctly BBs
9510 which appears in the queue multiple times.
9511
9512 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9513 Alan Hayward <alan.hayward@arm.com>
9514 David Sherwood <david.sherwood@arm.com>
9515
9516 * tree-vectorizer.h (vec_lower_bound): New structure.
9517 (_loop_vec_info): Add check_nonzero and lower_bounds.
9518 (LOOP_VINFO_CHECK_NONZERO): New macro.
9519 (LOOP_VINFO_LOWER_BOUNDS): Likewise.
9520 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
9521 * tree-data-ref.h (dr_with_seg_len): Add access_size and align
9522 fields. Make seg_len the distance travelled, not including the
9523 access size.
9524 (dr_direction_indicator): Declare.
9525 (dr_zero_step_indicator): Likewise.
9526 (dr_known_forward_stride_p): Likewise.
9527 * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
9528 tree-ssanames.h.
9529 (runtime_alias_check_p): Allow runtime alias checks with
9530 variable strides.
9531 (operator ==): Compare access_size and align.
9532 (prune_runtime_alias_test_list): Rework for new distinction between
9533 the access_size and seg_len.
9534 (create_intersect_range_checks_index): Likewise. Cope with polynomial
9535 segment lengths.
9536 (get_segment_min_max): New function.
9537 (create_intersect_range_checks): Use it.
9538 (dr_step_indicator): New function.
9539 (dr_direction_indicator): Likewise.
9540 (dr_zero_step_indicator): Likewise.
9541 (dr_known_forward_stride_p): Likewise.
9542 * tree-loop-distribution.c (data_ref_segment_size): Return
9543 DR_STEP * (niters - 1).
9544 (compute_alias_check_pairs): Update call to the dr_with_seg_len
9545 constructor.
9546 * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
9547 (vect_preserves_scalar_order_p): New function, split out from...
9548 (vect_analyze_data_ref_dependence): ...here. Check for zero steps.
9549 (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
9550 (vect_vfa_access_size): New function.
9551 (vect_vfa_align): Likewise.
9552 (vect_compile_time_alias): Take access_size_a and access_b arguments.
9553 (dump_lower_bound): New function.
9554 (vect_check_lower_bound): Likewise.
9555 (vect_small_gap_p): Likewise.
9556 (vectorizable_with_step_bound_p): Likewise.
9557 (vect_prune_runtime_alias_test_list): Ignore cross-iteration
9558 depencies if the vectorization factor is 1. Convert the checks
9559 for nonzero steps into checks on the bounds of DR_STEP. Try using
9560 a bunds check for variable steps if the minimum required step is
9561 relatively small. Update calls to the dr_with_seg_len
9562 constructor and to vect_compile_time_alias.
9563 * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
9564 function.
9565 (vect_loop_versioning): Call it.
9566 * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
9567 when retrying.
9568 (vect_estimate_min_profitable_iters): Account for any bounds checks.
9569
9570 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9571 Alan Hayward <alan.hayward@arm.com>
9572 David Sherwood <david.sherwood@arm.com>
9573
9574 * doc/sourcebuild.texi (vect_scatter_store): Document.
9575 * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
9576 optabs.
9577 * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
9578 Document.
9579 * genopinit.c (main): Add supports_vec_scatter_store and
9580 supports_vec_scatter_store_cached to target_optabs.
9581 * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
9582 IFN_MASK_SCATTER_STORE.
9583 * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
9584 functions.
9585 * internal-fn.h (internal_store_fn_p): Declare.
9586 (internal_fn_stored_value_index): Likewise.
9587 * internal-fn.c (scatter_store_direct): New macro.
9588 (expand_scatter_store_optab_fn): New function.
9589 (direct_scatter_store_optab_supported_p): New macro.
9590 (internal_store_fn_p): New function.
9591 (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
9592 IFN_MASK_SCATTER_STORE.
9593 (internal_fn_mask_index): Likewise.
9594 (internal_fn_stored_value_index): New function.
9595 (internal_gather_scatter_fn_supported_p): Adjust operand numbers
9596 for scatter stores.
9597 * optabs-query.h (supports_vec_scatter_store_p): Declare.
9598 * optabs-query.c (supports_vec_scatter_store_p): New function.
9599 * tree-vectorizer.h (vect_get_store_rhs): Declare.
9600 * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
9601 true for scatter stores.
9602 (vect_gather_scatter_fn_p): Handle scatter stores too.
9603 (vect_check_gather_scatter): Consider using scatter stores if
9604 supports_vec_scatter_store_p.
9605 * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
9606 scatter stores too.
9607 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9608 internal_fn_stored_value_index.
9609 (check_load_store_masking): Handle scatter stores too.
9610 (vect_get_store_rhs): Make public.
9611 (vectorizable_call): Use internal_store_fn_p.
9612 (vectorizable_store): Handle scatter store internal functions.
9613 (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
9614 when deciding whether the end of the group has been reached.
9615 * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
9616 * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
9617 (mask_scatter_store<mode>): New insns.
9618
9619 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9620 Alan Hayward <alan.hayward@arm.com>
9621 David Sherwood <david.sherwood@arm.com>
9622
9623 * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
9624 * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
9625 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
9626 function.
9627 (vect_use_strided_gather_scatters_p): Take a masked_p argument.
9628 Use vect_truncate_gather_scatter_offset if we can't treat the
9629 operation as a normal gather load or scatter store.
9630 (get_group_load_store_type): Take the gather_scatter_info
9631 as argument. Try using a gather load or scatter store for
9632 single-element groups.
9633 (get_load_store_type): Update calls to get_group_load_store_type
9634 and vect_use_strided_gather_scatters_p.
9635
9636 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9637 Alan Hayward <alan.hayward@arm.com>
9638 David Sherwood <david.sherwood@arm.com>
9639
9640 * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
9641 optional tree argument.
9642 * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
9643 null target hooks.
9644 (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
9645 but continue to use the current value as a fallback.
9646 (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
9647 to compare the updates.
9648 * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
9649 (get_load_store_type): Use it when handling a strided access.
9650 (vect_get_strided_load_store_ops): New function.
9651 (vect_get_data_ptr_increment): Likewise.
9652 (vectorizable_load): Handle strided gather loads. Always pass
9653 a step to vect_create_data_ref_ptr and bump_vector_ptr.
9654
9655 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9656 Alan Hayward <alan.hayward@arm.com>
9657 David Sherwood <david.sherwood@arm.com>
9658
9659 * doc/md.texi (gather_load@var{m}): Document.
9660 (mask_gather_load@var{m}): Likewise.
9661 * genopinit.c (main): Add supports_vec_gather_load and
9662 supports_vec_gather_load_cached to target_optabs.
9663 * optabs-tree.c (init_tree_optimization_optabs): Use
9664 ggc_cleared_alloc to allocate target_optabs.
9665 * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
9666 * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
9667 functions.
9668 * internal-fn.h (internal_load_fn_p): Declare.
9669 (internal_gather_scatter_fn_p): Likewise.
9670 (internal_fn_mask_index): Likewise.
9671 (internal_gather_scatter_fn_supported_p): Likewise.
9672 * internal-fn.c (gather_load_direct): New macro.
9673 (expand_gather_load_optab_fn): New function.
9674 (direct_gather_load_optab_supported_p): New macro.
9675 (direct_internal_fn_optab): New function.
9676 (internal_load_fn_p): Likewise.
9677 (internal_gather_scatter_fn_p): Likewise.
9678 (internal_fn_mask_index): Likewise.
9679 (internal_gather_scatter_fn_supported_p): Likewise.
9680 * optabs-query.c (supports_at_least_one_mode_p): New function.
9681 (supports_vec_gather_load_p): Likewise.
9682 * optabs-query.h (supports_vec_gather_load_p): Declare.
9683 * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
9684 and memory_type field.
9685 (NUM_PATTERNS): Bump to 15.
9686 * tree-vect-data-refs.c: Include internal-fn.h.
9687 (vect_gather_scatter_fn_p): New function.
9688 (vect_describe_gather_scatter_call): Likewise.
9689 (vect_check_gather_scatter): Try using internal functions for
9690 gather loads. Recognize existing calls to a gather load function.
9691 (vect_analyze_data_refs): Consider using gather loads if
9692 supports_vec_gather_load_p.
9693 * tree-vect-patterns.c (vect_get_load_store_mask): New function.
9694 (vect_get_gather_scatter_offset_type): Likewise.
9695 (vect_convert_mask_for_vectype): Likewise.
9696 (vect_add_conversion_to_patterm): Likewise.
9697 (vect_try_gather_scatter_pattern): Likewise.
9698 (vect_recog_gather_scatter_pattern): New pattern recognizer.
9699 (vect_vect_recog_func_ptrs): Add it.
9700 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9701 internal_fn_mask_index and internal_gather_scatter_fn_p.
9702 (check_load_store_masking): Take the gather_scatter_info as an
9703 argument and handle gather loads.
9704 (vect_get_gather_scatter_ops): New function.
9705 (vectorizable_call): Check internal_load_fn_p.
9706 (vectorizable_load): Likewise. Handle gather load internal
9707 functions.
9708 (vectorizable_store): Update call to check_load_store_masking.
9709 * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
9710 * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
9711 * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
9712 (aarch64_gather_scale_operand_d): New predicates.
9713 * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
9714 (mask_gather_load<mode>): New insns.
9715
9716 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9717 Alan Hayward <alan.hayward@arm.com>
9718 David Sherwood <david.sherwood@arm.com>
9719
9720 * optabs.def (fold_left_plus_optab): New optab.
9721 * doc/md.texi (fold_left_plus_@var{m}): Document.
9722 * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
9723 * internal-fn.c (fold_left_direct): Define.
9724 (expand_fold_left_optab_fn): Likewise.
9725 (direct_fold_left_optab_supported_p): Likewise.
9726 * fold-const-call.c (fold_const_fold_left): New function.
9727 (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
9728 * tree-parloops.c (valid_reduction_p): New function.
9729 (gather_scalar_reductions): Use it.
9730 * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
9731 (vect_finish_replace_stmt): Declare.
9732 * tree-vect-loop.c (fold_left_reduction_fn): New function.
9733 (needs_fold_left_reduction_p): New function, split out from...
9734 (vect_is_simple_reduction): ...here. Accept reductions that
9735 forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
9736 (vect_force_simple_reduction): Also store the reduction type in
9737 the assignment's STMT_VINFO_REDUC_TYPE.
9738 (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
9739 (merge_with_identity): New function.
9740 (vect_expand_fold_left): Likewise.
9741 (vectorize_fold_left_reduction): Likewise.
9742 (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION. Leave the
9743 scalar phi in place for it. Check for target support and reject
9744 cases that would reassociate the operation. Defer the transform
9745 phase to vectorize_fold_left_reduction.
9746 * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
9747 * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
9748 (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
9749
9750 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9751
9752 * tree-if-conv.c (predicate_mem_writes): Remove redundant
9753 call to ifc_temp_var.
9754
9755 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9756 Alan Hayward <alan.hayward@arm.com>
9757 David Sherwood <david.sherwood@arm.com>
9758
9759 * target.def (legitimize_address_displacement): Take the original
9760 offset as a poly_int.
9761 * targhooks.h (default_legitimize_address_displacement): Update
9762 accordingly.
9763 * targhooks.c (default_legitimize_address_displacement): Likewise.
9764 * doc/tm.texi: Regenerate.
9765 * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
9766 as an argument, moving assert of ad->disp == ad->disp_term to...
9767 (process_address_1): ...here. Update calls to base_plus_disp_to_reg.
9768 Try calling targetm.legitimize_address_displacement before expanding
9769 the address rather than afterwards, and adjust for the new interface.
9770 * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
9771 Match the new hook interface. Handle SVE addresses.
9772 * config/sh/sh.c (sh_legitimize_address_displacement): Make the
9773 new hook interface.
9774
9775 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9776
9777 * Makefile.in (OBJS): Add early-remat.o.
9778 * target.def (select_early_remat_modes): New hook.
9779 * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
9780 * doc/tm.texi: Regenerate.
9781 * targhooks.h (default_select_early_remat_modes): Declare.
9782 * targhooks.c (default_select_early_remat_modes): New function.
9783 * timevar.def (TV_EARLY_REMAT): New timevar.
9784 * passes.def (pass_early_remat): New pass.
9785 * tree-pass.h (make_pass_early_remat): Declare.
9786 * early-remat.c: New file.
9787 * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
9788 function.
9789 (TARGET_SELECT_EARLY_REMAT_MODES): Define.
9790
9791 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9792 Alan Hayward <alan.hayward@arm.com>
9793 David Sherwood <david.sherwood@arm.com>
9794
9795 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
9796 vfm1 with a bound_epilog parameter.
9797 (vect_do_peeling): Update calls accordingly, and move the prologue
9798 call earlier in the function. Treat the base bound_epilog as 0 for
9799 fully-masked loops and retain vf - 1 for other loops. Add 1 to
9800 this base when peeling for gaps.
9801 * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
9802 with fully-masked loops.
9803 (vect_estimate_min_profitable_iters): Handle the single peeled
9804 iteration in that case.
9805
9806 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9807 Alan Hayward <alan.hayward@arm.com>
9808 David Sherwood <david.sherwood@arm.com>
9809
9810 * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
9811 single-element interleaving even if the size is not a power of 2.
9812 * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
9813 accesses for single-element interleaving if the group size is
9814 not a power of 2.
9815
9816 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9817 Alan Hayward <alan.hayward@arm.com>
9818 David Sherwood <david.sherwood@arm.com>
9819
9820 * doc/md.texi (fold_extract_last_@var{m}): Document.
9821 * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
9822 * optabs.def (fold_extract_last_optab): New optab.
9823 * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
9824 * internal-fn.c (fold_extract_direct): New macro.
9825 (expand_fold_extract_optab_fn): Likewise.
9826 (direct_fold_extract_optab_supported_p): Likewise.
9827 * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
9828 * tree-vect-loop.c (vect_model_reduction_cost): Handle
9829 EXTRACT_LAST_REDUCTION.
9830 (get_initial_def_for_reduction): Do not create an initial vector
9831 for EXTRACT_LAST_REDUCTION reductions.
9832 (vectorizable_reduction): Leave the scalar phi in place for
9833 EXTRACT_LAST_REDUCTIONs. Try using EXTRACT_LAST_REDUCTION
9834 ahead of INTEGER_INDUC_COND_REDUCTION. Do not check for an
9835 epilogue code for EXTRACT_LAST_REDUCTION and defer the
9836 transform phase to vectorizable_condition.
9837 * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
9838 split out from...
9839 (vect_finish_stmt_generation): ...here.
9840 (vect_finish_replace_stmt): New function.
9841 (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
9842 * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
9843 pattern.
9844 * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
9845
9846 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9847 Alan Hayward <alan.hayward@arm.com>
9848 David Sherwood <david.sherwood@arm.com>
9849
9850 * doc/md.texi (extract_last_@var{m}): Document.
9851 * optabs.def (extract_last_optab): New optab.
9852 * internal-fn.def (EXTRACT_LAST): New internal function.
9853 * internal-fn.c (cond_unary_direct): New macro.
9854 (expand_cond_unary_optab_fn): Likewise.
9855 (direct_cond_unary_optab_supported_p): Likewise.
9856 * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
9857 loops using EXTRACT_LAST.
9858 * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
9859 (extract_last_<mode>): ...this optab.
9860 (vec_extract<mode><Vel>): Update accordingly.
9861
9862 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9863 Alan Hayward <alan.hayward@arm.com>
9864 David Sherwood <david.sherwood@arm.com>
9865
9866 * target.def (empty_mask_is_expensive): New hook.
9867 * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
9868 * doc/tm.texi: Regenerate.
9869 * targhooks.h (default_empty_mask_is_expensive): Declare.
9870 * targhooks.c (default_empty_mask_is_expensive): New function.
9871 * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
9872 if the target says that empty masks are expensive.
9873 * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
9874 New function.
9875 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
9876
9877 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9878 Alan Hayward <alan.hayward@arm.com>
9879 David Sherwood <david.sherwood@arm.com>
9880
9881 * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
9882 (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
9883 (vect_use_loop_mask_for_alignment_p): New function.
9884 (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
9885 * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
9886 niters_skip argument. Make sure that the first niters_skip elements
9887 of the first iteration are inactive.
9888 (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
9889 Update call to vect_set_loop_masks_directly.
9890 (get_misalign_in_elems): New function, split out from...
9891 (vect_gen_prolog_loop_niters): ...here.
9892 (vect_update_init_of_dr): Take a code argument that specifies whether
9893 the adjustment should be added or subtracted.
9894 (vect_update_init_of_drs): Likewise.
9895 (vect_prepare_for_masked_peels): New function.
9896 (vect_do_peeling): Skip prologue peeling if we're using a mask
9897 instead. Update call to vect_update_inits_of_drs.
9898 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
9899 mask_skip_niters.
9900 (vect_analyze_loop_2): Allow fully-masked loops with peeling for
9901 alignment. Do not include the number of peeled iterations in
9902 the minimum threshold in that case.
9903 (vectorizable_induction): Adjust the start value down by
9904 LOOP_VINFO_MASK_SKIP_NITERS iterations.
9905 (vect_transform_loop): Call vect_prepare_for_masked_peels.
9906 Take the number of skipped iterations into account when calculating
9907 the loop bounds.
9908 * tree-vect-stmts.c (vect_gen_while_not): New function.
9909
9910 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9911 Alan Hayward <alan.hayward@arm.com>
9912 David Sherwood <david.sherwood@arm.com>
9913
9914 * doc/sourcebuild.texi (vect_fully_masked): Document.
9915 * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
9916 default value to 0.
9917 * tree-vect-loop.c (vect_analyze_loop_costing): New function,
9918 split out from...
9919 (vect_analyze_loop_2): ...here. Don't check the vectorization
9920 factor against the number of loop iterations if the loop is
9921 fully-masked.
9922
9923 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9924 Alan Hayward <alan.hayward@arm.com>
9925 David Sherwood <david.sherwood@arm.com>
9926
9927 * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
9928 (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
9929 (dump_groups): Update accordingly.
9930 (iv_use::mem_type): New member variable.
9931 (address_p): New function.
9932 (record_use): Add a mem_type argument and initialize the new
9933 mem_type field.
9934 (record_group_use): Add a mem_type argument. Use address_p.
9935 Remove obsolete null checks of base_object. Update call to record_use.
9936 (find_interesting_uses_op): Update call to record_group_use.
9937 (find_interesting_uses_cond): Likewise.
9938 (find_interesting_uses_address): Likewise.
9939 (get_mem_type_for_internal_fn): New function.
9940 (find_address_like_use): Likewise.
9941 (find_interesting_uses_stmt): Try find_address_like_use before
9942 calling find_interesting_uses_op.
9943 (addr_offset_valid_p): Use the iv mem_type field as the type
9944 of the addressed memory.
9945 (add_autoinc_candidates): Likewise.
9946 (get_address_cost): Likewise.
9947 (split_small_address_groups_p): Use address_p.
9948 (split_address_groups): Likewise.
9949 (add_iv_candidate_for_use): Likewise.
9950 (autoinc_possible_for_pair): Likewise.
9951 (rewrite_groups): Likewise.
9952 (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
9953 (determine_group_iv_cost): Update after split of USE_ADDRESS.
9954 (get_alias_ptr_type_for_ptr_address): New function.
9955 (rewrite_use_address): Rewrite address uses in calls that were
9956 identified by find_address_like_use.
9957
9958 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9959 Alan Hayward <alan.hayward@arm.com>
9960 David Sherwood <david.sherwood@arm.com>
9961
9962 * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
9963 TARGET_MEM_REFs.
9964 * gimple-expr.h (is_gimple_addressable: Likewise.
9965 * gimple-expr.c (is_gimple_address): Likewise.
9966 * internal-fn.c (expand_call_mem_ref): New function.
9967 (expand_mask_load_optab_fn): Use it.
9968 (expand_mask_store_optab_fn): Likewise.
9969
9970 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9971 Alan Hayward <alan.hayward@arm.com>
9972 David Sherwood <david.sherwood@arm.com>
9973
9974 * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
9975 (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
9976 (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
9977 (cond_umax@var{mode}): Document.
9978 * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
9979 (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
9980 (cond_umin_optab, cond_umax_optab): New optabs.
9981 * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
9982 (COND_IOR, COND_XOR): New internal functions.
9983 * internal-fn.h (get_conditional_internal_fn): Declare.
9984 * internal-fn.c (cond_binary_direct): New macro.
9985 (expand_cond_binary_optab_fn): Likewise.
9986 (direct_cond_binary_optab_supported_p): Likewise.
9987 (get_conditional_internal_fn): New function.
9988 * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
9989 Cope with reduction statements that are vectorized as calls rather
9990 than assignments.
9991 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
9992 * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
9993 (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
9994 (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
9995 (UNSPEC_COND_EOR): New unspecs.
9996 (optab): Add mappings for them.
9997 (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
9998 (sve_int_op, sve_fp_op): New int attributes.
9999
10000 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10001 Alan Hayward <alan.hayward@arm.com>
10002 David Sherwood <david.sherwood@arm.com>
10003
10004 * optabs.def (while_ult_optab): New optab.
10005 * doc/md.texi (while_ult@var{m}@var{n}): Document.
10006 * internal-fn.def (WHILE_ULT): New internal function.
10007 * internal-fn.h (direct_internal_fn_supported_p): New override
10008 that takes two types as argument.
10009 * internal-fn.c (while_direct): New macro.
10010 (expand_while_optab_fn): New function.
10011 (convert_optab_supported_p): Likewise.
10012 (direct_while_optab_supported_p): New macro.
10013 * wide-int.h (wi::udiv_ceil): New function.
10014 * tree-vectorizer.h (rgroup_masks): New structure.
10015 (vec_loop_masks): New typedef.
10016 (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
10017 and fully_masked_p.
10018 (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
10019 (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
10020 (vect_max_vf): New function.
10021 (slpeel_make_loop_iterate_ntimes): Delete.
10022 (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
10023 (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
10024 (vect_record_loop_mask, vect_get_loop_mask): Likewise.
10025 * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
10026 internal-fn.h, stor-layout.h and optabs-query.h.
10027 (vect_set_loop_mask): New function.
10028 (add_preheader_seq): Likewise.
10029 (add_header_seq): Likewise.
10030 (interleave_supported_p): Likewise.
10031 (vect_maybe_permute_loop_masks): Likewise.
10032 (vect_set_loop_masks_directly): Likewise.
10033 (vect_set_loop_condition_masked): Likewise.
10034 (vect_set_loop_condition_unmasked): New function, split out from
10035 slpeel_make_loop_iterate_ntimes.
10036 (slpeel_make_loop_iterate_ntimes): Rename to..
10037 (vect_set_loop_condition): ...this. Use vect_set_loop_condition_masked
10038 for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
10039 (vect_do_peeling): Update call accordingly.
10040 (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
10041 loops.
10042 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10043 mask_compare_type, can_fully_mask_p and fully_masked_p.
10044 (release_vec_loop_masks): New function.
10045 (_loop_vec_info): Use it to free the loop masks.
10046 (can_produce_all_loop_masks_p): New function.
10047 (vect_get_max_nscalars_per_iter): Likewise.
10048 (vect_verify_full_masking): Likewise.
10049 (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
10050 retries, and free the mask rgroups before retrying. Check loop-wide
10051 reasons for disallowing fully-masked loops. Make the final decision
10052 about whether use a fully-masked loop or not.
10053 (vect_estimate_min_profitable_iters): Do not assume that peeling
10054 for the number of iterations will be needed for fully-masked loops.
10055 (vectorizable_reduction): Disable fully-masked loops.
10056 (vectorizable_live_operation): Likewise.
10057 (vect_halve_mask_nunits): New function.
10058 (vect_double_mask_nunits): Likewise.
10059 (vect_record_loop_mask): Likewise.
10060 (vect_get_loop_mask): Likewise.
10061 (vect_transform_loop): Handle the case in which the final loop
10062 iteration might handle a partial vector. Call vect_set_loop_condition
10063 instead of slpeel_make_loop_iterate_ntimes.
10064 * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
10065 (check_load_store_masking): New function.
10066 (prepare_load_store_mask): Likewise.
10067 (vectorizable_store): Handle fully-masked loops.
10068 (vectorizable_load): Likewise.
10069 (supportable_widening_operation): Use vect_halve_mask_nunits for
10070 booleans.
10071 (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
10072 (vect_gen_while): New function.
10073 * config/aarch64/aarch64.md (umax<mode>3): New expander.
10074 (aarch64_uqdec<mode>): New insn.
10075
10076 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10077 Alan Hayward <alan.hayward@arm.com>
10078 David Sherwood <david.sherwood@arm.com>
10079
10080 * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
10081 (reduc_xor_scal_optab): New optabs.
10082 * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
10083 (reduc_xor_scal_@var{m}): Document.
10084 * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
10085 * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
10086 internal functions.
10087 * fold-const-call.c (fold_const_call): Handle them.
10088 * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
10089 internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
10090 * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
10091 (*reduc_<bit_reduc>_scal_<mode>): New patterns.
10092 * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
10093 (UNSPEC_XORV): New unspecs.
10094 (optab): Add entries for them.
10095 (BITWISEV): New int iterator.
10096 (bit_reduc_op): New int attributes.
10097
10098 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10099 Alan Hayward <alan.hayward@arm.com>
10100 David Sherwood <david.sherwood@arm.com>
10101
10102 * doc/md.texi (vec_shl_insert_@var{m}): New optab.
10103 * internal-fn.def (VEC_SHL_INSERT): New internal function.
10104 * optabs.def (vec_shl_insert_optab): New optab.
10105 * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
10106 (duplicate_and_interleave): Likewise.
10107 * tree-vect-loop.c: Include internal-fn.h.
10108 (neutral_op_for_slp_reduction): New function, split out from
10109 get_initial_defs_for_reduction.
10110 (get_initial_def_for_reduction): Handle option 2 for variable-length
10111 vectors by loading the neutral value into a vector and then shifting
10112 the initial value into element 0.
10113 (get_initial_defs_for_reduction): Replace the code argument with
10114 the neutral value calculated by neutral_op_for_slp_reduction.
10115 Use gimple_build_vector for constant-length vectors.
10116 Use IFN_VEC_SHL_INSERT for variable-length vectors if all
10117 but the first group_size elements have a neutral value.
10118 Use duplicate_and_interleave otherwise.
10119 (vect_create_epilog_for_reduction): Take a neutral_op parameter.
10120 Update call to get_initial_defs_for_reduction. Handle SLP
10121 reductions for variable-length vectors by creating one vector
10122 result for each scalar result, with the elements associated
10123 with other scalar results stubbed out with the neutral value.
10124 (vectorizable_reduction): Call neutral_op_for_slp_reduction.
10125 Require IFN_VEC_SHL_INSERT for double reductions on
10126 variable-length vectors, or SLP reductions that have
10127 a neutral value. Require can_duplicate_and_interleave_p
10128 support for variable-length unchained SLP reductions if there
10129 is no neutral value, such as for MIN/MAX reductions. Also require
10130 the number of vector elements to be a multiple of the number of
10131 SLP statements when doing variable-length unchained SLP reductions.
10132 Update call to vect_create_epilog_for_reduction.
10133 * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
10134 and remove initial values.
10135 (duplicate_and_interleave): Make public.
10136 * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
10137 * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
10138
10139 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10140 Alan Hayward <alan.hayward@arm.com>
10141 David Sherwood <david.sherwood@arm.com>
10142
10143 * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
10144 (can_duplicate_and_interleave_p): New function.
10145 (vect_get_and_check_slp_defs): Take the vector of statements
10146 rather than just the current one. Remove excess parentheses.
10147 Restriction rejectinon of vect_constant_def and vect_external_def
10148 for variable-length vectors to boolean types, or types for which
10149 can_duplicate_and_interleave_p is false.
10150 (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
10151 (duplicate_and_interleave): New function.
10152 (vect_get_constant_vectors): Use gimple_build_vector for
10153 constant-length vectors and suitable variable-length constant
10154 vectors. Use duplicate_and_interleave for other variable-length
10155 vectors. Don't defer the update when inserting new statements.
10156
10157 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10158 Alan Hayward <alan.hayward@arm.com>
10159 David Sherwood <david.sherwood@arm.com>
10160
10161 * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
10162 min_profitable_iters doesn't go negative.
10163
10164 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10165 Alan Hayward <alan.hayward@arm.com>
10166 David Sherwood <david.sherwood@arm.com>
10167
10168 * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
10169 (vec_mask_store_lanes@var{m}@var{n}): Likewise.
10170 * optabs.def (vec_mask_load_lanes_optab): New optab.
10171 (vec_mask_store_lanes_optab): Likewise.
10172 * internal-fn.def (MASK_LOAD_LANES): New internal function.
10173 (MASK_STORE_LANES): Likewise.
10174 * internal-fn.c (mask_load_lanes_direct): New macro.
10175 (mask_store_lanes_direct): Likewise.
10176 (expand_mask_load_optab_fn): Handle masked operations.
10177 (expand_mask_load_lanes_optab_fn): New macro.
10178 (expand_mask_store_optab_fn): Handle masked operations.
10179 (expand_mask_store_lanes_optab_fn): New macro.
10180 (direct_mask_load_lanes_optab_supported_p): Likewise.
10181 (direct_mask_store_lanes_optab_supported_p): Likewise.
10182 * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
10183 parameter.
10184 (vect_load_lanes_supported): Likewise.
10185 * tree-vect-data-refs.c (strip_conversion): New function.
10186 (can_group_stmts_p): Likewise.
10187 (vect_analyze_data_ref_accesses): Use it instead of checking
10188 for a pair of assignments.
10189 (vect_store_lanes_supported): Take a masked_p parameter.
10190 (vect_load_lanes_supported): Likewise.
10191 * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
10192 vect_store_lanes_supported and vect_load_lanes_supported.
10193 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
10194 * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
10195 parameter. Don't allow gaps for masked accesses.
10196 Use vect_get_store_rhs. Update calls to vect_store_lanes_supported
10197 and vect_load_lanes_supported.
10198 (get_load_store_type): Take a masked_p parameter and update
10199 call to get_group_load_store_type.
10200 (vectorizable_store): Update call to get_load_store_type.
10201 Handle IFN_MASK_STORE_LANES.
10202 (vectorizable_load): Update call to get_load_store_type.
10203 Handle IFN_MASK_LOAD_LANES.
10204
10205 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10206 Alan Hayward <alan.hayward@arm.com>
10207 David Sherwood <david.sherwood@arm.com>
10208
10209 * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
10210 modes for SVE.
10211 * config/aarch64/aarch64-protos.h
10212 (aarch64_sve_struct_memory_operand_p): Declare.
10213 * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
10214 (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
10215 (VPRED, vpred): Handle SVE structure modes.
10216 * config/aarch64/constraints.md (Utx): New constraint.
10217 * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
10218 (aarch64_sve_struct_nonimmediate_operand): New predicates.
10219 * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
10220 * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
10221 (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
10222 structure modes. Split into pieces after RA.
10223 (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
10224 (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
10225 New patterns.
10226 * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
10227 SVE structure modes.
10228 (aarch64_classify_address): Likewise.
10229 (sizetochar): Move earlier in file.
10230 (aarch64_print_operand): Handle SVE register lists.
10231 (aarch64_array_mode): New function.
10232 (aarch64_sve_struct_memory_operand_p): Likewise.
10233 (TARGET_ARRAY_MODE): Redefine.
10234
10235 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10236 Alan Hayward <alan.hayward@arm.com>
10237 David Sherwood <david.sherwood@arm.com>
10238
10239 * target.def (array_mode): New target hook.
10240 * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
10241 * doc/tm.texi: Regenerate.
10242 * hooks.h (hook_optmode_mode_uhwi_none): Declare.
10243 * hooks.c (hook_optmode_mode_uhwi_none): New function.
10244 * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
10245 targetm.array_mode.
10246 * stor-layout.c (mode_for_array): Likewise. Support polynomial
10247 type sizes.
10248
10249 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10250 Alan Hayward <alan.hayward@arm.com>
10251 David Sherwood <david.sherwood@arm.com>
10252
10253 * fold-const.c (fold_binary_loc): Check the argument types
10254 rather than the result type when testing for a vector operation.
10255
10256 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10257
10258 * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
10259 * doc/tm.texi: Regenerate.
10260
10261 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10262 Alan Hayward <alan.hayward@arm.com>
10263 David Sherwood <david.sherwood@arm.com>
10264
10265 * doc/invoke.texi (-msve-vector-bits=): Document new option.
10266 (sve): Document new AArch64 extension.
10267 * doc/md.texi (w): Extend the description of the AArch64
10268 constraint to include SVE vectors.
10269 (Upl, Upa): Document new AArch64 predicate constraints.
10270 * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
10271 enum.
10272 * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
10273 (msve-vector-bits=): New option.
10274 * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
10275 SVE when these are disabled.
10276 (sve): New extension.
10277 * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
10278 modes. Adjust their number of units based on aarch64_sve_vg.
10279 (MAX_BITSIZE_MODE_ANY_MODE): Define.
10280 * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
10281 aarch64_addr_query_type.
10282 (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
10283 (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
10284 (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
10285 (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
10286 (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
10287 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
10288 (aarch64_simd_imm_zero_p): Delete.
10289 (aarch64_check_zero_based_sve_index_immediate): Declare.
10290 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
10291 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
10292 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
10293 (aarch64_sve_float_mul_immediate_p): Likewise.
10294 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
10295 rather than an rtx.
10296 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
10297 (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
10298 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
10299 (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
10300 (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
10301 (aarch64_regmode_natural_size): Likewise.
10302 * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
10303 (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
10304 left one place.
10305 (AARCH64_ISA_SVE, TARGET_SVE): New macros.
10306 (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
10307 for VG and the SVE predicate registers.
10308 (V_ALIASES): Add a "z"-prefixed alias.
10309 (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
10310 (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
10311 (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
10312 (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
10313 (REG_CLASS_NAMES): Add entries for them.
10314 (REG_CLASS_CONTENTS): Likewise. Update ALL_REGS to include VG
10315 and the predicate registers.
10316 (aarch64_sve_vg): Declare.
10317 (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
10318 (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
10319 (REGMODE_NATURAL_SIZE): Define.
10320 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
10321 SVE macros.
10322 * config/aarch64/aarch64.c: Include cfgrtl.h.
10323 (simd_immediate_info): Add a constructor for series vectors,
10324 and an associated step field.
10325 (aarch64_sve_vg): New variable.
10326 (aarch64_dbx_register_number): Handle VG and the predicate registers.
10327 (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
10328 (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
10329 (VEC_ANY_DATA, VEC_STRUCT): New constants.
10330 (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
10331 (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
10332 (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
10333 (aarch64_get_mask_mode): New functions.
10334 (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
10335 and FP_LO_REGS. Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
10336 (aarch64_hard_regno_mode_ok): Handle VG. Also handle the SVE
10337 predicate modes and predicate registers. Explicitly restrict
10338 GPRs to modes of 16 bytes or smaller. Only allow FP registers
10339 to store a vector mode if it is recognized by
10340 aarch64_classify_vector_mode.
10341 (aarch64_regmode_natural_size): New function.
10342 (aarch64_hard_regno_caller_save_mode): Return the original mode
10343 for predicates.
10344 (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
10345 (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
10346 (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
10347 (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
10348 functions.
10349 (aarch64_add_offset): Add a temp2 parameter. Assert that temp1
10350 does not overlap dest if the function is frame-related. Handle
10351 SVE constants.
10352 (aarch64_split_add_offset): New function.
10353 (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
10354 them aarch64_add_offset.
10355 (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
10356 and update call to aarch64_sub_sp.
10357 (aarch64_add_cfa_expression): New function.
10358 (aarch64_expand_prologue): Pass extra temporary registers to the
10359 functions above. Handle the case in which we need to emit new
10360 DW_CFA_expressions for registers that were originally saved
10361 relative to the stack pointer, but now have to be expressed
10362 relative to the frame pointer.
10363 (aarch64_output_mi_thunk): Pass extra temporary registers to the
10364 functions above.
10365 (aarch64_expand_epilogue): Likewise. Prevent inheritance of
10366 IP0 and IP1 values for SVE frames.
10367 (aarch64_expand_vec_series): New function.
10368 (aarch64_expand_sve_widened_duplicate): Likewise.
10369 (aarch64_expand_sve_const_vector): Likewise.
10370 (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
10371 Handle SVE constants. Use emit_move_insn to move a force_const_mem
10372 into the register, rather than emitting a SET directly.
10373 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
10374 (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
10375 (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
10376 (offset_9bit_signed_scaled_p): New functions.
10377 (aarch64_replicate_bitmask_imm): New function.
10378 (aarch64_bitmask_imm): Use it.
10379 (aarch64_cannot_force_const_mem): Reject expressions involving
10380 a CONST_POLY_INT. Update call to aarch64_classify_symbol.
10381 (aarch64_classify_index): Handle SVE indices, by requiring
10382 a plain register index with a scale that matches the element size.
10383 (aarch64_classify_address): Handle SVE addresses. Assert that
10384 the mode of the address is VOIDmode or an integer mode.
10385 Update call to aarch64_classify_symbol.
10386 (aarch64_classify_symbolic_expression): Update call to
10387 aarch64_classify_symbol.
10388 (aarch64_const_vec_all_in_range_p): New function.
10389 (aarch64_print_vector_float_operand): Likewise.
10390 (aarch64_print_operand): Handle 'N' and 'C'. Use "zN" rather than
10391 "vN" for FP registers with SVE modes. Handle (const ...) vectors
10392 and the FP immediates 1.0 and 0.5.
10393 (aarch64_print_address_internal): Handle SVE addresses.
10394 (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
10395 (aarch64_regno_regclass): Handle predicate registers.
10396 (aarch64_secondary_reload): Handle big-endian reloads of SVE
10397 data modes.
10398 (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
10399 (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
10400 (aarch64_convert_sve_vector_bits): New function.
10401 (aarch64_override_options): Use it to handle -msve-vector-bits=.
10402 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
10403 rather than an rtx.
10404 (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
10405 Handle SVE vector and predicate modes. Accept VL-based constants
10406 that need only one temporary register, and VL offsets that require
10407 no temporary registers.
10408 (aarch64_conditional_register_usage): Mark the predicate registers
10409 as fixed if SVE isn't available.
10410 (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
10411 Return true for SVE vector and predicate modes.
10412 (aarch64_simd_container_mode): Take the number of bits as a poly_int64
10413 rather than an unsigned int. Handle SVE modes.
10414 (aarch64_preferred_simd_mode): Update call accordingly. Handle
10415 SVE modes.
10416 (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
10417 if SVE is enabled.
10418 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
10419 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
10420 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
10421 (aarch64_sve_float_mul_immediate_p): New functions.
10422 (aarch64_sve_valid_immediate): New function.
10423 (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
10424 Explicitly reject structure modes. Check for INDEX constants.
10425 Handle PTRUE and PFALSE constants.
10426 (aarch64_check_zero_based_sve_index_immediate): New function.
10427 (aarch64_simd_imm_zero_p): Delete.
10428 (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
10429 vector modes. Accept constants in the range of CNT[BHWD].
10430 (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
10431 ask for an Advanced SIMD mode.
10432 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
10433 (aarch64_simd_vector_alignment): Handle SVE predicates.
10434 (aarch64_vectorize_preferred_vector_alignment): New function.
10435 (aarch64_simd_vector_alignment_reachable): Use it instead of
10436 the vector size.
10437 (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
10438 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
10439 functions.
10440 (MAX_VECT_LEN): Delete.
10441 (expand_vec_perm_d): Add a vec_flags field.
10442 (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
10443 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
10444 (aarch64_evpc_ext): Don't apply a big-endian lane correction
10445 for SVE modes.
10446 (aarch64_evpc_rev): Rename to...
10447 (aarch64_evpc_rev_local): ...this. Use a predicated operation for SVE.
10448 (aarch64_evpc_rev_global): New function.
10449 (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
10450 (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
10451 MAX_VECT_LEN.
10452 (aarch64_evpc_sve_tbl): New function.
10453 (aarch64_expand_vec_perm_const_1): Update after rename of
10454 aarch64_evpc_rev. Handle SVE permutes too, trying
10455 aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
10456 than aarch64_evpc_tbl.
10457 (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
10458 (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
10459 (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
10460 (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
10461 (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
10462 (aarch64_expand_sve_vcond): New functions.
10463 (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
10464 of aarch64_vector_mode_p.
10465 (aarch64_dwarf_poly_indeterminate_value): New function.
10466 (aarch64_compute_pressure_classes): Likewise.
10467 (aarch64_can_change_mode_class): Likewise.
10468 (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
10469 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
10470 (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
10471 (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
10472 (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
10473 (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
10474 * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
10475 (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
10476 constraints.
10477 (Dn, Dl, Dr): Accept const as well as const_vector.
10478 (Dz): Likewise. Compare against CONST0_RTX.
10479 * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
10480 of "vector" where appropriate.
10481 (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
10482 (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
10483 (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
10484 (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
10485 (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
10486 (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
10487 (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
10488 (v_int_equiv): Extend to SVE modes.
10489 (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
10490 mode attributes.
10491 (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
10492 (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
10493 (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
10494 (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
10495 (SVE_COND_FP_CMP): New int iterators.
10496 (perm_hilo): Handle the new unpack unspecs.
10497 (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
10498 attributes.
10499 * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
10500 (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
10501 (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
10502 (aarch64_equality_operator, aarch64_constant_vector_operand)
10503 (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
10504 (aarch64_sve_nonimmediate_operand): Likewise.
10505 (aarch64_sve_general_operand): Likewise.
10506 (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
10507 (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
10508 (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
10509 (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
10510 (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
10511 (aarch64_sve_float_arith_immediate): Likewise.
10512 (aarch64_sve_float_arith_with_sub_immediate): Likewise.
10513 (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
10514 (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
10515 (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
10516 (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
10517 (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
10518 (aarch64_sve_float_arith_operand): Likewise.
10519 (aarch64_sve_float_arith_with_sub_operand): Likewise.
10520 (aarch64_sve_float_mul_operand): Likewise.
10521 (aarch64_sve_vec_perm_operand): Likewise.
10522 (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
10523 (aarch64_mov_operand): Accept const_poly_int and const_vector.
10524 (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
10525 as well as const_vector.
10526 (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
10527 in file. Use CONST0_RTX and CONSTM1_RTX.
10528 (aarch64_simd_or_scalar_imm_zero): Likewise. Add match_codes.
10529 (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
10530 Use aarch64_simd_imm_zero.
10531 * config/aarch64/aarch64-sve.md: New file.
10532 * config/aarch64/aarch64.md: Include it.
10533 (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
10534 (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
10535 (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
10536 (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
10537 (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
10538 (sve): New attribute.
10539 (enabled): Disable instructions with the sve attribute unless
10540 TARGET_SVE.
10541 (movqi, movhi): Pass CONST_POLY_INT operaneds through
10542 aarch64_expand_mov_immediate.
10543 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
10544 CNT[BHSD] immediates.
10545 (movti): Split CONST_POLY_INT moves into two halves.
10546 (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
10547 Split additions that need a temporary here if the destination
10548 is the stack pointer.
10549 (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
10550 (*add<mode>3_poly_1): New instruction.
10551 (set_clobber_cc): New expander.
10552
10553 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10554
10555 * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
10556 parameter and use it instead of GET_MODE_SIZE (innermode). Use
10557 inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
10558 Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
10559 GET_MODE_NUNITS (innermode). Also add a first_elem parameter.
10560 Change innermode from fixed_mode_size to machine_mode.
10561 (simplify_subreg): Update call accordingly. Handle a constant-sized
10562 subreg of a variable-length CONST_VECTOR.
10563
10564 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10565 Alan Hayward <alan.hayward@arm.com>
10566 David Sherwood <david.sherwood@arm.com>
10567
10568 * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
10569 (add_offset_to_base): New function, split out from...
10570 (create_mem_ref): ...here. When handling a scale other than 1,
10571 check first whether the address is valid without the offset.
10572 Add it into the base if so, leaving the index and scale as-is.
10573
10574 2018-01-12 Jakub Jelinek <jakub@redhat.com>
10575
10576 PR c++/83778
10577 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
10578 fold_for_warn before checking if arg2 is INTEGER_CST.
10579
10580 2018-01-12 Segher Boessenkool <segher@kernel.crashing.org>
10581
10582 * config/rs6000/predicates.md (load_multiple_operation): Delete.
10583 (store_multiple_operation): Delete.
10584 * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
10585 * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
10586 * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
10587 guarded by TARGET_STRING.
10588 (rs6000_output_load_multiple): Delete.
10589 * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
10590 OPTION_MASK_STRING / TARGET_STRING handling.
10591 (print_operand) <'N', 'O'>: Add comment that these are unused now.
10592 (const rs6000_opt_masks) <"string">: Change mask to 0.
10593 * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
10594 (MASK_STRING): Delete.
10595 * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
10596 parts. Simplify.
10597 (load_multiple): Delete.
10598 (*ldmsi8): Delete.
10599 (*ldmsi7): Delete.
10600 (*ldmsi6): Delete.
10601 (*ldmsi5): Delete.
10602 (*ldmsi4): Delete.
10603 (*ldmsi3): Delete.
10604 (store_multiple): Delete.
10605 (*stmsi8): Delete.
10606 (*stmsi7): Delete.
10607 (*stmsi6): Delete.
10608 (*stmsi5): Delete.
10609 (*stmsi4): Delete.
10610 (*stmsi3): Delete.
10611 (movmemsi_8reg): Delete.
10612 (corresponding unnamed define_insn): Delete.
10613 (movmemsi_6reg): Delete.
10614 (corresponding unnamed define_insn): Delete.
10615 (movmemsi_4reg): Delete.
10616 (corresponding unnamed define_insn): Delete.
10617 (movmemsi_2reg): Delete.
10618 (corresponding unnamed define_insn): Delete.
10619 (movmemsi_1reg): Delete.
10620 (corresponding unnamed define_insn): Delete.
10621 * config/rs6000/rs6000.opt (mno-string): New.
10622 (mstring): Replace by deprecation warning stub.
10623 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
10624
10625 2018-01-12 Jakub Jelinek <jakub@redhat.com>
10626
10627 * regrename.c (regrename_do_replace): If replacing the same
10628 reg multiple times, try to reuse last created gen_raw_REG.
10629
10630 PR debug/81155
10631 * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
10632 main to workaround a bug in GDB.
10633
10634 2018-01-12 Tom de Vries <tom@codesourcery.com>
10635
10636 PR target/83737
10637 * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
10638
10639 2018-01-12 Vladimir Makarov <vmakarov@redhat.com>
10640
10641 PR rtl-optimization/80481
10642 * ira-color.c (get_cap_member): New function.
10643 (allocnos_conflict_by_live_ranges_p): Use it.
10644 (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
10645 (setup_slot_coalesced_allocno_live_ranges): Ditto.
10646
10647 2018-01-12 Uros Bizjak <ubizjak@gmail.com>
10648
10649 PR target/83628
10650 * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
10651 (*saddl_se_1): Ditto.
10652 (*ssubsi_1): Ditto.
10653 (*ssubl_se_1): Ditto.
10654
10655 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
10656
10657 * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
10658 rather than wi::to_widest for DR_INITs.
10659 * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
10660 wi::to_poly_offset rather than wi::to_offset for DR_INIT.
10661 (vect_analyze_data_ref_accesses): Require both DR_INITs to be
10662 INTEGER_CSTs.
10663 (vect_analyze_group_access_1): Note that here.
10664
10665 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
10666
10667 * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
10668 polynomial type sizes.
10669
10670 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
10671
10672 * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
10673 poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
10674 (gimple_add_tmp_var): Likewise.
10675
10676 2018-01-12 Martin Liska <mliska@suse.cz>
10677
10678 * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
10679 (gimple_alloc_sizes): Likewise.
10680 (dump_gimple_statistics): Use PRIu64 in printf format.
10681 * gimple.h: Change uint64_t to int.
10682
10683 2018-01-12 Martin Liska <mliska@suse.cz>
10684
10685 * tree-core.h: Use uint64_t instead of int.
10686 * tree.c (tree_node_counts): Likewise.
10687 (tree_node_sizes): Likewise.
10688 (dump_tree_statistics): Use PRIu64 in printf format.
10689
10690 2018-01-12 Martin Liska <mliska@suse.cz>
10691
10692 * Makefile.in: As qsort_chk is implemented in vec.c, add
10693 vec.o to linkage of gencfn-macros.
10694 * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
10695 passing the info to record_node_allocation_statistics.
10696 (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
10697 and pass the info.
10698 * ggc-common.c (struct ggc_usage): Add operator== and use
10699 it in operator< and compare function.
10700 * mem-stats.h (struct mem_usage): Likewise.
10701 * vec.c (struct vec_usage): Remove operator< and compare
10702 function. Can be simply inherited.
10703
10704 2018-01-12 Martin Jambor <mjambor@suse.cz>
10705
10706 PR target/81616
10707 * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
10708 * tree-ssa-math-opts.c: Include domwalk.h.
10709 (convert_mult_to_fma_1): New function.
10710 (fma_transformation_info): New type.
10711 (fma_deferring_state): Likewise.
10712 (cancel_fma_deferring): New function.
10713 (result_of_phi): Likewise.
10714 (last_fma_candidate_feeds_initial_phi): Likewise.
10715 (convert_mult_to_fma): Added deferring logic, split actual
10716 transformation to convert_mult_to_fma_1.
10717 (math_opts_dom_walker): New type.
10718 (math_opts_dom_walker::after_dom_children): New method, body moved
10719 here from pass_optimize_widening_mul::execute, added deferring logic
10720 bits.
10721 (pass_optimize_widening_mul::execute): Moved most of code to
10722 math_opts_dom_walker::after_dom_children.
10723 * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
10724 * config/i386/i386.c (ix86_option_override_internal): Added
10725 maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
10726
10727 2018-01-12 Richard Biener <rguenther@suse.de>
10728
10729 PR debug/83157
10730 * dwarf2out.c (gen_variable_die): Do not reset old_die for
10731 inline instance vars.
10732
10733 2018-01-12 Oleg Endo <olegendo@gcc.gnu.org>
10734
10735 PR target/81819
10736 * config/rx/rx.c (rx_is_restricted_memory_address):
10737 Handle SUBREG case.
10738
10739 2018-01-12 Richard Biener <rguenther@suse.de>
10740
10741 PR tree-optimization/80846
10742 * target.def (split_reduction): New target hook.
10743 * targhooks.c (default_split_reduction): New function.
10744 * targhooks.h (default_split_reduction): Declare.
10745 * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
10746 target requests first reduce vectors by combining low and high
10747 parts.
10748 * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
10749 (get_vectype_for_scalar_type_and_size): Export.
10750 * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
10751 * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
10752 * doc/tm.texi: Regenerate.
10753 * config/i386/i386.c (ix86_split_reduction): Implement
10754 TARGET_VECTORIZE_SPLIT_REDUCTION.
10755
10756 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
10757
10758 PR target/83368
10759 * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
10760 in PIC mode except for TARGET_VXWORKS_RTP.
10761 * config/sparc/sparc.c: Include cfgrtl.h.
10762 (TARGET_INIT_PIC_REG): Define.
10763 (TARGET_USE_PSEUDO_PIC_REG): Likewise.
10764 (sparc_pic_register_p): New predicate.
10765 (sparc_legitimate_address_p): Use it.
10766 (sparc_legitimize_pic_address): Likewise.
10767 (sparc_delegitimize_address): Likewise.
10768 (sparc_mode_dependent_address_p): Likewise.
10769 (gen_load_pcrel_sym): Remove 4th parameter.
10770 (load_got_register): Adjust call to above. Remove obsolete stuff.
10771 (sparc_expand_prologue): Do not call load_got_register here.
10772 (sparc_flat_expand_prologue): Likewise.
10773 (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
10774 (sparc_use_pseudo_pic_reg): New function.
10775 (sparc_init_pic_reg): Likewise.
10776 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
10777 (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
10778
10779 2018-01-12 Christophe Lyon <christophe.lyon@linaro.org>
10780
10781 * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
10782 Add item for branch_cost.
10783
10784 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
10785
10786 PR rtl-optimization/83565
10787 * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
10788 not extend the result to a larger mode for rotate operations.
10789 (num_sign_bit_copies1): Likewise.
10790
10791 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
10792
10793 PR target/40411
10794 * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
10795 -symbolic.
10796 Use values-Xc.o for -pedantic.
10797 Link with values-xpg4.o for C90, values-xpg6.o otherwise.
10798
10799 2018-01-12 Martin Liska <mliska@suse.cz>
10800
10801 PR ipa/83054
10802 * ipa-devirt.c (final_warning_record::grow_type_warnings):
10803 New function.
10804 (possible_polymorphic_call_targets): Use it.
10805 (ipa_devirt): Likewise.
10806
10807 2018-01-12 Martin Liska <mliska@suse.cz>
10808
10809 * profile-count.h (enum profile_quality): Use 0 as invalid
10810 enum value of profile_quality.
10811
10812 2018-01-12 Chung-Ju Wu <jasonwucj@gmail.com>
10813
10814 * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
10815 -mext-string options.
10816
10817 2018-01-12 Richard Biener <rguenther@suse.de>
10818
10819 * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
10820 DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
10821 * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
10822 Likewise.
10823 * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
10824
10825 2018-01-11 Michael Meissner <meissner@linux.vnet.ibm.com>
10826
10827 * configure.ac (--with-long-double-format): Add support for the
10828 configuration option to change the default long double format on
10829 PowerPC systems.
10830 * config.gcc (powerpc*-linux*-*): Likewise.
10831 * configure: Regenerate.
10832 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
10833 double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
10834 used without modification.
10835
10836 2018-01-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
10837
10838 * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
10839 (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
10840 * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
10841 MISC_BUILTIN_SPEC_BARRIER.
10842 (rs6000_init_builtins): Likewise.
10843 * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
10844 enum value.
10845 (speculation_barrier): New define_insn.
10846 * doc/extend.texi: Document __builtin_speculation_barrier.
10847
10848 2018-01-11 Jakub Jelinek <jakub@redhat.com>
10849
10850 PR target/83203
10851 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
10852 is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
10853 * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
10854 iterators.
10855 (ssescalarmodesuffix): Add 512-bit vectors. Use "d" or "q" for
10856 integral modes instead of "ss" and "sd".
10857 (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
10858 vectors with 32-bit and 64-bit elements.
10859 (vecdupssescalarmodesuffix): New mode attribute.
10860 (vec_dup<mode>): Use it.
10861
10862 2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
10863
10864 PR target/83330
10865 * config/i386/i386.c (ix86_compute_frame_layout): Align stack
10866 frame if argument is passed on stack.
10867
10868 2018-01-11 Jakub Jelinek <jakub@redhat.com>
10869
10870 PR target/82682
10871 * ree.c (combine_reaching_defs): Optimize also
10872 reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
10873 reg2=any_extend(exp); reg1=reg2;, formatting fix.
10874
10875 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
10876
10877 PR middle-end/83189
10878 * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
10879
10880 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
10881
10882 PR middle-end/83718
10883 * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
10884 after they are computed.
10885
10886 2018-01-11 Bin Cheng <bin.cheng@arm.com>
10887
10888 PR tree-optimization/83695
10889 * gimple-loop-linterchange.cc
10890 (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
10891 reset cached scev information after interchange.
10892 (pass_linterchange::execute): Remove call to scev_reset_htab.
10893
10894 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10895
10896 * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
10897 vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
10898 vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
10899 vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
10900 vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
10901 vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
10902 * config/arm/arm_neon_builtins.def (vfmal_lane_low,
10903 vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
10904 vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
10905 vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
10906 vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
10907 * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
10908 (V_lane_reg): Likewise.
10909 * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
10910 New define_expand.
10911 (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
10912 (vfmal_lane_low<mode>_intrinsic,
10913 vfmal_lane_low<vfmlsel2><mode>_intrinsic,
10914 vfmal_lane_high<vfmlsel2><mode>_intrinsic,
10915 vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
10916 vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
10917 vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
10918 vfmsl_lane_high<mode>_intrinsic): New define_insns.
10919
10920 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10921
10922 * config/arm/arm-cpus.in (fp16fml): New feature.
10923 (ALL_SIMD): Add fp16fml.
10924 (armv8.2-a): Add fp16fml as an option.
10925 (armv8.3-a): Likewise.
10926 (armv8.4-a): Add fp16fml as part of fp16.
10927 * config/arm/arm.h (TARGET_FP16FML): Define.
10928 * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
10929 when appropriate.
10930 * config/arm/arm-modes.def (V2HF): Define.
10931 * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
10932 vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
10933 vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
10934 * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
10935 vfmsl_low, vfmsl_high): New set of builtins.
10936 * config/arm/iterators.md (PLUSMINUS): New code iterator.
10937 (vfml_op): New code attribute.
10938 (VFMLHALVES): New int iterator.
10939 (VFML, VFMLSEL): New mode attributes.
10940 (V_reg): Define mapping for V2HF.
10941 (V_hi, V_lo): New mode attributes.
10942 (VF_constraint): Likewise.
10943 (vfml_half, vfml_half_selector): New int attributes.
10944 * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
10945 define_expand.
10946 (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
10947 vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
10948 New define_insn.
10949 * config/arm/t-arm-elf (v8_fps): Add fp16fml.
10950 * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
10951 * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
10952 * doc/invoke.texi (ARM Options): Document fp16fml. Update armv8.4-a
10953 documentation.
10954 * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
10955 Document new effective target and option set.
10956
10957 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10958
10959 * config/arm/arm-cpus.in (armv8_4): New feature.
10960 (ARMv8_4a): New fgroup.
10961 (armv8.4-a): New arch.
10962 * config/arm/arm-tables.opt: Regenerate.
10963 * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
10964 * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
10965 * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
10966 Add matching rules for -march=armv8.4-a and extensions.
10967 * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
10968
10969 2018-01-11 Oleg Endo <olegendo@gcc.gnu.org>
10970
10971 PR target/81821
10972 * config/rx/rx.md (BW): New mode attribute.
10973 (sync_lock_test_and_setsi): Add mode suffix to insn output.
10974
10975 2018-01-11 Richard Biener <rguenther@suse.de>
10976
10977 PR tree-optimization/83435
10978 * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
10979 * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
10980 * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
10981
10982 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
10983 Alan Hayward <alan.hayward@arm.com>
10984 David Sherwood <david.sherwood@arm.com>
10985
10986 * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
10987 field.
10988 (aarch64_classify_address): Initialize it. Track polynomial offsets.
10989 (aarch64_print_address_internal): Use it to check for a zero offset.
10990
10991 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
10992 Alan Hayward <alan.hayward@arm.com>
10993 David Sherwood <david.sherwood@arm.com>
10994
10995 * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
10996 * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
10997 Return a poly_int64 rather than a HOST_WIDE_INT.
10998 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
10999 rather than a HOST_WIDE_INT.
11000 * config/aarch64/aarch64.h (aarch64_frame): Protect with
11001 HAVE_POLY_INT_H rather than HOST_WIDE_INT. Change locals_offset,
11002 hard_fp_offset, frame_size, initial_adjust, callee_offset and
11003 final_offset from HOST_WIDE_INT to poly_int64.
11004 * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
11005 to_constant when getting the number of units in an Advanced SIMD
11006 mode.
11007 (aarch64_builtin_vectorized_function): Check for a constant number
11008 of units.
11009 * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
11010 GET_MODE_SIZE.
11011 (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
11012 attribute instead of GET_MODE_NUNITS.
11013 * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
11014 (aarch64_class_max_nregs): Use the constant_lowest_bound of the
11015 GET_MODE_SIZE for fixed-size registers.
11016 (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
11017 (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
11018 (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
11019 (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
11020 (aarch64_print_operand, aarch64_print_address_internal)
11021 (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
11022 (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
11023 (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
11024 Handle polynomial GET_MODE_SIZE.
11025 (aarch64_hard_regno_caller_save_mode): Likewise. Return modes
11026 wider than SImode without modification.
11027 (tls_symbolic_operand_type): Use strip_offset instead of split_const.
11028 (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
11029 (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
11030 passing and returning SVE modes.
11031 (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
11032 rather than GEN_INT.
11033 (aarch64_emit_probe_stack_range): Take the size as a poly_int64
11034 rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
11035 (aarch64_allocate_and_probe_stack_space): Likewise.
11036 (aarch64_layout_frame): Cope with polynomial offsets.
11037 (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
11038 start_offset as a poly_int64 rather than a HOST_WIDE_INT. Track
11039 polynomial offsets.
11040 (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
11041 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
11042 poly_int64 rather than a HOST_WIDE_INT.
11043 (aarch64_get_separate_components, aarch64_process_components)
11044 (aarch64_expand_prologue, aarch64_expand_epilogue)
11045 (aarch64_use_return_insn_p): Handle polynomial frame offsets.
11046 (aarch64_anchor_offset): New function, split out from...
11047 (aarch64_legitimize_address): ...here.
11048 (aarch64_builtin_vectorization_cost): Handle polynomial
11049 TYPE_VECTOR_SUBPARTS.
11050 (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
11051 GET_MODE_NUNITS.
11052 (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
11053 number of elements from the PARALLEL rather than the mode.
11054 (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
11055 rather than GET_MODE_BITSIZE.
11056 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
11057 (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
11058 (aarch64_expand_vec_perm_const_1): Handle polynomial
11059 d->perm.length () and d->perm elements.
11060 (aarch64_evpc_tbl): Likewise. Use nelt rather than GET_MODE_NUNITS.
11061 Apply to_constant to d->perm elements.
11062 (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
11063 polynomial CONST_VECTOR_NUNITS.
11064 (aarch64_move_pointer): Take amount as a poly_int64 rather
11065 than an int.
11066 (aarch64_progress_pointer): Avoid temporary variable.
11067 * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
11068 the mode attribute instead of GET_MODE.
11069
11070 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11071 Alan Hayward <alan.hayward@arm.com>
11072 David Sherwood <david.sherwood@arm.com>
11073
11074 * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
11075 x exists before using it.
11076 (aarch64_add_constant_internal): Rename to...
11077 (aarch64_add_offset_1): ...this. Replace regnum with separate
11078 src and dest rtxes. Handle the case in which they're different,
11079 including when the offset is zero. Replace scratchreg with an rtx.
11080 Use 2 additions if there is no spare register into which we can
11081 move a 16-bit constant.
11082 (aarch64_add_constant): Delete.
11083 (aarch64_add_offset): Replace reg with separate src and dest
11084 rtxes. Take a poly_int64 offset instead of a HOST_WIDE_INT.
11085 Use aarch64_add_offset_1.
11086 (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
11087 an rtx rather than an int. Take the delta as a poly_int64
11088 rather than a HOST_WIDE_INT. Use aarch64_add_offset.
11089 (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
11090 (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
11091 aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
11092 (aarch64_expand_epilogue): Update calls to aarch64_add_offset
11093 and aarch64_add_sp.
11094 (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
11095 aarch64_add_constant.
11096
11097 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11098
11099 * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
11100 Use scalar_float_mode.
11101
11102 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11103
11104 * config/aarch64/aarch64-simd.md
11105 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
11106 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
11107 (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
11108 (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
11109 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
11110 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
11111 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
11112 (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
11113 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
11114 (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
11115
11116 2018-01-11 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
11117
11118 PR target/83514
11119 * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
11120 targ_options->x_arm_arch_string is non NULL.
11121
11122 2018-01-11 Tamar Christina <tamar.christina@arm.com>
11123
11124 * config/aarch64/aarch64.h
11125 (AARCH64_FL_FOR_ARCH8_4): Add AARCH64_FL_DOTPROD.
11126
11127 2018-01-11 Sudakshina Das <sudi.das@arm.com>
11128
11129 PR target/82096
11130 * expmed.c (emit_store_flag_force): Swap if const op0
11131 and change VOIDmode to mode of op0.
11132
11133 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11134
11135 PR rtl-optimization/83761
11136 * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
11137 than bytes to mode_for_size.
11138
11139 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
11140
11141 PR middle-end/83189
11142 * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
11143 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
11144 profile.
11145
11146 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
11147
11148 PR middle-end/83575
11149 * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
11150 when in layout mode.
11151 (cfg_layout_finalize): Do not verify cfg before we are out of layout.
11152 * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
11153 partition fixup.
11154
11155 2018-01-10 Michael Collison <michael.collison@arm.com>
11156
11157 * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
11158 * config/aarch64/aarch64-option-extension.def: Add
11159 AARCH64_OPT_EXTENSION of 'fp16fml'.
11160 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11161 (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
11162 * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
11163 * config/aarch64/constraints.md (Ui7): New constraint.
11164 * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
11165 (VFMLA_SEL_W): Ditto.
11166 (f16quad): Ditto.
11167 (f16mac1): Ditto.
11168 (VFMLA16_LOW): New int iterator.
11169 (VFMLA16_HIGH): Ditto.
11170 (UNSPEC_FMLAL): New unspec.
11171 (UNSPEC_FMLSL): Ditto.
11172 (UNSPEC_FMLAL2): Ditto.
11173 (UNSPEC_FMLSL2): Ditto.
11174 (f16mac): New code attribute.
11175 * config/aarch64/aarch64-simd-builtins.def
11176 (aarch64_fmlal_lowv2sf): Ditto.
11177 (aarch64_fmlsl_lowv2sf): Ditto.
11178 (aarch64_fmlalq_lowv4sf): Ditto.
11179 (aarch64_fmlslq_lowv4sf): Ditto.
11180 (aarch64_fmlal_highv2sf): Ditto.
11181 (aarch64_fmlsl_highv2sf): Ditto.
11182 (aarch64_fmlalq_highv4sf): Ditto.
11183 (aarch64_fmlslq_highv4sf): Ditto.
11184 (aarch64_fmlal_lane_lowv2sf): Ditto.
11185 (aarch64_fmlsl_lane_lowv2sf): Ditto.
11186 (aarch64_fmlal_laneq_lowv2sf): Ditto.
11187 (aarch64_fmlsl_laneq_lowv2sf): Ditto.
11188 (aarch64_fmlalq_lane_lowv4sf): Ditto.
11189 (aarch64_fmlsl_lane_lowv4sf): Ditto.
11190 (aarch64_fmlalq_laneq_lowv4sf): Ditto.
11191 (aarch64_fmlsl_laneq_lowv4sf): Ditto.
11192 (aarch64_fmlal_lane_highv2sf): Ditto.
11193 (aarch64_fmlsl_lane_highv2sf): Ditto.
11194 (aarch64_fmlal_laneq_highv2sf): Ditto.
11195 (aarch64_fmlsl_laneq_highv2sf): Ditto.
11196 (aarch64_fmlalq_lane_highv4sf): Ditto.
11197 (aarch64_fmlsl_lane_highv4sf): Ditto.
11198 (aarch64_fmlalq_laneq_highv4sf): Ditto.
11199 (aarch64_fmlsl_laneq_highv4sf): Ditto.
11200 * config/aarch64/aarch64-simd.md:
11201 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
11202 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
11203 (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
11204 (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
11205 (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
11206 (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
11207 (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
11208 (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
11209 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
11210 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
11211 (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
11212 (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
11213 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
11214 (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
11215 (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
11216 (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
11217 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
11218 (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
11219 (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
11220 (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
11221 * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
11222 (vfmlsl_low_u32): Ditto.
11223 (vfmlalq_low_u32): Ditto.
11224 (vfmlslq_low_u32): Ditto.
11225 (vfmlal_high_u32): Ditto.
11226 (vfmlsl_high_u32): Ditto.
11227 (vfmlalq_high_u32): Ditto.
11228 (vfmlslq_high_u32): Ditto.
11229 (vfmlal_lane_low_u32): Ditto.
11230 (vfmlsl_lane_low_u32): Ditto.
11231 (vfmlal_laneq_low_u32): Ditto.
11232 (vfmlsl_laneq_low_u32): Ditto.
11233 (vfmlalq_lane_low_u32): Ditto.
11234 (vfmlslq_lane_low_u32): Ditto.
11235 (vfmlalq_laneq_low_u32): Ditto.
11236 (vfmlslq_laneq_low_u32): Ditto.
11237 (vfmlal_lane_high_u32): Ditto.
11238 (vfmlsl_lane_high_u32): Ditto.
11239 (vfmlal_laneq_high_u32): Ditto.
11240 (vfmlsl_laneq_high_u32): Ditto.
11241 (vfmlalq_lane_high_u32): Ditto.
11242 (vfmlslq_lane_high_u32): Ditto.
11243 (vfmlalq_laneq_high_u32): Ditto.
11244 (vfmlslq_laneq_high_u32): Ditto.
11245 * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
11246 (AARCH64_FL_FOR_ARCH8_4): New.
11247 (AARCH64_ISA_F16FML): New ISA flag.
11248 (TARGET_F16FML): New feature flag for fp16fml.
11249 (doc/invoke.texi): Document new fp16fml option.
11250
11251 2018-01-10 Michael Collison <michael.collison@arm.com>
11252
11253 * config/aarch64/aarch64-builtins.c:
11254 (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
11255 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11256 (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
11257 * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
11258 (AARCH64_ISA_SHA3): New ISA flag.
11259 (TARGET_SHA3): New feature flag for sha3.
11260 * config/aarch64/iterators.md (sha512_op): New int attribute.
11261 (CRYPTO_SHA512): New int iterator.
11262 (UNSPEC_SHA512H): New unspec.
11263 (UNSPEC_SHA512H2): Ditto.
11264 (UNSPEC_SHA512SU0): Ditto.
11265 (UNSPEC_SHA512SU1): Ditto.
11266 * config/aarch64/aarch64-simd-builtins.def
11267 (aarch64_crypto_sha512hqv2di): New builtin.
11268 (aarch64_crypto_sha512h2qv2di): Ditto.
11269 (aarch64_crypto_sha512su0qv2di): Ditto.
11270 (aarch64_crypto_sha512su1qv2di): Ditto.
11271 (aarch64_eor3qv8hi): Ditto.
11272 (aarch64_rax1qv2di): Ditto.
11273 (aarch64_xarqv2di): Ditto.
11274 (aarch64_bcaxqv8hi): Ditto.
11275 * config/aarch64/aarch64-simd.md:
11276 (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
11277 (aarch64_crypto_sha512su0qv2di): Ditto.
11278 (aarch64_crypto_sha512su1qv2di): Ditto.
11279 (aarch64_eor3qv8hi): Ditto.
11280 (aarch64_rax1qv2di): Ditto.
11281 (aarch64_xarqv2di): Ditto.
11282 (aarch64_bcaxqv8hi): Ditto.
11283 * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
11284 (vsha512h2q_u64): Ditto.
11285 (vsha512su0q_u64): Ditto.
11286 (vsha512su1q_u64): Ditto.
11287 (veor3q_u16): Ditto.
11288 (vrax1q_u64): Ditto.
11289 (vxarq_u64): Ditto.
11290 (vbcaxq_u16): Ditto.
11291 * config/arm/types.md (crypto_sha512): New type attribute.
11292 (crypto_sha3): Ditto.
11293 (doc/invoke.texi): Document new sha3 option.
11294
11295 2018-01-10 Michael Collison <michael.collison@arm.com>
11296
11297 * config/aarch64/aarch64-builtins.c:
11298 (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
11299 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11300 (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
11301 (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
11302 * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
11303 (AARCH64_ISA_SM4): New ISA flag.
11304 (TARGET_SM4): New feature flag for sm4.
11305 * config/aarch64/aarch64-simd-builtins.def
11306 (aarch64_sm3ss1qv4si): Ditto.
11307 (aarch64_sm3tt1aq4si): Ditto.
11308 (aarch64_sm3tt1bq4si): Ditto.
11309 (aarch64_sm3tt2aq4si): Ditto.
11310 (aarch64_sm3tt2bq4si): Ditto.
11311 (aarch64_sm3partw1qv4si): Ditto.
11312 (aarch64_sm3partw2qv4si): Ditto.
11313 (aarch64_sm4eqv4si): Ditto.
11314 (aarch64_sm4ekeyqv4si): Ditto.
11315 * config/aarch64/aarch64-simd.md:
11316 (aarch64_sm3ss1qv4si): Ditto.
11317 (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
11318 (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
11319 (aarch64_sm4eqv4si): Ditto.
11320 (aarch64_sm4ekeyqv4si): Ditto.
11321 * config/aarch64/iterators.md (sm3tt_op): New int iterator.
11322 (sm3part_op): Ditto.
11323 (CRYPTO_SM3TT): Ditto.
11324 (CRYPTO_SM3PART): Ditto.
11325 (UNSPEC_SM3SS1): New unspec.
11326 (UNSPEC_SM3TT1A): Ditto.
11327 (UNSPEC_SM3TT1B): Ditto.
11328 (UNSPEC_SM3TT2A): Ditto.
11329 (UNSPEC_SM3TT2B): Ditto.
11330 (UNSPEC_SM3PARTW1): Ditto.
11331 (UNSPEC_SM3PARTW2): Ditto.
11332 (UNSPEC_SM4E): Ditto.
11333 (UNSPEC_SM4EKEY): Ditto.
11334 * config/aarch64/constraints.md (Ui2): New constraint.
11335 * config/aarch64/predicates.md (aarch64_imm2): New predicate.
11336 * config/arm/types.md (crypto_sm3): New type attribute.
11337 (crypto_sm4): Ditto.
11338 * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
11339 (vsm3tt1aq_u32): Ditto.
11340 (vsm3tt1bq_u32): Ditto.
11341 (vsm3tt2aq_u32): Ditto.
11342 (vsm3tt2bq_u32): Ditto.
11343 (vsm3partw1q_u32): Ditto.
11344 (vsm3partw2q_u32): Ditto.
11345 (vsm4eq_u32): Ditto.
11346 (vsm4ekeyq_u32): Ditto.
11347 (doc/invoke.texi): Document new sm4 option.
11348
11349 2018-01-10 Michael Collison <michael.collison@arm.com>
11350
11351 * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
11352 * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
11353 (AARCH64_FL_FOR_ARCH8_4): New.
11354 (AARCH64_FL_V8_4): New flag.
11355 (doc/invoke.texi): Document new armv8.4-a option.
11356
11357 2018-01-10 Michael Collison <michael.collison@arm.com>
11358
11359 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11360 (__ARM_FEATURE_AES): Define if TARGET_AES is true.
11361 (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
11362 * config/aarch64/aarch64-option-extension.def: Add
11363 AARCH64_OPT_EXTENSION of 'sha2'.
11364 (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
11365 (crypto): Disable sha2 and aes if crypto disabled.
11366 (crypto): Enable aes and sha2 if enabled.
11367 (simd): Disable sha2 and aes if simd disabled.
11368 * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
11369 New flags.
11370 (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
11371 (TARGET_SHA2): New feature flag for sha2.
11372 (TARGET_AES): New feature flag for aes.
11373 * config/aarch64/aarch64-simd.md:
11374 (aarch64_crypto_aes<aes_op>v16qi): Make pattern
11375 conditional on TARGET_AES.
11376 (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
11377 (aarch64_crypto_sha1hsi): Make pattern conditional
11378 on TARGET_SHA2.
11379 (aarch64_crypto_sha1hv4si): Ditto.
11380 (aarch64_be_crypto_sha1hv4si): Ditto.
11381 (aarch64_crypto_sha1su1v4si): Ditto.
11382 (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
11383 (aarch64_crypto_sha1su0v4si): Ditto.
11384 (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
11385 (aarch64_crypto_sha256su0v4si): Ditto.
11386 (aarch64_crypto_sha256su1v4si): Ditto.
11387 (doc/invoke.texi): Document new aes and sha2 options.
11388
11389 2018-01-10 Martin Sebor <msebor@redhat.com>
11390
11391 PR tree-optimization/83781
11392 * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
11393 as string arrays.
11394
11395 2018-01-11 Martin Sebor <msebor@gmail.com>
11396 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
11397
11398 PR tree-optimization/83501
11399 PR tree-optimization/81703
11400
11401 * tree-ssa-strlen.c (get_string_cst): Rename...
11402 (get_string_len): ...to this. Handle global constants.
11403 (handle_char_store): Adjust.
11404
11405 2018-01-10 Kito Cheng <kito.cheng@gmail.com>
11406 Jim Wilson <jimw@sifive.com>
11407
11408 * config/riscv/riscv-protos.h (riscv_output_return): New.
11409 * config/riscv/riscv.c (struct machine_function): New naked_p field.
11410 (riscv_attribute_table, riscv_output_return),
11411 (riscv_handle_fndecl_attribute, riscv_naked_function_p),
11412 (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
11413 (riscv_compute_frame_info): Only compute frame->mask if not a naked
11414 function.
11415 (riscv_expand_prologue): Add early return for naked function.
11416 (riscv_expand_epilogue): Likewise.
11417 (riscv_function_ok_for_sibcall): Return false for naked function.
11418 (riscv_set_current_function): New.
11419 (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
11420 (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
11421 * config/riscv/riscv.md (simple_return): Call riscv_output_return.
11422 * doc/extend.texi (RISC-V Function Attributes): New.
11423
11424 2018-01-10 Michael Meissner <meissner@linux.vnet.ibm.com>
11425
11426 * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
11427 check for 128-bit long double before checking TCmode.
11428 * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
11429 128-bit long doubles before checking TFmode or TCmode.
11430 (FLOAT128_IBM_P): Likewise.
11431
11432 2018-01-10 Martin Sebor <msebor@redhat.com>
11433
11434 PR tree-optimization/83671
11435 * builtins.c (c_strlen): Unconditionally return zero for the empty
11436 string.
11437 Use -Warray-bounds for warnings.
11438 * gimple-fold.c (get_range_strlen): Handle non-constant lengths
11439 for non-constant array indices with COMPONENT_REF, arrays of
11440 arrays, and pointers to arrays.
11441 (gimple_fold_builtin_strlen): Determine and set length range for
11442 non-constant character arrays.
11443
11444 2018-01-10 Aldy Hernandez <aldyh@redhat.com>
11445
11446 PR middle-end/81897
11447 * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
11448 empty blocks.
11449
11450 2018-01-10 Eric Botcazou <ebotcazou@adacore.com>
11451
11452 * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
11453
11454 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
11455
11456 PR target/83399
11457 * config/rs6000/rs6000.c (print_operand) <'y'>: Use
11458 VECTOR_MEM_ALTIVEC_OR_VSX_P.
11459 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
11460 indexed_or_indirect_operand predicate.
11461 (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
11462 (*vsx_le_perm_load_v8hi): Likewise.
11463 (*vsx_le_perm_load_v16qi): Likewise.
11464 (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
11465 (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
11466 (*vsx_le_perm_store_v8hi): Likewise.
11467 (*vsx_le_perm_store_v16qi): Likewise.
11468 (eight unnamed splitters): Likewise.
11469
11470 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
11471
11472 * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
11473 * config/rs6000/emmintrin.h: Likewise.
11474 * config/rs6000/mmintrin.h: Likewise.
11475 * config/rs6000/xmmintrin.h: Likewise.
11476
11477 2018-01-10 David Malcolm <dmalcolm@redhat.com>
11478
11479 PR c++/43486
11480 * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
11481 "public_flag".
11482 * tree.c (tree_nop_conversion): Return true for location wrapper
11483 nodes.
11484 (maybe_wrap_with_location): New function.
11485 (selftest::check_strip_nops): New function.
11486 (selftest::test_location_wrappers): New function.
11487 (selftest::tree_c_tests): Call it.
11488 * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
11489 (maybe_wrap_with_location): New decl.
11490 (EXPR_LOCATION_WRAPPER_P): New macro.
11491 (location_wrapper_p): New inline function.
11492 (tree_strip_any_location_wrapper): New inline function.
11493
11494 2018-01-10 H.J. Lu <hongjiu.lu@intel.com>
11495
11496 PR target/83735
11497 * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
11498 stack_realign_offset for the largest alignment of stack slot
11499 actually used.
11500 (ix86_find_max_used_stack_alignment): New function.
11501 (ix86_finalize_stack_frame_flags): Use it. Set
11502 max_used_stack_alignment if we don't realign stack.
11503 * config/i386/i386.h (machine_function): Add
11504 max_used_stack_alignment.
11505
11506 2018-01-10 Christophe Lyon <christophe.lyon@linaro.org>
11507
11508 * config/arm/arm.opt (-mbranch-cost): New option.
11509 * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
11510 account.
11511
11512 2018-01-10 Segher Boessenkool <segher@kernel.crashing.org>
11513
11514 PR target/83629
11515 * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
11516 load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
11517
11518 2018-01-10 Richard Biener <rguenther@suse.de>
11519
11520 PR debug/83765
11521 * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
11522 early out so it also covers the case where we have a non-NULL
11523 origin.
11524
11525 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
11526
11527 PR tree-optimization/83753
11528 * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
11529 for non-strided grouped accesses if the number of elements is 1.
11530
11531 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
11532
11533 PR target/81616
11534 * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
11535 * i386.h (TARGET_USE_GATHER): Define.
11536 * x86-tune.def (X86_TUNE_USE_GATHER): New.
11537
11538 2018-01-10 Martin Liska <mliska@suse.cz>
11539
11540 PR bootstrap/82831
11541 * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
11542 * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
11543 partitioning.
11544 * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
11545 CLEANUP_NO_PARTITIONING is not set.
11546
11547 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
11548
11549 * doc/rtl.texi: Remove documentation of (const ...) wrappers
11550 for vectors, as a partial revert of r254296.
11551 * rtl.h (const_vec_p): Delete.
11552 (const_vec_duplicate_p): Don't test for vector CONSTs.
11553 (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
11554 * expmed.c (make_tree): Likewise.
11555
11556 Revert:
11557 * common.md (E, F): Use CONSTANT_P instead of checking for
11558 CONST_VECTOR.
11559 * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
11560 checking for CONST_VECTOR.
11561
11562 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
11563
11564 PR middle-end/83575
11565 * predict.c (force_edge_cold): Handle in more sane way edges
11566 with no prediction.
11567
11568 2018-01-09 Carl Love <cel@us.ibm.com>
11569
11570 * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
11571 V4SI, V4SF types.
11572 (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
11573 * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
11574 VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
11575 VMRGOW_V2DI, VMRGOW_V2DF. Remove definition for VMRGOW.
11576 * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
11577 P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW): Add definitions.
11578 * config/rs6000/rs6000-protos.h: Add extern defition for
11579 rs6000_generate_float2_double_code.
11580 * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
11581 function.
11582 * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
11583 (float2_v2df): Add define_expand.
11584
11585 2018-01-09 Uros Bizjak <ubizjak@gmail.com>
11586
11587 PR target/83628
11588 * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
11589 op_mode in the force_to_mode call.
11590
11591 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
11592
11593 * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
11594 instead of checking each element individually.
11595 (aarch64_evpc_uzp): Likewise.
11596 (aarch64_evpc_zip): Likewise.
11597 (aarch64_evpc_ext): Likewise.
11598 (aarch64_evpc_rev): Likewise.
11599 (aarch64_evpc_dup): Test the encoding for a single duplicated element,
11600 instead of checking each element individually. Return true without
11601 generating rtl if
11602 (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
11603 whether all selected elements come from the same input, instead of
11604 checking each element individually. Remove calls to gen_rtx_REG,
11605 start_sequence and end_sequence and instead assert that no rtl is
11606 generated.
11607
11608 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
11609
11610 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
11611 order of HIGH and CONST checks.
11612
11613 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
11614
11615 * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
11616 if the destination isn't an SSA_NAME.
11617
11618 2018-01-09 Richard Biener <rguenther@suse.de>
11619
11620 PR tree-optimization/83668
11621 * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
11622 move prologue...
11623 (canonicalize_loop_form): ... here, renamed from ...
11624 (canonicalize_loop_closed_ssa_form): ... this and amended to
11625 swap successor edges for loop exit blocks to make us use
11626 the RPO order we need for initial schedule generation.
11627
11628 2018-01-09 Joseph Myers <joseph@codesourcery.com>
11629
11630 PR tree-optimization/64811
11631 * match.pd: When optimizing comparisons with Inf, avoid
11632 introducing or losing exceptions from comparisons with NaN.
11633
11634 2018-01-09 Martin Liska <mliska@suse.cz>
11635
11636 PR sanitizer/82517
11637 * asan.c (shadow_mem_size): Add gcc_assert.
11638
11639 2018-01-09 Georg-Johann Lay <avr@gjlay.de>
11640
11641 Don't save registers in main().
11642
11643 PR target/83738
11644 * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
11645 * config/avr/avr.opt (-mmain-is-OS_task): New target option.
11646 * config/avr/avr.c (avr_set_current_function): Don't error if
11647 naked, OS_task or OS_main are specified at the same time.
11648 (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
11649 OS_main.
11650 (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
11651 attribute.
11652 * common/config/avr/avr-common.c (avr_option_optimization_table):
11653 Switch on -mmain-is-OS_task for optimizing compilations.
11654
11655 2018-01-09 Richard Biener <rguenther@suse.de>
11656
11657 PR tree-optimization/83572
11658 * graphite.c: Include cfganal.h.
11659 (graphite_transform_loops): Connect infinite loops to exit
11660 and remove fake edges at the end.
11661
11662 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
11663
11664 * ipa-inline.c (edge_badness): Revert accidental checkin.
11665
11666 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
11667
11668 PR ipa/80763
11669 * ipa-comdats.c (set_comdat_group): Only set comdat group of real
11670 symbols; not inline clones.
11671
11672 2018-01-09 Jakub Jelinek <jakub@redhat.com>
11673
11674 PR target/83507
11675 * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
11676 hard registers. Formatting fixes.
11677
11678 PR preprocessor/83722
11679 * gcc.c (try_generate_repro): Pass
11680 &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
11681 &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
11682 do_report_bug.
11683
11684 2018-01-08 Monk Chiang <sh.chiang04@gmail.com>
11685 Kito Cheng <kito.cheng@gmail.com>
11686
11687 * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
11688 (riscv_leaf_function_p): Delete.
11689 (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
11690
11691 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
11692
11693 * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
11694 function.
11695 (do_ifelse): New function.
11696 (do_isel): New function.
11697 (do_sub3): New function.
11698 (do_add3): New function.
11699 (do_load_mask_compare): New function.
11700 (do_overlap_load_compare): New function.
11701 (expand_compare_loop): New function.
11702 (expand_block_compare): Call expand_compare_loop() when appropriate.
11703 * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
11704 option description.
11705 (-mblock-compare-inline-loop-limit): New option.
11706
11707 2018-01-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
11708
11709 PR target/83677
11710 * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
11711 Reverse order of second and third operands in first alternative.
11712 * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
11713 of first and second elements in UNSPEC_VPERMR vector.
11714 (altivec_expand_vec_perm_le): Likewise.
11715
11716 2018-01-08 Jeff Law <law@redhat.com>
11717
11718 PR rtl-optimizatin/81308
11719 * tree-switch-conversion.c (cfg_altered): New file scoped static.
11720 (process_switch): If group_case_labels makes a change, then set
11721 cfg_altered.
11722 (pass_convert_switch::execute): If a switch is converted, then
11723 set cfg_altered. Return TODO_cfg_cleanup if cfg_altered is true.
11724
11725 PR rtl-optimization/81308
11726 * recog.c (split_all_insns): Conditionally cleanup the CFG after
11727 splitting insns.
11728
11729 2018-01-08 Vidya Praveen <vidyapraveen@arm.com>
11730
11731 PR target/83663 - Revert r255946
11732 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
11733 generation for cases where splatting a value is not useful.
11734 * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
11735 across a vec_duplicate and a paradoxical subreg forming a vector
11736 mode to a vec_concat.
11737
11738 2018-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11739
11740 * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
11741 -march=armv8.3-a variants.
11742 * config/arm/t-multilib: Likewise.
11743 * config/arm/t-arm-elf: Likewise. Handle dotprod extension.
11744
11745 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
11746
11747 * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
11748 to generate rtl.
11749 (cceq_ior_compare_complement): Give it a name so I can use it, and
11750 change boolean_or_operator predicate to boolean_operator so it can
11751 be used to generate a crand.
11752 (eqne): New code iterator.
11753 (bd/bd_neg): New code_attrs.
11754 (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
11755 a single define_insn.
11756 (<bd>tf_<mode>): A new insn pattern for the conditional form branch
11757 decrement (bdnzt/bdnzf/bdzt/bdzf).
11758 * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
11759 with the new names of the branch decrement patterns, and added the
11760 names of the branch decrement conditional patterns.
11761
11762 2018-01-08 Richard Biener <rguenther@suse.de>
11763
11764 PR tree-optimization/83563
11765 * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
11766 cache.
11767
11768 2018-01-08 Richard Biener <rguenther@suse.de>
11769
11770 PR middle-end/83713
11771 * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
11772
11773 2018-01-08 Richard Biener <rguenther@suse.de>
11774
11775 PR tree-optimization/83685
11776 * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
11777 references to abnormals.
11778
11779 2018-01-08 Richard Biener <rguenther@suse.de>
11780
11781 PR lto/83719
11782 * dwarf2out.c (output_indirect_strings): Handle empty
11783 skeleton_debug_str_hash.
11784 (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
11785
11786 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
11787
11788 * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
11789 (emit_store_direct): Likewise.
11790 (arc_trampoline_adjust_address): Likewise.
11791 (arc_asm_trampoline_template): New function.
11792 (arc_initialize_trampoline): Use asm_trampoline_template.
11793 (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
11794 * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
11795 * config/arc/arc.md (flush_icache): Delete pattern.
11796
11797 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
11798
11799 * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
11800 * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
11801 munaligned-access.
11802
11803 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
11804
11805 PR target/83681
11806 * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
11807 by not USED_FOR_TARGET.
11808 (make_pass_resolve_sw_modes): Likewise.
11809
11810 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
11811
11812 * config/nios2/nios2.h (nios2_section_threshold): Guard by not
11813 USED_FOR_TARGET.
11814
11815 2018-01-08 Richard Biener <rguenther@suse.de>
11816
11817 PR middle-end/83580
11818 * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
11819
11820 2018-01-08 Richard Biener <rguenther@suse.de>
11821
11822 PR middle-end/83517
11823 * match.pd ((t * 2) / 2) -> t): Add missing :c.
11824
11825 2018-01-06 Aldy Hernandez <aldyh@redhat.com>
11826
11827 PR middle-end/81897
11828 * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
11829 basic blocks with a small number of successors.
11830 (convert_control_dep_chain_into_preds): Improve handling of
11831 forwarder blocks.
11832 (dump_predicates): Split apart into...
11833 (dump_pred_chain): ...here...
11834 (dump_pred_info): ...and here.
11835 (can_one_predicate_be_invalidated_p): Add debugging printfs.
11836 (can_chain_union_be_invalidated_p): Improve check for invalidation
11837 of paths.
11838 (uninit_uses_cannot_happen): Avoid unnecessary if
11839 convert_control_dep_chain_into_preds yielded nothing.
11840
11841 2018-01-06 Martin Sebor <msebor@redhat.com>
11842
11843 PR tree-optimization/83640
11844 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
11845 subtracting negative offset from size.
11846 (builtin_access::overlap): Adjust offset bounds of the access to fall
11847 within the size of the object if possible.
11848
11849 2018-01-06 Richard Sandiford <richard.sandiford@linaro.org>
11850
11851 PR rtl-optimization/83699
11852 * expmed.c (extract_bit_field_1): Restrict the vector usage of
11853 extract_bit_field_as_subreg to cases in which the extracted
11854 value is also a vector.
11855
11856 * lra-constraints.c (process_alt_operands): Test for the equivalence
11857 substitutions when detecting a possible reload cycle.
11858
11859 2018-01-06 Jakub Jelinek <jakub@redhat.com>
11860
11861 PR debug/83480
11862 * toplev.c (process_options): Don't enable debug_nonbind_markers_p
11863 by default if flag_selective_schedling{,2}. Formatting fixes.
11864
11865 PR rtl-optimization/83682
11866 * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
11867 if it has non-VECTOR_MODE element mode.
11868 (vec_duplicate_p): Likewise.
11869
11870 PR middle-end/83694
11871 * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
11872 and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
11873
11874 2018-01-05 Jakub Jelinek <jakub@redhat.com>
11875
11876 PR target/83604
11877 * config/i386/i386-builtin.def
11878 (__builtin_ia32_vgf2p8affineinvqb_v64qi,
11879 __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
11880 Require also OPTION_MASK_ISA_AVX512F in addition to
11881 OPTION_MASK_ISA_GFNI.
11882 (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
11883 __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
11884 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
11885 to OPTION_MASK_ISA_GFNI.
11886 (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
11887 OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
11888 OPTION_MASK_ISA_AVX512BW.
11889 (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
11890 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
11891 addition to OPTION_MASK_ISA_GFNI.
11892 (__builtin_ia32_vgf2p8affineinvqb_v16qi,
11893 __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
11894 Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
11895 to OPTION_MASK_ISA_GFNI.
11896 * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
11897 a requirement for all ISAs rather than any of them with a few
11898 exceptions.
11899 (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
11900 processing.
11901 (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
11902 bitmasks to be enabled with 3 exceptions, instead of requiring any
11903 enabled ISA with lots of exceptions.
11904 * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
11905 vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
11906 Change avx512bw in isa attribute to avx512f.
11907 * config/i386/sgxintrin.h: Add license boilerplate.
11908 * config/i386/vaesintrin.h: Likewise. Fix macro spelling __AVX512F
11909 to __AVX512F__ and __AVX512VL to __AVX512VL__.
11910 (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
11911 _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
11912 defined.
11913 * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
11914 _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
11915 temporarily sse2 rather than sse if not enabled already.
11916
11917 PR target/83604
11918 * config/i386/sse.md (VI248_VLBW): Rename to ...
11919 (VI248_AVX512VL): ... this. Don't guard V32HI with TARGET_AVX512BW.
11920 (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
11921 vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
11922 vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
11923 vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
11924 mode iterator instead of VI248_VLBW.
11925
11926 2018-01-05 Jan Hubicka <hubicka@ucw.cz>
11927
11928 * ipa-fnsummary.c (record_modified_bb_info): Add OP.
11929 (record_modified): Skip clobbers; add debug output.
11930 (param_change_prob): Use sreal frequencies.
11931
11932 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
11933
11934 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
11935 punt for user-aligned variables.
11936
11937 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
11938
11939 * tree-chrec.c (chrec_contains_symbols): Return true for
11940 POLY_INT_CST.
11941
11942 2018-01-05 Sudakshina Das <sudi.das@arm.com>
11943
11944 PR target/82439
11945 * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
11946 of (x|y) == x for BICS pattern.
11947
11948 2018-01-05 Jakub Jelinek <jakub@redhat.com>
11949
11950 PR tree-optimization/83605
11951 * gimple-ssa-strength-reduction.c: Include tree-eh.h.
11952 (find_candidates_dom_walker::before_dom_children): Ignore stmts that
11953 can throw.
11954
11955 2018-01-05 Sebastian Huber <sebastian.huber@embedded-brains.de>
11956
11957 * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
11958 * config/epiphany/rtems.h: New file.
11959
11960 2018-01-04 Jakub Jelinek <jakub@redhat.com>
11961 Uros Bizjak <ubizjak@gmail.com>
11962
11963 PR target/83554
11964 * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
11965 QIreg_operand instead of register_operand predicate.
11966 * config/i386/i386.c (ix86_rop_should_change_byte_p,
11967 set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
11968 comments instead of -fmitigate[-_]rop.
11969
11970 2018-01-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
11971
11972 PR bootstrap/81926
11973 * cgraphunit.c (symbol_table::compile): Switch to text_section
11974 before calling assembly_start debug hook.
11975 * run-rtl-passes.c (run_rtl_passes): Likewise.
11976 Include output.h.
11977
11978 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
11979
11980 * tree-vrp.c (extract_range_from_binary_expr_1): Check
11981 range_int_cst_p rather than !symbolic_range_p before calling
11982 extract_range_from_multiplicative_op_1.
11983
11984 2018-01-04 Jeff Law <law@redhat.com>
11985
11986 * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
11987 redundant test in assertion.
11988
11989 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
11990
11991 * doc/rtl.texi: Document machine_mode wrapper classes.
11992
11993 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
11994
11995 * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
11996 using tree_to_uhwi.
11997
11998 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
11999
12000 * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
12001 the VEC_PERM_EXPR fold to fail.
12002
12003 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12004
12005 PR debug/83585
12006 * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
12007 to switched_sections.
12008
12009 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12010
12011 PR target/83680
12012 * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
12013 test for d.testing.
12014
12015 2018-01-04 Peter Bergner <bergner@vnet.ibm.com>
12016
12017 PR target/83387
12018 * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
12019 allow arguments in FP registers if TARGET_HARD_FLOAT is false.
12020
12021 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12022
12023 PR debug/83666
12024 * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
12025 is BLKmode and bitpos not zero or mode change is needed.
12026
12027 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12028
12029 PR target/83675
12030 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
12031 TARGET_VIS2.
12032
12033 2018-01-04 Uros Bizjak <ubizjak@gmail.com>
12034
12035 PR target/83628
12036 * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
12037 instead of MULT rtx. Update all corresponding splitters.
12038 (*saddl_se): Ditto.
12039 (*ssub<modesuffix>): Ditto.
12040 (*ssubl_se): Ditto.
12041 (*cmp_sadd_di): Update split patterns.
12042 (*cmp_sadd_si): Ditto.
12043 (*cmp_sadd_sidi): Ditto.
12044 (*cmp_ssub_di): Ditto.
12045 (*cmp_ssub_si): Ditto.
12046 (*cmp_ssub_sidi): Ditto.
12047 * config/alpha/predicates.md (const23_operand): New predicate.
12048 * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
12049 Look for ASHIFT, not MULT inner operand.
12050 (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
12051
12052 2018-01-04 Martin Liska <mliska@suse.cz>
12053
12054 PR gcov-profile/83669
12055 * gcov.c (output_intermediate_file): Add version to intermediate
12056 gcov file.
12057 * doc/gcov.texi: Document new field 'version' in intermediate
12058 file format. Fix location of '-k' option of gcov command.
12059
12060 2018-01-04 Martin Liska <mliska@suse.cz>
12061
12062 PR ipa/82352
12063 * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
12064
12065 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12066
12067 * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
12068
12069 2018-01-03 Martin Sebor <msebor@redhat.com>
12070
12071 PR tree-optimization/83655
12072 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
12073 checking calls with invalid arguments.
12074
12075 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12076
12077 * tree-vect-stmts.c (vect_get_store_rhs): New function.
12078 (vectorizable_mask_load_store): Delete.
12079 (vectorizable_call): Return false for masked loads and stores.
12080 (vectorizable_store): Handle IFN_MASK_STORE. Use vect_get_store_rhs
12081 instead of gimple_assign_rhs1.
12082 (vectorizable_load): Handle IFN_MASK_LOAD.
12083 (vect_transform_stmt): Don't set is_store for call_vec_info_type.
12084
12085 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12086
12087 * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
12088 split out from..,
12089 (vectorizable_mask_load_store): ...here.
12090 (vectorizable_load): ...and here.
12091
12092 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12093
12094 * tree-vect-stmts.c (vect_build_all_ones_mask)
12095 (vect_build_zero_merge_argument): New functions, split out from...
12096 (vectorizable_load): ...here.
12097
12098 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12099
12100 * tree-vect-stmts.c (vect_check_store_rhs): New function,
12101 split out from...
12102 (vectorizable_mask_load_store): ...here.
12103 (vectorizable_store): ...and here.
12104
12105 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12106
12107 * tree-vect-stmts.c (vect_check_load_store_mask): New function,
12108 split out from...
12109 (vectorizable_mask_load_store): ...here.
12110
12111 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12112
12113 * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
12114 (vect_model_store_cost): Take a vec_load_store_type instead of a
12115 vect_def_type.
12116 * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
12117 (vect_model_store_cost): Take a vec_load_store_type instead of a
12118 vect_def_type.
12119 (vectorizable_mask_load_store): Update accordingly.
12120 (vectorizable_store): Likewise.
12121 * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
12122
12123 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12124
12125 * tree-vect-loop.c (vect_transform_loop): Stub out scalar
12126 IFN_MASK_LOAD calls here rather than...
12127 * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
12128
12129 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12130 Alan Hayward <alan.hayward@arm.com>
12131 David Sherwood <david.sherwood@arm.com>
12132
12133 * expmed.c (extract_bit_field_1): For vector extracts,
12134 fall back to extract_bit_field_as_subreg if vec_extract
12135 isn't available.
12136
12137 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12138 Alan Hayward <alan.hayward@arm.com>
12139 David Sherwood <david.sherwood@arm.com>
12140
12141 * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
12142 they are variable or constant sized.
12143 (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
12144 slots for constant-sized data.
12145
12146 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12147 Alan Hayward <alan.hayward@arm.com>
12148 David Sherwood <david.sherwood@arm.com>
12149
12150 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
12151 handling COND_EXPRs with boolean comparisons, try to find a better
12152 basis for the mask type than the boolean itself.
12153
12154 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12155
12156 * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
12157 is calculated and how it can be overridden.
12158 * genmodes.c (max_bitsize_mode_any_mode): New variable.
12159 (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
12160 if defined.
12161 (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
12162 if nonzero.
12163
12164 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12165 Alan Hayward <alan.hayward@arm.com>
12166 David Sherwood <david.sherwood@arm.com>
12167
12168 * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
12169 Remove the mode argument.
12170 (aarch64_simd_valid_immediate): Remove the mode and inverse
12171 arguments.
12172 * config/aarch64/iterators.md (bitsize): New iterator.
12173 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
12174 (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
12175 * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
12176 aarch64_simd_valid_immediate.
12177 * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
12178 (aarch64_reg_or_bic_imm): Likewise.
12179 * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
12180 with an insn_type enum and msl with a modifier_type enum.
12181 Replace element_width with a scalar_mode. Change the shift
12182 to unsigned int. Add constructors for scalar_float_mode and
12183 scalar_int_mode elements.
12184 (aarch64_vect_float_const_representable_p): Delete.
12185 (aarch64_can_const_movi_rtx_p)
12186 (aarch64_simd_scalar_immediate_valid_for_move)
12187 (aarch64_simd_make_constant): Update call to
12188 aarch64_simd_valid_immediate.
12189 (aarch64_advsimd_valid_immediate_hs): New function.
12190 (aarch64_advsimd_valid_immediate): Likewise.
12191 (aarch64_simd_valid_immediate): Remove mode and inverse
12192 arguments. Rewrite to use the above. Use const_vec_duplicate_p
12193 to detect duplicated constants and use aarch64_float_const_zero_rtx_p
12194 and aarch64_float_const_representable_p on the result.
12195 (aarch64_output_simd_mov_immediate): Remove mode argument.
12196 Update call to aarch64_simd_valid_immediate and use of
12197 simd_immediate_info.
12198 (aarch64_output_scalar_simd_mov_immediate): Update call
12199 accordingly.
12200
12201 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12202 Alan Hayward <alan.hayward@arm.com>
12203 David Sherwood <david.sherwood@arm.com>
12204
12205 * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
12206 (mode_nunits): Likewise CONST_MODE_NUNITS.
12207 * machmode.def (ADJUST_NUNITS): Document.
12208 * genmodes.c (mode_data::need_nunits_adj): New field.
12209 (blank_mode): Update accordingly.
12210 (adj_nunits): New variable.
12211 (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
12212 parameter.
12213 (emit_mode_size_inline): Set need_bytesize_adj for all modes
12214 listed in adj_nunits.
12215 (emit_mode_nunits_inline): Set need_nunits_adj for all modes
12216 listed in adj_nunits. Don't emit case statements for such modes.
12217 (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
12218 and CONST_MODE_PRECISION. Make CONST_MODE_SIZE expand to
12219 nothing if adj_nunits is nonnull.
12220 (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
12221 (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
12222 (emit_mode_fbit): Update use of print_maybe_const_decl.
12223 (emit_move_size): Likewise. Treat the array as non-const
12224 if adj_nunits.
12225 (emit_mode_adjustments): Handle adj_nunits.
12226
12227 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12228
12229 * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
12230 * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
12231 (VECTOR_MODES): Use it.
12232 (make_vector_modes): Take the prefix as an argument.
12233
12234 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12235 Alan Hayward <alan.hayward@arm.com>
12236 David Sherwood <david.sherwood@arm.com>
12237
12238 * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
12239 * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
12240 for MODE_VECTOR_BOOL.
12241 * machmode.def (VECTOR_BOOL_MODE): Document.
12242 * genmodes.c (VECTOR_BOOL_MODE): New macro.
12243 (make_vector_bool_mode): New function.
12244 (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
12245 MODE_VECTOR_BOOL.
12246 * lto-streamer-in.c (lto_input_mode_table): Likewise.
12247 * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
12248 Likewise.
12249 * stor-layout.c (int_mode_for_mode): Likewise.
12250 * tree.c (build_vector_type_for_mode): Likewise.
12251 * varasm.c (output_constant_pool_2): Likewise.
12252 * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
12253 CONSTM1_RTX (BImode) are the same thing. Initialize const_tiny_rtx
12254 for MODE_VECTOR_BOOL.
12255 * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
12256 of mode class checks.
12257 * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
12258 instead of a list of mode class checks.
12259 (expand_vector_scalar_condition): Likewise.
12260 (type_for_widest_vector_mode): Handle BImode as an inner mode.
12261
12262 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12263 Alan Hayward <alan.hayward@arm.com>
12264 David Sherwood <david.sherwood@arm.com>
12265
12266 * machmode.h (mode_size): Change from unsigned short to
12267 poly_uint16_pod.
12268 (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
12269 (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
12270 or if measurement_type is not polynomial.
12271 (fixed_size_mode::includes_p): Check for constant-sized modes.
12272 * genmodes.c (emit_mode_size_inline): Make mode_size_inline
12273 return a poly_uint16 rather than an unsigned short.
12274 (emit_mode_size): Change the type of mode_size from unsigned short
12275 to poly_uint16_pod. Use ZERO_COEFFS for the initializer.
12276 (emit_mode_adjustments): Cope with polynomial vector sizes.
12277 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12278 for GET_MODE_SIZE.
12279 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12280 for GET_MODE_SIZE.
12281 * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
12282 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
12283 * caller-save.c (setup_save_areas): Likewise.
12284 (replace_reg_with_saved_mem): Likewise.
12285 * calls.c (emit_library_call_value_1): Likewise.
12286 * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
12287 * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
12288 (gen_lowpart_for_combine): Likewise.
12289 * convert.c (convert_to_integer_1): Likewise.
12290 * cse.c (equiv_constant, cse_insn): Likewise.
12291 * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
12292 (cselib_subst_to_values): Likewise.
12293 * dce.c (word_dce_process_block): Likewise.
12294 * df-problems.c (df_word_lr_mark_ref): Likewise.
12295 * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
12296 * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
12297 (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
12298 (rtl_for_decl_location): Likewise.
12299 * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
12300 * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
12301 * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
12302 (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
12303 (expand_expr_real_1): Likewise.
12304 * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
12305 (pad_below): Likewise.
12306 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
12307 * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
12308 * ira.c (get_subreg_tracking_sizes): Likewise.
12309 * ira-build.c (ira_create_allocno_objects): Likewise.
12310 * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
12311 (ira_sort_regnos_for_alter_reg): Likewise.
12312 * ira-costs.c (record_operand_costs): Likewise.
12313 * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
12314 (resolve_simple_move): Likewise.
12315 * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
12316 (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
12317 (lra_constraints): Likewise.
12318 (CONST_POOL_OK_P): Reject variable-sized modes.
12319 * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
12320 (add_pseudo_to_slot, lra_spill): Likewise.
12321 * omp-low.c (omp_clause_aligned_alignment): Likewise.
12322 * optabs-query.c (get_best_extraction_insn): Likewise.
12323 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
12324 * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
12325 (expand_mult_highpart, valid_multiword_target_p): Likewise.
12326 * recog.c (offsettable_address_addr_space_p): Likewise.
12327 * regcprop.c (maybe_mode_change): Likewise.
12328 * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
12329 * regrename.c (build_def_use): Likewise.
12330 * regstat.c (dump_reg_info): Likewise.
12331 * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
12332 (find_reloads, find_reloads_subreg_address): Likewise.
12333 * reload1.c (eliminate_regs_1): Likewise.
12334 * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
12335 * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
12336 (simplify_binary_operation_1, simplify_subreg): Likewise.
12337 * targhooks.c (default_function_arg_padding): Likewise.
12338 (default_hard_regno_nregs, default_class_max_nregs): Likewise.
12339 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
12340 (verify_gimple_assign_ternary): Likewise.
12341 * tree-inline.c (estimate_move_cost): Likewise.
12342 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12343 * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
12344 (get_address_cost_ainc): Likewise.
12345 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
12346 (vect_supportable_dr_alignment): Likewise.
12347 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
12348 (vectorizable_reduction): Likewise.
12349 * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
12350 (vectorizable_operation, vectorizable_load): Likewise.
12351 * tree.c (build_same_sized_truth_vector_type): Likewise.
12352 * valtrack.c (cleanup_auto_inc_dec): Likewise.
12353 * var-tracking.c (emit_note_insn_var_location): Likewise.
12354 * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
12355 (ADDR_VEC_ALIGN): Likewise.
12356
12357 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12358 Alan Hayward <alan.hayward@arm.com>
12359 David Sherwood <david.sherwood@arm.com>
12360
12361 * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
12362 unsigned short.
12363 (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
12364 or if measurement_type is polynomial.
12365 * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
12366 * combine.c (make_extraction): Likewise.
12367 * dse.c (find_shift_sequence): Likewise.
12368 * dwarf2out.c (mem_loc_descriptor): Likewise.
12369 * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
12370 (extract_bit_field, extract_low_bits): Likewise.
12371 * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
12372 (optimize_bitfield_assignment_op, expand_assignment): Likewise.
12373 (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
12374 * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
12375 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
12376 * reload.c (find_reloads): Likewise.
12377 * reload1.c (alter_reg): Likewise.
12378 * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
12379 * targhooks.c (default_secondary_memory_needed_mode): Likewise.
12380 * tree-if-conv.c (predicate_mem_writes): Likewise.
12381 * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
12382 * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
12383 * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
12384 * valtrack.c (dead_debug_insert_temp): Likewise.
12385 * varasm.c (mergeable_constant_section): Likewise.
12386 * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
12387
12388 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12389 Alan Hayward <alan.hayward@arm.com>
12390 David Sherwood <david.sherwood@arm.com>
12391
12392 * expr.c (expand_assignment): Cope with polynomial mode sizes
12393 when assigning to a CONCAT.
12394
12395 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12396 Alan Hayward <alan.hayward@arm.com>
12397 David Sherwood <david.sherwood@arm.com>
12398
12399 * machmode.h (mode_precision): Change from unsigned short to
12400 poly_uint16_pod.
12401 (mode_to_precision): Return a poly_uint16 rather than an unsigned
12402 short.
12403 (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
12404 or if measurement_type is not polynomial.
12405 (HWI_COMPUTABLE_MODE_P): Turn into a function. Optimize the case
12406 in which the mode is already known to be a scalar_int_mode.
12407 * genmodes.c (emit_mode_precision): Change the type of mode_precision
12408 from unsigned short to poly_uint16_pod. Use ZERO_COEFFS for the
12409 initializer.
12410 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12411 for GET_MODE_PRECISION.
12412 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12413 for GET_MODE_PRECISION.
12414 * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
12415 as polynomial.
12416 (try_combine, find_split_point, combine_simplify_rtx): Likewise.
12417 (expand_field_assignment, make_extraction): Likewise.
12418 (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
12419 (get_last_value): Likewise.
12420 * convert.c (convert_to_integer_1): Likewise.
12421 * cse.c (cse_insn): Likewise.
12422 * expr.c (expand_expr_real_1): Likewise.
12423 * lra-constraints.c (simplify_operand_subreg): Likewise.
12424 * optabs-query.c (can_atomic_load_p): Likewise.
12425 * optabs.c (expand_atomic_load): Likewise.
12426 (expand_atomic_store): Likewise.
12427 * ree.c (combine_reaching_defs): Likewise.
12428 * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
12429 * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
12430 * tree.h (type_has_mode_precision_p): Likewise.
12431 * ubsan.c (instrument_si_overflow): Likewise.
12432
12433 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12434 Alan Hayward <alan.hayward@arm.com>
12435 David Sherwood <david.sherwood@arm.com>
12436
12437 * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
12438 polynomial numbers of units.
12439 (SET_TYPE_VECTOR_SUBPARTS): Likewise.
12440 (valid_vector_subparts_p): New function.
12441 (build_vector_type): Remove temporary shim and take the number
12442 of units as a poly_uint64 rather than an int.
12443 (build_opaque_vector_type): Take the number of units as a
12444 poly_uint64 rather than an int.
12445 * tree.c (build_vector_from_ctor): Handle polynomial
12446 TYPE_VECTOR_SUBPARTS.
12447 (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
12448 (uniform_vector_p, vector_type_mode, build_vector): Likewise.
12449 (build_vector_from_val): If the number of units is variable,
12450 use build_vec_duplicate_cst for constant operands and
12451 VEC_DUPLICATE_EXPR otherwise.
12452 (make_vector_type): Remove temporary is_constant ().
12453 (build_vector_type, build_opaque_vector_type): Take the number of
12454 units as a poly_uint64 rather than an int.
12455 (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
12456 VECTOR_CST_NELTS.
12457 * cfgexpand.c (expand_debug_expr): Likewise.
12458 * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
12459 (store_constructor, expand_expr_real_1): Likewise.
12460 (const_scalar_mask_from_tree): Likewise.
12461 * fold-const-call.c (fold_const_reduction): Likewise.
12462 * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
12463 (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
12464 (native_encode_vector, vec_cst_ctor_to_array): Likewise.
12465 (fold_relational_const): Likewise.
12466 (native_interpret_vector): Likewise. Change the size from an
12467 int to an unsigned int.
12468 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
12469 TYPE_VECTOR_SUBPARTS.
12470 (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
12471 (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
12472 duplicating a non-constant operand into a variable-length vector.
12473 * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
12474 TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
12475 * ipa-icf.c (sem_variable::equals): Likewise.
12476 * match.pd: Likewise.
12477 * omp-simd-clone.c (simd_clone_subparts): Likewise.
12478 * print-tree.c (print_node): Likewise.
12479 * stor-layout.c (layout_type): Likewise.
12480 * targhooks.c (default_builtin_vectorization_cost): Likewise.
12481 * tree-cfg.c (verify_gimple_comparison): Likewise.
12482 (verify_gimple_assign_binary): Likewise.
12483 (verify_gimple_assign_ternary): Likewise.
12484 (verify_gimple_assign_single): Likewise.
12485 * tree-pretty-print.c (dump_generic_node): Likewise.
12486 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12487 (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
12488 * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
12489 (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
12490 (vect_shift_permute_load_chain): Likewise.
12491 * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
12492 (expand_vector_condition, optimize_vector_constructor): Likewise.
12493 (lower_vec_perm, get_compute_type): Likewise.
12494 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
12495 (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
12496 * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
12497 (vect_recog_mask_conversion_pattern): Likewise.
12498 * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
12499 (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
12500 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
12501 (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
12502 (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
12503 (vectorizable_shift, vectorizable_operation, vectorizable_store)
12504 (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
12505 (supportable_widening_operation): Likewise.
12506 (supportable_narrowing_operation): Likewise.
12507 * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
12508 Likewise.
12509 * varasm.c (output_constant): Likewise.
12510
12511 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12512 Alan Hayward <alan.hayward@arm.com>
12513 David Sherwood <david.sherwood@arm.com>
12514
12515 * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
12516 so that both the length == 3 and length != 3 cases set up their
12517 own permute vectors. Add comments explaining why we know the
12518 number of elements is constant.
12519 (vect_permute_load_chain): Likewise.
12520
12521 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12522 Alan Hayward <alan.hayward@arm.com>
12523 David Sherwood <david.sherwood@arm.com>
12524
12525 * machmode.h (mode_nunits): Change from unsigned char to
12526 poly_uint16_pod.
12527 (ONLY_FIXED_SIZE_MODES): New macro.
12528 (pod_mode::measurement_type, scalar_int_mode::measurement_type)
12529 (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
12530 (complex_mode::measurement_type, fixed_size_mode::measurement_type):
12531 New typedefs.
12532 (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
12533 (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
12534 or if measurement_type is not polynomial.
12535 * genmodes.c (ZERO_COEFFS): New macro.
12536 (emit_mode_nunits_inline): Make mode_nunits_inline return a
12537 poly_uint16.
12538 (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
12539 Use ZERO_COEFFS when emitting initializers.
12540 * data-streamer.h (bp_pack_poly_value): New function.
12541 (bp_unpack_poly_value): Likewise.
12542 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12543 for GET_MODE_NUNITS.
12544 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12545 for GET_MODE_NUNITS.
12546 * tree.c (make_vector_type): Remove temporary shim and make
12547 the real function take the number of units as a poly_uint64
12548 rather than an int.
12549 (build_vector_type_for_mode): Handle polynomial nunits.
12550 * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
12551 * emit-rtl.c (const_vec_series_p_1): Likewise.
12552 (gen_rtx_CONST_VECTOR): Likewise.
12553 * fold-const.c (test_vec_duplicate_folding): Likewise.
12554 * genrecog.c (validate_pattern): Likewise.
12555 * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
12556 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
12557 * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
12558 (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
12559 (expand_vec_cond_expr, expand_mult_highpart): Likewise.
12560 * rtlanal.c (subreg_get_info): Likewise.
12561 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
12562 (vect_grouped_load_supported): Likewise.
12563 * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
12564 * tree-vect-loop.c (have_whole_vector_shift): Likewise.
12565 * simplify-rtx.c (simplify_unary_operation_1): Likewise.
12566 (simplify_const_unary_operation, simplify_binary_operation_1)
12567 (simplify_const_binary_operation, simplify_ternary_operation)
12568 (test_vector_ops_duplicate, test_vector_ops): Likewise.
12569 (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
12570 instead of CONST_VECTOR_NUNITS.
12571 * varasm.c (output_constant_pool_2): Likewise.
12572 * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
12573 explicit-encoded elements in the XVEC for variable-length vectors.
12574
12575 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12576
12577 * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
12578
12579 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12580 Alan Hayward <alan.hayward@arm.com>
12581 David Sherwood <david.sherwood@arm.com>
12582
12583 * coretypes.h (fixed_size_mode): Declare.
12584 (fixed_size_mode_pod): New typedef.
12585 * builtins.h (target_builtins::x_apply_args_mode)
12586 (target_builtins::x_apply_result_mode): Change type to
12587 fixed_size_mode_pod.
12588 * builtins.c (apply_args_size, apply_result_size, result_vector)
12589 (expand_builtin_apply_args_1, expand_builtin_apply)
12590 (expand_builtin_return): Update accordingly.
12591
12592 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12593
12594 * cse.c (hash_rtx_cb): Hash only the encoded elements.
12595 * cselib.c (cselib_hash_rtx): Likewise.
12596 * expmed.c (make_tree): Build VECTOR_CSTs directly from the
12597 CONST_VECTOR encoding.
12598
12599 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12600 Jeff Law <law@redhat.com>
12601
12602 PR target/83641
12603 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
12604 noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
12605 only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
12606 and add REG_CFA_ADJUST_CFA notes in that case to both insns.
12607
12608 PR target/83641
12609 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
12610 explicitly probe *sp in a noreturn function if there were any callee
12611 register saves or frame pointer is needed.
12612
12613 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12614
12615 PR debug/83621
12616 * cfgexpand.c (expand_debug_expr): Return NULL if mode is
12617 BLKmode for ternary, binary or unary expressions.
12618
12619 PR debug/83645
12620 * var-tracking.c (delete_vta_debug_insn): New inline function.
12621 (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
12622 insns from get_insns () to NULL instead of each bb separately.
12623 Use delete_vta_debug_insn. No longer static.
12624 (vt_debug_insns_local, variable_tracking_main_1): Adjust
12625 delete_vta_debug_insns callers.
12626 * rtl.h (delete_vta_debug_insns): Declare.
12627 * final.c (rest_of_handle_final): Call delete_vta_debug_insns
12628 instead of variable_tracking_main.
12629
12630 2018-01-03 Martin Sebor <msebor@redhat.com>
12631
12632 PR tree-optimization/83603
12633 * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
12634 arguments past the endof the argument list in functions declared
12635 without a prototype.
12636 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
12637 Avoid checking when arguments are null.
12638
12639 2018-01-03 Martin Sebor <msebor@redhat.com>
12640
12641 PR c/83559
12642 * doc/extend.texi (attribute const): Fix a typo.
12643 * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
12644 issuing -Wsuggest-attribute for void functions.
12645
12646 2018-01-03 Martin Sebor <msebor@redhat.com>
12647
12648 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
12649 offset_int::from instead of wide_int::to_shwi.
12650 (maybe_diag_overlap): Remove assertion.
12651 Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
12652 * gimple-ssa-sprintf.c (format_directive): Same.
12653 (parse_directive): Same.
12654 (sprintf_dom_walker::compute_format_length): Same.
12655 (try_substitute_return_value): Same.
12656
12657 2018-01-03 Jeff Law <law@redhat.com>
12658
12659 PR middle-end/83654
12660 * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
12661 non-constant residual for zero at runtime and avoid probing in
12662 that case. Reorganize code for trailing problem to mirror handling
12663 of the residual.
12664
12665 2018-01-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12666
12667 PR tree-optimization/83501
12668 * tree-ssa-strlen.c (get_string_cst): New.
12669 (handle_char_store): Call get_string_cst.
12670
12671 2018-01-03 Martin Liska <mliska@suse.cz>
12672
12673 PR tree-optimization/83593
12674 * tree-ssa-strlen.c: Include tree-cfg.h.
12675 (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
12676 (strlen_dom_walker): Add new member variable m_cleanup_cfg.
12677 (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
12678 to false.
12679 (strlen_dom_walker::before_dom_children): Call
12680 gimple_purge_dead_eh_edges. Dump tranformation with details
12681 dump flags.
12682 (strlen_dom_walker::before_dom_children): Update call by adding
12683 new argument cleanup_eh.
12684 (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
12685
12686 2018-01-03 Martin Liska <mliska@suse.cz>
12687
12688 PR ipa/83549
12689 * cif-code.def (VARIADIC_THUNK): New enum value.
12690 * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
12691 thunks.
12692
12693 2018-01-03 Jan Beulich <jbeulich@suse.com>
12694
12695 * sse.md (mov<mode>_internal): Tighten condition for when to use
12696 vmovdqu<ssescalarsize> for TI and OI modes.
12697
12698 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12699
12700 Update copyright years.
12701
12702 2018-01-03 Martin Liska <mliska@suse.cz>
12703
12704 PR ipa/83594
12705 * ipa-visibility.c (function_and_variable_visibility): Skip
12706 functions with noipa attribure.
12707
12708 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12709
12710 * gcc.c (process_command): Update copyright notice dates.
12711 * gcov-dump.c (print_version): Ditto.
12712 * gcov.c (print_version): Ditto.
12713 * gcov-tool.c (print_version): Ditto.
12714 * gengtype.c (create_file): Ditto.
12715 * doc/cpp.texi: Bump @copying's copyright year.
12716 * doc/cppinternals.texi: Ditto.
12717 * doc/gcc.texi: Ditto.
12718 * doc/gccint.texi: Ditto.
12719 * doc/gcov.texi: Ditto.
12720 * doc/install.texi: Ditto.
12721 * doc/invoke.texi: Ditto.
12722
12723 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12724
12725 * vector-builder.h (vector_builder::m_full_nelts): Change from
12726 unsigned int to poly_uint64.
12727 (vector_builder::full_nelts): Update prototype accordingly.
12728 (vector_builder::new_vector): Likewise.
12729 (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
12730 (vector_builder::operator ==): Likewise.
12731 (vector_builder::finalize): Likewise.
12732 * int-vector-builder.h (int_vector_builder::int_vector_builder):
12733 Take the number of elements as a poly_uint64 rather than an
12734 unsigned int.
12735 * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
12736 from unsigned int to poly_uint64.
12737 (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
12738 (vec_perm_indices::new_vector): Likewise.
12739 (vec_perm_indices::length): Likewise.
12740 (vec_perm_indices::nelts_per_input): Likewise.
12741 (vec_perm_indices::input_nelts): Likewise.
12742 * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
12743 number of elements per input as a poly_uint64 rather than an
12744 unsigned int. Use the original encoding for variable-length
12745 vectors, rather than clamping each individual element.
12746 For the second and subsequent elements in each pattern,
12747 clamp the step and base before clamping their sum.
12748 (vec_perm_indices::series_p): Handle polynomial element counts.
12749 (vec_perm_indices::all_in_range_p): Likewise.
12750 (vec_perm_indices_to_tree): Likewise.
12751 (vec_perm_indices_to_rtx): Likewise.
12752 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
12753 * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
12754 (tree_vector_builder::new_binary_operation): Handle polynomial
12755 element counts. Return false if we need to know the number
12756 of elements at compile time.
12757 * fold-const.c (fold_vec_perm): Punt if the number of elements
12758 isn't known at compile time.
12759
12760 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12761
12762 * vec-perm-indices.h (vec_perm_builder): Change element type
12763 from HOST_WIDE_INT to poly_int64.
12764 (vec_perm_indices::element_type): Update accordingly.
12765 (vec_perm_indices::clamp): Handle polynomial element_types.
12766 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
12767 (vec_perm_indices::all_in_range_p): Likewise.
12768 (tree_to_vec_perm_builder): Check for poly_int64 trees rather
12769 than shwi trees.
12770 * vector-builder.h (vector_builder::stepped_sequence_p): Handle
12771 polynomial vec_perm_indices element types.
12772 * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
12773 * fold-const.c (fold_vec_perm): Likewise.
12774 * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
12775 * tree-vect-generic.c (lower_vec_perm): Likewise.
12776 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
12777 * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
12778 element type to HOST_WIDE_INT.
12779
12780 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12781 Alan Hayward <alan.hayward@arm.com>
12782 David Sherwood <david.sherwood@arm.com>
12783
12784 * alias.c (addr_side_effect_eval): Take the size as a poly_int64
12785 rather than an int. Use plus_constant.
12786 (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
12787 Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
12788
12789 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12790 Alan Hayward <alan.hayward@arm.com>
12791 David Sherwood <david.sherwood@arm.com>
12792
12793 * calls.c (emit_call_1, expand_call): Change struct_value_size from
12794 a HOST_WIDE_INT to a poly_int64.
12795
12796 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12797 Alan Hayward <alan.hayward@arm.com>
12798 David Sherwood <david.sherwood@arm.com>
12799
12800 * calls.c (load_register_parameters): Cope with polynomial
12801 mode sizes. Require a constant size for BLKmode parameters
12802 that aren't described by a PARALLEL. If BLOCK_REG_PADDING
12803 forces a parameter to be padded at the lsb end in order to
12804 fill a complete number of words, require the parameter size
12805 to be ordered wrt UNITS_PER_WORD.
12806
12807 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12808 Alan Hayward <alan.hayward@arm.com>
12809 David Sherwood <david.sherwood@arm.com>
12810
12811 * reload1.c (spill_stack_slot_width): Change element type
12812 from unsigned int to poly_uint64_pod.
12813 (alter_reg): Treat mode sizes as polynomial.
12814
12815 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12816 Alan Hayward <alan.hayward@arm.com>
12817 David Sherwood <david.sherwood@arm.com>
12818
12819 * reload.c (complex_word_subreg_p): New function.
12820 (reload_inner_reg_of_subreg, push_reload): Use it.
12821
12822 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12823 Alan Hayward <alan.hayward@arm.com>
12824 David Sherwood <david.sherwood@arm.com>
12825
12826 * lra-constraints.c (process_alt_operands): Reject matched
12827 operands whose sizes aren't ordered.
12828 (match_reload): Refer to this check here.
12829
12830 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12831 Alan Hayward <alan.hayward@arm.com>
12832 David Sherwood <david.sherwood@arm.com>
12833
12834 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
12835 that the mode size is in the set {1, 2, 4, 8, 16}.
12836
12837 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12838 Alan Hayward <alan.hayward@arm.com>
12839 David Sherwood <david.sherwood@arm.com>
12840
12841 * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
12842 Use plus_constant instead of gen_rtx_PLUS.
12843
12844 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12845 Alan Hayward <alan.hayward@arm.com>
12846 David Sherwood <david.sherwood@arm.com>
12847
12848 * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
12849 * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
12850 * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
12851 * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
12852 * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
12853 * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
12854 * config/i386/i386-protos.h (ix86_push_rounding): Declare.
12855 * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
12856 * config/i386/i386.c (ix86_push_rounding): ...this new function.
12857 * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
12858 a poly_int64.
12859 * config/m32c/m32c.c (m32c_push_rounding): Likewise.
12860 * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
12861 * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
12862 * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
12863 * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
12864 * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
12865 * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
12866 * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
12867 * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
12868 * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
12869 function.
12870 * expr.c (emit_move_resolve_push): Treat the input and result
12871 of PUSH_ROUNDING as a poly_int64.
12872 (emit_move_complex_push, emit_single_push_insn_1): Likewise.
12873 (emit_push_insn): Likewise.
12874 * lra-eliminations.c (mark_not_eliminable): Likewise.
12875 * recog.c (push_operand): Likewise.
12876 * reload1.c (elimination_effects): Likewise.
12877 * rtlanal.c (nonzero_bits1): Likewise.
12878 * calls.c (store_one_arg): Likewise. Require the padding to be
12879 known at compile time.
12880
12881 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12882 Alan Hayward <alan.hayward@arm.com>
12883 David Sherwood <david.sherwood@arm.com>
12884
12885 * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
12886 Use plus_constant instead of gen_rtx_PLUS.
12887
12888 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12889 Alan Hayward <alan.hayward@arm.com>
12890 David Sherwood <david.sherwood@arm.com>
12891
12892 * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
12893 rather than an int.
12894
12895 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12896 Alan Hayward <alan.hayward@arm.com>
12897 David Sherwood <david.sherwood@arm.com>
12898
12899 * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
12900 instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
12901 via stack temporaries. Treat the mode size as polynomial too.
12902
12903 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12904 Alan Hayward <alan.hayward@arm.com>
12905 David Sherwood <david.sherwood@arm.com>
12906
12907 * expr.c (expand_expr_real_2): When handling conversions involving
12908 unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
12909 multiplying int_size_in_bytes by BITS_PER_UNIT. Treat GET_MODE_BISIZE
12910 as a poly_uint64 too.
12911
12912 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12913 Alan Hayward <alan.hayward@arm.com>
12914 David Sherwood <david.sherwood@arm.com>
12915
12916 * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
12917
12918 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12919 Alan Hayward <alan.hayward@arm.com>
12920 David Sherwood <david.sherwood@arm.com>
12921
12922 * combine.c (can_change_dest_mode): Handle polynomial
12923 REGMODE_NATURAL_SIZE.
12924 * expmed.c (store_bit_field_1): Likewise.
12925 * expr.c (store_constructor): Likewise.
12926 * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
12927 and polynomial REGMODE_NATURAL_SIZE.
12928 (gen_lowpart_common): Likewise.
12929 * reginfo.c (record_subregs_of_mode): Likewise.
12930 * rtlanal.c (read_modify_subreg_p): Likewise.
12931
12932 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12933 Alan Hayward <alan.hayward@arm.com>
12934 David Sherwood <david.sherwood@arm.com>
12935
12936 * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
12937 numbers of elements.
12938
12939 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12940 Alan Hayward <alan.hayward@arm.com>
12941 David Sherwood <david.sherwood@arm.com>
12942
12943 * match.pd: Cope with polynomial numbers of vector elements.
12944
12945 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12946 Alan Hayward <alan.hayward@arm.com>
12947 David Sherwood <david.sherwood@arm.com>
12948
12949 * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
12950 in a POINTER_PLUS_EXPR.
12951
12952 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12953 Alan Hayward <alan.hayward@arm.com>
12954 David Sherwood <david.sherwood@arm.com>
12955
12956 * omp-simd-clone.c (simd_clone_subparts): New function.
12957 (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
12958 (ipa_simd_modify_function_body): Likewise.
12959
12960 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12961 Alan Hayward <alan.hayward@arm.com>
12962 David Sherwood <david.sherwood@arm.com>
12963
12964 * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
12965 (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
12966 (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
12967 (expand_vector_condition, vector_element): Likewise.
12968 (subparts_gt): New function.
12969 (get_compute_type): Use subparts_gt.
12970 (count_type_subparts): Delete.
12971 (expand_vector_operations_1): Use subparts_gt instead of
12972 count_type_subparts.
12973
12974 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12975 Alan Hayward <alan.hayward@arm.com>
12976 David Sherwood <david.sherwood@arm.com>
12977
12978 * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
12979 (vect_compile_time_alias): ...this new function. Do the calculation
12980 on poly_ints rather than trees.
12981 (vect_prune_runtime_alias_test_list): Update call accordingly.
12982
12983 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12984 Alan Hayward <alan.hayward@arm.com>
12985 David Sherwood <david.sherwood@arm.com>
12986
12987 * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
12988 numbers of units.
12989 (vect_schedule_slp_instance): Likewise.
12990
12991 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12992 Alan Hayward <alan.hayward@arm.com>
12993 David Sherwood <david.sherwood@arm.com>
12994
12995 * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
12996 constant and extern definitions for variable-length vectors.
12997 (vect_get_constant_vectors): Note that the number of units
12998 is known to be constant.
12999
13000 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13001 Alan Hayward <alan.hayward@arm.com>
13002 David Sherwood <david.sherwood@arm.com>
13003
13004 * tree-vect-stmts.c (vectorizable_conversion): Treat the number
13005 of units as polynomial. Choose between WIDE and NARROW based
13006 on multiple_p.
13007
13008 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13009 Alan Hayward <alan.hayward@arm.com>
13010 David Sherwood <david.sherwood@arm.com>
13011
13012 * tree-vect-stmts.c (simd_clone_subparts): New function.
13013 (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
13014
13015 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13016 Alan Hayward <alan.hayward@arm.com>
13017 David Sherwood <david.sherwood@arm.com>
13018
13019 * tree-vect-stmts.c (vectorizable_call): Treat the number of
13020 vectors as polynomial. Use build_index_vector for
13021 IFN_GOMP_SIMD_LANE.
13022
13023 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13024 Alan Hayward <alan.hayward@arm.com>
13025 David Sherwood <david.sherwood@arm.com>
13026
13027 * tree-vect-stmts.c (get_load_store_type): Treat the number of
13028 units as polynomial. Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
13029 for variable-length vectors.
13030 (vectorizable_mask_load_store): Treat the number of units as
13031 polynomial, asserting that it is constant if the condition has
13032 already been enforced.
13033 (vectorizable_store, vectorizable_load): Likewise.
13034
13035 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13036 Alan Hayward <alan.hayward@arm.com>
13037 David Sherwood <david.sherwood@arm.com>
13038
13039 * tree-vect-loop.c (vectorizable_live_operation): Treat the number
13040 of units as polynomial. Punt if we can't tell at compile time
13041 which vector contains the final result.
13042
13043 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13044 Alan Hayward <alan.hayward@arm.com>
13045 David Sherwood <david.sherwood@arm.com>
13046
13047 * tree-vect-loop.c (vectorizable_induction): Treat the number
13048 of units as polynomial. Punt on SLP inductions. Use an integer
13049 VEC_SERIES_EXPR for variable-length integer reductions. Use a
13050 cast of such a series for variable-length floating-point
13051 reductions.
13052
13053 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13054 Alan Hayward <alan.hayward@arm.com>
13055 David Sherwood <david.sherwood@arm.com>
13056
13057 * tree.h (build_index_vector): Declare.
13058 * tree.c (build_index_vector): New function.
13059 * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
13060 of units as polynomial, forcibly converting it to a constant if
13061 vectorizable_reduction has already enforced the condition.
13062 (vect_create_epilog_for_reduction): Likewise. Use build_index_vector
13063 to create a {1,2,3,...} vector.
13064 (vectorizable_reduction): Treat the number of units as polynomial.
13065 Choose vectype_in based on the largest scalar element size rather
13066 than the smallest number of units. Enforce the restrictions
13067 relied on above.
13068
13069 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13070 Alan Hayward <alan.hayward@arm.com>
13071 David Sherwood <david.sherwood@arm.com>
13072
13073 * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
13074 number of units as polynomial.
13075
13076 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13077 Alan Hayward <alan.hayward@arm.com>
13078 David Sherwood <david.sherwood@arm.com>
13079
13080 * target.h (vector_sizes, auto_vector_sizes): New typedefs.
13081 * target.def (autovectorize_vector_sizes): Return the vector sizes
13082 by pointer, using vector_sizes rather than a bitmask.
13083 * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
13084 * targhooks.c (default_autovectorize_vector_sizes): Likewise.
13085 * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
13086 Likewise.
13087 * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
13088 * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
13089 * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
13090 * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
13091 * omp-general.c (omp_max_vf): Likewise.
13092 * omp-low.c (omp_clause_aligned_alignment): Likewise.
13093 * optabs-query.c (can_vec_mask_load_store_p): Likewise.
13094 * tree-vect-loop.c (vect_analyze_loop): Likewise.
13095 * tree-vect-slp.c (vect_slp_bb): Likewise.
13096 * doc/tm.texi: Regenerate.
13097 * tree-vectorizer.h (current_vector_size): Change from an unsigned int
13098 to a poly_uint64.
13099 * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
13100 the vector size as a poly_uint64 rather than an unsigned int.
13101 (current_vector_size): Change from an unsigned int to a poly_uint64.
13102 (get_vectype_for_scalar_type): Update accordingly.
13103 * tree.h (build_truth_vector_type): Take the size and number of
13104 units as a poly_uint64 rather than an unsigned int.
13105 (build_vector_type): Add a temporary overload that takes
13106 the number of units as a poly_uint64 rather than an unsigned int.
13107 * tree.c (make_vector_type): Likewise.
13108 (build_truth_vector_type): Take the number of units as a poly_uint64
13109 rather than an unsigned int.
13110
13111 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13112 Alan Hayward <alan.hayward@arm.com>
13113 David Sherwood <david.sherwood@arm.com>
13114
13115 * target.def (get_mask_mode): Take the number of units and length
13116 as poly_uint64s rather than unsigned ints.
13117 * targhooks.h (default_get_mask_mode): Update accordingly.
13118 * targhooks.c (default_get_mask_mode): Likewise.
13119 * config/i386/i386.c (ix86_get_mask_mode): Likewise.
13120 * doc/tm.texi: Regenerate.
13121
13122 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13123 Alan Hayward <alan.hayward@arm.com>
13124 David Sherwood <david.sherwood@arm.com>
13125
13126 * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
13127 * omp-general.c (omp_max_vf): Likewise.
13128 * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
13129 (expand_omp_simd): Handle polynomial safelen.
13130 * omp-low.c (omplow_simd_context): Add a default constructor.
13131 (omplow_simd_context::max_vf): Change from int to poly_uint64.
13132 (lower_rec_simd_input_clauses): Update accordingly.
13133 (lower_rec_input_clauses): Likewise.
13134
13135 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13136 Alan Hayward <alan.hayward@arm.com>
13137 David Sherwood <david.sherwood@arm.com>
13138
13139 * tree-vectorizer.h (vect_nunits_for_cost): New function.
13140 * tree-vect-loop.c (vect_model_reduction_cost): Use it.
13141 * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
13142 (vect_analyze_slp_cost): Likewise.
13143 * tree-vect-stmts.c (vect_model_store_cost): Likewise.
13144 (vect_model_load_cost): Likewise.
13145
13146 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13147 Alan Hayward <alan.hayward@arm.com>
13148 David Sherwood <david.sherwood@arm.com>
13149
13150 * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
13151 (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
13152 from an unsigned int * to a poly_uint64_pod *.
13153 (calculate_unrolling_factor): New function.
13154 (vect_analyze_slp_instance): Use it. Track polynomial max_nunits.
13155
13156 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13157 Alan Hayward <alan.hayward@arm.com>
13158 David Sherwood <david.sherwood@arm.com>
13159
13160 * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
13161 from an unsigned int to a poly_uint64.
13162 (_loop_vec_info::slp_unrolling_factor): Likewise.
13163 (_loop_vec_info::vectorization_factor): Change from an int
13164 to a poly_uint64.
13165 (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
13166 (vect_get_num_vectors): New function.
13167 (vect_update_max_nunits, vect_vf_for_cost): Likewise.
13168 (vect_get_num_copies): Use vect_get_num_vectors.
13169 (vect_analyze_data_ref_dependences): Change max_vf from an int *
13170 to an unsigned int *.
13171 (vect_analyze_data_refs): Change min_vf from an int * to a
13172 poly_uint64 *.
13173 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
13174 than an unsigned HOST_WIDE_INT.
13175 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
13176 (vect_analyze_data_ref_dependence): Change max_vf from an int *
13177 to an unsigned int *.
13178 (vect_analyze_data_ref_dependences): Likewise.
13179 (vect_compute_data_ref_alignment): Handle polynomial vf.
13180 (vect_enhance_data_refs_alignment): Likewise.
13181 (vect_prune_runtime_alias_test_list): Likewise.
13182 (vect_shift_permute_load_chain): Likewise.
13183 (vect_supportable_dr_alignment): Likewise.
13184 (dependence_distance_ge_vf): Take the vectorization factor as a
13185 poly_uint64 rather than an unsigned HOST_WIDE_INT.
13186 (vect_analyze_data_refs): Change min_vf from an int * to a
13187 poly_uint64 *.
13188 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
13189 vfm1 as a poly_uint64 rather than an int. Make the same change
13190 for the returned bound_scalar.
13191 (vect_gen_vector_loop_niters): Handle polynomial vf.
13192 (vect_do_peeling): Likewise. Update call to
13193 vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
13194 (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
13195 be constant.
13196 * tree-vect-loop.c (vect_determine_vectorization_factor)
13197 (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
13198 (vect_get_known_peeling_cost): Likewise.
13199 (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
13200 (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
13201 (vect_transform_loop): Likewise. Use the lowest possible VF when
13202 updating the upper bounds of the loop.
13203 (vect_min_worthwhile_factor): Make static. Return an unsigned int
13204 rather than an int.
13205 * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
13206 polynomial unroll factors.
13207 (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
13208 (vect_make_slp_decision): Likewise.
13209 (vect_supported_load_permutation_p): Likewise, and polynomial
13210 vf too.
13211 (vect_analyze_slp_cost): Handle polynomial vf.
13212 (vect_slp_analyze_node_operations): Likewise.
13213 (vect_slp_analyze_bb_1): Likewise.
13214 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
13215 than an unsigned HOST_WIDE_INT.
13216 * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
13217 (vectorizable_load): Handle polynomial vf.
13218 * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
13219 a poly_uint64.
13220 (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
13221
13222 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13223 Alan Hayward <alan.hayward@arm.com>
13224 David Sherwood <david.sherwood@arm.com>
13225
13226 * match.pd: Handle bit operations involving three constants
13227 and try to fold one pair.
13228
13229 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13230
13231 * tree-vect-loop-manip.c: Include gimple-fold.h.
13232 (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
13233 niters_maybe_zero parameters. Handle other cases besides a step of 1.
13234 (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
13235 Add a path that uses a step of VF instead of 1, but disable it
13236 for now.
13237 (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
13238 and niters_no_overflow parameters. Update calls to
13239 slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
13240 Create a new SSA name if the latter choses to use a ste other
13241 than zero, and return it via niters_vector_mult_vf_var.
13242 * tree-vect-loop.c (vect_transform_loop): Update calls to
13243 vect_do_peeling, vect_gen_vector_loop_niters and
13244 slpeel_make_loop_iterate_ntimes.
13245 * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
13246 (vect_gen_vector_loop_niters): Update declarations after above changes.
13247
13248 2018-01-02 Michael Meissner <meissner@linux.vnet.ibm.com>
13249
13250 * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
13251 128-bit round to integer instructions.
13252 (ceil<mode>2): Likewise.
13253 (btrunc<mode>2): Likewise.
13254 (round<mode>2): Likewise.
13255
13256 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
13257
13258 * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
13259 unaligned VSX load/store on P8/P9.
13260 (expand_block_clear): Allow the use of unaligned VSX
13261 load/store on P8/P9.
13262
13263 2018-01-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
13264
13265 * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
13266 New function.
13267 (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
13268 swap associated with both a load and a store.
13269
13270 2018-01-02 Andrew Waterman <andrew@sifive.com>
13271
13272 * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
13273 * config/riscv/riscv.md (clear_cache): Use it.
13274
13275 2018-01-02 Artyom Skrobov <tyomitch@gmail.com>
13276
13277 * web.c: Remove out-of-date comment.
13278
13279 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13280
13281 * expr.c (fixup_args_size_notes): Check that any existing
13282 REG_ARGS_SIZE notes are correct, and don't try to re-add them.
13283 (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
13284 (emit_single_push_insn): ...here.
13285
13286 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13287
13288 * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
13289 (const_vector_encoded_nelts): New function.
13290 (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
13291 (const_vector_int_elt, const_vector_elt): Declare.
13292 * emit-rtl.c (const_vector_int_elt_1): New function.
13293 (const_vector_elt): Likewise.
13294 * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
13295 of CONST_VECTOR_ELT.
13296
13297 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13298
13299 * expr.c: Include rtx-vector-builder.h.
13300 (const_vector_mask_from_tree): Use rtx_vector_builder and operate
13301 directly on the tree encoding.
13302 (const_vector_from_tree): Likewise.
13303 * optabs.c: Include rtx-vector-builder.h.
13304 (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
13305 sequence of "u" values.
13306 * vec-perm-indices.c: Include rtx-vector-builder.h.
13307 (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
13308 directly on the vec_perm_indices encoding.
13309
13310 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13311
13312 * doc/rtl.texi (const_vector): Describe new encoding scheme.
13313 * Makefile.in (OBJS): Add rtx-vector-builder.o.
13314 * rtx-vector-builder.h: New file.
13315 * rtx-vector-builder.c: Likewise.
13316 * rtl.h (rtx_def::u2): Add a const_vector field.
13317 (CONST_VECTOR_NPATTERNS): New macro.
13318 (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
13319 (CONST_VECTOR_DUPLICATE_P): Likewise.
13320 (CONST_VECTOR_STEPPED_P): Likewise.
13321 (CONST_VECTOR_ENCODED_ELT): Likewise.
13322 (const_vec_duplicate_p): Check for a duplicated vector encoding.
13323 (unwrap_const_vec_duplicate): Likewise.
13324 (const_vec_series_p): Check for a non-duplicated vector encoding.
13325 Say that the function only returns true for integer vectors.
13326 * emit-rtl.c: Include rtx-vector-builder.h.
13327 (gen_const_vec_duplicate_1): Delete.
13328 (gen_const_vector): Call gen_const_vec_duplicate instead of
13329 gen_const_vec_duplicate_1.
13330 (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
13331 (gen_const_vec_duplicate): Use rtx_vector_builder.
13332 (gen_const_vec_series): Likewise.
13333 (gen_rtx_CONST_VECTOR): Likewise.
13334 * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
13335 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
13336 Build a new vector rather than modifying a CONST_VECTOR in-place.
13337 (handle_special_swappables): Update call accordingly.
13338 * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
13339 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
13340 Build a new vector rather than modifying a CONST_VECTOR in-place.
13341 (handle_special_swappables): Update call accordingly.
13342
13343 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13344
13345 * simplify-rtx.c (simplify_const_binary_operation): Use
13346 CONST_VECTOR_ELT instead of XVECEXP.
13347
13348 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13349
13350 * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
13351 the selector elements to be different from the data elements
13352 if the selector is a VECTOR_CST.
13353 * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
13354 ssizetype for the selector.
13355
13356 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13357
13358 * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
13359 before testing each element individually.
13360 * tree-vect-generic.c (lower_vec_perm): Likewise.
13361
13362 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13363
13364 * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
13365 * selftest-run-tests.c (selftest::run_tests): Call it.
13366 * vector-builder.h (vector_builder::operator ==): New function.
13367 (vector_builder::operator !=): Likewise.
13368 * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
13369 (vec_perm_indices::all_from_input_p): New function.
13370 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
13371 (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
13372 * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
13373 instead of reading the VECTOR_CST directly. Detect whether both
13374 vector inputs are the same before constructing the vec_perm_indices,
13375 and update the number of inputs argument accordingly. Use the
13376 utility functions added above. Only construct sel2 if we need to.
13377
13378 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13379
13380 * optabs.c (expand_vec_perm_var): Use an explicit encoding for
13381 the broadcast of the low byte.
13382 (expand_mult_highpart): Use an explicit encoding for the permutes.
13383 * optabs-query.c (can_mult_highpart_p): Likewise.
13384 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
13385 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13386 (vectorizable_bswap): Likewise.
13387 * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
13388 explicit encoding for the power-of-2 permutes.
13389 (vect_permute_store_chain): Likewise.
13390 (vect_grouped_load_supported): Likewise.
13391 (vect_permute_load_chain): Likewise.
13392
13393 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13394
13395 * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
13396 * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
13397 * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
13398 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
13399 * tree-vect-stmts.c (vectorizable_bswap): Likewise.
13400 (vect_gen_perm_mask_any): Likewise.
13401
13402 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13403
13404 * int-vector-builder.h: New file.
13405 * vec-perm-indices.h: Include int-vector-builder.h.
13406 (vec_perm_indices): Redefine as an int_vector_builder.
13407 (auto_vec_perm_indices): Delete.
13408 (vec_perm_builder): Redefine as a stand-alone class.
13409 (vec_perm_indices::vec_perm_indices): New function.
13410 (vec_perm_indices::clamp): Likewise.
13411 * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
13412 (vec_perm_indices::new_vector): New function.
13413 (vec_perm_indices::new_expanded_vector): Update for new
13414 vec_perm_indices class.
13415 (vec_perm_indices::rotate_inputs): New function.
13416 (vec_perm_indices::all_in_range_p): Operate directly on the
13417 encoded form, without computing elided elements.
13418 (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
13419 encoding. Update for new vec_perm_indices class.
13420 * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
13421 the given vec_perm_builder.
13422 (expand_vec_perm_var): Update vec_perm_builder constructor.
13423 (expand_mult_highpart): Use vec_perm_builder instead of
13424 auto_vec_perm_indices.
13425 * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
13426 vec_perm_indices instead of auto_vec_perm_indices. Use a single
13427 or double series encoding as appropriate.
13428 * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
13429 vec_perm_indices instead of auto_vec_perm_indices.
13430 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13431 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13432 (vect_permute_store_chain): Likewise.
13433 (vect_grouped_load_supported): Likewise.
13434 (vect_permute_load_chain): Likewise.
13435 (vect_shift_permute_load_chain): Likewise.
13436 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13437 (vect_transform_slp_perm_load): Likewise.
13438 (vect_schedule_slp_instance): Likewise.
13439 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13440 (vectorizable_mask_load_store): Likewise.
13441 (vectorizable_bswap): Likewise.
13442 (vectorizable_store): Likewise.
13443 (vectorizable_load): Likewise.
13444 * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
13445 vec_perm_indices instead of auto_vec_perm_indices. Use
13446 tree_to_vec_perm_builder to read the vector from a tree.
13447 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
13448 vec_perm_builder instead of a vec_perm_indices.
13449 (have_whole_vector_shift): Use vec_perm_builder and
13450 vec_perm_indices instead of auto_vec_perm_indices. Leave the
13451 truncation to calc_vec_perm_mask_for_shift.
13452 (vect_create_epilog_for_reduction): Likewise.
13453 * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
13454 from auto_vec_perm_indices to vec_perm_indices.
13455 (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
13456 instead of changing individual elements.
13457 (aarch64_vectorize_vec_perm_const): Use new_vector to install
13458 the vector in d.perm.
13459 * config/arm/arm.c (expand_vec_perm_d::perm): Change
13460 from auto_vec_perm_indices to vec_perm_indices.
13461 (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
13462 instead of changing individual elements.
13463 (arm_vectorize_vec_perm_const): Use new_vector to install
13464 the vector in d.perm.
13465 * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
13466 Update vec_perm_builder constructor.
13467 (rs6000_expand_interleave): Likewise.
13468 * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
13469 (rs6000_expand_interleave): Likewise.
13470
13471 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13472
13473 * optabs-query.c (can_vec_perm_var_p): Check whether lowering
13474 to qimode could truncate the indices.
13475 * optabs.c (expand_vec_perm_var): Likewise.
13476
13477 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13478
13479 * Makefile.in (OBJS): Add vec-perm-indices.o.
13480 * vec-perm-indices.h: New file.
13481 * vec-perm-indices.c: Likewise.
13482 * target.h (vec_perm_indices): Replace with a forward class
13483 declaration.
13484 (auto_vec_perm_indices): Move to vec-perm-indices.h.
13485 * optabs.h: Include vec-perm-indices.h.
13486 (expand_vec_perm): Delete.
13487 (selector_fits_mode_p, expand_vec_perm_var): Declare.
13488 (expand_vec_perm_const): Declare.
13489 * target.def (vec_perm_const_ok): Replace with...
13490 (vec_perm_const): ...this new hook.
13491 * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
13492 (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
13493 * doc/tm.texi: Regenerate.
13494 * optabs.def (vec_perm_const): Delete.
13495 * doc/md.texi (vec_perm_const): Likewise.
13496 (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
13497 * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
13498 expand_vec_perm for constant permutation vectors. Assert that
13499 the mode of variable permutation vectors is the integer equivalent
13500 of the mode that is being permuted.
13501 * optabs-query.h (selector_fits_mode_p): Declare.
13502 * optabs-query.c: Include vec-perm-indices.h.
13503 (selector_fits_mode_p): New function.
13504 (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
13505 is defined, instead of checking whether the vec_perm_const_optab
13506 exists. Use targetm.vectorize.vec_perm_const instead of
13507 targetm.vectorize.vec_perm_const_ok. Check whether the indices
13508 fit in the vector mode before using a variable permute.
13509 * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
13510 vec_perm_indices instead of an rtx.
13511 (expand_vec_perm): Replace with...
13512 (expand_vec_perm_const): ...this new function. Take the selector
13513 as a vec_perm_indices rather than an rtx. Also take the mode of
13514 the selector. Update call to shift_amt_for_vec_perm_mask.
13515 Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
13516 Use vec_perm_indices::new_expanded_vector to expand the original
13517 selector into bytes. Check whether the indices fit in the vector
13518 mode before using a variable permute.
13519 (expand_vec_perm_var): Make global.
13520 (expand_mult_highpart): Use expand_vec_perm_const.
13521 * fold-const.c: Includes vec-perm-indices.h.
13522 * tree-ssa-forwprop.c: Likewise.
13523 * tree-vect-data-refs.c: Likewise.
13524 * tree-vect-generic.c: Likewise.
13525 * tree-vect-loop.c: Likewise.
13526 * tree-vect-slp.c: Likewise.
13527 * tree-vect-stmts.c: Likewise.
13528 * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
13529 Delete.
13530 * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
13531 * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
13532 (aarch64_vectorize_vec_perm_const_ok): Fuse into...
13533 (aarch64_vectorize_vec_perm_const): ...this new function.
13534 (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13535 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13536 * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
13537 * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
13538 * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13539 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13540 (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
13541 into...
13542 (arm_vectorize_vec_perm_const): ...this new function. Explicitly
13543 check for NEON modes.
13544 * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
13545 * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
13546 * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
13547 (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
13548 into...
13549 (ix86_vectorize_vec_perm_const): ...this new function. Incorporate
13550 the old VEC_PERM_CONST conditions.
13551 * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
13552 * config/ia64/vect.md (vec_perm_const<mode>): Delete.
13553 * config/ia64/ia64.c (ia64_expand_vec_perm_const)
13554 (ia64_vectorize_vec_perm_const_ok): Merge into...
13555 (ia64_vectorize_vec_perm_const): ...this new function.
13556 * config/mips/loongson.md (vec_perm_const<mode>): Delete.
13557 * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
13558 * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
13559 * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
13560 * config/mips/mips.c (mips_expand_vec_perm_const)
13561 (mips_vectorize_vec_perm_const_ok): Merge into...
13562 (mips_vectorize_vec_perm_const): ...this new function.
13563 * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
13564 * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
13565 * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
13566 * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
13567 * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
13568 (rs6000_expand_vec_perm_const): Delete.
13569 * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
13570 Delete.
13571 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13572 (altivec_expand_vec_perm_const_le): Take each operand individually.
13573 Operate on constant selectors rather than rtxes.
13574 (altivec_expand_vec_perm_const): Likewise. Update call to
13575 altivec_expand_vec_perm_const_le.
13576 (rs6000_expand_vec_perm_const): Delete.
13577 (rs6000_vectorize_vec_perm_const_ok): Delete.
13578 (rs6000_vectorize_vec_perm_const): New function.
13579 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
13580 an element count and rtx array.
13581 (rs6000_expand_extract_even): Update call accordingly.
13582 (rs6000_expand_interleave): Likewise.
13583 * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
13584 * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
13585 * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
13586 * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
13587 (rs6000_expand_vec_perm_const): Delete.
13588 * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13589 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13590 (altivec_expand_vec_perm_const_le): Take each operand individually.
13591 Operate on constant selectors rather than rtxes.
13592 (altivec_expand_vec_perm_const): Likewise. Update call to
13593 altivec_expand_vec_perm_const_le.
13594 (rs6000_expand_vec_perm_const): Delete.
13595 (rs6000_vectorize_vec_perm_const_ok): Delete.
13596 (rs6000_vectorize_vec_perm_const): New function. Remove stray
13597 reference to the SPE evmerge intructions.
13598 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
13599 an element count and rtx array.
13600 (rs6000_expand_extract_even): Update call accordingly.
13601 (rs6000_expand_interleave): Likewise.
13602 * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
13603 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
13604 new function.
13605 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13606
13607 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13608
13609 * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
13610 vector mode and that that mode matches the mode of the data
13611 being permuted.
13612 (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
13613 out into expand_vec_perm_var. Do all CONST_VECTOR handling here,
13614 directly using expand_vec_perm_1 when forcing selectors into
13615 registers.
13616 (expand_vec_perm_var): New function, split out from expand_vec_perm.
13617
13618 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13619
13620 * optabs-query.h (can_vec_perm_p): Delete.
13621 (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
13622 * optabs-query.c (can_vec_perm_p): Split into...
13623 (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
13624 (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
13625 particular selector is valid.
13626 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13627 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13628 (vect_grouped_load_supported): Likewise.
13629 (vect_shift_permute_load_chain): Likewise.
13630 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13631 (vect_transform_slp_perm_load): Likewise.
13632 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13633 (vectorizable_bswap): Likewise.
13634 (vect_gen_perm_mask_checked): Likewise.
13635 * fold-const.c (fold_ternary_loc): Likewise. Don't take
13636 implementations of variable permutation vectors into account
13637 when deciding which selector to use.
13638 * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
13639 vec_perm_const_optab is supported; instead use can_vec_perm_const_p
13640 with a false third argument.
13641 * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
13642 to test whether the constant selector is valid and can_vec_perm_var_p
13643 to test whether a variable selector is valid.
13644
13645 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13646
13647 * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
13648 * optabs-query.c (can_vec_perm_p): Likewise.
13649 * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
13650 instead of vec_perm_indices.
13651 * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
13652 (vect_gen_perm_mask_checked): Likewise,
13653 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
13654 (vect_gen_perm_mask_checked): Likewise,
13655
13656 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13657
13658 * optabs-query.h (qimode_for_vec_perm): Declare.
13659 * optabs-query.c (can_vec_perm_p): Split out qimode search to...
13660 (qimode_for_vec_perm): ...this new function.
13661 * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
13662
13663 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
13664
13665 * rtlanal.c (canonicalize_condition): Return 0 if final rtx
13666 does not have a conditional at the top.
13667
13668 2018-01-02 Richard Biener <rguenther@suse.de>
13669
13670 * ipa-inline.c (big_speedup_p): Fix expression.
13671
13672 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
13673
13674 PR target/81616
13675 * config/i386/x86-tune-costs.h: Increase cost of integer load costs
13676 for generic 4->6.
13677
13678 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
13679
13680 PR target/81616
13681 Generic tuning.
13682 * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
13683 cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
13684 and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
13685 cond_taken_branch_cost 3->4.
13686
13687 2018-01-01 Jakub Jelinek <jakub@redhat.com>
13688
13689 PR tree-optimization/83581
13690 * tree-loop-distribution.c (pass_loop_distribution::execute): Return
13691 TODO_cleanup_cfg if any changes have been made.
13692
13693 PR middle-end/83608
13694 * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
13695 convert_modes if target mode has the right side, but different mode
13696 class.
13697
13698 PR middle-end/83609
13699 * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
13700 last argument when extracting from CONCAT. If either from_real or
13701 from_imag is NULL, use expansion through memory. If result is not
13702 a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
13703 the parts directly to inner mode, if even that fails, use expansion
13704 through memory.
13705
13706 PR middle-end/83623
13707 * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
13708 check for bswap in mode rather than HImode and use that in expand_unop
13709 too.
13710 \f
13711 Copyright (C) 2018 Free Software Foundation, Inc.
13712
13713 Copying and distribution of this file, with or without modification,
13714 are permitted in any medium without royalty provided the copyright
13715 notice and this notice are preserved.